diff --git a/FinModelUtility/Fin/Fin/src/language/equations/fixedFunction/FixedFunctionEquationsGlslPrinter.cs b/FinModelUtility/Fin/Fin/src/language/equations/fixedFunction/FixedFunctionEquationsGlslPrinter.cs index c3ece001e..b7a61e0bb 100644 --- a/FinModelUtility/Fin/Fin/src/language/equations/fixedFunction/FixedFunctionEquationsGlslPrinter.cs +++ b/FinModelUtility/Fin/Fin/src/language/equations/fixedFunction/FixedFunctionEquationsGlslPrinter.cs @@ -141,7 +141,7 @@ public void Print( for (var i = 0; i < usedColors.Length; ++i) { if (usedColors[i]) { AppendLineBetweenUniformsAndIns(); - sb.AppendLine($"in vec4 vertexColor{i};"); + sb.AppendLine($"in vec4 {GlslConstants.IN_VERTEX_COLOR_NAME}{i};"); } } @@ -149,7 +149,7 @@ public void Print( for (var i = 0; i < usedUvs.Length; ++i) { if (usedUvs[i]) { AppendLineBetweenUniformsAndIns(); - sb.AppendLine($"in vec2 uv{i};"); + sb.AppendLine($"in vec2 {GlslConstants.IN_UV_NAME}{i};"); } } @@ -568,8 +568,8 @@ private string GetScalarIdentifiedValue_( FixedFunctionSource.LIGHT_AMBIENT_ALPHA => "ambientLightColor.a", - FixedFunctionSource.VERTEX_ALPHA_0 => "vertexColor0.a", - FixedFunctionSource.VERTEX_ALPHA_1 => "vertexColor1.a", + FixedFunctionSource.VERTEX_ALPHA_0 => $"{GlslConstants.IN_VERTEX_COLOR_NAME}0.a", + FixedFunctionSource.VERTEX_ALPHA_1 => $"{GlslConstants.IN_VERTEX_COLOR_NAME}1.a", FixedFunctionSource.UNDEFINED => "1", _ => throw new ArgumentOutOfRangeException() @@ -799,11 +799,11 @@ private string GetColorNamedValue_( FixedFunctionSource.LIGHT_AMBIENT_COLOR => "ambientLightColor.rgb", FixedFunctionSource.LIGHT_AMBIENT_ALPHA => "ambientLightColor.aaa", - FixedFunctionSource.VERTEX_COLOR_0 => "vertexColor0.rgb", - FixedFunctionSource.VERTEX_COLOR_1 => "vertexColor1.rgb", + FixedFunctionSource.VERTEX_COLOR_0 => $"{GlslConstants.IN_VERTEX_COLOR_NAME}0.rgb", + FixedFunctionSource.VERTEX_COLOR_1 => $"{GlslConstants.IN_VERTEX_COLOR_NAME}1.rgb", - FixedFunctionSource.VERTEX_ALPHA_0 => "vertexColor0.aaa", - FixedFunctionSource.VERTEX_ALPHA_1 => "vertexColor1.aaa", + FixedFunctionSource.VERTEX_ALPHA_0 => $"{GlslConstants.IN_VERTEX_COLOR_NAME}0.aaa", + FixedFunctionSource.VERTEX_ALPHA_1 => $"{GlslConstants.IN_VERTEX_COLOR_NAME}1.aaa", FixedFunctionSource.UNDEFINED => "vec3(1)", _ => throw new ArgumentOutOfRangeException() @@ -825,7 +825,7 @@ private string GetTextureValue_(int textureIndex, return texture.UvType switch { UvType.STANDARD => GlslUtil.ReadColorFromTexture(textureName, - $"uv{texture.UvIndex}", + $"{GlslConstants.IN_UV_NAME}{texture.UvIndex}", texture, this.animations_), UvType.SPHERICAL diff --git a/FinModelUtility/Fin/Fin/src/shaders/glsl/ShaderRequirements.cs b/FinModelUtility/Fin/Fin/src/shaders/glsl/ShaderRequirements.cs index 3d403d508..d8ba30a2b 100644 --- a/FinModelUtility/Fin/Fin/src/shaders/glsl/ShaderRequirements.cs +++ b/FinModelUtility/Fin/Fin/src/shaders/glsl/ShaderRequirements.cs @@ -42,6 +42,12 @@ or IStandardMaterial break; } case IFixedFunctionMaterial fixedFunctionMaterial: { + foreach (var texture in fixedFunctionMaterial.TextureSources) { + if (texture != null) { + this.UsedUvs[texture.UvIndex] = true; + } + } + var equations = fixedFunctionMaterial.Equations; for (var i = 0; i < this.UsedColors.Length; ++i) { this.UsedColors[i] = equations.DoOutputsDependOn([ diff --git a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Bonus/output/c1ttrk_c1ttrk.fragment.glsl b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Bonus/output/c1ttrk_c1ttrk.fragment.glsl index b0fae5ad3..79f6c3d41 100644 --- a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Bonus/output/c1ttrk_c1ttrk.fragment.glsl +++ b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Bonus/output/c1ttrk_c1ttrk.fragment.glsl @@ -5,6 +5,7 @@ uniform sampler2D texture1; in vec4 vertexColor0; in vec2 uv0; +in vec2 uv1; out vec4 fragColor; diff --git a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Bonus/output/c1ttrk_c1ttrk.vertex.glsl b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Bonus/output/c1ttrk_c1ttrk.vertex.glsl index efb9639ae..599dad1d3 100644 --- a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Bonus/output/c1ttrk_c1ttrk.vertex.glsl +++ b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Bonus/output/c1ttrk_c1ttrk.vertex.glsl @@ -21,6 +21,7 @@ out vec3 vertexNormal; out vec3 tangent; out vec3 binormal; out vec2 uv0; +out vec2 uv1; out vec4 vertexColor0; void main() { @@ -29,5 +30,6 @@ void main() { tangent = normalize(modelMatrix * vec4(in_Tangent)).xyz; binormal = cross(vertexNormal, tangent); uv0 = in_Uvs[0]; + uv1 = in_Uvs[1]; vertexColor0 = in_Colors[0]; } diff --git a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttdrt_c1ttdrt.fragment.glsl b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttdrt_c1ttdrt.fragment.glsl index b0fae5ad3..79f6c3d41 100644 --- a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttdrt_c1ttdrt.fragment.glsl +++ b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttdrt_c1ttdrt.fragment.glsl @@ -5,6 +5,7 @@ uniform sampler2D texture1; in vec4 vertexColor0; in vec2 uv0; +in vec2 uv1; out vec4 fragColor; diff --git a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttdrt_c1ttdrt.vertex.glsl b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttdrt_c1ttdrt.vertex.glsl index efb9639ae..599dad1d3 100644 --- a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttdrt_c1ttdrt.vertex.glsl +++ b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttdrt_c1ttdrt.vertex.glsl @@ -21,6 +21,7 @@ out vec3 vertexNormal; out vec3 tangent; out vec3 binormal; out vec2 uv0; +out vec2 uv1; out vec4 vertexColor0; void main() { @@ -29,5 +30,6 @@ void main() { tangent = normalize(modelMatrix * vec4(in_Tangent)).xyz; binormal = cross(vertexNormal, tangent); uv0 = in_Uvs[0]; + uv1 = in_Uvs[1]; vertexColor0 = in_Colors[0]; } diff --git a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttdrtgra02_c1ttdrtgra02.fragment.glsl b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttdrtgra02_c1ttdrtgra02.fragment.glsl index b0fae5ad3..79f6c3d41 100644 --- a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttdrtgra02_c1ttdrtgra02.fragment.glsl +++ b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttdrtgra02_c1ttdrtgra02.fragment.glsl @@ -5,6 +5,7 @@ uniform sampler2D texture1; in vec4 vertexColor0; in vec2 uv0; +in vec2 uv1; out vec4 fragColor; diff --git a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttdrtgra02_c1ttdrtgra02.vertex.glsl b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttdrtgra02_c1ttdrtgra02.vertex.glsl index efb9639ae..599dad1d3 100644 --- a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttdrtgra02_c1ttdrtgra02.vertex.glsl +++ b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttdrtgra02_c1ttdrtgra02.vertex.glsl @@ -21,6 +21,7 @@ out vec3 vertexNormal; out vec3 tangent; out vec3 binormal; out vec2 uv0; +out vec2 uv1; out vec4 vertexColor0; void main() { @@ -29,5 +30,6 @@ void main() { tangent = normalize(modelMatrix * vec4(in_Tangent)).xyz; binormal = cross(vertexNormal, tangent); uv0 = in_Uvs[0]; + uv1 = in_Uvs[1]; vertexColor0 = in_Colors[0]; } diff --git a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttgrav1_c1ttgrav1.fragment.glsl b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttgrav1_c1ttgrav1.fragment.glsl index b0fae5ad3..79f6c3d41 100644 --- a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttgrav1_c1ttgrav1.fragment.glsl +++ b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttgrav1_c1ttgrav1.fragment.glsl @@ -5,6 +5,7 @@ uniform sampler2D texture1; in vec4 vertexColor0; in vec2 uv0; +in vec2 uv1; out vec4 fragColor; diff --git a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttgrav1_c1ttgrav1.vertex.glsl b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttgrav1_c1ttgrav1.vertex.glsl index efb9639ae..599dad1d3 100644 --- a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttgrav1_c1ttgrav1.vertex.glsl +++ b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttgrav1_c1ttgrav1.vertex.glsl @@ -21,6 +21,7 @@ out vec3 vertexNormal; out vec3 tangent; out vec3 binormal; out vec2 uv0; +out vec2 uv1; out vec4 vertexColor0; void main() { @@ -29,5 +30,6 @@ void main() { tangent = normalize(modelMatrix * vec4(in_Tangent)).xyz; binormal = cross(vertexNormal, tangent); uv0 = in_Uvs[0]; + uv1 = in_Uvs[1]; vertexColor0 = in_Colors[0]; } diff --git a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttrk_c1ttrk.fragment.glsl b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttrk_c1ttrk.fragment.glsl index b0fae5ad3..79f6c3d41 100644 --- a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttrk_c1ttrk.fragment.glsl +++ b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttrk_c1ttrk.fragment.glsl @@ -5,6 +5,7 @@ uniform sampler2D texture1; in vec4 vertexColor0; in vec2 uv0; +in vec2 uv1; out vec4 fragColor; diff --git a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttrk_c1ttrk.vertex.glsl b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttrk_c1ttrk.vertex.glsl index efb9639ae..599dad1d3 100644 --- a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttrk_c1ttrk.vertex.glsl +++ b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_1/C1_Gauntlet/output/c1ttrk_c1ttrk.vertex.glsl @@ -21,6 +21,7 @@ out vec3 vertexNormal; out vec3 tangent; out vec3 binormal; out vec2 uv0; +out vec2 uv1; out vec4 vertexColor0; void main() { @@ -29,5 +30,6 @@ void main() { tangent = normalize(modelMatrix * vec4(in_Tangent)).xyz; binormal = cross(vertexNormal, tangent); uv0 = in_Uvs[0]; + uv1 = in_Uvs[1]; vertexColor0 = in_Colors[0]; } diff --git a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_2/MP1_L/output/c4ttboringmud_c4ttboringmud.fragment.glsl b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_2/MP1_L/output/c4ttboringmud_c4ttboringmud.fragment.glsl index b0fae5ad3..79f6c3d41 100644 --- a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_2/MP1_L/output/c4ttboringmud_c4ttboringmud.fragment.glsl +++ b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_2/MP1_L/output/c4ttboringmud_c4ttboringmud.fragment.glsl @@ -5,6 +5,7 @@ uniform sampler2D texture1; in vec4 vertexColor0; in vec2 uv0; +in vec2 uv1; out vec4 fragColor; diff --git a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_2/MP1_L/output/c4ttboringmud_c4ttboringmud.vertex.glsl b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_2/MP1_L/output/c4ttboringmud_c4ttboringmud.vertex.glsl index efb9639ae..599dad1d3 100644 --- a/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_2/MP1_L/output/c4ttboringmud_c4ttboringmud.vertex.glsl +++ b/FinModelUtility/Formats/Modl/Modl Tests/goldens/out/battalion_wars_2/MP1_L/output/c4ttboringmud_c4ttboringmud.vertex.glsl @@ -21,6 +21,7 @@ out vec3 vertexNormal; out vec3 tangent; out vec3 binormal; out vec2 uv0; +out vec2 uv1; out vec4 vertexColor0; void main() { @@ -29,5 +30,6 @@ void main() { tangent = normalize(modelMatrix * vec4(in_Tangent)).xyz; binormal = cross(vertexNormal, tangent); uv0 = in_Uvs[0]; + uv1 = in_Uvs[1]; vertexColor0 = in_Colors[0]; }