VolumeRenderBase.bslinc 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. Technique : base("VolumeRenderBase") =
  2. {
  3. Pass =
  4. {
  5. DepthWrite = false;
  6. DepthRead = false;
  7. Common =
  8. {
  9. struct VStoGS
  10. {
  11. float4 position : SV_POSITION;
  12. float2 uv0 : TEXCOORD0;
  13. uint layerIdx : TEXCOORD1;
  14. };
  15. struct GStoFS
  16. {
  17. float4 position : SV_POSITION;
  18. float2 uv0 : TEXCOORD0;
  19. uint layerIdx : SV_RenderTargetArrayIndex;
  20. };
  21. };
  22. Vertex =
  23. {
  24. struct VertexInput
  25. {
  26. float2 screenPos : POSITION;
  27. float2 uv0 : TEXCOORD0;
  28. uint layerIdx : SV_InstanceID;
  29. };
  30. VStoGS main(VertexInput input)
  31. {
  32. VStoGS output;
  33. output.position = float4(input.screenPos, 0, 1);
  34. output.uv0 = input.uv0;
  35. output.layerIdx = input.layerIdx;
  36. return output;
  37. }
  38. };
  39. Geometry =
  40. {
  41. [maxvertexcount(3)]
  42. void main(triangle VStoGS input[3], inout TriangleStream<GStoFS> outStream)
  43. {
  44. GStoFS vert0;
  45. vert0.position = input[0].position;
  46. vert0.uv0 = input[0].uv0;
  47. vert0.layerIdx = input[0].layerIdx;
  48. GStoFS vert1;
  49. vert1.position = input[1].position;
  50. vert1.uv0 = input[1].uv0;
  51. vert1.layerIdx = input[1].layerIdx;
  52. GStoFS vert2;
  53. vert2.position = input[2].position;
  54. vert2.uv0 = input[2].uv0;
  55. vert2.layerIdx = input[2].layerIdx;
  56. outStream.Append(vert0);
  57. outStream.Append(vert1);
  58. outStream.Append(vert2);
  59. }
  60. };
  61. };
  62. };