GpuParticleTileVertex.bslinc 717 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. mixin GpuParticleTileVertex
  2. {
  3. depth
  4. {
  5. write = false;
  6. read = false;
  7. };
  8. code
  9. {
  10. struct VertexInput
  11. {
  12. uint vertexId : SV_VertexID;
  13. uint instanceId : SV_InstanceID;
  14. float2 uv0 : TEXCOORD0;
  15. };
  16. struct VStoFS
  17. {
  18. noperspective float4 position : SV_POSITION;
  19. noperspective float2 uv0 : TEXCOORD0;
  20. };
  21. Buffer<float2> gTileUVs;
  22. cbuffer Input
  23. {
  24. float4 gUVToNDC;
  25. };
  26. VStoFS vsmain(VertexInput input)
  27. {
  28. uint tileId = input.instanceId * TILES_PER_INSTANCE + input.vertexId / 4;
  29. float2 uv = input.uv0 + gTileUVs[tileId];
  30. VStoFS output;
  31. output.position = float4(uv * gUVToNDC.xy + gUVToNDC.zw, 0.0f, 1.0f);
  32. output.uv0 = uv;
  33. return output;
  34. }
  35. };
  36. };