2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-05-13 11:51:21 +00:00

Update to latest aurora, SDL3

This commit is contained in:
Luke Street 2025-04-03 00:14:34 -06:00
parent f53fd86d3e
commit aa26577400
6 changed files with 16 additions and 144 deletions

View File

@ -32,7 +32,7 @@
#include <aurora/event.h>
#include <aurora/main.h>
#include <dolphin/vi.h>
#include <SDL_messagebox.h>
#include <SDL3/SDL_messagebox.h>
using namespace std::literals;
@ -222,15 +222,15 @@ public:
void onSdlEvent(const SDL_Event& event) noexcept {
switch (event.type) {
case SDL_KEYDOWN:
m_lAltHeld = event.key.keysym.sym == SDLK_LALT;
case SDL_EVENT_KEY_DOWN:
m_lAltHeld = event.key.key == SDLK_LALT;
// Toggle fullscreen on ALT+ENTER
if (event.key.keysym.sym == SDLK_RETURN && (event.key.keysym.mod & KMOD_ALT) != 0u && event.key.repeat == 0u) {
if (event.key.key == SDLK_RETURN && (event.key.mod & SDL_KMOD_ALT) != 0u && event.key.repeat == 0u) {
m_cvarCommons.m_fullscreen->fromBoolean(!m_cvarCommons.m_fullscreen->toBoolean());
}
break;
case SDL_KEYUP:
if (m_lAltHeld && event.key.keysym.sym == SDLK_LALT) {
case SDL_EVENT_KEY_UP:
if (m_lAltHeld && event.key.key == SDLK_LALT) {
m_imGuiConsole.ToggleVisible();
m_lAltHeld = false;
}
@ -583,6 +583,9 @@ int main(int argc, char** argv) {
case AURORA_UNPAUSED:
g_paused = false;
break;
case AURORA_DISPLAY_SCALE_CHANGED:
g_app->onAppDisplayScaleChanged(event->windowSize.scale);
break;
default:
break;
}
@ -597,8 +600,8 @@ int main(int argc, char** argv) {
if (g_paused) {
continue;
}
g_app->onAppIdle(1.f / 60.f /* TODO */);
aurora_begin_frame();
g_app->onAppIdle(1.f / 60.f /* TODO */);
g_app->onAppDraw();
aurora_end_frame();
g_app->onAppPostDraw();

View File

@ -2,7 +2,7 @@
#include "Runtime/GameGlobalObjects.hpp"
#include "Runtime/IMain.hpp"
#include <Runtime/CBasics.hpp>
#include <SDL_filesystem.h>
#include <SDL3/SDL_filesystem.h>
namespace metaforce {

View File

@ -2,7 +2,7 @@
#include "Runtime/CBasics.hpp"
#include <SDL.h>
#include <SDL3/SDL.h>
#include <logvisor/logvisor.hpp>
#if _WIN32
#include <nowide/convert.hpp>

View File

@ -42,6 +42,9 @@ endif ()
#if (CMAKE_SYSTEM_NAME STREQUAL Darwin)
# set(DAWN_ENABLE_VULKAN ON CACHE BOOL "Enable compilation of the Vulkan backend" FORCE)
#endif()
if (CMAKE_SYSTEM_NAME STREQUAL Linux)
set(DAWN_USE_WAYLAND ON CACHE BOOL "Enable support for Wayland surface" FORCE)
endif ()
set(AURORA_NATIVE_MATRIX ON CACHE BOOL "Assume OpenGL-layout matrices, disables transposing" FORCE)
add_subdirectory(aurora)

2
extern/aurora vendored

@ -1 +1 @@
Subproject commit 6f6861215150abc4fa00197de43754525cac07a6
Subproject commit ca3e4f5273d6af50634298fe73c2f4bcf1b75ac9

View File

@ -1,134 +0,0 @@
#shader ImGuiShader
#attribute position2
#attribute uv2
#attribute colorunorm
#srcfac srcalpha
#dstfac invsrcalpha
#primitive triangles
#depthtest none
#depthwrite false
#culling none
#vertex glsl
layout (location = 0) in vec2 pos;
layout (location = 1) in vec2 uv;
layout (location = 2) in vec4 color;
UBINDING0 uniform ImGuiShaderUniform
{
mat4 xf;
};
struct VertToFrag
{
vec2 uv;
vec4 color;
};
SBINDING(0) out VertToFrag vtf;
void main()
{
vtf.uv = uv;
vtf.color = color;
gl_Position = xf * vec4(pos.xy,0,1);
}
#fragment glsl
struct VertToFrag
{
vec2 uv;
vec4 color;
};
SBINDING(0) in VertToFrag vtf;
layout (location = 0) out vec4 colorOut;
TBINDING0 uniform sampler2D tex;
void main()
{
colorOut = vtf.color * texture(tex, vtf.uv.st);
}
#vertex hlsl
cbuffer ImGuiShaderUniform : register(b0)
{
float4x4 xf;
};
struct VertData
{
float2 pos : POSITION;
float2 uv : TEXCOORD0;
float4 col : COLOR0;
};
struct VertToFrag
{
float4 pos : SV_POSITION;
float2 uv : TEXCOORD0;
float4 col : COLOR0;
};
VertToFrag main(in VertData v)
{
VertToFrag vtf;
vtf.pos = mul(xf, float4(v.pos.xy, 0.f, 1.f));
vtf.col = v.col;
vtf.uv = v.uv;
return vtf;
}
#fragment hlsl
struct VertToFrag
{
float4 pos : SV_POSITION;
float2 uv : TEXCOORD0;
float4 col : COLOR0;
};
SamplerState samp : register(s0);
Texture2D tex0 : register(t0);
float4 main(in VertToFrag vtf) : SV_Target0
{
return vtf.col * tex0.Sample(samp, vtf.uv);
}
#vertex metal
struct ImGuiShaderUniform {
float4x4 xf;
};
struct VertexIn {
float2 position [[attribute(0)]];
float2 texCoords [[attribute(1)]];
uchar4 color [[attribute(2)]];
};
struct VertToFrag {
float4 position [[position]];
float2 texCoords;
float4 color;
};
vertex VertToFrag vmain(VertexIn v [[stage_in]],
constant ImGuiShaderUniform& u [[buffer(2)]]) {
VertToFrag vtf;
vtf.position = u.xf * float4(v.position, 0, 1);
vtf.texCoords = v.texCoords;
vtf.color = float4(v.color) / float4(255.0);
return vtf;
}
#fragment metal
struct VertToFrag {
float4 position [[position]];
float2 texCoords;
float4 color;
};
fragment half4 fmain(VertToFrag vtf [[stage_in]],
texture2d<half, access::sample> tex [[texture(0)]]) {
constexpr sampler linearSampler(coord::normalized, min_filter::linear, mag_filter::linear, mip_filter::linear);
half4 texColor = tex.sample(linearSampler, vtf.texCoords);
return half4(vtf.color) * texColor;
}