aboutsummaryrefslogtreecommitdiff
path: root/demo/Shaders/customEmitEmit2CS.hlsl
diff options
context:
space:
mode:
Diffstat (limited to 'demo/Shaders/customEmitEmit2CS.hlsl')
-rw-r--r--demo/Shaders/customEmitEmit2CS.hlsl66
1 files changed, 66 insertions, 0 deletions
diff --git a/demo/Shaders/customEmitEmit2CS.hlsl b/demo/Shaders/customEmitEmit2CS.hlsl
new file mode 100644
index 0000000..4616b87
--- /dev/null
+++ b/demo/Shaders/customEmitEmit2CS.hlsl
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2014-2017, NVIDIA CORPORATION. All rights reserved.
+*
+* NVIDIA CORPORATION and its licensors retain all intellectual property
+* and proprietary rights in and to this software, related documentation
+* and any modifications thereto. Any use, reproduction, disclosure or
+* distribution of this software and related documentation without an express
+* license agreement from NVIDIA CORPORATION is strictly prohibited.
+*/
+
+#define THREAD_DIM_X 8
+#define THREAD_DIM_Y 8
+#define THREAD_DIM_Z 8
+
+typedef uint4 NvFlowUint4;
+typedef float4 NvFlowFloat4;
+
+/// Begin Samplers supplied by ComputeContext
+SamplerState borderSampler : register(s0);
+SamplerState borderPointSampler : register(s1);
+SamplerState wrapSampler : register(s2);
+SamplerState wrapPointSampler : register(s3);
+SamplerState clampSampler : register(s4);
+SamplerState clampPointSampler : register(s5);
+/// End Samplers supplied by ComputeContext
+
+#include "../DemoApp/flowShaderParams.h"
+
+cbuffer params : register(b0)
+{
+ NvFlowShaderPointParams customEmitParams;
+
+ NvFlowUint4 minVidx;
+ NvFlowUint4 maxVidx;
+ NvFlowFloat4 targetValue;
+ NvFlowFloat4 blendRate;
+};
+
+Buffer<uint> blockList : register(t0);
+Texture3D<uint> blockTable : register(t1);
+Texture3D<float4> dataSRV : register(t2);
+RWTexture3D<float4> dataUAV : register(u0);
+
+NV_FLOW_DISPATCH_ID_TO_VIRTUAL(blockList, customEmitParams);
+
+NV_FLOW_VIRTUAL_TO_REAL(VirtualToReal, blockTable, customEmitParams);
+
+[numthreads(THREAD_DIM_X, THREAD_DIM_Y, THREAD_DIM_Z)]
+void customEmitEmit2CS(uint3 tidx : SV_DispatchThreadID)
+{
+ int3 vidx = DispatchIDToVirtual(tidx);
+
+ //int3 vidx = tidx.xyz + minVidx.xyz;
+
+ int3 ridx = VirtualToReal(vidx);
+
+ float4 value = dataSRV[ridx];
+
+ if (all(vidx >= int3(minVidx.xyz)) && all(vidx < int3(maxVidx.xyz)))
+ {
+ value = (1.f.xxxx - blendRate) * value + blendRate * targetValue;
+ value = (1.f.xxxx - blendRate) * value + blendRate * targetValue;
+ }
+
+ dataUAV[ridx] = value;
+} \ No newline at end of file