30#include "NvFlowContext.h"
31#include "shaders/NvFlowShaderTypes.h"
35typedef enum NvFlowPinDir
38 eNvFlowPinDir_out = 1,
40 eNvFlowPinDir_count = 2,
41 eNvFlowPinDir_maxEnum = 0x7FFFFFFF
45typedef struct NvFlowOp NvFlowOp;
48typedef struct NvFlowOpGraph NvFlowOpGraph;
50struct NvFlowOpGenericPinsIn;
51typedef struct NvFlowOpGenericPinsIn NvFlowOpGenericPinsIn;
53struct NvFlowOpGenericPinsOut;
54typedef struct NvFlowOpGenericPinsOut NvFlowOpGenericPinsOut;
56struct NvFlowOpExecuteGroup;
57typedef struct NvFlowOpExecuteGroup NvFlowOpExecuteGroup;
59NV_FLOW_REFLECT_STRUCT_OPAQUE_IMPL(NvFlowOpGraph)
63 NvFlowOpExecuteGroup* group;
72 NV_FLOW_REFLECT_INTERFACE();
74 const char* opTypename;
75 const NvFlowOpGraph* opGraph;
79 NvFlowUint64 executeGroupCount;
81 NvFlowOp*(NV_FLOW_ABI* create)(
const NvFlowOpInterface* opInterface,
const NvFlowOpGenericPinsIn* in, NvFlowOpGenericPinsOut* out);
83 void(NV_FLOW_ABI* destroy)(NvFlowOp* op,
const NvFlowOpGenericPinsIn* in, NvFlowOpGenericPinsOut* out);
85 void(NV_FLOW_ABI* execute)(NvFlowOp* op,
const NvFlowOpGenericPinsIn* in, NvFlowOpGenericPinsOut* out);
87 void(NV_FLOW_ABI* executeGroup)(NvFlowOp* op, NvFlowOpExecuteGroup* group,
const NvFlowOpGenericPinsIn* in, NvFlowOpGenericPinsOut* out);
90#define NV_FLOW_REFLECT_TYPE NvFlowOpInterface
91NV_FLOW_REFLECT_BEGIN()
92NV_FLOW_REFLECT_POINTER(
char, opTypename, 0, 0)
93NV_FLOW_REFLECT_POINTER(NvFlowOpGraph, opGraph, 0, 0)
96NV_FLOW_REFLECT_FUNCTION_POINTER(create, 0, 0)
97NV_FLOW_REFLECT_FUNCTION_POINTER(destroy, 0, 0)
98NV_FLOW_REFLECT_FUNCTION_POINTER(execute, 0, 0)
99NV_FLOW_REFLECT_FUNCTION_POINTER(executeGroup, 0, 0)
100NV_FLOW_REFLECT_END(0)
101NV_FLOW_REFLECT_INTERFACE_IMPL()
102#undef NV_FLOW_REFLECT_TYPE
104#define NV_FLOW_OP_IMPL(name, nameImpl) \
105 NvFlowOp* NvFlowOp_##nameImpl##_createGeneric(const NvFlowOpInterface* opInterface, const NvFlowOpGenericPinsIn* in, NvFlowOpGenericPinsOut* out) \
107 return (NvFlowOp*)nameImpl##_create(opInterface, (const name##PinsIn*)in, (name##PinsOut*)out); \
109 void NvFlowOp_##nameImpl##_destroyGeneric(NvFlowOp* op, const NvFlowOpGenericPinsIn* in, NvFlowOpGenericPinsOut* out) \
111 nameImpl##_destroy((nameImpl*)op, (const name##PinsIn*)in, (name##PinsOut*)out); \
113 void NvFlowOp_##nameImpl##_executeGeneric(NvFlowOp* op, const NvFlowOpGenericPinsIn* in, NvFlowOpGenericPinsOut* out) \
115 nameImpl##_execute((nameImpl*)op, (const name##PinsIn*)in, (name##PinsOut*)out); \
117 void NvFlowOp_##nameImpl##_executeGroupGeneric(NvFlowOp* op, NvFlowOpExecuteGroup* group, const NvFlowOpGenericPinsIn* in, NvFlowOpGenericPinsOut* out) \
119 nameImpl##_execute((nameImpl*)op, (const name##PinsIn*)in, (name##PinsOut*)out); \
121 NvFlowOpInterface* NvFlowOp_##nameImpl##_getOpInterface() \
123 static const NvFlowOpExecuteGroupDesc executeGroupDesc = {0, 0}; \
124 static NvFlowOpInterface iface = { \
125 NV_FLOW_REFLECT_INTERFACE_INIT(NvFlowOpInterface), \
128 &name##PinsIn_NvFlowReflectDataType, \
129 &name##PinsOut_NvFlowReflectDataType, \
132 NvFlowOp_##nameImpl##_createGeneric, \
133 NvFlowOp_##nameImpl##_destroyGeneric, \
134 NvFlowOp_##nameImpl##_executeGeneric, \
135 NvFlowOp_##nameImpl##_executeGroupGeneric \
140#define NV_FLOW_OP_TYPED(name) \
141 typedef struct name \
143 NvFlowOpInterface opInterface; \
146 NV_FLOW_INLINE NvFlowBool32 NV_FLOW_REFLECT_XCONCAT(name,_init)(name* ptr, NvFlowOpInterface* opInterface, const NV_FLOW_REFLECT_XCONCAT(name,PinsIn)* pinsIn, NV_FLOW_REFLECT_XCONCAT(name,PinsOut)* pinsOut) \
148 NvFlowOpInterface_duplicate(&ptr->opInterface, opInterface); \
149 if (NvFlowReflectStringCompare(ptr->opInterface.opTypename, #name) == 0) \
151 ptr->op = ptr->opInterface.create(&ptr->opInterface, (const NvFlowOpGenericPinsIn*)pinsIn, (NvFlowOpGenericPinsOut*)pinsOut); \
152 return NV_FLOW_TRUE; \
154 ptr->opInterface.create = 0; \
155 ptr->opInterface.destroy = 0; \
156 ptr->opInterface.execute = 0; \
157 ptr->opInterface.executeGroup = 0; \
159 return NV_FLOW_FALSE; \
161 NV_FLOW_INLINE void name##_destroy(name* ptr, const NV_FLOW_REFLECT_XCONCAT(name,PinsIn)* pinsIn, NV_FLOW_REFLECT_XCONCAT(name,PinsOut)* pinsOut) \
163 ptr->opInterface.destroy(ptr->op, (const NvFlowOpGenericPinsIn*)pinsIn, (NvFlowOpGenericPinsOut*)pinsOut); \
165 NV_FLOW_INLINE void name##_execute(name* ptr, const NV_FLOW_REFLECT_XCONCAT(name,PinsIn)* pinsIn, NV_FLOW_REFLECT_XCONCAT(name,PinsOut)* pinsOut) \
167 ptr->opInterface.execute(ptr->op, (const NvFlowOpGenericPinsIn*)pinsIn, (NvFlowOpGenericPinsOut*)pinsOut); \
173struct NvFlowOpGraphInterface;
174typedef struct NvFlowOpGraphInterface NvFlowOpGraphInterface;
179struct NvFlowOpRuntimeInterface;
180typedef struct NvFlowOpRuntimeInterface NvFlowOpRuntimeInterface;
185typedef struct NvFlowSparse NvFlowSparse;
187NV_FLOW_REFLECT_STRUCT_OPAQUE_IMPL(NvFlowSparse)
192 NvFlowUint layerCount;
194 NvFlowUint levelCount;
195 NvFlowInt4* locations;
196 NvFlowUint64 locationCount;
197 NvFlowUint2* tableRanges;
198 NvFlowUint64 tableRangeCount;
201NV_FLOW_INLINE NvFlowUint NvFlowSparseParams_layerToLayerParamIdx(
const NvFlowSparseParams* params,
int layer)
203 NvFlowUint retLayerParamIdx = ~0u;
204 for (NvFlowUint layerParamIdx = 0u; layerParamIdx < params->layerCount; layerParamIdx++)
206 if (params->layers[layerParamIdx].layer == layer)
208 retLayerParamIdx = layerParamIdx;
212 return retLayerParamIdx;
215NV_FLOW_INLINE NvFlowUint NvFlowSparseParams_locationToBlockIdx(
const NvFlowSparseParams* params, NvFlowInt4 location)
218 NvFlowUint3 bucketIdx = {
219 (NvFlowUint)location.x & tableParams->tableDimLessOne.x,
220 (NvFlowUint)location.y & tableParams->tableDimLessOne.y,
221 (NvFlowUint)location.z & tableParams->tableDimLessOne.z
223 NvFlowUint bucketIdx1D = (bucketIdx.z << (tableParams->tableDimBits_xy)) |
224 (bucketIdx.y << tableParams->tableDimBits_x) |
226 NvFlowUint2 range = params->tableRanges[bucketIdx1D];
227 NvFlowUint outBlockIdx = ~0u;
228 for (NvFlowUint blockIdx = range.x; blockIdx < range.y; blockIdx++)
230 NvFlowInt4 compareLocation = params->locations[blockIdx];
231 if (compareLocation.x == location.x &&
232 compareLocation.y == location.y &&
233 compareLocation.z == location.z &&
234 compareLocation.w == location.w)
236 outBlockIdx = blockIdx;
243NV_FLOW_INLINE NvFlowBool32 NvFlowBlockIdxToLocation(
const NvFlowSparseParams* params, NvFlowUint blockIdx, NvFlowInt4* out_location)
246 if (blockIdx < params->locationCount)
248 *out_location = params->locations[blockIdx];
253 out_location->x = 0x40000000;
254 out_location->y = 0x40000000;
255 out_location->z = 0x40000000;
256 out_location->w = 0x40000000;
263#define NV_FLOW_REFLECT_TYPE NvFlowSparseParams
264NV_FLOW_REFLECT_BEGIN()
265NV_FLOW_REFLECT_VALUE(NvFlowUint, layerCount, 0, 0)
266NV_FLOW_REFLECT_VALUE(NvFlowUint, levelCount, 0, 0)
267NV_FLOW_REFLECT_END(0)
268#undef NV_FLOW_REFLECT_TYPE
271#define NV_FLOW_REFLECT_TYPE NvFlowSparseLevelParams
272NV_FLOW_REFLECT_BEGIN()
273NV_FLOW_REFLECT_VALUE(NvFlowUint, numLocations, 0, 0)
274NV_FLOW_REFLECT_VALUE(NvFlowUint, numLayers, 0, 0)
275NV_FLOW_REFLECT_END(0)
276#undef NV_FLOW_REFLECT_TYPE
280 NvFlowTextureTransient* textureTransient;
281 NvFlowBufferTransient* sparseBuffer;
287NV_FLOW_REFLECT_STRUCT_OPAQUE_IMPL(NvFlowTextureTransient)
288NV_FLOW_REFLECT_STRUCT_OPAQUE_IMPL(NvFlowBufferTransient)
290#define NV_FLOW_REFLECT_TYPE NvFlowSparseTexture
291NV_FLOW_REFLECT_BEGIN()
292NV_FLOW_REFLECT_POINTER(NvFlowTextureTransient, textureTransient, 0, 0)
293NV_FLOW_REFLECT_POINTER(NvFlowBufferTransient, sparseBuffer, 0, 0)
295NV_FLOW_REFLECT_VALUE(NvFlowUint, levelIdx, 0, 0)
296NV_FLOW_REFLECT_ENUM(format, 0, 0)
297NV_FLOW_REFLECT_END(0)
298#undef NV_FLOW_REFLECT_TYPE
312 texDesc.textureType = eNvFlowTextureType_3d;
313 texDesc.usageFlags = eNvFlowTextureUsage_rwTexture | eNvFlowTextureUsage_texture;
314 texDesc.format = format;
315 texDesc.width = levelParams->dim.x;
316 texDesc.height = levelParams->dim.y;
317 texDesc.depth = levelParams->dim.z;
318 texDesc.mipLevels = 1u;
320 dst->textureTransient = contextInterface->getTextureTransient(
context, &texDesc);
325 NvFlowSparseTexture_duplicateWithFormat(contextInterface,
context, dst, src, src->format);
330 NvFlowFloat3 blockSizeWorld;
332 NvFlowBool32 forceClear;
333 NvFlowBool32 forceDisableEmitters;
334 NvFlowBool32 forceDisableCoreSimulation;
339 NV_FLOW_REFLECT_INTERFACE();
343 void(NV_FLOW_ABI* destroy)(NvFlowContext*
context, NvFlowSparse* sparse);
345 void(NV_FLOW_ABI* reset)(NvFlowContext*
context, NvFlowSparse* sparse, NvFlowUint maxLocations);
349 void(NV_FLOW_ABI* updateLocations)(NvFlowSparse* sparse, NvFlowInt4* locations, NvFlowUint numLocations, NvFlowUint3 baseBlockDimBits, NvFlowUint minLifetime);
351 void(NV_FLOW_ABI* updateLayerDeltaTimes)(NvFlowSparse* sparse,
float* layerDeltaTimes, NvFlowUint64 layerDeltaTimeCount);
355 void(NV_FLOW_ABI* addPasses)(NvFlowContext*
context, NvFlowSparse* sparse, NvFlowBufferTransient** pBufferTransient);
357 void(NV_FLOW_ABI* addPassesNanoVdb)(
359 NvFlowSparse* sparse,
363 NvFlowBufferTransient** pNanoVdbBufferTransient,
364 NvFlowBufferTransient** pCacheBufferTransient
367 void(NV_FLOW_ABI* addPassesNanoVdbComputeStats)(
369 NvFlowSparse* sparse,
371 NvFlowBufferTransient* nanoVdbBufferTransient,
372 NvFlowBufferTransient* cacheBufferTransient,
373 NvFlowBufferTransient* targetNanoVdbBuffer
376 void(NV_FLOW_ABI* addPassesMigrate)(
378 NvFlowSparse* sparse,
379 const int* clearLayers,
380 NvFlowUint64 clearLayerCount,
381 NvFlowBool32* clearedNoMigrateOut,
382 NvFlowTextureTransient* oldTextureTransient,
384 NvFlowFormat targetFormat,
385 NvFlowUint targetLevelIdx,
390 NvFlowBufferTransient*(NV_FLOW_ABI* getSparseBuffer)(NvFlowContext*
context, NvFlowSparse* sparse);
393#define NV_FLOW_REFLECT_TYPE NvFlowSparseInterface
394NV_FLOW_REFLECT_BEGIN()
395NV_FLOW_REFLECT_FUNCTION_POINTER(create, 0, 0)
396NV_FLOW_REFLECT_FUNCTION_POINTER(destroy, 0, 0)
397NV_FLOW_REFLECT_FUNCTION_POINTER(reset, 0, 0)
398NV_FLOW_REFLECT_FUNCTION_POINTER(updateLayers, 0, 0)
399NV_FLOW_REFLECT_FUNCTION_POINTER(updateLocations, 0, 0)
400NV_FLOW_REFLECT_FUNCTION_POINTER(updateLayerDeltaTimes, 0, 0)
401NV_FLOW_REFLECT_FUNCTION_POINTER(getParams, 0, 0)
402NV_FLOW_REFLECT_FUNCTION_POINTER(addPasses, 0, 0)
403NV_FLOW_REFLECT_FUNCTION_POINTER(addPassesNanoVdb, 0, 0)
404NV_FLOW_REFLECT_FUNCTION_POINTER(addPassesNanoVdbComputeStats, 0, 0)
405NV_FLOW_REFLECT_FUNCTION_POINTER(addPassesMigrate, 0, 0)
406NV_FLOW_REFLECT_FUNCTION_POINTER(getSparseBuffer, 0, 0)
407NV_FLOW_REFLECT_END(0)
408NV_FLOW_REFLECT_INTERFACE_IMPL()
409#undef NV_FLOW_REFLECT_TYPE
415 NvFlowBool32 enabled;
416 NvFlowBool32 statisticsEnabled;
417 NvFlowBool32 readbackEnabled;
418 NvFlowBool32 temperatureEnabled;
419 NvFlowBool32 fuelEnabled;
420 NvFlowBool32 burnEnabled;
421 NvFlowBool32 smokeEnabled;
422 NvFlowBool32 velocityEnabled;
423 NvFlowBool32 divergenceEnabled;
426#define NvFlowSparseNanoVdbExportParams_default_init { \
439#define NV_FLOW_REFLECT_TYPE NvFlowSparseNanoVdbExportParams
440NV_FLOW_REFLECT_BEGIN()
441NV_FLOW_REFLECT_VALUE(NvFlowBool32, enabled, 0, 0)
442NV_FLOW_REFLECT_VALUE(NvFlowBool32, statisticsEnabled, 0, 0)
443NV_FLOW_REFLECT_VALUE(NvFlowBool32, readbackEnabled, 0, 0)
444NV_FLOW_REFLECT_VALUE(NvFlowBool32, temperatureEnabled, 0, 0)
445NV_FLOW_REFLECT_VALUE(NvFlowBool32, fuelEnabled, 0, 0)
446NV_FLOW_REFLECT_VALUE(NvFlowBool32, burnEnabled, 0, 0)
447NV_FLOW_REFLECT_VALUE(NvFlowBool32, smokeEnabled, 0, 0)
448NV_FLOW_REFLECT_VALUE(NvFlowBool32, velocityEnabled, 0, 0)
449NV_FLOW_REFLECT_VALUE(NvFlowBool32, divergenceEnabled, 0, 0)
450NV_FLOW_REFLECT_END(&NvFlowSparseNanoVdbExportParams_default)
451#undef NV_FLOW_REFLECT_TYPE
458 NvFlowSparse* sparse;
460 NvFlowUint64 paramCount;
467 NvFlowUint64 globalFrameCompleted;
468 NvFlowUint8* temperatureNanoVdbReadback;
469 NvFlowUint64 temperatureNanoVdbReadbackSize;
470 NvFlowUint8* fuelNanoVdbReadback;
471 NvFlowUint64 fuelNanoVdbReadbackSize;
472 NvFlowUint8* burnNanoVdbReadback;
473 NvFlowUint64 burnNanoVdbReadbackSize;
474 NvFlowUint8* smokeNanoVdbReadback;
475 NvFlowUint64 smokeNanoVdbReadbackSize;
476 NvFlowUint8* velocityNanoVdbReadback;
477 NvFlowUint64 velocityNanoVdbReadbackSize;
478 NvFlowUint8* divergenceNanoVdbReadback;
479 NvFlowUint64 divergenceNanoVdbReadbackSize;
482#define NvFlowSparseNanoVdbExportReadback_default_init { \
499#define NV_FLOW_REFLECT_TYPE NvFlowSparseNanoVdbExportReadback
500NV_FLOW_REFLECT_BEGIN()
501NV_FLOW_REFLECT_VALUE(NvFlowUint64, globalFrameCompleted, 0, 0)
502NV_FLOW_REFLECT_ARRAY(NvFlowUint8, temperatureNanoVdbReadback, temperatureNanoVdbReadbackSize, 0, 0)
503NV_FLOW_REFLECT_ARRAY(NvFlowUint8, fuelNanoVdbReadback, fuelNanoVdbReadbackSize, 0, 0)
504NV_FLOW_REFLECT_ARRAY(NvFlowUint8, burnNanoVdbReadback, burnNanoVdbReadbackSize, 0, 0)
505NV_FLOW_REFLECT_ARRAY(NvFlowUint8, smokeNanoVdbReadback, smokeNanoVdbReadbackSize, 0, 0)
506NV_FLOW_REFLECT_ARRAY(NvFlowUint8, velocityNanoVdbReadback, velocityNanoVdbReadbackSize, 0, 0)
507NV_FLOW_REFLECT_ARRAY(NvFlowUint8, divergenceNanoVdbReadback, divergenceNanoVdbReadbackSize, 0, 0)
508NV_FLOW_REFLECT_END(&NvFlowSparseNanoVdbExportReadback_default)
509#undef NV_FLOW_REFLECT_TYPE
513 NvFlowBufferTransient* temperatureNanoVdb;
514 NvFlowBufferTransient* fuelNanoVdb;
515 NvFlowBufferTransient* burnNanoVdb;
516 NvFlowBufferTransient* smokeNanoVdb;
517 NvFlowBufferTransient* velocityNanoVdb;
518 NvFlowBufferTransient* divergenceNanoVdb;
521 NvFlowUint64 readbackCount;
524#define NV_FLOW_REFLECT_TYPE NvFlowSparseNanoVdbExportPinsIn
525NV_FLOW_REFLECT_BEGIN()
527NV_FLOW_REFLECT_POINTER(NvFlowContext,
context, eNvFlowReflectHint_pinEnabledGlobal, 0)
528NV_FLOW_REFLECT_POINTER(
NvFlowSparseInterface, sparseInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
529NV_FLOW_REFLECT_POINTER(NvFlowSparse, sparse, eNvFlowReflectHint_pinEnabled, 0)
533NV_FLOW_REFLECT_END(0)
534#undef NV_FLOW_REFLECT_TYPE
536#define NV_FLOW_REFLECT_TYPE NvFlowSparseNanoVdbExportPinsOut
537NV_FLOW_REFLECT_BEGIN()
538NV_FLOW_REFLECT_POINTER(NvFlowBufferTransient, temperatureNanoVdb, eNvFlowReflectHint_pinEnabled, 0)
539NV_FLOW_REFLECT_POINTER(NvFlowBufferTransient, fuelNanoVdb, eNvFlowReflectHint_pinEnabled, 0)
540NV_FLOW_REFLECT_POINTER(NvFlowBufferTransient, burnNanoVdb, eNvFlowReflectHint_pinEnabled, 0)
541NV_FLOW_REFLECT_POINTER(NvFlowBufferTransient, smokeNanoVdb, eNvFlowReflectHint_pinEnabled, 0)
542NV_FLOW_REFLECT_POINTER(NvFlowBufferTransient, velocityNanoVdb, eNvFlowReflectHint_pinEnabled, 0)
543NV_FLOW_REFLECT_POINTER(NvFlowBufferTransient, divergenceNanoVdb, eNvFlowReflectHint_pinEnabled, 0)
545NV_FLOW_REFLECT_END(0)
546#undef NV_FLOW_REFLECT_TYPE
548NV_FLOW_OP_TYPED(NvFlowSparseNanoVdbExport)
554 float secondOrderBlendThreshold;
555 float secondOrderBlendFactor;
560#define NvFlowAdvectionChannelParams_default_init { \
568#define NV_FLOW_REFLECT_TYPE NvFlowAdvectionChannelParams
569NV_FLOW_REFLECT_BEGIN()
570NV_FLOW_REFLECT_VALUE(
float, secondOrderBlendThreshold, 0, 0)
571NV_FLOW_REFLECT_VALUE(
float, secondOrderBlendFactor, 0, 0)
572NV_FLOW_REFLECT_VALUE(
float, damping, 0, 0)
573NV_FLOW_REFLECT_VALUE(
float, fade, 0, 0)
574NV_FLOW_REFLECT_END(&NvFlowAdvectionChannelParams_default)
575#undef NV_FLOW_REFLECT_TYPE
601 NvFlowFloat3 gravity;
606#define NvFlowAdvectionCombustionParams_default_init { \
611 {0.001f, 0.5f, 0.01f, 1.00f}, \
612 {0.001f, 0.5f, 0.01f, 1.00f}, \
613 {0.001f, 0.9f, 0.00f, 0.00f}, \
614 {0.001f, 0.9f, 0.00f, 0.00f}, \
615 {0.001f, 0.9f, 0.00f, 0.00f}, \
616 {0.001f, 0.9f, 0.30f, 0.65f}, \
634#define NV_FLOW_REFLECT_TYPE NvFlowAdvectionCombustionParams
635NV_FLOW_REFLECT_BEGIN()
636NV_FLOW_REFLECT_VALUE(NvFlowBool32, enabled, 0, 0)
637NV_FLOW_REFLECT_VALUE(NvFlowBool32, downsampleEnabled, 0, 0)
638NV_FLOW_REFLECT_VALUE(NvFlowBool32, combustionEnabled, 0, 0)
639NV_FLOW_REFLECT_VALUE(NvFlowBool32, forceFadeEnabled, 0, 0)
646NV_FLOW_REFLECT_VALUE(
float, ignitionTemp, 0, 0)
647NV_FLOW_REFLECT_VALUE(
float, burnPerTemp, 0, 0)
648NV_FLOW_REFLECT_VALUE(
float, fuelPerBurn, 0, 0)
649NV_FLOW_REFLECT_VALUE(
float, tempPerBurn, 0, 0)
650NV_FLOW_REFLECT_VALUE(
float, smokePerBurn, 0, 0)
651NV_FLOW_REFLECT_VALUE(
float, divergencePerBurn, 0, 0)
652NV_FLOW_REFLECT_VALUE(
float, buoyancyPerTemp, 0, 0)
653NV_FLOW_REFLECT_VALUE(
float, buoyancyPerSmoke, 0, 0)
654NV_FLOW_REFLECT_VALUE(
float, buoyancyMaxSmoke, 0, 0)
655NV_FLOW_REFLECT_VALUE(
float, coolingRate, 0, 0)
656NV_FLOW_REFLECT_VALUE(NvFlowFloat3, gravity, 0, 0)
657NV_FLOW_REFLECT_VALUE(NvFlowBool32, globalFetch, 0, 0)
658NV_FLOW_REFLECT_END(&NvFlowAdvectionCombustionParams_default)
659#undef NV_FLOW_REFLECT_TYPE
674#define NV_FLOW_REFLECT_TYPE NvFlowAdvectionSimplePinsIn
675NV_FLOW_REFLECT_BEGIN()
677NV_FLOW_REFLECT_POINTER(NvFlowContext,
context, eNvFlowReflectHint_pinEnabledGlobal, 0)
678NV_FLOW_REFLECT_VALUE(
float, deltaTime, eNvFlowReflectHint_pinEnabledGlobal, 0)
680NV_FLOW_REFLECT_END(0)
681#undef NV_FLOW_REFLECT_TYPE
683#define NV_FLOW_REFLECT_TYPE NvFlowAdvectionSimplePinsOut
684NV_FLOW_REFLECT_BEGIN()
686NV_FLOW_REFLECT_END(0)
687#undef NV_FLOW_REFLECT_TYPE
689NV_FLOW_OP_TYPED(NvFlowAdvectionSimple)
697 NvFlowUint64 paramCount;
708#define NV_FLOW_REFLECT_TYPE NvFlowAdvectionCombustionDensityPinsIn
709NV_FLOW_REFLECT_BEGIN()
711NV_FLOW_REFLECT_POINTER(NvFlowContext,
context, eNvFlowReflectHint_pinEnabledGlobal, 0)
712NV_FLOW_REFLECT_VALUE(
float, deltaTime, eNvFlowReflectHint_pinEnabledGlobal, 0)
716NV_FLOW_REFLECT_VALUE(
NvFlowSparseTexture, densityTemp, eNvFlowReflectHint_pinEnabledMutable, 0)
717NV_FLOW_REFLECT_END(0)
718#undef NV_FLOW_REFLECT_TYPE
720#define NV_FLOW_REFLECT_TYPE NvFlowAdvectionCombustionDensityPinsOut
721NV_FLOW_REFLECT_BEGIN()
723NV_FLOW_REFLECT_END(0)
724#undef NV_FLOW_REFLECT_TYPE
726NV_FLOW_OP_TYPED(NvFlowAdvectionCombustionDensity)
734 NvFlowUint64 paramCount;
747#define NV_FLOW_REFLECT_TYPE NvFlowAdvectionCombustionVelocityPinsIn
748NV_FLOW_REFLECT_BEGIN()
750NV_FLOW_REFLECT_POINTER(NvFlowContext,
context, eNvFlowReflectHint_pinEnabledGlobal, 0)
751NV_FLOW_REFLECT_VALUE(
float, deltaTime, eNvFlowReflectHint_pinEnabledGlobal, 0)
754NV_FLOW_REFLECT_VALUE(
NvFlowSparseTexture, velocityTemp, eNvFlowReflectHint_pinEnabledMutable, 0)
757NV_FLOW_REFLECT_END(0)
758#undef NV_FLOW_REFLECT_TYPE
760#define NV_FLOW_REFLECT_TYPE NvFlowAdvectionCombustionVelocityPinsOut
761NV_FLOW_REFLECT_BEGIN()
764NV_FLOW_REFLECT_END(0)
765#undef NV_FLOW_REFLECT_TYPE
767NV_FLOW_OP_TYPED(NvFlowAdvectionCombustionVelocity)
773 NvFlowBool32 enabled;
776#define NvFlowPressureParams_default_init { \
779static const NvFlowPressureParams NvFlowPressureParams_default = NvFlowPressureParams_default_init;
781#define NV_FLOW_REFLECT_TYPE NvFlowPressureParams
782NV_FLOW_REFLECT_BEGIN()
783NV_FLOW_REFLECT_VALUE(NvFlowBool32, enabled, 0, 0)
784NV_FLOW_REFLECT_END(&NvFlowPressureParams_default)
785#undef NV_FLOW_REFLECT_TYPE
792 NvFlowUint64 paramCount;
801#define NV_FLOW_REFLECT_TYPE NvFlowPressurePinsIn
802NV_FLOW_REFLECT_BEGIN()
804NV_FLOW_REFLECT_POINTER(NvFlowContext,
context, eNvFlowReflectHint_pinEnabledGlobal, 0)
805NV_FLOW_REFLECT_POINTER_ARRAY(
NvFlowPressureParams, params, paramCount, eNvFlowReflectHint_pinEnabled, 0)
807NV_FLOW_REFLECT_END(0)
808#undef NV_FLOW_REFLECT_TYPE
810#define NV_FLOW_REFLECT_TYPE NvFlowPressurePinsOut
811NV_FLOW_REFLECT_BEGIN()
813NV_FLOW_REFLECT_END(0)
814#undef NV_FLOW_REFLECT_TYPE
816NV_FLOW_OP_TYPED(NvFlowPressure)
822 NvFlowBool32 enabled;
827 float velocityLogScale;
828 float velocityLinearMask;
829 float temperatureMask;
835#define NvFlowVorticityParams_default_init { \
848static const NvFlowVorticityParams NvFlowVorticityParams_default = NvFlowVorticityParams_default_init;
850#define NV_FLOW_REFLECT_TYPE NvFlowVorticityParams
851NV_FLOW_REFLECT_BEGIN()
852NV_FLOW_REFLECT_VALUE(NvFlowBool32, enabled, 0, 0)
853NV_FLOW_REFLECT_VALUE(
float, forceScale, 0, 0)
854NV_FLOW_REFLECT_VALUE(
float, velocityMask, 0, 0)
855NV_FLOW_REFLECT_VALUE(
float, constantMask, 0, 0)
856NV_FLOW_REFLECT_VALUE(
float, densityMask, 0, 0)
857NV_FLOW_REFLECT_VALUE(
float, velocityLogScale, 0, 0)
858NV_FLOW_REFLECT_VALUE(
float, velocityLinearMask, 0, 0)
859NV_FLOW_REFLECT_VALUE(
float, temperatureMask, 0, 0)
860NV_FLOW_REFLECT_VALUE(
float, fuelMask, 0, 0)
861NV_FLOW_REFLECT_VALUE(
float, burnMask, 0, 0)
862NV_FLOW_REFLECT_VALUE(
float, smokeMask, 0, 0)
863NV_FLOW_REFLECT_END(&NvFlowVorticityParams_default)
864#undef NV_FLOW_REFLECT_TYPE
872 NvFlowUint64 paramCount;
882#define NV_FLOW_REFLECT_TYPE NvFlowVorticityPinsIn
883NV_FLOW_REFLECT_BEGIN()
885NV_FLOW_REFLECT_POINTER(NvFlowContext,
context, eNvFlowReflectHint_pinEnabledGlobal, 0)
886NV_FLOW_REFLECT_VALUE(
float, deltaTime, eNvFlowReflectHint_pinEnabledGlobal, 0)
887NV_FLOW_REFLECT_POINTER_ARRAY(
NvFlowVorticityParams, params, paramCount, eNvFlowReflectHint_pinEnabled, 0)
890NV_FLOW_REFLECT_END(0)
891#undef NV_FLOW_REFLECT_TYPE
893#define NV_FLOW_REFLECT_TYPE NvFlowVorticityPinsOut
894NV_FLOW_REFLECT_BEGIN()
896NV_FLOW_REFLECT_END(0)
897#undef NV_FLOW_REFLECT_TYPE
899NV_FLOW_OP_TYPED(NvFlowVorticity)
905 float smokeThreshold;
906 float speedThreshold;
907 float speedThresholdMinSmoke;
908 NvFlowBool32 enableNeighborAllocation;
911#define NvFlowSummaryAllocateParams_default_init { \
919#define NV_FLOW_REFLECT_TYPE NvFlowSummaryAllocateParams
920NV_FLOW_REFLECT_BEGIN()
921NV_FLOW_REFLECT_VALUE(
float, smokeThreshold, 0, 0)
922NV_FLOW_REFLECT_VALUE(
float, speedThreshold, 0, 0)
923NV_FLOW_REFLECT_VALUE(
float, speedThresholdMinSmoke, 0, 0)
924NV_FLOW_REFLECT_VALUE(NvFlowBool32, enableNeighborAllocation, 0, 0)
925NV_FLOW_REFLECT_END(&NvFlowSummaryAllocateParams_default)
926#undef NV_FLOW_REFLECT_TYPE
943 NvFlowUint64 paramCount;
951#define NV_FLOW_REFLECT_TYPE NvFlowSummaryPinsIn
952NV_FLOW_REFLECT_BEGIN()
954NV_FLOW_REFLECT_POINTER(NvFlowContext,
context, eNvFlowReflectHint_pinEnabledGlobal, 0)
959NV_FLOW_REFLECT_END(0)
960#undef NV_FLOW_REFLECT_TYPE
962#define NV_FLOW_REFLECT_TYPE NvFlowSummaryPinsOut
963NV_FLOW_REFLECT_BEGIN()
964NV_FLOW_REFLECT_VALUE(NvFlowUint, unused, eNvFlowReflectHint_none, 0)
965NV_FLOW_REFLECT_END(0)
966#undef NV_FLOW_REFLECT_TYPE
968NV_FLOW_OP_TYPED(NvFlowSummary)
976 NvFlowUint64 paramCount;
982 NvFlowInt4* locations;
983 NvFlowUint64 locationCount;
986#define NV_FLOW_REFLECT_TYPE NvFlowSummaryAllocatePinsIn
987NV_FLOW_REFLECT_BEGIN()
989NV_FLOW_REFLECT_POINTER(NvFlowContext,
context, eNvFlowReflectHint_pinEnabledGlobal, 0)
990NV_FLOW_REFLECT_VALUE(
NvFlowSparseParams, sparseParams, eNvFlowReflectHint_pinEnabled, 0)
992NV_FLOW_REFLECT_END(0)
993#undef NV_FLOW_REFLECT_TYPE
995#define NV_FLOW_REFLECT_TYPE NvFlowSummaryAllocatePinsOut
996NV_FLOW_REFLECT_BEGIN()
998NV_FLOW_REFLECT_ARRAY(NvFlowInt4, locations, locationCount, eNvFlowReflectHint_pinEnabled, 0)
999NV_FLOW_REFLECT_END(0)
1000#undef NV_FLOW_REFLECT_TYPE
1002NV_FLOW_OP_TYPED(NvFlowSummaryAllocate)
1008 NV_FLOW_REFLECT_INTERFACE();
1010 NvFlowOpGraphInterface* (NV_FLOW_ABI* getOpGraphInterface)();
1012 NvFlowOpRuntimeInterface* (NV_FLOW_ABI* getOpRuntimeInterface)();
1033#define NV_FLOW_REFLECT_TYPE NvFlowOpList
1034NV_FLOW_REFLECT_BEGIN()
1035NV_FLOW_REFLECT_FUNCTION_POINTER(getOpGraphInterface, 0, 0)
1036NV_FLOW_REFLECT_FUNCTION_POINTER(getOpRuntimeInterface, 0, 0)
1037NV_FLOW_REFLECT_FUNCTION_POINTER(getSparseInterface, 0, 0)
1038NV_FLOW_REFLECT_FUNCTION_POINTER(pSparseNanoVdbExport, 0, 0)
1039NV_FLOW_REFLECT_FUNCTION_POINTER(pAdvectionSimple, 0, 0)
1040NV_FLOW_REFLECT_FUNCTION_POINTER(pAdvectionCombustionDensity, 0, 0)
1041NV_FLOW_REFLECT_FUNCTION_POINTER(pAdvectionCombustionVelocity, 0, 0)
1042NV_FLOW_REFLECT_FUNCTION_POINTER(pPressure, 0, 0)
1043NV_FLOW_REFLECT_FUNCTION_POINTER(pVorticity, 0, 0)
1044NV_FLOW_REFLECT_FUNCTION_POINTER(pSummary, 0, 0)
1045NV_FLOW_REFLECT_FUNCTION_POINTER(pSummaryAllocate, 0, 0)
1046NV_FLOW_REFLECT_END(0)
1047NV_FLOW_REFLECT_INTERFACE_IMPL()
1048#undef NV_FLOW_REFLECT_TYPE
1050typedef NvFlowOpList* (NV_FLOW_ABI* PFN_NvFlowGetOpList)();
********************************* Advect ***************************************
Definition NvFlow.h:553
NvFlowBool32 globalFetch
Global fetch, removes velocity clamping.
Definition NvFlow.h:603
float buoyancyMaxSmoke
Smoke clamp value applied before computing smoke buoyancy.
Definition NvFlow.h:599
float tempPerBurn
Temperature increase per unit burn.
Definition NvFlow.h:594
float burnPerTemp
Burn amount per unit temperature above ignitionTemp.
Definition NvFlow.h:592
NvFlowBool32 downsampleEnabled
Allows density downsample in velocity advection to be disabled.
Definition NvFlow.h:580
float buoyancyPerTemp
Buoyant force per unit temperature.
Definition NvFlow.h:597
NvFlowBool32 forceFadeEnabled
Force fade to apply even when advection disabled.
Definition NvFlow.h:582
NvFlowBool32 combustionEnabled
Allows combustion to be disabled.
Definition NvFlow.h:581
float fuelPerBurn
Fuel consumed per unit burn.
Definition NvFlow.h:593
float divergencePerBurn
Expansion per unit burn.
Definition NvFlow.h:596
float buoyancyPerSmoke
Buoyant force per unit smoke.
Definition NvFlow.h:598
NvFlowBool32 enabled
Allows advection to be disabled when not in use.
Definition NvFlow.h:579
float ignitionTemp
Minimum temperature for combustion.
Definition NvFlow.h:591
float smokePerBurn
Density increase per unit burn.
Definition NvFlow.h:595
float coolingRate
Cooling rate, exponential.
Definition NvFlow.h:600
Definition NvFlowContext.h:362
********************************* NvFlowOpList ***************************************
Definition NvFlow.h:1007
********************************* Pressure ***************************************
Definition NvFlow.h:772
Definition NvFlowReflect.h:182
Definition NvFlowShaderTypes.h:155
Definition NvFlowShaderTypes.h:117
********************************* SparseNanoVdbExport ***************************************
Definition NvFlow.h:414
Definition NvFlowShaderTypes.h:176
********************************* Summary ***************************************
Definition NvFlow.h:904
Definition NvFlowContext.h:137
********************************* Vorticity ***************************************
Definition NvFlow.h:821