Skip to content

Commit

Permalink
Fix some more games to use the new matrix workaround library
Browse files Browse the repository at this point in the history
  • Loading branch information
magcius committed Feb 2, 2025
1 parent 0f71789 commit 9f47c9f
Show file tree
Hide file tree
Showing 12 changed files with 58 additions and 46 deletions.
25 changes: 14 additions & 11 deletions src/FinalFantasyX/render.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import { clamp, computeModelMatrixR, setMatrixTranslation, transformVec3Mat4w1 }
import { getPointHermite } from "../Spline.js";
import { convertToCanvas } from "../gfx/helpers/TextureConversionHelpers.js";
import ArrayBufferSlice from "../ArrayBufferSlice.js";
import { GfxShaderLibrary } from "../gfx/helpers/GfxShaderLibrary.js";

export class FFXProgram extends DeviceProgram {
public static a_Position = 0;
Expand All @@ -30,16 +31,18 @@ export class FFXProgram extends DeviceProgram {
public override both = `
precision mediump float;
${GfxShaderLibrary.MatrixLibrary}
// Expected to be constant across the entire scene.
layout(std140, row_major) uniform ub_SceneParams {
mat4 u_Projection;
mat4x3 u_LightDirection;
layout(std140) uniform ub_SceneParams {
Mat4x4 u_Projection;
Mat3x4 u_LightDirection;
float u_RenderHacks;
};
layout(std140, row_major) uniform ub_ModelParams {
mat4x3 u_BoneMatrix;
mat4x2 u_TextureMatrix;
layout(std140) uniform ub_ModelParams {
Mat3x4 u_BoneMatrix;
Mat2x4 u_TextureMatrix;
vec4 u_Params;
};
Expand All @@ -63,8 +66,8 @@ void main() {
t_PositionLocal = mix(t_PositionLocal, a_Extra.xyz, u_Params.x);
#endif
vec3 t_PositionView = u_BoneMatrix * vec4(t_PositionLocal, 1.0);
gl_Position = u_Projection * vec4(t_PositionView, 1.0);
vec3 t_PositionView = UnpackMatrix(u_BoneMatrix) * vec4(t_PositionLocal, 1.0);
gl_Position = UnpackMatrix(u_Projection) * vec4(t_PositionView, 1.0);
#if EFFECT == 4
v_Color = mix(a_Color, a_Extra, u_Params.x);
Expand All @@ -76,8 +79,8 @@ void main() {
v_Color = vec4(1.);
#if EFFECT == 6
vec4 t_ViewNormal = u_BoneMatrix * vec4(a_Extra.xyz, 0.0);
t_ViewNormal = u_LightDirection * vec4(t_ViewNormal.xyz, 0.0);
vec3 t_ViewNormal = UnpackMatrix(u_BoneMatrix) * vec4(a_Extra.xyz, 0.0);
t_ViewNormal = UnpackMatrix(u_LightDirection) * vec4(t_ViewNormal.xyz, 0.0);
v_TexCoord = (t_ViewNormal.xz/4.0) + 0.5;
#elif EFFECT == 3
v_TexCoord = mix(a_TexCoord, a_Extra.xy, u_Params.x);
Expand All @@ -87,7 +90,7 @@ void main() {
v_TexCoord = a_TexCoord;
#endif
v_TexCoord = u_TextureMatrix * vec4(v_TexCoord, 0.0, 1.0);
v_TexCoord = UnpackMatrix(u_TextureMatrix) * vec4(v_TexCoord, 0.0, 1.0);
}
`;

Expand Down
12 changes: 7 additions & 5 deletions src/InteractiveExamples/GridPlane.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,11 @@ class GridPlaneProgram extends DeviceProgram {
public static ub_SceneParams = 0;

public override both = `
layout(std140, row_major) uniform ub_Params {
mat4 u_WorldFromClip;
mat4 u_ClipFromWorld;
${GfxShaderLibrary.MatrixLibrary}
layout(std140) uniform ub_Params {
Mat4x4 u_WorldFromClip;
Mat4x4 u_ClipFromWorld;
vec4 u_GridColor;
vec4 u_Misc[1];
};
Expand Down Expand Up @@ -53,7 +55,7 @@ ${GfxShaderLibrary.saturate}
${GfxShaderLibrary.invlerp}
vec3 CalcWorldPos(in vec2 t_ClipXY, in float t_ClipZ) {
vec4 t_World = u_WorldFromClip * vec4(t_ClipXY, t_ClipZ, 1.0);
vec4 t_World = UnpackMatrix(u_WorldFromClip) * vec4(t_ClipXY, t_ClipZ, 1.0);
return t_World.xyz / t_World.www;
}
Expand Down Expand Up @@ -94,7 +96,7 @@ void main() {
if (t_FragWorldFar.y > t_FragWorldNear.y)
gl_FragColor.a *= 0.2;
vec4 t_PlaneClipPos = u_ClipFromWorld * vec4(t_FragWorldPos.xyz, 1.0);
vec4 t_PlaneClipPos = UnpackMatrix(u_ClipFromWorld) * vec4(t_FragWorldPos.xyz, 1.0);
t_PlaneClipPos.xyz /= t_PlaneClipPos.www;
float t_PlaneClipZ = t_PlaneClipPos.z;
Expand Down
2 changes: 2 additions & 0 deletions src/JetSetRadio/Render.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,13 @@ export class JSRProgram extends DeviceProgram {

public override both = `
precision mediump float;
// Expected to be constant across the entire scene.
layout(std140, row_major) uniform ub_SceneParams {
mat4 u_Projection;
mat4x3 u_LightDirection;
};
layout(std140, row_major) uniform ub_ModelParams {
mat4x3 u_BoneMatrix;
mat4x2 u_TextureMatrix;
Expand Down
2 changes: 1 addition & 1 deletion src/KatamariDamacy/Gallery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class GalleryCircleProgram extends DeviceProgram {
public static ub_Params = 0;

public override both: string = `
layout(std140, row_major) uniform ub_Params {
layout(std140) uniform ub_Params {
vec4 u_ColorInner;
vec4 u_ColorOuter;
vec4 u_ScaleOffset;
Expand Down
21 changes: 12 additions & 9 deletions src/KatamariDamacy/render.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,18 @@ export class KatamariDamacyProgram extends DeviceProgram {
private static reflectionDeclarations = `
precision mediump float;
${GfxShaderLibrary.MatrixLibrary}
// Expected to be constant across the entire scene.
layout(std140, row_major) uniform ub_SceneParams {
mat4 u_ProjectionView;
layout(std140) uniform ub_SceneParams {
Mat4x4 u_ProjectionView;
vec4 u_LightDirs[2];
vec4 u_LightColors[3];
};
layout(std140, row_major) uniform ub_ModelParams {
mat4x3 u_BoneMatrix[SKINNING_MATRIX_COUNT];
mat4x2 u_TextureMatrix[1];
layout(std140) uniform ub_ModelParams {
Mat3x4 u_BoneMatrix[SKINNING_MATRIX_COUNT];
Mat2x4 u_TextureMatrix[1];
vec4 u_Color;
vec4 u_Misc[1];
};
Expand All @@ -61,12 +63,13 @@ ${GfxShaderLibrary.MulNormalMatrix}
void main() {
int t_SkinningIndex = int(a_Position.w);
vec3 t_PositionWorld = u_BoneMatrix[t_SkinningIndex] * vec4(a_Position.xyz, 1.0);
gl_Position = u_ProjectionView * vec4(t_PositionWorld, 1.0);
v_TexCoord = u_TextureMatrix[0] * vec4(a_TexCoord, 0.0, 1.0);
mat4x3 t_BoneMatrix = UnpackMatrix(u_BoneMatrix[t_SkinningIndex]);
vec3 t_PositionWorld = t_BoneMatrix * vec4(a_Position.xyz, 1.0);
gl_Position = UnpackMatrix(u_ProjectionView) * vec4(t_PositionWorld, 1.0);
v_TexCoord = UnpackMatrix(u_TextureMatrix[0]) * vec4(a_TexCoord, 0.0, 1.0);
#ifdef LIGHTING
vec3 t_Normal = MulNormalMatrix(u_BoneMatrix[t_SkinningIndex], a_Normal);
vec3 t_Normal = MulNormalMatrix(t_BoneMatrix, a_Normal);
v_DiffuseLighting = u_LightColors[2].rgb;
for (int i = 0; i < 2; i++)
v_DiffuseLighting += max(dot(t_Normal, u_LightDirs[i].xyz), 0.0) * u_LightColors[i].rgb;
Expand Down
26 changes: 14 additions & 12 deletions src/MarioKart8Deluxe/Render.ts
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,10 @@ class TurboUBER extends DeviceProgram {
public static globalDefinitions = `
precision mediump float;
layout(std140, row_major) uniform ub_ShapeParams {
mat4 u_ProjectionView;
${GfxShaderLibrary.MatrixLibrary}
layout(std140) uniform ub_ShapeParams {
Mat4x4 u_ProjectionView;
vec4 u_CameraPosWorld;
};
Expand All @@ -150,13 +152,13 @@ struct EnvLightParam {
vec4 Direction;
};
layout(std140, row_major) uniform ub_MaterialParams {
mat4x3 u_Model;
mat4x2 u_TexCoordSRT0;
layout(std140) uniform ub_MaterialParams {
Mat3x4 u_Model;
Mat2x4 u_TexCoordSRT0;
vec4 u_TexCoordBake0ScaleBias;
vec4 u_TexCoordBake1ScaleBias;
mat4x2 u_TexCoordSRT2;
mat4x2 u_TexCoordSRT3;
Mat2x4 u_TexCoordSRT2;
Mat2x4 u_TexCoordSRT3;
vec4 u_AlbedoColorAndTransparency;
vec4 u_EmissionColorAndNormalMapWeight;
vec4 u_SpecularColorAndIntensity;
Expand Down Expand Up @@ -225,8 +227,8 @@ out vec3 v_NormalWorld;
out vec4 v_TangentWorld;
void main() {
v_PositionWorld = u_Model * vec4(a_Position, 1.0);
gl_Position = u_ProjectionView * vec4(v_PositionWorld, 1.0);
v_PositionWorld = UnpackMatrix(u_Model) * vec4(a_Position, 1.0);
gl_Position = UnpackMatrix(u_ProjectionView) * vec4(v_PositionWorld, 1.0);
bool gsys_invalidate_texture_srt = ${this.shaderOptionBool('gsys_invalidate_texture_srt')};
Expand All @@ -235,9 +237,9 @@ void main() {
v_TexCoord23.xy = a_TexCoord2.xy;
v_TexCoord23.zw = a_TexCoord3.xy;
} else {
v_TexCoord0 = u_TexCoordSRT0 * vec4(a_TexCoord0.xy, 1.0, 1.0);
v_TexCoord23.xy = u_TexCoordSRT2 * vec4(a_TexCoord2.xy, 1.0, 1.0);
v_TexCoord23.zw = u_TexCoordSRT3 * vec4(a_TexCoord3.xy, 1.0, 1.0);
v_TexCoord0 = UnpackMatrix(u_TexCoordSRT0) * vec4(a_TexCoord0.xy, 1.0, 1.0);
v_TexCoord23.xy = UnpackMatrix(u_TexCoordSRT2) * vec4(a_TexCoord2.xy, 1.0, 1.0);
v_TexCoord23.zw = UnpackMatrix(u_TexCoordSRT3) * vec4(a_TexCoord3.xy, 1.0, 1.0);
}
v_TexCoordBake.xy = CalcScaleBias(a_TexCoord1.xy, u_TexCoordBake0ScaleBias);
Expand Down
2 changes: 1 addition & 1 deletion src/PaperMario64/render.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ class BackgroundBillboardProgram extends DeviceProgram {
public static ub_Params = 0;

public override both: string = `
layout(std140, row_major) uniform ub_Params {
layout(std140) uniform ub_Params {
vec4 u_ScaleOffset;
};
Expand Down
2 changes: 1 addition & 1 deletion src/PaperMarioTTYD/render.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class BackgroundBillboardProgram extends DeviceProgram {
public static ub_Params = 0;

public override both: string = `
layout(std140, row_major) uniform ub_Params {
layout(std140) uniform ub_Params {
vec4 u_ScaleOffset;
};
Expand Down
2 changes: 1 addition & 1 deletion src/SourceEngine/LuminanceHistogram.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const scratchVec4 = vec4.create();

class LuminanceThreshProgram extends DeviceProgram {
public override both = `
layout(std140, row_major) uniform ub_Params {
layout(std140) uniform ub_Params {
vec4 u_Misc[2];
};
Expand Down
2 changes: 1 addition & 1 deletion src/StarFoxAdventures/blur.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import { fillVec4 } from "../gfx/helpers/UniformBufferHelpers.js";
const BindingsDefinition = `
uniform sampler2D u_Texture;
layout(std140, row_major) uniform ub_Params {
layout(std140) uniform ub_Params {
vec4 u_Misc[1];
};
#define u_HalfTexel (u_Misc[0].xy)
Expand Down
6 changes: 3 additions & 3 deletions src/SuperMarioGalaxy/ImageEffect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ class BloomPassBaseProgram extends DeviceProgram {
uniform sampler2D u_Texture;
uniform sampler2D u_Texture2;
layout(std140, row_major) uniform ub_Params {
layout(std140) uniform ub_Params {
vec4 u_Misc[1];
};
#define u_BloomIntensity (u_Misc[0].x)
Expand Down Expand Up @@ -389,7 +389,7 @@ uniform sampler2D u_Texture;
uniform sampler2D u_Texture2;
in vec2 v_TexCoord;
layout(std140, row_major) uniform ub_Params {
layout(std140) uniform ub_Params {
vec4 u_Misc[1];
};
#define u_MaskFilter (u_Misc[0].x)
Expand Down Expand Up @@ -556,7 +556,7 @@ class DepthOfFieldProgram extends DeviceProgram {
uniform sampler2D u_TextureColor;
uniform sampler2D u_TextureFramebufferDepth;
layout(std140, row_major) uniform ub_Params {
layout(std140) uniform ub_Params {
vec4 u_Misc[1];
};
#define u_Intensity (u_Misc[0].x)
Expand Down
2 changes: 1 addition & 1 deletion src/ZeldaTwilightPrincess/d_kankyo_wether.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2236,7 +2236,7 @@ class BloomPassBaseProgram extends DeviceProgram {
public static BindingsDefinition = `
uniform sampler2D u_Texture;
layout(std140, row_major) uniform ub_Params {
layout(std140) uniform ub_Params {
vec4 u_MonoColor;
vec4 u_BlendColor;
vec4 u_Misc[1];
Expand Down

0 comments on commit 9f47c9f

Please sign in to comment.