PickingAlphaCull.bslinc 891 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. mixin PickingAlphaCull
  2. {
  3. raster
  4. {
  5. scissor = true;
  6. };
  7. code
  8. {
  9. cbuffer Uniforms
  10. {
  11. float4x4 gMatWorldViewProj;
  12. float4 gColorIndex;
  13. float gAlphaCutoff;
  14. }
  15. void vsmain(
  16. in float3 inPos : POSITION,
  17. in float3 inNorm : NORMAL,
  18. in float2 uv : TEXCOORD0,
  19. out float4 oPosition : SV_Position,
  20. out float4 oNorm : NORMAL,
  21. out float2 oUv : TEXCOORD0)
  22. {
  23. oPosition = mul(gMatWorldViewProj, float4(inPos.xyz, 1));
  24. oNorm = float4(inNorm, 0);
  25. oUv = uv;
  26. }
  27. SamplerState gMainTexSamp;
  28. Texture2D gMainTexture;
  29. float4 fsmain(
  30. in float4 inPos : SV_Position,
  31. in float4 inNorm : NORMAL,
  32. in float2 uv : TEXCOORD0,
  33. out float4 oNorm : SV_Target1) : SV_Target0
  34. {
  35. float4 color = gMainTexture.Sample(gMainTexSamp, uv);
  36. oNorm = (inNorm + float4(1,1,1,0)) / 2;
  37. if(color.a < gAlphaCutoff)
  38. discard;
  39. return gColorIndex;
  40. }
  41. };
  42. };