From f5f6a899903a309f1fc93b31c0297fc7b3b5cf46 Mon Sep 17 00:00:00 2001 From: Andrew Reidmeyer Date: Wed, 15 Mar 2017 09:28:59 -0600 Subject: Initial 1.0.0 binary release --- demo/Shaders/customEmitEmit2CS.hlsl | 66 +++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 demo/Shaders/customEmitEmit2CS.hlsl (limited to 'demo/Shaders/customEmitEmit2CS.hlsl') 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 blockList : register(t0); +Texture3D blockTable : register(t1); +Texture3D dataSRV : register(t2); +RWTexture3D 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 -- cgit v1.2.3