GpuParticleInject.bsl 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. shader GpuParticleInject
  2. {
  3. depth
  4. {
  5. write = false;
  6. read = false;
  7. };
  8. code
  9. {
  10. struct VertexInput
  11. {
  12. float4 posAndTime : TEXCOORD0;
  13. float4 velocity : TEXCOORD1;
  14. float2 size : TEXCOORD2;
  15. float rotation : TEXCOORD3;
  16. float2 dataUV : TEXCOORD4;
  17. float2 uv0 : TEXCOORD5;
  18. };
  19. struct VStoFS
  20. {
  21. float4 position : SV_POSITION;
  22. float4 posAndTime : TEXCOORD0;
  23. float4 velocity : TEXCOORD1;
  24. float3 sizeAndRotation : TEXCOORD2;
  25. };
  26. cbuffer Input
  27. {
  28. float4 gUVToNDC;
  29. };
  30. VStoFS vsmain(VertexInput input)
  31. {
  32. float2 uv = input.uv0 + input.dataUV;
  33. VStoFS output;
  34. output.position = float4(uv * gUVToNDC.xy + gUVToNDC.zw, 0.0f, 1.0f);
  35. output.posAndTime = input.posAndTime;
  36. output.velocity = input.velocity;
  37. output.sizeAndRotation = float3(input.size, input.rotation);
  38. return output;
  39. }
  40. void fsmain(VStoFS input,
  41. out float4 outPosAndTime : SV_Target0,
  42. out float4 outVel : SV_Target1,
  43. out float4 outSizeAndRotation : SV_Target2)
  44. {
  45. outPosAndTime = input.posAndTime;
  46. outVel = input.velocity;
  47. outSizeAndRotation = float4(input.sizeAndRotation, 0.0f);
  48. }
  49. };
  50. };