Texture3DLerp.compute 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #pragma warning(disable : 3568)
  2. #pragma exclude_renderers gles gles3 d3d11_9x
  3. #include "../StdLib.hlsl"
  4. #pragma kernel KTexture3DLerp
  5. #pragma kernel KTexture3DLerpToColor
  6. RWTexture3D<float4> _Output;
  7. CBUFFER_START(Params)
  8. float4 _DimensionsAndLerp; // xyz: surface dimensions, w: lerp factor
  9. float4 _TargetColor; // Color to lerp into
  10. CBUFFER_END
  11. Texture3D _From;
  12. Texture3D _To;
  13. #define GROUP_SIZE 4
  14. #ifdef DISABLE_COMPUTE_SHADERS
  15. TRIVIAL_COMPUTE_KERNEL(KTexture3DLerp)
  16. TRIVIAL_COMPUTE_KERNEL(KTexture3DLerpToColor)
  17. #else
  18. [numthreads(GROUP_SIZE, GROUP_SIZE, GROUP_SIZE)]
  19. void KTexture3DLerp(uint3 id : SV_DispatchThreadID)
  20. {
  21. if(all(float3(id) < _DimensionsAndLerp.xyz))
  22. {
  23. float4 from = _From[id];
  24. float4 to = _To[id];
  25. _Output[id] = lerp(from, to, _DimensionsAndLerp.wwww);
  26. }
  27. }
  28. [numthreads(GROUP_SIZE, GROUP_SIZE, GROUP_SIZE)]
  29. void KTexture3DLerpToColor(uint3 id : SV_DispatchThreadID)
  30. {
  31. if(all(float3(id) < _DimensionsAndLerp.xyz))
  32. {
  33. float4 from = _From[id];
  34. float4 to = _TargetColor;
  35. _Output[id] = lerp(from, to, _DimensionsAndLerp.wwww);
  36. }
  37. }
  38. #endif // DISABLE_COMPUTE_SHADERS