diff options
| author | Andrew Reidmeyer <[email protected]> | 2017-03-15 09:28:59 -0600 |
|---|---|---|
| committer | Andrew Reidmeyer <[email protected]> | 2017-03-15 09:28:59 -0600 |
| commit | f5f6a899903a309f1fc93b31c0297fc7b3b5cf46 (patch) | |
| tree | ed3dece338b579d5b51af494b2d543fb46c43fa3 /demo/Shaders/customEmitEmit2CS.hlsl | |
| download | flow-1.0.0.tar.xz flow-1.0.0.zip | |
Initial 1.0.0 binary releasev1.0.0
Diffstat (limited to 'demo/Shaders/customEmitEmit2CS.hlsl')
| -rw-r--r-- | demo/Shaders/customEmitEmit2CS.hlsl | 66 |
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 |