#include "shared/hash-functions.hlsl" // #include "shared/noise-functions.hlsl" #include "shared/point.hlsl" #include "shared/quat-functions.hlsl" #include "shared/bias-functions.hlsl" /*{ADDITIONAL_INCLUDES}*/ cbuffer Params : register(b0) { } cbuffer Params : register(b1) { /*{FLOAT_PARAMS}*/ } cbuffer Params : register(b2) { int WriteTo; } StructuredBuffer SourcePoints : t0; RWStructuredBuffer ResultPoints : u0; sampler ClampedSampler : register(s0); //=== Additional Resources ========================================== /*{RESOURCES(t1)}*/ //=== Global functions ============================================== /*{GLOBALS}*/ //=== Field functions =============================================== /*{FIELD_FUNCTIONS}*/ //------------------------------------------------------------------- float4 GetField(float4 p) { float4 f = 1; /*{FIELD_CALL}*/ return f; } inline float GetDistance(float3 p3) { return GetField(float4(p3.xyz, 0)).w; } //=================================================================== static const float NoisePhase = 0; [numthreads(64, 1, 1)] void main(uint3 i : SV_DispatchThreadID) { uint numStructs, stride; SourcePoints.GetDimensions(numStructs, stride); if (i.x >= numStructs) return; Point p = SourcePoints[i.x]; if (isnan(p.Scale.x)) { ResultPoints[i.x] = p; return; } float3 pos = p.Position; float4 f = GetField(float4(pos, 0)); if (WriteTo == 1) { p.FX1 = f.w; } else if (WriteTo == 2) { p.FX2 = f.w; } ResultPoints[i.x] = p; }