inkGen.sha 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. //Cg
  2. //
  3. //Cg profile arbvp1 arbfp1
  4. void vshader(float4 vtx_position : POSITION,
  5. float4 vtx_texcoord0 : TEXCOORD0,
  6. out float4 l_position : POSITION,
  7. out float4 l_texcoord0 : TEXCOORD0,
  8. uniform float4x4 mat_modelproj)
  9. {
  10. l_position=mul(mat_modelproj, vtx_position);
  11. l_texcoord0 = vtx_texcoord0;
  12. }
  13. void fshader(float4 l_texcoord0 : TEXCOORD0,
  14. uniform sampler2D tex_0 : TEXUNIT0,
  15. uniform float4 k_cutoff : C6,
  16. uniform float4 k_separation : C7,
  17. out float4 o_color : COLOR)
  18. {
  19. float4 texcoord0 = l_texcoord0 + k_separation.xyzw;
  20. float4 color0=tex2D(tex_0, float2(texcoord0.x, texcoord0.y));
  21. float4 texcoord1 = l_texcoord0 - k_separation.xyzw;
  22. float4 color1=tex2D(tex_0, float2(texcoord1.x, texcoord1.y));
  23. float4 texcoord2 = l_texcoord0 + k_separation.wzyx;
  24. float4 color2=tex2D(tex_0, float2(texcoord2.x, texcoord2.y));
  25. float4 texcoord3 = l_texcoord0 - k_separation.wzyx;
  26. float4 color3=tex2D(tex_0, float2(texcoord3.x, texcoord3.y));
  27. float4 mx = max(color0,max(color1,max(color2,color3)));
  28. float4 mn = min(color0,min(color1,min(color2,color3)));
  29. float4 trigger = saturate(((mx-mn) * 3) - k_cutoff.x);
  30. float thresh = dot(float3(trigger.x, trigger.y, trigger.z),float3(1,1,1));
  31. float4 output_color = float4 (0, 0, 0, thresh);
  32. o_color = output_color;
  33. }