SpineEffect.fx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. float4x4 World;
  2. float4x4 View;
  3. float4x4 Projection;
  4. sampler TextureSampler : register(s0);
  5. // TODO: add effect parameters here.
  6. struct VertexShaderInput
  7. {
  8. float4 Position : POSITION0;
  9. float4 Color : COLOR0;
  10. float4 TextureCoordinate : TEXCOORD0;
  11. float4 Color2 : COLOR1;
  12. };
  13. struct VertexShaderOutput
  14. {
  15. float4 Position : POSITION0;
  16. float4 Color : COLOR0;
  17. float4 TextureCoordinate : TEXCOORD0;
  18. float4 Color2 : COLOR1;
  19. };
  20. VertexShaderOutput VertexShaderFunction(VertexShaderInput input)
  21. {
  22. VertexShaderOutput output;
  23. float4 worldPosition = mul(input.Position, World);
  24. float4 viewPosition = mul(worldPosition, View);
  25. output.Position = mul(viewPosition, Projection);
  26. output.TextureCoordinate = input.TextureCoordinate;
  27. output.Color = input.Color;
  28. output.Color2 = input.Color2;
  29. return output;
  30. }
  31. float4 PixelShaderFunction(VertexShaderOutput input) : COLOR0
  32. {
  33. float4 texColor = tex2D(TextureSampler, input.TextureCoordinate);
  34. float alpha = texColor.a * input.Color.a;
  35. float4 output;
  36. output.a = alpha;
  37. output.rgb = ((texColor.a - 1.0) * input.Color2.a + 1.0 - texColor.rgb) * input.Color2.rgb + texColor.rgb * input.Color.rgb;
  38. return output;
  39. }
  40. technique Technique1
  41. {
  42. pass Pass1
  43. {
  44. // TODO: set renderstates here.
  45. VertexShader = compile vs_2_0 VertexShaderFunction();
  46. PixelShader = compile ps_2_0 PixelShaderFunction();
  47. }
  48. }