Browse Source

samples: float4→float3 for vtx_normal in cartoon & fireflies samples

It seems that Cg's glslv profile causes the w coordinate of the normal column to be random.

Fixes #494
Fixes #495
rdb 7 years ago
parent
commit
4a7266d420
2 changed files with 10 additions and 12 deletions
  1. 8 10
      samples/cartoon-shader/normalGen.sha
  2. 2 2
      samples/fireflies/model.sha

+ 8 - 10
samples/cartoon-shader/normalGen.sha

@@ -3,14 +3,14 @@
 //Cg profile arbvp1 arbfp1
 
 void vshader(float4 vtx_position : POSITION,
-             float4 vtx_normal : NORMAL,
-            out float4 l_position : POSITION,
-            out float3 l_color : TEXCOORD0,   
-            uniform float4x4 mat_modelproj,
-            uniform float4x4 itp_modelview)
+             float3 vtx_normal : NORMAL,
+             out float4 l_position : POSITION,
+             out float3 l_color : TEXCOORD0,
+             uniform float4x4 mat_modelproj,
+             uniform float4x4 itp_modelview)
 {
-  l_position=mul(mat_modelproj, vtx_position);
-  l_color=(float3)mul(itp_modelview, vtx_normal);
+  l_position = mul(mat_modelproj, vtx_position);
+  l_color = (float3)mul(itp_modelview, float4(vtx_normal, 0));
 }
 
 void fshader(float3 l_color: TEXCOORD0,
@@ -18,8 +18,6 @@ void fshader(float3 l_color: TEXCOORD0,
 {
   l_color = normalize(l_color);
   l_color = l_color/2;
-  o_color.rgb = l_color + float4(0.5, 0.5, 0.5, 0.5);
+  o_color.rgb = l_color.rgb + float3(0.5, 0.5, 0.5);
   o_color.a = 1;
 }
-
-

+ 2 - 2
samples/fireflies/model.sha

@@ -4,7 +4,7 @@
 
 void vshader(float4 vtx_position : POSITION,
              float2 vtx_texcoord0 : TEXCOORD0,
-             float4 vtx_normal : NORMAL,
+             float3 vtx_normal : NORMAL,
              float4 vtx_color : COLOR,
              out float4 l_position : POSITION,
              out float2 l_texcoord0 : TEXCOORD0,
@@ -16,7 +16,7 @@ void vshader(float4 vtx_position : POSITION,
   l_position=mul(mat_modelproj, vtx_position);
   l_texcoord0 = vtx_texcoord0;
   l_color = vtx_color;
-  l_normal = (float3)mul(itp_modelview, vtx_normal);
+  l_normal = (float3)mul(itp_modelview, float4(vtx_normal, 0));
 }
 
 void fshader(float2 l_texcoord0: TEXCOORD0,