From ab7d9b59cfc99886de3369ff709cd1f026c666ea Mon Sep 17 00:00:00 2001 From: ds5678 <49847914+ds5678@users.noreply.github.com> Date: Tue, 15 Jul 2025 13:48:55 -0700 Subject: [PATCH] Improve dummy shader vertex stage --- .../Shaders/Templates/Default.txt | 7 ++++--- .../Shaders/Templates/SingleColor.txt | 7 ++++--- .../Shaders/Templates/SingleTexture.txt | 13 +++++++++---- .../Shaders/Templates/TransparentDiffuse.txt | 13 +++++++++---- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/Source/AssetRipper.Export.UnityProjects/Shaders/Templates/Default.txt b/Source/AssetRipper.Export.UnityProjects/Shaders/Templates/Default.txt index 619da3f40..b27652c47 100644 --- a/Source/AssetRipper.Export.UnityProjects/Shaders/Templates/Default.txt +++ b/Source/AssetRipper.Export.UnityProjects/Shaders/Templates/Default.txt @@ -8,11 +8,12 @@ #pragma vertex vert #pragma fragment frag - float4x4 unity_MatrixMVP; + float4x4 unity_ObjectToWorld; + float4x4 unity_MatrixVP; struct Vertex_Stage_Input { - float3 pos : POSITION; + float4 pos : POSITION; }; struct Vertex_Stage_Output @@ -23,7 +24,7 @@ Vertex_Stage_Output vert(Vertex_Stage_Input input) { Vertex_Stage_Output output; - output.pos = mul(unity_MatrixMVP, float4(input.pos, 1.0)); + output.pos = mul(unity_MatrixVP, mul(unity_ObjectToWorld, input.pos)); return output; } diff --git a/Source/AssetRipper.Export.UnityProjects/Shaders/Templates/SingleColor.txt b/Source/AssetRipper.Export.UnityProjects/Shaders/Templates/SingleColor.txt index e6179b291..3e8c4162a 100644 --- a/Source/AssetRipper.Export.UnityProjects/Shaders/Templates/SingleColor.txt +++ b/Source/AssetRipper.Export.UnityProjects/Shaders/Templates/SingleColor.txt @@ -8,11 +8,12 @@ #pragma vertex vert #pragma fragment frag - float4x4 unity_MatrixMVP; + float4x4 unity_ObjectToWorld; + float4x4 unity_MatrixVP; struct Vertex_Stage_Input { - float3 pos : POSITION; + float4 pos : POSITION; }; struct Vertex_Stage_Output @@ -23,7 +24,7 @@ Vertex_Stage_Output vert(Vertex_Stage_Input input) { Vertex_Stage_Output output; - output.pos = mul(unity_MatrixMVP, float4(input.pos, 1.0)); + output.pos = mul(unity_MatrixVP, mul(unity_ObjectToWorld, input.pos)); return output; } diff --git a/Source/AssetRipper.Export.UnityProjects/Shaders/Templates/SingleTexture.txt b/Source/AssetRipper.Export.UnityProjects/Shaders/Templates/SingleTexture.txt index 9cd44d502..e683f5896 100644 --- a/Source/AssetRipper.Export.UnityProjects/Shaders/Templates/SingleTexture.txt +++ b/Source/AssetRipper.Export.UnityProjects/Shaders/Templates/SingleTexture.txt @@ -8,22 +8,27 @@ #pragma vertex vert #pragma fragment frag - float4x4 unity_MatrixMVP; + float4x4 unity_ObjectToWorld; + float4x4 unity_MatrixVP; + float4 _MainTex_ST; struct Vertex_Stage_Input { - float3 pos : POSITION; + float4 pos : POSITION; + float2 uv : TEXCOORD0; }; struct Vertex_Stage_Output { + float2 uv : TEXCOORD0; float4 pos : SV_POSITION; }; Vertex_Stage_Output vert(Vertex_Stage_Input input) { Vertex_Stage_Output output; - output.pos = mul(unity_MatrixMVP, float4(input.pos, 1.0)); + output.uv = (input.uv.xy * _MainTex_ST.xy) + _MainTex_ST.zw; + output.pos = mul(unity_MatrixVP, mul(unity_ObjectToWorld, input.pos)); return output; } @@ -37,7 +42,7 @@ float4 frag(Fragment_Stage_Input input) : SV_TARGET { - return _MainTex.Sample(sampler_MainTex, float2(input.uv.x, input.uv.y)); + return _MainTex.Sample(sampler_MainTex, input.uv.xy); } ENDHLSL diff --git a/Source/AssetRipper.Export.UnityProjects/Shaders/Templates/TransparentDiffuse.txt b/Source/AssetRipper.Export.UnityProjects/Shaders/Templates/TransparentDiffuse.txt index a54bbb833..3202dd3f3 100644 --- a/Source/AssetRipper.Export.UnityProjects/Shaders/Templates/TransparentDiffuse.txt +++ b/Source/AssetRipper.Export.UnityProjects/Shaders/Templates/TransparentDiffuse.txt @@ -8,22 +8,27 @@ #pragma vertex vert #pragma fragment frag - float4x4 unity_MatrixMVP; + float4x4 unity_ObjectToWorld; + float4x4 unity_MatrixVP; + float4 _MainTex_ST; struct Vertex_Stage_Input { - float3 pos : POSITION; + float4 pos : POSITION; + float2 uv : TEXCOORD0; }; struct Vertex_Stage_Output { + float2 uv : TEXCOORD0; float4 pos : SV_POSITION; }; Vertex_Stage_Output vert(Vertex_Stage_Input input) { Vertex_Stage_Output output; - output.pos = mul(unity_MatrixMVP, float4(input.pos, 1.0)); + output.uv = (input.uv.xy * _MainTex_ST.xy) + _MainTex_ST.zw; + output.pos = mul(unity_MatrixVP, mul(unity_ObjectToWorld, input.pos)); return output; } @@ -38,7 +43,7 @@ float4 frag(Fragment_Stage_Input input) : SV_TARGET { - return _MainTex.Sample(sampler_MainTex, float2(input.uv.x, input.uv.y)) * _Color; + return _MainTex.Sample(sampler_MainTex, input.uv.xy) * _Color; } ENDHLSL