RavEngine
Loading...
Searching...
No Matches
NvFlowExt.h
1// Redistribution and use in source and binary forms, with or without
2// modification, are permitted provided that the following conditions
3// are met:
4// * Redistributions of source code must retain the above copyright
5// notice, this list of conditions and the following disclaimer.
6// * Redistributions in binary form must reproduce the above copyright
7// notice, this list of conditions and the following disclaimer in the
8// documentation and/or other materials provided with the distribution.
9// * Neither the name of NVIDIA CORPORATION nor the names of its
10// contributors may be used to endorse or promote products derived
11// from this software without specific prior written permission.
12//
13// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
14// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
17// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24//
25// Copyright (c) 2014-2022 NVIDIA Corporation. All rights reserved.
26
27#ifndef NV_FLOW_EXT_H
28#define NV_FLOW_EXT_H
29
30#include "NvFlowContext.h"
31#include "NvFlow.h"
32
34
36{
37 NvFlowUint64 luid;
38
39 NvFlowBool32 enabled;
40 NvFlowFloat4x4 localToWorld;
41 NvFlowFloat4x4 localToWorldVelocity;
42 NvFlowBool32 velocityIsWorldSpace;
43 NvFlowFloat3 position;
44 int layer;
45 float radius;
46 NvFlowBool32 radiusIsWorldSpace;
47 float allocationScale;
48
49 NvFlowFloat3 velocity;
50 float divergence;
51
52 float temperature;
53 float fuel;
54 float burn;
55 float smoke;
56
57 float coupleRateVelocity;
58 float coupleRateDivergence;
59
60 float coupleRateTemperature;
61 float coupleRateFuel;
62 float coupleRateBurn;
63 float coupleRateSmoke;
64
65 NvFlowUint numSubSteps;
66
67 float physicsVelocityScale;
68 NvFlowBool32 applyPostPressure;
69
70 NvFlowBool32 multisample;
72
73#define NvFlowEmitterSphereParams_default_init { \
74 0llu, /*luid*/ \
75 NV_FLOW_TRUE, /*enabled*/ \
76 { \
77 1.f, 0.f, 0.f, 0.f, \
78 0.f, 1.f, 0.f, 0.f, \
79 0.f, 0.f, 1.f, 0.f, \
80 0.f, 0.f, 0.f, 1.f \
81 }, /*localToWorld*/ \
82 { \
83 1.f, 0.f, 0.f, 0.f, \
84 0.f, 1.f, 0.f, 0.f, \
85 0.f, 0.f, 1.f, 0.f, \
86 0.f, 0.f, 0.f, 1.f \
87 }, /*localToWorldVelocity*/ \
88 NV_FLOW_FALSE, /*velocityIsWorldSpace*/ \
89 {0.f, 0.f, 0.f}, /*position*/ \
90 0, /*layer*/ \
91 10.f, /*radius*/ \
92 NV_FLOW_TRUE, /*radiusIsWorldSpace*/ \
93 1.f, /*allocationScale*/ \
94 {0.f, 0.f, 400.f}, /*velocity*/ \
95 0.f, /*divergence*/ \
96 0.5f, /*temperature*/ \
97 0.8f, /*fuel*/ \
98 0.f, /*burn*/ \
99 0.f, /*smoke*/ \
100 2.f, /*coupleRateVelocity*/ \
101 0.f, /*coupleRateDivergence*/ \
102 2.f, /*coupleRateTemperature*/ \
103 2.f, /*coupleRateFuel*/ \
104 0.f, /*coupleRateBurn*/ \
105 0.f, /*coupleRateSmoke*/ \
106 1u, /*numSubSteps*/ \
107 0.f, /*physicsVelocityScale*/ \
108 NV_FLOW_FALSE, /*applyPostPressure*/ \
109 NV_FLOW_FALSE, /*multisample*/ \
110}
111static const NvFlowEmitterSphereParams NvFlowEmitterSphereParams_default = NvFlowEmitterSphereParams_default_init;
112
113#define NV_FLOW_REFLECT_TYPE NvFlowEmitterSphereParams
114NV_FLOW_REFLECT_BEGIN()
115NV_FLOW_REFLECT_VALUE(NvFlowUint64, luid, eNvFlowReflectHint_transientNoEdit, 0)
116NV_FLOW_REFLECT_VALUE(NvFlowBool32, enabled, 0, 0)
117NV_FLOW_REFLECT_VALUE(NvFlowFloat4x4, localToWorld, eNvFlowReflectHint_transientNoEdit, 0)
118NV_FLOW_REFLECT_VALUE(NvFlowFloat4x4, localToWorldVelocity, eNvFlowReflectHint_transientNoEdit, 0)
119NV_FLOW_REFLECT_VALUE(NvFlowBool32, velocityIsWorldSpace, 0, 0)
120NV_FLOW_REFLECT_VALUE(NvFlowFloat3, position, 0, 0)
121NV_FLOW_REFLECT_VALUE(int, layer, 0, 0)
122NV_FLOW_REFLECT_VALUE(float, radius, 0, 0)
123NV_FLOW_REFLECT_VALUE(NvFlowBool32, radiusIsWorldSpace, 0, 0)
124NV_FLOW_REFLECT_VALUE(float, allocationScale, 0, 0)
125NV_FLOW_REFLECT_VALUE(NvFlowFloat3, velocity, 0, 0)
126NV_FLOW_REFLECT_VALUE(float, divergence, 0, 0)
127NV_FLOW_REFLECT_VALUE(float, temperature, 0, 0)
128NV_FLOW_REFLECT_VALUE(float, fuel, 0, 0)
129NV_FLOW_REFLECT_VALUE(float, burn, 0, 0)
130NV_FLOW_REFLECT_VALUE(float, smoke, 0, 0)
131NV_FLOW_REFLECT_VALUE(float, coupleRateVelocity, 0, 0)
132NV_FLOW_REFLECT_VALUE(float, coupleRateDivergence, 0, 0)
133NV_FLOW_REFLECT_VALUE(float, coupleRateTemperature, 0, 0)
134NV_FLOW_REFLECT_VALUE(float, coupleRateFuel, 0, 0)
135NV_FLOW_REFLECT_VALUE(float, coupleRateBurn, 0, 0)
136NV_FLOW_REFLECT_VALUE(float, coupleRateSmoke, 0, 0)
137NV_FLOW_REFLECT_VALUE(NvFlowUint, numSubSteps, 0, 0)
138NV_FLOW_REFLECT_VALUE(float, physicsVelocityScale, 0, 0)
139NV_FLOW_REFLECT_VALUE(NvFlowBool32, applyPostPressure, 0, 0)
140NV_FLOW_REFLECT_VALUE(NvFlowBool32, multisample, 0, 0)
141NV_FLOW_REFLECT_END(&NvFlowEmitterSphereParams_default)
142#undef NV_FLOW_REFLECT_TYPE
143
145{
146 NvFlowContextInterface* contextInterface;
147 NvFlowContext* context;
148 float deltaTime;
149 const NvFlowEmitterSphereParams*const* velocityParams;
150 NvFlowUint64 velocityParamCount;
151 const NvFlowEmitterSphereParams*const* densityParams;
152 NvFlowUint64 densityParamCount;
154 NvFlowSparseTexture valueTemp;
155 NvFlowBool32 isPostPressure;
157
162
163#define NV_FLOW_REFLECT_TYPE NvFlowEmitterSpherePinsIn
164NV_FLOW_REFLECT_BEGIN()
165NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
166NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
167NV_FLOW_REFLECT_VALUE(float, deltaTime, eNvFlowReflectHint_pinEnabledGlobal, 0)
168NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterSphereParams, velocityParams, velocityParamCount, eNvFlowReflectHint_pinEnabled, 0)
169NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterSphereParams, densityParams, densityParamCount, eNvFlowReflectHint_pinEnabled, 0)
170NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, value, eNvFlowReflectHint_pinEnabledMutable, 0)
171NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, valueTemp, eNvFlowReflectHint_pinEnabledMutable, 0)
172NV_FLOW_REFLECT_VALUE(NvFlowBool32, isPostPressure, eNvFlowReflectHint_pinEnabled, 0)
173NV_FLOW_REFLECT_END(0)
174#undef NV_FLOW_REFLECT_TYPE
175
176#define NV_FLOW_REFLECT_TYPE NvFlowEmitterSpherePinsOut
177NV_FLOW_REFLECT_BEGIN()
178NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, value, eNvFlowReflectHint_pinEnabled, 0)
179NV_FLOW_REFLECT_END(0)
180#undef NV_FLOW_REFLECT_TYPE
181
182NV_FLOW_OP_TYPED(NvFlowEmitterSphere)
183
184
185
187{
188 NvFlowContextInterface* contextInterface;
189 NvFlowContext* context;
190 NvFlowSparseParams sparseParams;
191 float deltaTime;
192 const NvFlowEmitterSphereParams*const* params;
193 NvFlowUint64 paramCount;
195
197{
198 NvFlowInt4* locations;
199 NvFlowUint64 locationCount;
201
202#define NV_FLOW_REFLECT_TYPE NvFlowEmitterSphereAllocatePinsIn
203NV_FLOW_REFLECT_BEGIN()
204NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
205NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
206NV_FLOW_REFLECT_VALUE(NvFlowSparseParams, sparseParams, eNvFlowReflectHint_pinEnabled, 0)
207NV_FLOW_REFLECT_VALUE(float, deltaTime, eNvFlowReflectHint_pinEnabledGlobal, 0)
208NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterSphereParams, params, paramCount, eNvFlowReflectHint_pinEnabled, 0)
209NV_FLOW_REFLECT_END(0)
210#undef NV_FLOW_REFLECT_TYPE
211
212#define NV_FLOW_REFLECT_TYPE NvFlowEmitterSphereAllocatePinsOut
213NV_FLOW_REFLECT_BEGIN()
214NV_FLOW_REFLECT_ARRAY(NvFlowInt4, locations, locationCount, eNvFlowReflectHint_pinEnabled, 0)
215NV_FLOW_REFLECT_END(0)
216#undef NV_FLOW_REFLECT_TYPE
217
218NV_FLOW_OP_TYPED(NvFlowEmitterSphereAllocate)
219
220
221
223{
224 NvFlowUint64 luid;
225
226 NvFlowBool32 enabled;
227 NvFlowFloat4x4 localToWorld;
228 NvFlowFloat4x4 localToWorldVelocity;
229 NvFlowBool32 velocityIsWorldSpace;
230 NvFlowFloat3 position;
231 int layer;
232 NvFlowFloat3 halfSize;
233 float allocationScale;
234
235 NvFlowFloat3 velocity;
236 float divergence;
237
238 float temperature;
239 float fuel;
240 float burn;
241 float smoke;
242
243 float coupleRateVelocity;
244 float coupleRateDivergence;
245
246 float coupleRateTemperature;
247 float coupleRateFuel;
248 float coupleRateBurn;
249 float coupleRateSmoke;
250
251 float physicsVelocityScale;
252 NvFlowBool32 applyPostPressure;
253
254 NvFlowBool32 multisample;
255
256 NvFlowFloat4* clippingPlanes;
257 NvFlowUint64 clippingPlaneCount;
258 NvFlowUint* clippingPlaneCounts;
259 NvFlowUint64 clippingPlaneCountCount;
260
262
263#define NvFlowEmitterBoxParams_default_init { \
264 0llu, /*luid*/ \
265 NV_FLOW_TRUE, /*enabled*/ \
266 { \
267 1.f, 0.f, 0.f, 0.f, \
268 0.f, 1.f, 0.f, 0.f, \
269 0.f, 0.f, 1.f, 0.f, \
270 0.f, 0.f, 0.f, 1.f \
271 }, /*localToWorld*/ \
272 { \
273 1.f, 0.f, 0.f, 0.f, \
274 0.f, 1.f, 0.f, 0.f, \
275 0.f, 0.f, 1.f, 0.f, \
276 0.f, 0.f, 0.f, 1.f \
277 }, /*localToWorldVelocity*/ \
278 NV_FLOW_FALSE, /*velocityIsWorldSpace*/ \
279 {0.f, 0.f, 0.f}, /*position*/ \
280 0, /*layer*/ \
281 {10.f, 10.f, 10.f}, /*halfSize*/ \
282 1.f, /*allocationScale*/ \
283 {0.f, 0.f, 400.f}, /*velocity*/ \
284 0.f, /*divergence*/ \
285 0.5f, /*temperature*/ \
286 0.8f, /*fuel*/ \
287 0.f, /*burn*/ \
288 0.f, /*smoke*/ \
289 2.f, /*coupleRateVelocity*/ \
290 0.f, /*coupleRateDivergence*/ \
291 2.f, /*coupleRateTemperature*/ \
292 2.f, /*coupleRateFuel*/ \
293 0.f, /*coupleRateBurn*/ \
294 0.f, /*coupleRateSmoke*/ \
295 0.f, /*physicsVelocityScale*/ \
296 NV_FLOW_FALSE, /*applyPostPressure*/ \
297 NV_FLOW_FALSE, /*multisample*/ \
298 0, /*clippingPlanes*/ \
299 0, /*clippingPlaneCount*/ \
300 0, /*clippingPlaneCounts*/ \
301 0 /*clippingPlaneCountCount*/ \
302}
303static const NvFlowEmitterBoxParams NvFlowEmitterBoxParams_default = NvFlowEmitterBoxParams_default_init;
304
305#define NV_FLOW_REFLECT_TYPE NvFlowEmitterBoxParams
306NV_FLOW_REFLECT_BEGIN()
307NV_FLOW_REFLECT_VALUE(NvFlowUint64, luid, eNvFlowReflectHint_transientNoEdit, 0)
308NV_FLOW_REFLECT_VALUE(NvFlowBool32, enabled, 0, 0)
309NV_FLOW_REFLECT_VALUE(NvFlowFloat4x4, localToWorld, eNvFlowReflectHint_transientNoEdit, 0)
310NV_FLOW_REFLECT_VALUE(NvFlowFloat4x4, localToWorldVelocity, eNvFlowReflectHint_transientNoEdit, 0)
311NV_FLOW_REFLECT_VALUE(NvFlowBool32, velocityIsWorldSpace, 0, 0)
312NV_FLOW_REFLECT_VALUE(NvFlowFloat3, position, 0, 0)
313NV_FLOW_REFLECT_VALUE(int, layer, 0, 0)
314NV_FLOW_REFLECT_VALUE(NvFlowFloat3, halfSize, 0, 0)
315NV_FLOW_REFLECT_VALUE(float, allocationScale, 0, 0)
316NV_FLOW_REFLECT_VALUE(NvFlowFloat3, velocity, 0, 0)
317NV_FLOW_REFLECT_VALUE(float, divergence, 0, 0)
318NV_FLOW_REFLECT_VALUE(float, temperature, 0, 0)
319NV_FLOW_REFLECT_VALUE(float, fuel, 0, 0)
320NV_FLOW_REFLECT_VALUE(float, burn, 0, 0)
321NV_FLOW_REFLECT_VALUE(float, smoke, 0, 0)
322NV_FLOW_REFLECT_VALUE(float, coupleRateVelocity, 0, 0)
323NV_FLOW_REFLECT_VALUE(float, coupleRateDivergence, 0, 0)
324NV_FLOW_REFLECT_VALUE(float, coupleRateTemperature, 0, 0)
325NV_FLOW_REFLECT_VALUE(float, coupleRateFuel, 0, 0)
326NV_FLOW_REFLECT_VALUE(float, coupleRateBurn, 0, 0)
327NV_FLOW_REFLECT_VALUE(float, coupleRateSmoke, 0, 0)
328NV_FLOW_REFLECT_VALUE(float, physicsVelocityScale, 0, 0)
329NV_FLOW_REFLECT_VALUE(NvFlowBool32, applyPostPressure, 0, 0)
330NV_FLOW_REFLECT_VALUE(NvFlowBool32, multisample, 0, 0)
331NV_FLOW_REFLECT_ARRAY(NvFlowFloat4, clippingPlanes, clippingPlaneCount, 0, 0)
332NV_FLOW_REFLECT_ARRAY(NvFlowUint, clippingPlaneCounts, clippingPlaneCountCount, 0, 0)
333NV_FLOW_REFLECT_END(&NvFlowEmitterBoxParams_default)
334#undef NV_FLOW_REFLECT_TYPE
335
337{
338 NvFlowContextInterface* contextInterface;
339 NvFlowContext* context;
340 float deltaTime;
341 const NvFlowEmitterBoxParams*const* velocityParams;
342 NvFlowUint64 velocityParamCount;
343 const NvFlowEmitterBoxParams*const* densityParams;
344 NvFlowUint64 densityParamCount;
346 NvFlowSparseTexture valueTemp;
347 NvFlowBool32 isPostPressure;
349
354
355#define NV_FLOW_REFLECT_TYPE NvFlowEmitterBoxPinsIn
356NV_FLOW_REFLECT_BEGIN()
357NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
358NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
359NV_FLOW_REFLECT_VALUE(float, deltaTime, eNvFlowReflectHint_pinEnabledGlobal, 0)
360NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterBoxParams, velocityParams, velocityParamCount, eNvFlowReflectHint_pinEnabled, 0)
361NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterBoxParams, densityParams, densityParamCount, eNvFlowReflectHint_pinEnabled, 0)
362NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, value, eNvFlowReflectHint_pinEnabledMutable, 0)
363NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, valueTemp, eNvFlowReflectHint_pinEnabledMutable, 0)
364NV_FLOW_REFLECT_VALUE(NvFlowBool32, isPostPressure, eNvFlowReflectHint_pinEnabled, 0)
365NV_FLOW_REFLECT_END(0)
366#undef NV_FLOW_REFLECT_TYPE
367
368#define NV_FLOW_REFLECT_TYPE NvFlowEmitterBoxPinsOut
369NV_FLOW_REFLECT_BEGIN()
370NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, value, eNvFlowReflectHint_pinEnabled, 0)
371NV_FLOW_REFLECT_END(0)
372#undef NV_FLOW_REFLECT_TYPE
373
374NV_FLOW_OP_TYPED(NvFlowEmitterBox)
375
376
377
379{
380 NvFlowContextInterface* contextInterface;
381 NvFlowContext* context;
382 NvFlowSparseParams sparseParams;
383 float deltaTime;
384 const NvFlowEmitterBoxParams*const* params;
385 NvFlowUint64 paramCount;
387
389{
390 NvFlowInt4* locations;
391 NvFlowUint64 locationCount;
393
394#define NV_FLOW_REFLECT_TYPE NvFlowEmitterBoxAllocatePinsIn
395NV_FLOW_REFLECT_BEGIN()
396NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
397NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
398NV_FLOW_REFLECT_VALUE(NvFlowSparseParams, sparseParams, eNvFlowReflectHint_pinEnabled, 0)
399NV_FLOW_REFLECT_VALUE(float, deltaTime, eNvFlowReflectHint_pinEnabledGlobal, 0)
400NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterBoxParams, params, paramCount, eNvFlowReflectHint_pinEnabled, 0)
401NV_FLOW_REFLECT_END(0)
402#undef NV_FLOW_REFLECT_TYPE
403
404#define NV_FLOW_REFLECT_TYPE NvFlowEmitterBoxAllocatePinsOut
405NV_FLOW_REFLECT_BEGIN()
406NV_FLOW_REFLECT_ARRAY(NvFlowInt4, locations, locationCount, eNvFlowReflectHint_pinEnabled, 0)
407NV_FLOW_REFLECT_END(0)
408#undef NV_FLOW_REFLECT_TYPE
409
410NV_FLOW_OP_TYPED(NvFlowEmitterBoxAllocate)
411
412
413
415{
416 NvFlowUint64 luid;
417
418 NvFlowBool32 enabled;
419
420 NvFlowFloat4x4 localToWorld;
421 NvFlowFloat4x4 localToWorldVelocity;
422 NvFlowBool32 velocityIsWorldSpace;
423 NvFlowUint numSubSteps;
424
425 int layer;
426
427 NvFlowBool32 allocateMask;
428 NvFlowFloat3 velocity;
429 float divergence;
430 float temperature;
431 float fuel;
432 float burn;
433 float smoke;
434
435 NvFlowBool32 colorIsSrgb;
436
437 float velocityScale;
438 float divergenceScale;
439 float temperatureScale;
440 float fuelScale;
441 float burnScale;
442 float smokeScale;
443
444 float coupleRateVelocity;
445 float coupleRateDivergence;
446 float coupleRateTemperature;
447 float coupleRateFuel;
448 float coupleRateBurn;
449 float coupleRateSmoke;
450
451 NvFlowFloat3* pointPositions;
452 NvFlowUint64 pointPositionCount;
453 NvFlowUint64 pointPositionVersion;
454 NvFlowBool32* pointAllocateMasks;
455 NvFlowUint64 pointAllocateMaskCount;
456 NvFlowUint64 pointAllocateMaskVersion;
457
458 NvFlowFloat3* pointVelocities;
459 NvFlowUint64 pointVelocityCount;
460 NvFlowUint64 pointVelocityVersion;
461 float* pointDivergences;
462 NvFlowUint64 pointDivergenceCount;
463 NvFlowUint64 pointDivergenceVersion;
464 NvFlowFloat3* pointColors;
465 NvFlowUint64 pointColorCount;
466 NvFlowUint64 pointColorVersion;
467 float* pointTemperatures;
468 NvFlowUint64 pointTemperatureCount;
469 NvFlowUint64 pointTemperatureVersion;
470 float* pointFuels;
471 NvFlowUint64 pointFuelCount;
472 NvFlowUint64 pointFuelVersion;
473 float* pointBurns;
474 NvFlowUint64 pointBurnCount;
475 NvFlowUint64 pointBurnVersion;
476 float* pointSmokes;
477 NvFlowUint64 pointSmokeCount;
478 NvFlowUint64 pointSmokeVersion;
479
480 float* pointCoupleRateVelocities;
481 NvFlowUint64 pointCoupleRateVelocityCount;
482 NvFlowUint64 pointCoupleRateVelocityVersion;
483 float* pointCoupleRateDivergences;
484 NvFlowUint64 pointCoupleRateDivergenceCount;
485 NvFlowUint64 pointCoupleRateDivergenceVersion;
486 float* pointCoupleRateTemperatures;
487 NvFlowUint64 pointCoupleRateTemperatureCount;
488 NvFlowUint64 pointCoupleRateTemperatureVersion;
489 float* pointCoupleRateFuels;
490 NvFlowUint64 pointCoupleRateFuelCount;
491 NvFlowUint64 pointCoupleRateFuelVersion;
492 float* pointCoupleRateBurns;
493 NvFlowUint64 pointCoupleRateBurnCount;
494 NvFlowUint64 pointCoupleRateBurnVersion;
495 float* pointCoupleRateSmokes;
496 NvFlowUint64 pointCoupleRateSmokeCount;
497 NvFlowUint64 pointCoupleRateSmokeVersion;
498
499 NvFlowBool32 applyPostPressure;
500 NvFlowBool32 enableStreaming;
501 NvFlowBool32 streamOnce;
502 NvFlowBool32 streamClearAtStart;
503 NvFlowUint streamingBatchSize;
504 NvFlowBool32 updateCoarseDensity;
506
507#define NvFlowEmitterPointParams_default_init { \
508 0llu, /*luid*/ \
509 NV_FLOW_TRUE, /*enabled*/ \
510 { \
511 1.f, 0.f, 0.f, 0.f, \
512 0.f, 1.f, 0.f, 0.f, \
513 0.f, 0.f, 1.f, 0.f, \
514 0.f, 0.f, 0.f, 1.f \
515 }, /*localToWorld*/ \
516 { \
517 1.f, 0.f, 0.f, 0.f, \
518 0.f, 1.f, 0.f, 0.f, \
519 0.f, 0.f, 1.f, 0.f, \
520 0.f, 0.f, 0.f, 1.f \
521 }, /*localToWorldVelocity*/ \
522 NV_FLOW_FALSE, /*velocityIsWorldSpace*/ \
523 1u, /*numSubSteps*/ \
524 0, /*layer*/ \
525 NV_FLOW_TRUE, /*allocateMask*/ \
526 {0.f, 0.f, 100.f}, /*velocity*/ \
527 0.f, /*divergence*/ \
528 2.f, /*temperature*/ \
529 2.f, /*fuel*/ \
530 0.f, /*burn*/ \
531 2.f, /*smoke*/ \
532 NV_FLOW_FALSE, /*colorIsSrgb*/ \
533 1.f, /*velocityScale*/ \
534 1.f, /*divergenceScale*/ \
535 1.f, /*temperatureScale*/ \
536 1.f, /*fuelScale*/ \
537 1.f, /*burnScale*/ \
538 1.f, /*smokeScale*/ \
539 200.f, /*coupleRateVelocity*/ \
540 0.f, /*coupleRateDivergence*/ \
541 200.f, /*coupleRateTemperature*/ \
542 200.f, /*coupleRateFuel*/ \
543 0.f, /*coupleRateBurn*/ \
544 200.f, /*coupleRateSmoke*/ \
545 0, /*pointPositions*/ \
546 0, /*pointPositionCount*/ \
547 0, /*pointPositionVersion*/ \
548 0, /*pointAllocateMasks*/ \
549 0, /*pointAllocateMaskCount*/ \
550 0, /*pointAllocateMaskVersion*/ \
551 0, /*pointVelocities*/ \
552 0, /*pointVelocityCount*/ \
553 0, /*pointVelocityVersion*/ \
554 0, /*pointDivergences*/ \
555 0, /*pointDivergenceCount*/ \
556 0, /*pointDivergenceVersion*/ \
557 0, /*pointColors*/ \
558 0, /*pointColorCount*/ \
559 0, /*pointColorVersion*/ \
560 0, /*pointTemperatures*/ \
561 0, /*pointTemperatureCount*/ \
562 0, /*pointTemperatureVersion*/ \
563 0, /*pointFuels*/ \
564 0, /*pointFuelCount*/ \
565 0, /*pointFuelVersion*/ \
566 0, /*pointBurns*/ \
567 0, /*pointBurnCount*/ \
568 0, /*pointBurnVersion*/ \
569 0, /*pointSmokes*/ \
570 0, /*pointSmokeCount*/ \
571 0, /*pointSmokeVersion*/ \
572 0, /*pointCoupleRateVelocities*/ \
573 0, /*pointCoupleRateVelocityCount*/ \
574 0, /*pointCoupleRateVelocityVersion*/ \
575 0, /*pointCoupleRateDivergences*/ \
576 0, /*pointCoupleRateDivergenceCount*/ \
577 0, /*pointCoupleRateDivergenceVersion*/ \
578 0, /*pointCoupleRateTemperatures*/ \
579 0, /*pointCoupleRateTemperatureCount*/ \
580 0, /*pointCoupleRateTemperatureVersion*/ \
581 0, /*pointCoupleRateFuels*/ \
582 0, /*pointCoupleRateFuelCount*/ \
583 0, /*pointCoupleRateFuelVersion*/ \
584 0, /*pointCoupleRateBurns*/ \
585 0, /*pointCoupleRateBurnCount*/ \
586 0, /*pointCoupleRateBurnVersion*/ \
587 0, /*pointCoupleRateSmokes*/ \
588 0, /*pointCoupleRateSmokeCount*/ \
589 0, /*pointCoupleRateSmokeVersion*/ \
590 NV_FLOW_FALSE, /*applyPostPressure*/ \
591 NV_FLOW_FALSE, /*enableStreaming*/ \
592 NV_FLOW_FALSE, /*streamOnce*/ \
593 NV_FLOW_FALSE, /*streamClearAtStart*/ \
594 1048576, /*streamingBatchSize*/ \
595 NV_FLOW_FALSE, /*updateCoarseDensity*/ \
596}
597static const NvFlowEmitterPointParams NvFlowEmitterPointParams_default = NvFlowEmitterPointParams_default_init;
598
599#define NV_FLOW_REFLECT_TYPE NvFlowEmitterPointParams
600NV_FLOW_REFLECT_BEGIN()
601NV_FLOW_REFLECT_VALUE(NvFlowUint64, luid, eNvFlowReflectHint_transientNoEdit, 0)
602NV_FLOW_REFLECT_VALUE(NvFlowBool32, enabled, 0, 0)
603NV_FLOW_REFLECT_VALUE(NvFlowFloat4x4, localToWorld, eNvFlowReflectHint_transientNoEdit, 0)
604NV_FLOW_REFLECT_VALUE(NvFlowFloat4x4, localToWorldVelocity, eNvFlowReflectHint_transientNoEdit, 0)
605NV_FLOW_REFLECT_VALUE(NvFlowBool32, velocityIsWorldSpace, 0, 0)
606NV_FLOW_REFLECT_VALUE(NvFlowUint, numSubSteps, 0, 0)
607NV_FLOW_REFLECT_VALUE(int, layer, 0, 0)
608NV_FLOW_REFLECT_VALUE(NvFlowBool32, allocateMask, 0, 0)
609NV_FLOW_REFLECT_VALUE(NvFlowFloat3, velocity, 0, 0)
610NV_FLOW_REFLECT_VALUE(float, divergence, 0, 0)
611NV_FLOW_REFLECT_VALUE(float, temperature, 0, 0)
612NV_FLOW_REFLECT_VALUE(float, fuel, 0, 0)
613NV_FLOW_REFLECT_VALUE(float, burn, 0, 0)
614NV_FLOW_REFLECT_VALUE(float, smoke, 0, 0)
615NV_FLOW_REFLECT_VALUE(NvFlowBool32, colorIsSrgb, 0, 0)
616NV_FLOW_REFLECT_VALUE(float, velocityScale, 0, 0)
617NV_FLOW_REFLECT_VALUE(float, divergenceScale, 0, 0)
618NV_FLOW_REFLECT_VALUE(float, temperatureScale, 0, 0)
619NV_FLOW_REFLECT_VALUE(float, fuelScale, 0, 0)
620NV_FLOW_REFLECT_VALUE(float, burnScale, 0, 0)
621NV_FLOW_REFLECT_VALUE(float, smokeScale, 0, 0)
622NV_FLOW_REFLECT_VALUE(float, coupleRateVelocity, 0, 0)
623NV_FLOW_REFLECT_VALUE(float, coupleRateDivergence, 0, 0)
624NV_FLOW_REFLECT_VALUE(float, coupleRateTemperature, 0, 0)
625NV_FLOW_REFLECT_VALUE(float, coupleRateFuel, 0, 0)
626NV_FLOW_REFLECT_VALUE(float, coupleRateBurn, 0, 0)
627NV_FLOW_REFLECT_VALUE(float, coupleRateSmoke, 0, 0)
628NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowFloat3, pointPositions, pointPositionCount, pointPositionVersion, eNvFlowReflectHint_asset, "asset(array)")
629NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowBool32, pointAllocateMasks, pointAllocateMaskCount, pointAllocateMaskVersion, eNvFlowReflectHint_asset, "asset(array)")
630NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowFloat3, pointVelocities, pointVelocityCount, pointVelocityVersion, eNvFlowReflectHint_asset, "asset(array)")
631NV_FLOW_REFLECT_ARRAY_VERSIONED(float, pointDivergences, pointDivergenceCount, pointDivergenceVersion, eNvFlowReflectHint_asset, "asset(array)")
632NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowFloat3, pointColors, pointColorCount, pointColorVersion, eNvFlowReflectHint_asset, "asset(array)")
633NV_FLOW_REFLECT_ARRAY_VERSIONED(float, pointTemperatures, pointTemperatureCount, pointTemperatureVersion, eNvFlowReflectHint_asset, "asset(array)")
634NV_FLOW_REFLECT_ARRAY_VERSIONED(float, pointFuels, pointFuelCount, pointFuelVersion, eNvFlowReflectHint_asset, "asset(array)")
635NV_FLOW_REFLECT_ARRAY_VERSIONED(float, pointBurns, pointBurnCount, pointBurnVersion, eNvFlowReflectHint_asset, "asset(array)")
636NV_FLOW_REFLECT_ARRAY_VERSIONED(float, pointSmokes, pointSmokeCount, pointSmokeVersion, eNvFlowReflectHint_asset, "asset(array)")
637NV_FLOW_REFLECT_ARRAY_VERSIONED(float, pointCoupleRateVelocities, pointCoupleRateVelocityCount, pointCoupleRateVelocityVersion, eNvFlowReflectHint_asset, "asset(array)")
638NV_FLOW_REFLECT_ARRAY_VERSIONED(float, pointCoupleRateDivergences, pointCoupleRateDivergenceCount, pointCoupleRateDivergenceVersion, eNvFlowReflectHint_asset, "asset(array)")
639NV_FLOW_REFLECT_ARRAY_VERSIONED(float, pointCoupleRateTemperatures, pointCoupleRateTemperatureCount, pointCoupleRateTemperatureVersion, eNvFlowReflectHint_asset, "asset(array)")
640NV_FLOW_REFLECT_ARRAY_VERSIONED(float, pointCoupleRateFuels, pointCoupleRateFuelCount, pointCoupleRateFuelVersion, eNvFlowReflectHint_asset, "asset(array)")
641NV_FLOW_REFLECT_ARRAY_VERSIONED(float, pointCoupleRateBurns, pointCoupleRateBurnCount, pointCoupleRateBurnVersion, eNvFlowReflectHint_asset, "asset(array)")
642NV_FLOW_REFLECT_ARRAY_VERSIONED(float, pointCoupleRateSmokes, pointCoupleRateSmokeCount, pointCoupleRateSmokeVersion, eNvFlowReflectHint_asset, "asset(array)")
643NV_FLOW_REFLECT_VALUE(NvFlowBool32, applyPostPressure, 0, 0)
644NV_FLOW_REFLECT_VALUE(NvFlowBool32, enableStreaming, 0, 0)
645NV_FLOW_REFLECT_VALUE(NvFlowBool32, streamOnce, 0, 0)
646NV_FLOW_REFLECT_VALUE(NvFlowBool32, streamClearAtStart, 0, 0)
647NV_FLOW_REFLECT_VALUE(NvFlowUint, streamingBatchSize, 0, 0)
648NV_FLOW_REFLECT_VALUE(NvFlowBool32, updateCoarseDensity, 0, 0)
649NV_FLOW_REFLECT_END(&NvFlowEmitterPointParams_default)
650#undef NV_FLOW_REFLECT_TYPE
651
653{
654 void* data;
656
657NV_FLOW_REFLECT_STRUCT_OPAQUE_IMPL(NvFlowEmitterPointFeedback)
658
660{
661 NvFlowContextInterface* contextInterface;
662 NvFlowContext* context;
663 float deltaTime;
664 const NvFlowEmitterPointParams*const* velocityParams;
665 NvFlowUint64 velocityParamCount;
666 const NvFlowEmitterPointParams*const* densityParams;
667 NvFlowUint64 densityParamCount;
669 NvFlowSparseTexture valueTemp;
670 NvFlowSparseTexture coarseDensity;
671 NvFlowBool32 isPostPressure;
674
679
680#define NV_FLOW_REFLECT_TYPE NvFlowEmitterPointPinsIn
681NV_FLOW_REFLECT_BEGIN()
682NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
683NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
684NV_FLOW_REFLECT_VALUE(float, deltaTime, eNvFlowReflectHint_pinEnabledGlobal, 0)
685NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterPointParams, velocityParams, velocityParamCount, eNvFlowReflectHint_pinEnabled, 0)
686NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterPointParams, densityParams, densityParamCount, eNvFlowReflectHint_pinEnabled, 0)
687NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, value, eNvFlowReflectHint_pinEnabledMutable, 0)
688NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, valueTemp, eNvFlowReflectHint_pinEnabledMutable, 0)
689NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, coarseDensity, eNvFlowReflectHint_pinEnabledMutable, 0)
690NV_FLOW_REFLECT_VALUE(NvFlowBool32, isPostPressure, eNvFlowReflectHint_pinEnabled, 0)
691NV_FLOW_REFLECT_VALUE(NvFlowEmitterPointFeedback, feedback, eNvFlowReflectHint_pinEnabled, 0)
692NV_FLOW_REFLECT_END(0)
693#undef NV_FLOW_REFLECT_TYPE
694
695#define NV_FLOW_REFLECT_TYPE NvFlowEmitterPointPinsOut
696NV_FLOW_REFLECT_BEGIN()
697NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, value, eNvFlowReflectHint_pinEnabled, 0)
698NV_FLOW_REFLECT_END(0)
699#undef NV_FLOW_REFLECT_TYPE
700
701NV_FLOW_OP_TYPED(NvFlowEmitterPoint)
702
703
704
706{
707 NvFlowContextInterface* contextInterface;
708 NvFlowContext* context;
709 NvFlowSparseParams sparseParams;
710 float deltaTime;
711 const NvFlowEmitterPointParams*const* params;
712 NvFlowUint64 paramCount;
713 NvFlowUint3 baseBlockDimBits;
715
717{
718 NvFlowInt4* locations;
719 NvFlowUint64 locationCount;
721 int* clearLayers;
722 NvFlowUint64 clearLayerCount;
724
725#define NV_FLOW_REFLECT_TYPE NvFlowEmitterPointAllocatePinsIn
726NV_FLOW_REFLECT_BEGIN()
727NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
728NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
729NV_FLOW_REFLECT_VALUE(NvFlowSparseParams, sparseParams, eNvFlowReflectHint_pinEnabled, 0)
730NV_FLOW_REFLECT_VALUE(float, deltaTime, eNvFlowReflectHint_pinEnabledGlobal, 0)
731NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterPointParams, params, paramCount, eNvFlowReflectHint_pinEnabled, 0)
732NV_FLOW_REFLECT_VALUE(NvFlowUint3, baseBlockDimBits, eNvFlowReflectHint_pinEnabledGlobal, 0)
733NV_FLOW_REFLECT_END(0)
734#undef NV_FLOW_REFLECT_TYPE
735
736#define NV_FLOW_REFLECT_TYPE NvFlowEmitterPointAllocatePinsOut
737NV_FLOW_REFLECT_BEGIN()
738NV_FLOW_REFLECT_ARRAY(NvFlowInt4, locations, locationCount, eNvFlowReflectHint_pinEnabled, 0)
739NV_FLOW_REFLECT_VALUE(NvFlowEmitterPointFeedback, feedback, eNvFlowReflectHint_pinEnabled, 0)
740NV_FLOW_REFLECT_ARRAY(int, clearLayers, clearLayerCount, eNvFlowReflectHint_pinEnabled, 0)
741NV_FLOW_REFLECT_END(0)
742#undef NV_FLOW_REFLECT_TYPE
743
744NV_FLOW_OP_TYPED(NvFlowEmitterPointAllocate)
745
746
747
749{
750 NvFlowUint64 luid;
751
752 NvFlowBool32 enabled;
753
754 NvFlowFloat4x4 localToWorld;
755 NvFlowFloat4x4 localToWorldVelocity;
756 NvFlowBool32 velocityIsWorldSpace;
757 NvFlowUint numSubSteps;
758
759 int layer;
760
761 float minDistance;
762 float maxDistance;
763
764 NvFlowBool32 allocateMask;
765 NvFlowFloat3 velocity;
766 float divergence;
767 float temperature;
768 float fuel;
769 float burn;
770 float smoke;
771
772 NvFlowBool32 orientationLeftHanded;
773 NvFlowBool32 colorIsSrgb;
774
775 float velocityScale;
776 float divergenceScale;
777 float temperatureScale;
778 float fuelScale;
779 float burnScale;
780 float smokeScale;
781
782 float coupleRateVelocity;
783 float coupleRateDivergence;
784 float coupleRateTemperature;
785 float coupleRateFuel;
786 float coupleRateBurn;
787 float coupleRateSmoke;
788
789 int* meshSubsetFaceCounts;
790 NvFlowUint64 meshSubsetFaceCountCount;
791 NvFlowUint64 meshSubsetFaceCountVersion;
792 int* meshSubsetLayers;
793 NvFlowUint64 meshSubsetLayerCount;
794 NvFlowUint64 meshSubsetLayerVersion;
795 NvFlowBool32* meshSubsetEnableds;
796 NvFlowUint64 meshSubsetEnabledCount;
797 NvFlowUint64 meshSubsetEnabledVersion;
798
799 NvFlowFloat3* meshPositions;
800 NvFlowUint64 meshPositionCount;
801 NvFlowUint64 meshPositionVersion;
802 int* meshFaceVertexIndices;
803 NvFlowUint64 meshFaceVertexIndexCount;
804 NvFlowUint64 meshFaceVertexIndexVersion;
805 int* meshFaceVertexCounts;
806 NvFlowUint64 meshFaceVertexCountCount;
807 NvFlowUint64 meshFaceVertexCountVersion;
808
809 NvFlowFloat3* meshVelocities;
810 NvFlowUint64 meshVelocityCount;
811 NvFlowUint64 meshVelocityVersion;
812 float* meshDivergences;
813 NvFlowUint64 meshDivergenceCount;
814 NvFlowUint64 meshDivergenceVersion;
815 NvFlowFloat3* meshColors;
816 NvFlowUint64 meshColorCount;
817 NvFlowUint64 meshColorVersion;
818 float* meshTemperatures;
819 NvFlowUint64 meshTemperatureCount;
820 NvFlowUint64 meshTemperatureVersion;
821 float* meshFuels;
822 NvFlowUint64 meshFuelCount;
823 NvFlowUint64 meshFuelVersion;
824 float* meshBurns;
825 NvFlowUint64 meshBurnCount;
826 NvFlowUint64 meshBurnVersion;
827 float* meshSmokes;
828 NvFlowUint64 meshSmokeCount;
829 NvFlowUint64 meshSmokeVersion;
830
831 float* meshCoupleRateVelocities;
832 NvFlowUint64 meshCoupleRateVelocityCount;
833 NvFlowUint64 meshCoupleRateVelocityVersion;
834 float* meshCoupleRateDivergences;
835 NvFlowUint64 meshCoupleRateDivergenceCount;
836 NvFlowUint64 meshCoupleRateDivergenceVersion;
837 float* meshCoupleRateTemperatures;
838 NvFlowUint64 meshCoupleRateTemperatureCount;
839 NvFlowUint64 meshCoupleRateTemperatureVersion;
840 float* meshCoupleRateFuels;
841 NvFlowUint64 meshCoupleRateFuelCount;
842 NvFlowUint64 meshCoupleRateFuelVersion;
843 float* meshCoupleRateBurns;
844 NvFlowUint64 meshCoupleRateBurnCount;
845 NvFlowUint64 meshCoupleRateBurnVersion;
846 float* meshCoupleRateSmokes;
847 NvFlowUint64 meshCoupleRateSmokeCount;
848 NvFlowUint64 meshCoupleRateSmokeVersion;
849
850 float physicsVelocityScale;
851 NvFlowBool32 applyPostPressure;
853
854#define NvFlowEmitterMeshParams_default_init { \
855 0llu, /*luid*/ \
856 NV_FLOW_TRUE, /*enabled*/ \
857 { \
858 1.f, 0.f, 0.f, 0.f, \
859 0.f, 1.f, 0.f, 0.f, \
860 0.f, 0.f, 1.f, 0.f, \
861 0.f, 0.f, 0.f, 1.f \
862 }, /*localToWorld*/ \
863 { \
864 1.f, 0.f, 0.f, 0.f, \
865 0.f, 1.f, 0.f, 0.f, \
866 0.f, 0.f, 1.f, 0.f, \
867 0.f, 0.f, 0.f, 1.f \
868 }, /*localToWorldVelocity*/ \
869 NV_FLOW_FALSE, /*velocityIsWorldSpace*/ \
870 1u, /*numSubSteps*/ \
871 0, /*layer*/ \
872 -0.8f, /*minDistance*/ \
873 0.3f, /*minDistance*/ \
874 NV_FLOW_TRUE, /*allocateMask*/ \
875 {0.f, 0.f, 100.f}, /*velocity*/ \
876 0.f, /*divergence*/ \
877 2.f, /*temperature*/ \
878 0.8f, /*fuel*/ \
879 0.f, /*burn*/ \
880 2.f, /*smoke*/ \
881 NV_FLOW_FALSE, /*orientationLeftHanded*/ \
882 NV_FLOW_FALSE, /*colorIsSrgb*/ \
883 1.f, /*velocityScale*/ \
884 1.f, /*divergenceScale*/ \
885 1.f, /*temperatureScale*/ \
886 1.f, /*fuelScale*/ \
887 1.f, /*burnScale*/ \
888 1.f, /*smokeScale*/ \
889 2.f, /*coupleRateVelocity*/ \
890 0.f, /*coupleRateDivergence*/ \
891 10.f, /*coupleRateTemperature*/ \
892 2.f, /*coupleRateFuel*/ \
893 0.f, /*coupleRateBurn*/ \
894 2.f, /*coupleRateSmoke*/ \
895 0, /*meshSubsetFaceCounts*/ \
896 0, /*meshSubsetFaceCountCount*/ \
897 0, /*meshSubsetFaceCountVersion*/ \
898 0, /*meshSubsetLayers*/ \
899 0, /*meshSubsetLayerCount*/ \
900 0, /*meshSubsetLayerVersion*/ \
901 0, /*meshSubsetEnableds*/ \
902 0, /*meshSubsetEnabledCount*/ \
903 0, /*meshSubsetEnabledVersion*/ \
904 0, /*meshPositions*/ \
905 0, /*meshPositionCount*/ \
906 0, /*meshPositionVersion*/ \
907 0, /*meshFaceVertexIndices*/ \
908 0, /*meshFaceVertexIndexCount;*/ \
909 0, /*meshFaceVertexIndexVersion*/ \
910 0, /*meshFaceVertexCounts*/ \
911 0, /*meshFaceVertexCountCount*/ \
912 0, /*meshFaceVertexCountVersion*/ \
913 0, /*meshVelocities*/ \
914 0, /*meshVelocityCount*/ \
915 0, /*meshVelocityVersion*/ \
916 0, /*meshDivergences*/ \
917 0, /*meshDivergenceCount*/ \
918 0, /*meshDivergenceVersion*/ \
919 0, /*meshColors*/ \
920 0, /*meshColorCount*/ \
921 0, /*meshColorVersion*/ \
922 0, /*meshTemperatures*/ \
923 0, /*meshTemperatureCount*/ \
924 0, /*meshTemperatureVersion*/ \
925 0, /*meshFuels*/ \
926 0, /*meshFuelCount*/ \
927 0, /*meshFuelVersion*/ \
928 0, /*meshBurns*/ \
929 0, /*meshBurnCount*/ \
930 0, /*meshBurnVersion*/ \
931 0, /*meshSmokes*/ \
932 0, /*meshSmokeCount*/ \
933 0, /*meshSmokeVersion*/ \
934 0, /*meshCoupleRateVelocities*/ \
935 0, /*meshCoupleRateVelocityCount*/ \
936 0, /*meshCoupleRateVelocityVersion*/ \
937 0, /*meshCoupleRateDivergences*/ \
938 0, /*meshCoupleRateDivergenceCount*/ \
939 0, /*meshCoupleRateDivergenceVersion*/ \
940 0, /*meshCoupleRateTemperatures*/ \
941 0, /*meshCoupleRateTemperatureCount*/ \
942 0, /*meshCoupleRateTemperatureVersion*/ \
943 0, /*meshCoupleRateFuels*/ \
944 0, /*meshCoupleRateFuelCount*/ \
945 0, /*meshCoupleRateFuelVersion*/ \
946 0, /*meshCoupleRateBurns*/ \
947 0, /*meshCoupleRateBurnCount*/ \
948 0, /*meshCoupleRateBurnVersion*/ \
949 0, /*meshCoupleRateSmokes*/ \
950 0, /*meshCoupleRateSmokeCount*/ \
951 0, /*meshCoupleRateSmokeVersion*/ \
952 0.f, /*physicsVelocityScale*/ \
953 NV_FLOW_FALSE, /*applyPostPressure*/ \
954}
955static const NvFlowEmitterMeshParams NvFlowEmitterMeshParams_default = NvFlowEmitterMeshParams_default_init;
956
957#define NV_FLOW_REFLECT_TYPE NvFlowEmitterMeshParams
958NV_FLOW_REFLECT_BEGIN()
959NV_FLOW_REFLECT_VALUE(NvFlowUint64, luid, eNvFlowReflectHint_transientNoEdit, 0)
960NV_FLOW_REFLECT_VALUE(NvFlowBool32, enabled, 0, 0)
961NV_FLOW_REFLECT_VALUE(NvFlowFloat4x4, localToWorld, eNvFlowReflectHint_transientNoEdit, 0)
962NV_FLOW_REFLECT_VALUE(NvFlowFloat4x4, localToWorldVelocity, eNvFlowReflectHint_transientNoEdit, 0)
963NV_FLOW_REFLECT_VALUE(NvFlowBool32, velocityIsWorldSpace, 0, 0)
964NV_FLOW_REFLECT_VALUE(NvFlowUint, numSubSteps, 0, 0)
965NV_FLOW_REFLECT_VALUE(int, layer, 0, 0)
966NV_FLOW_REFLECT_VALUE(float, minDistance, 0, 0)
967NV_FLOW_REFLECT_VALUE(float, maxDistance, 0, 0)
968NV_FLOW_REFLECT_VALUE(NvFlowBool32, allocateMask, 0, 0)
969NV_FLOW_REFLECT_VALUE(NvFlowFloat3, velocity, 0, 0)
970NV_FLOW_REFLECT_VALUE(float, divergence, 0, 0)
971NV_FLOW_REFLECT_VALUE(float, temperature, 0, 0)
972NV_FLOW_REFLECT_VALUE(float, fuel, 0, 0)
973NV_FLOW_REFLECT_VALUE(float, burn, 0, 0)
974NV_FLOW_REFLECT_VALUE(float, smoke, 0, 0)
975NV_FLOW_REFLECT_VALUE(NvFlowBool32, orientationLeftHanded, 0, 0)
976NV_FLOW_REFLECT_VALUE(NvFlowBool32, colorIsSrgb, 0, 0)
977NV_FLOW_REFLECT_VALUE(float, velocityScale, 0, 0)
978NV_FLOW_REFLECT_VALUE(float, divergenceScale, 0, 0)
979NV_FLOW_REFLECT_VALUE(float, temperatureScale, 0, 0)
980NV_FLOW_REFLECT_VALUE(float, fuelScale, 0, 0)
981NV_FLOW_REFLECT_VALUE(float, burnScale, 0, 0)
982NV_FLOW_REFLECT_VALUE(float, smokeScale, 0, 0)
983NV_FLOW_REFLECT_VALUE(float, coupleRateVelocity, 0, 0)
984NV_FLOW_REFLECT_VALUE(float, coupleRateDivergence, 0, 0)
985NV_FLOW_REFLECT_VALUE(float, coupleRateTemperature, 0, 0)
986NV_FLOW_REFLECT_VALUE(float, coupleRateFuel, 0, 0)
987NV_FLOW_REFLECT_VALUE(float, coupleRateBurn, 0, 0)
988NV_FLOW_REFLECT_VALUE(float, coupleRateSmoke, 0, 0)
989NV_FLOW_REFLECT_ARRAY_VERSIONED(int, meshSubsetFaceCounts, meshSubsetFaceCountCount, meshSubsetFaceCountVersion, eNvFlowReflectHint_asset, "asset(array)")
990NV_FLOW_REFLECT_ARRAY_VERSIONED(int, meshSubsetLayers, meshSubsetLayerCount, meshSubsetLayerVersion, eNvFlowReflectHint_asset, "asset(array)")
991NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowBool32, meshSubsetEnableds, meshSubsetEnabledCount, meshSubsetEnabledVersion, eNvFlowReflectHint_asset, "asset(array)")
992NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowFloat3, meshPositions, meshPositionCount, meshPositionVersion, eNvFlowReflectHint_asset, "asset(array)")
993NV_FLOW_REFLECT_ARRAY_VERSIONED(int, meshFaceVertexIndices, meshFaceVertexIndexCount, meshFaceVertexIndexVersion, eNvFlowReflectHint_asset, "asset(array)")
994NV_FLOW_REFLECT_ARRAY_VERSIONED(int, meshFaceVertexCounts, meshFaceVertexCountCount, meshFaceVertexCountVersion, eNvFlowReflectHint_asset, "asset(array)")
995NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowFloat3, meshVelocities, meshVelocityCount, meshVelocityVersion, eNvFlowReflectHint_asset, "asset(array)")
996NV_FLOW_REFLECT_ARRAY_VERSIONED(float, meshDivergences, meshDivergenceCount, meshDivergenceVersion, eNvFlowReflectHint_asset, "asset(array)")
997NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowFloat3, meshColors, meshColorCount, meshColorVersion, eNvFlowReflectHint_asset, "asset(array)")
998NV_FLOW_REFLECT_ARRAY_VERSIONED(float, meshTemperatures, meshTemperatureCount, meshTemperatureVersion, eNvFlowReflectHint_asset, "asset(array)")
999NV_FLOW_REFLECT_ARRAY_VERSIONED(float, meshFuels, meshFuelCount, meshFuelVersion, eNvFlowReflectHint_asset, "asset(array)")
1000NV_FLOW_REFLECT_ARRAY_VERSIONED(float, meshBurns, meshBurnCount, meshBurnVersion, eNvFlowReflectHint_asset, "asset(array)")
1001NV_FLOW_REFLECT_ARRAY_VERSIONED(float, meshSmokes, meshSmokeCount, meshSmokeVersion, eNvFlowReflectHint_asset, "asset(array)")
1002NV_FLOW_REFLECT_ARRAY_VERSIONED(float, meshCoupleRateVelocities, meshCoupleRateVelocityCount, meshCoupleRateVelocityVersion, eNvFlowReflectHint_asset, "asset(array)")
1003NV_FLOW_REFLECT_ARRAY_VERSIONED(float, meshCoupleRateDivergences, meshCoupleRateDivergenceCount, meshCoupleRateDivergenceVersion, eNvFlowReflectHint_asset, "asset(array)")
1004NV_FLOW_REFLECT_ARRAY_VERSIONED(float, meshCoupleRateTemperatures, meshCoupleRateTemperatureCount, meshCoupleRateTemperatureVersion, eNvFlowReflectHint_asset, "asset(array)")
1005NV_FLOW_REFLECT_ARRAY_VERSIONED(float, meshCoupleRateFuels, meshCoupleRateFuelCount, meshCoupleRateFuelVersion, eNvFlowReflectHint_asset, "asset(array)")
1006NV_FLOW_REFLECT_ARRAY_VERSIONED(float, meshCoupleRateBurns, meshCoupleRateBurnCount, meshCoupleRateBurnVersion, eNvFlowReflectHint_asset, "asset(array)")
1007NV_FLOW_REFLECT_ARRAY_VERSIONED(float, meshCoupleRateSmokes, meshCoupleRateSmokeCount, meshCoupleRateSmokeVersion, eNvFlowReflectHint_asset, "asset(array)")
1008NV_FLOW_REFLECT_VALUE(float, physicsVelocityScale, 0, 0)
1009NV_FLOW_REFLECT_VALUE(NvFlowBool32, applyPostPressure, 0, 0)
1010NV_FLOW_REFLECT_END(&NvFlowEmitterMeshParams_default)
1011#undef NV_FLOW_REFLECT_TYPE
1012
1014{
1015 void* data;
1017
1018NV_FLOW_REFLECT_STRUCT_OPAQUE_IMPL(NvFlowEmitterMeshFeedback)
1019
1021{
1022 NvFlowContextInterface* contextInterface;
1023 NvFlowContext* context;
1024 float deltaTime;
1025 const NvFlowEmitterMeshParams*const* velocityParams;
1026 NvFlowUint64 velocityParamCount;
1027 const NvFlowEmitterMeshParams*const* densityParams;
1028 NvFlowUint64 densityParamCount;
1029 NvFlowSparseTexture value;
1030 NvFlowSparseTexture valueTemp;
1031 NvFlowBool32 isPostPressure;
1034
1039
1040#define NV_FLOW_REFLECT_TYPE NvFlowEmitterMeshPinsIn
1041NV_FLOW_REFLECT_BEGIN()
1042NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
1043NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
1044NV_FLOW_REFLECT_VALUE(float, deltaTime, eNvFlowReflectHint_pinEnabledGlobal, 0)
1045NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterMeshParams, velocityParams, velocityParamCount, eNvFlowReflectHint_pinEnabled, 0)
1046NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterMeshParams, densityParams, densityParamCount, eNvFlowReflectHint_pinEnabled, 0)
1047NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, value, eNvFlowReflectHint_pinEnabledMutable, 0)
1048NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, valueTemp, eNvFlowReflectHint_pinEnabledMutable, 0)
1049NV_FLOW_REFLECT_VALUE(NvFlowBool32, isPostPressure, eNvFlowReflectHint_pinEnabled, 0)
1050NV_FLOW_REFLECT_VALUE(NvFlowEmitterMeshFeedback, feedback, eNvFlowReflectHint_pinEnabled, 0)
1051NV_FLOW_REFLECT_END(0)
1052#undef NV_FLOW_REFLECT_TYPE
1053
1054#define NV_FLOW_REFLECT_TYPE NvFlowEmitterMeshPinsOut
1055NV_FLOW_REFLECT_BEGIN()
1056NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, value, eNvFlowReflectHint_pinEnabled, 0)
1057NV_FLOW_REFLECT_END(0)
1058#undef NV_FLOW_REFLECT_TYPE
1059
1060NV_FLOW_OP_TYPED(NvFlowEmitterMesh)
1061
1062
1063
1065{
1066 NvFlowContextInterface* contextInterface;
1067 NvFlowContext* context;
1068 NvFlowSparseParams sparseParams;
1069 float deltaTime;
1070 const NvFlowEmitterMeshParams*const* params;
1071 NvFlowUint64 paramCount;
1072 NvFlowUint3 baseBlockDimBits;
1074
1076{
1077 NvFlowInt4* locations;
1078 NvFlowUint64 locationCount;
1081
1082#define NV_FLOW_REFLECT_TYPE NvFlowEmitterMeshAllocatePinsIn
1083NV_FLOW_REFLECT_BEGIN()
1084NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
1085NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
1086NV_FLOW_REFLECT_VALUE(NvFlowSparseParams, sparseParams, eNvFlowReflectHint_pinEnabled, 0)
1087NV_FLOW_REFLECT_VALUE(float, deltaTime, eNvFlowReflectHint_pinEnabledGlobal, 0)
1088NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterMeshParams, params, paramCount, eNvFlowReflectHint_pinEnabled, 0)
1089NV_FLOW_REFLECT_VALUE(NvFlowUint3, baseBlockDimBits, eNvFlowReflectHint_pinEnabledGlobal, 0)
1090NV_FLOW_REFLECT_END(0)
1091#undef NV_FLOW_REFLECT_TYPE
1092
1093#define NV_FLOW_REFLECT_TYPE NvFlowEmitterMeshAllocatePinsOut
1094NV_FLOW_REFLECT_BEGIN()
1095NV_FLOW_REFLECT_ARRAY(NvFlowInt4, locations, locationCount, eNvFlowReflectHint_pinEnabled, 0)
1096NV_FLOW_REFLECT_VALUE(NvFlowEmitterMeshFeedback, feedback, eNvFlowReflectHint_pinEnabled, 0)
1097NV_FLOW_REFLECT_END(0)
1098#undef NV_FLOW_REFLECT_TYPE
1099
1100NV_FLOW_OP_TYPED(NvFlowEmitterMeshAllocate)
1101
1102
1103
1105{
1106 NvFlowUint64 luid;
1107
1108 NvFlowBool32 enabled;
1109
1110 NvFlowFloat4x4 localToWorld;
1111 NvFlowFloat4x4 localToWorldVelocity;
1112 NvFlowBool32 velocityIsWorldSpace;
1113 NvFlowFloat3 position;
1114 int layer;
1115 NvFlowFloat3 halfSize;
1116 float allocationScale;
1117
1118 NvFlowFloat3 velocity;
1119 float divergence;
1120
1121 float temperature;
1122 float fuel;
1123 float burn;
1124 float smoke;
1125
1126 NvFlowBool32 colorIsSrgb;
1127
1128 float velocityScale;
1129 float divergenceScale;
1130 float temperatureScale;
1131 float fuelScale;
1132 float burnScale;
1133 float smokeScale;
1134
1135 float coupleRateVelocity;
1136 float coupleRateDivergence;
1137
1138 float coupleRateTemperature;
1139 float coupleRateFuel;
1140 float coupleRateBurn;
1141 float coupleRateSmoke;
1142
1143 NvFlowUint textureWidth;
1144 NvFlowUint textureHeight;
1145 NvFlowUint textureDepth;
1146 NvFlowUint textureFirstElement;
1147
1148 NvFlowFloat3* textureVelocities;
1149 NvFlowUint64 textureVelocityCount;
1150 NvFlowUint64 textureVelocityVersion;
1151 float* textureDivergences;
1152 NvFlowUint64 textureDivergenceCount;
1153 NvFlowUint64 textureDivergenceVersion;
1154 float* textureTemperatures;
1155 NvFlowUint64 textureTemperatureCount;
1156 NvFlowUint64 textureTemperatureVersion;
1157 float* textureFuels;
1158 NvFlowUint64 textureFuelCount;
1159 NvFlowUint64 textureFuelVersion;
1160 float* textureBurns;
1161 NvFlowUint64 textureBurnCount;
1162 NvFlowUint64 textureBurnVersion;
1163 float* textureSmokes;
1164 NvFlowUint64 textureSmokeCount;
1165 NvFlowUint64 textureSmokeVersion;
1166
1167 float* textureCoupleRateVelocities;
1168 NvFlowUint64 textureCoupleRateVelocityCount;
1169 NvFlowUint64 textureCoupleRateVelocityVersion;
1170 float* textureCoupleRateDivergences;
1171 NvFlowUint64 textureCoupleRateDivergenceCount;
1172 NvFlowUint64 textureCoupleRateDivergenceVersion;
1173 float* textureCoupleRateTemperatures;
1174 NvFlowUint64 textureCoupleRateTemperatureCount;
1175 NvFlowUint64 textureCoupleRateTemperatureVersion;
1176 float* textureCoupleRateFuels;
1177 NvFlowUint64 textureCoupleRateFuelCount;
1178 NvFlowUint64 textureCoupleRateFuelVersion;
1179 float* textureCoupleRateBurns;
1180 NvFlowUint64 textureCoupleRateBurnCount;
1181 NvFlowUint64 textureCoupleRateBurnVersion;
1182 float* textureCoupleRateSmokes;
1183 NvFlowUint64 textureCoupleRateSmokeCount;
1184 NvFlowUint64 textureCoupleRateSmokeVersion;
1185
1186 NvFlowBool32 applyPostPressure;
1188
1189#define NvFlowEmitterTextureParams_default_init { \
1190 0llu, /*luid*/ \
1191 NV_FLOW_TRUE, /*enabled*/ \
1192 { \
1193 1.f, 0.f, 0.f, 0.f, \
1194 0.f, 1.f, 0.f, 0.f, \
1195 0.f, 0.f, 1.f, 0.f, \
1196 0.f, 0.f, 0.f, 1.f \
1197 }, /*localToWorld*/ \
1198 { \
1199 1.f, 0.f, 0.f, 0.f, \
1200 0.f, 1.f, 0.f, 0.f, \
1201 0.f, 0.f, 1.f, 0.f, \
1202 0.f, 0.f, 0.f, 1.f \
1203 }, /*localToWorldVelocity*/ \
1204 NV_FLOW_FALSE, /*velocityIsWorldSpace*/ \
1205 {0.f, 0.f, 0.f}, /*position*/ \
1206 0, /*layer*/ \
1207 {10.f, 10.f, 10.f}, /*halfSize*/ \
1208 1.f, /*fallocationScale*/ \
1209 {0.f, 0.f, 400.f}, /*velocity*/ \
1210 0.f, /*divergence*/ \
1211 0.5f, /*temperature*/ \
1212 0.8f, /*fuel*/ \
1213 0.f, /*burn*/ \
1214 0.f, /*smoke*/ \
1215 NV_FLOW_FALSE, /*colorIsSrgb*/ \
1216 1.f, /*velocityScale*/ \
1217 1.f, /*divergenceScale*/ \
1218 1.f, /*temperatureScale*/ \
1219 1.f, /*fuelScale*/ \
1220 1.f, /*burnScale*/ \
1221 1.f, /*smokeScale*/ \
1222 2.f, /*coupleRateVelocity*/ \
1223 0.f, /*coupleRateDivergence*/ \
1224 2.f, /*coupleRateTemperature*/ \
1225 2.f, /*coupleRateFuel*/ \
1226 0.f, /*coupleRateBurn*/ \
1227 0.f, /*coupleRateSmoke*/ \
1228 0u, /*textureWidth*/ \
1229 0u, /*textureHeight*/ \
1230 0u, /*textureDepth*/ \
1231 0u, /*textureFirstElement*/ \
1232 0, /*textureVelocities*/ \
1233 0, /*textureVelocityCount*/ \
1234 0, /*textureVelocityVersion*/ \
1235 0, /*textureDivergences*/ \
1236 0, /*textureDivergenceCount*/ \
1237 0, /*textureDivergenceVersion*/ \
1238 0, /*textureTemperatures*/ \
1239 0, /*textureTemperatureCount*/ \
1240 0, /*textureTemperatureVersion*/ \
1241 0, /*textureFuels*/ \
1242 0, /*textureFuelCount*/ \
1243 0, /*textureFuelVersion*/ \
1244 0, /*textureBurns*/ \
1245 0, /*textureBurnCount*/ \
1246 0, /*textureBurnVersion*/ \
1247 0, /*textureSmokes*/ \
1248 0, /*textureSmokeCount*/ \
1249 0, /*textureSmokeVersion*/ \
1250 0, /*textureCoupleRateVelocities*/ \
1251 0, /*textureCoupleRateVelocityCount*/ \
1252 0, /*textureCoupleRateVelocityVersion*/ \
1253 0, /*textureCoupleRateDivergences*/ \
1254 0, /*textureCoupleRateDivergenceCount*/ \
1255 0, /*textureCoupleRateDivergenceVersion*/ \
1256 0, /*textureCoupleRateTemperatures*/ \
1257 0, /*textureCoupleRateTemperatureCount*/ \
1258 0, /*textureCoupleRateTemperatureVersion*/ \
1259 0, /*textureCoupleRateFuels*/ \
1260 0, /*textureCoupleRateFuelCount*/ \
1261 0, /*textureCoupleRateFuelVersion*/ \
1262 0, /*textureCoupleRateBurns*/ \
1263 0, /*textureCoupleRateBurnCount*/ \
1264 0, /*textureCoupleRateBurnVersion*/ \
1265 0, /*textureCoupleRateSmokes*/ \
1266 0, /*textureCoupleRateSmokeCount*/ \
1267 0, /*textureCoupleRateSmokeVersion*/ \
1268 NV_FLOW_FALSE /*applyPostPressure*/ \
1269}
1270static const NvFlowEmitterTextureParams NvFlowEmitterTextureParams_default = NvFlowEmitterTextureParams_default_init;
1271
1272#define NV_FLOW_REFLECT_TYPE NvFlowEmitterTextureParams
1273NV_FLOW_REFLECT_BEGIN()
1274NV_FLOW_REFLECT_VALUE(NvFlowUint64, luid, eNvFlowReflectHint_transientNoEdit, 0)
1275NV_FLOW_REFLECT_VALUE(NvFlowBool32, enabled, 0, 0)
1276NV_FLOW_REFLECT_VALUE(NvFlowFloat4x4, localToWorld, eNvFlowReflectHint_transientNoEdit, 0)
1277NV_FLOW_REFLECT_VALUE(NvFlowFloat4x4, localToWorldVelocity, eNvFlowReflectHint_transientNoEdit, 0)
1278NV_FLOW_REFLECT_VALUE(NvFlowBool32, velocityIsWorldSpace, 0, 0)
1279NV_FLOW_REFLECT_VALUE(NvFlowFloat3, position, 0, 0)
1280NV_FLOW_REFLECT_VALUE(int, layer, 0, 0)
1281NV_FLOW_REFLECT_VALUE(NvFlowFloat3, halfSize, 0, 0)
1282NV_FLOW_REFLECT_VALUE(float, allocationScale, 0, 0)
1283NV_FLOW_REFLECT_VALUE(NvFlowFloat3, velocity, 0, 0)
1284NV_FLOW_REFLECT_VALUE(float, divergence, 0, 0)
1285NV_FLOW_REFLECT_VALUE(float, temperature, 0, 0)
1286NV_FLOW_REFLECT_VALUE(float, fuel, 0, 0)
1287NV_FLOW_REFLECT_VALUE(float, burn, 0, 0)
1288NV_FLOW_REFLECT_VALUE(float, smoke, 0, 0)
1289NV_FLOW_REFLECT_VALUE(NvFlowBool32, colorIsSrgb, 0, 0)
1290NV_FLOW_REFLECT_VALUE(float, velocityScale, 0, 0)
1291NV_FLOW_REFLECT_VALUE(float, divergenceScale, 0, 0)
1292NV_FLOW_REFLECT_VALUE(float, temperatureScale, 0, 0)
1293NV_FLOW_REFLECT_VALUE(float, fuelScale, 0, 0)
1294NV_FLOW_REFLECT_VALUE(float, burnScale, 0, 0)
1295NV_FLOW_REFLECT_VALUE(float, smokeScale, 0, 0)
1296NV_FLOW_REFLECT_VALUE(float, coupleRateVelocity, 0, 0)
1297NV_FLOW_REFLECT_VALUE(float, coupleRateDivergence, 0, 0)
1298NV_FLOW_REFLECT_VALUE(float, coupleRateTemperature, 0, 0)
1299NV_FLOW_REFLECT_VALUE(float, coupleRateFuel, 0, 0)
1300NV_FLOW_REFLECT_VALUE(float, coupleRateBurn, 0, 0)
1301NV_FLOW_REFLECT_VALUE(float, coupleRateSmoke, 0, 0)
1302NV_FLOW_REFLECT_VALUE(NvFlowUint, textureWidth, 0, 0)
1303NV_FLOW_REFLECT_VALUE(NvFlowUint, textureHeight, 0, 0)
1304NV_FLOW_REFLECT_VALUE(NvFlowUint, textureDepth, 0, 0)
1305NV_FLOW_REFLECT_VALUE(NvFlowUint, textureFirstElement, 0, 0)
1306NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowFloat3, textureVelocities, textureVelocityCount, textureVelocityVersion, eNvFlowReflectHint_asset, "asset(array)")
1307NV_FLOW_REFLECT_ARRAY_VERSIONED(float, textureDivergences, textureDivergenceCount, textureDivergenceVersion, eNvFlowReflectHint_asset, "asset(array)")
1308NV_FLOW_REFLECT_ARRAY_VERSIONED(float, textureTemperatures, textureTemperatureCount, textureTemperatureVersion, eNvFlowReflectHint_asset, "asset(array)")
1309NV_FLOW_REFLECT_ARRAY_VERSIONED(float, textureFuels, textureFuelCount, textureFuelVersion, eNvFlowReflectHint_asset, "asset(array)")
1310NV_FLOW_REFLECT_ARRAY_VERSIONED(float, textureBurns, textureBurnCount, textureBurnVersion, eNvFlowReflectHint_asset, "asset(array)")
1311NV_FLOW_REFLECT_ARRAY_VERSIONED(float, textureSmokes, textureSmokeCount, textureSmokeVersion, eNvFlowReflectHint_asset, "asset(array)")
1312NV_FLOW_REFLECT_ARRAY_VERSIONED(float, textureCoupleRateVelocities, textureCoupleRateVelocityCount, textureCoupleRateVelocityVersion, eNvFlowReflectHint_asset, "asset(array)")
1313NV_FLOW_REFLECT_ARRAY_VERSIONED(float, textureCoupleRateDivergences, textureCoupleRateDivergenceCount, textureCoupleRateDivergenceVersion, eNvFlowReflectHint_asset, "asset(array)")
1314NV_FLOW_REFLECT_ARRAY_VERSIONED(float, textureCoupleRateTemperatures, textureCoupleRateTemperatureCount, textureCoupleRateTemperatureVersion, eNvFlowReflectHint_asset, "asset(array)")
1315NV_FLOW_REFLECT_ARRAY_VERSIONED(float, textureCoupleRateFuels, textureCoupleRateFuelCount, textureCoupleRateFuelVersion, eNvFlowReflectHint_asset, "asset(array)")
1316NV_FLOW_REFLECT_ARRAY_VERSIONED(float, textureCoupleRateBurns, textureCoupleRateBurnCount, textureCoupleRateBurnVersion, eNvFlowReflectHint_asset, "asset(array)")
1317NV_FLOW_REFLECT_ARRAY_VERSIONED(float, textureCoupleRateSmokes, textureCoupleRateSmokeCount, textureCoupleRateSmokeVersion, eNvFlowReflectHint_asset, "asset(array)")
1318NV_FLOW_REFLECT_VALUE(NvFlowBool32, applyPostPressure, 0, 0)
1319NV_FLOW_REFLECT_END(&NvFlowEmitterTextureParams_default)
1320#undef NV_FLOW_REFLECT_TYPE
1321
1323{
1324 NvFlowContextInterface* contextInterface;
1325 NvFlowContext* context;
1326 float deltaTime;
1327 const NvFlowEmitterTextureParams*const* velocityParams;
1328 NvFlowUint64 velocityParamCount;
1329 const NvFlowEmitterTextureParams*const* densityParams;
1330 NvFlowUint64 densityParamCount;
1331 NvFlowSparseTexture value;
1332 NvFlowSparseTexture valueTemp;
1333 NvFlowBool32 isPostPressure;
1335
1340
1341#define NV_FLOW_REFLECT_TYPE NvFlowEmitterTexturePinsIn
1342NV_FLOW_REFLECT_BEGIN()
1343NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
1344NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
1345NV_FLOW_REFLECT_VALUE(float, deltaTime, eNvFlowReflectHint_pinEnabledGlobal, 0)
1346NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterTextureParams, velocityParams, velocityParamCount, eNvFlowReflectHint_pinEnabled, 0)
1347NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterTextureParams, densityParams, densityParamCount, eNvFlowReflectHint_pinEnabled, 0)
1348NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, value, eNvFlowReflectHint_pinEnabledMutable, 0)
1349NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, valueTemp, eNvFlowReflectHint_pinEnabledMutable, 0)
1350NV_FLOW_REFLECT_VALUE(NvFlowBool32, isPostPressure, eNvFlowReflectHint_pinEnabled, 0)
1351NV_FLOW_REFLECT_END(0)
1352#undef NV_FLOW_REFLECT_TYPE
1353
1354#define NV_FLOW_REFLECT_TYPE NvFlowEmitterTexturePinsOut
1355NV_FLOW_REFLECT_BEGIN()
1356NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, value, eNvFlowReflectHint_pinEnabled, 0)
1357NV_FLOW_REFLECT_END(0)
1358#undef NV_FLOW_REFLECT_TYPE
1359
1360NV_FLOW_OP_TYPED(NvFlowEmitterTexture)
1361
1362
1363
1365{
1366 NvFlowContextInterface* contextInterface;
1367 NvFlowContext* context;
1368 NvFlowSparseParams sparseParams;
1369 float deltaTime;
1370 const NvFlowEmitterTextureParams*const* params;
1371 NvFlowUint64 paramCount;
1373
1375{
1376 NvFlowInt4* locations;
1377 NvFlowUint64 locationCount;
1379
1380#define NV_FLOW_REFLECT_TYPE NvFlowEmitterTextureAllocatePinsIn
1381NV_FLOW_REFLECT_BEGIN()
1382NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
1383NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
1384NV_FLOW_REFLECT_VALUE(NvFlowSparseParams, sparseParams, eNvFlowReflectHint_pinEnabled, 0)
1385NV_FLOW_REFLECT_VALUE(float, deltaTime, eNvFlowReflectHint_pinEnabledGlobal, 0)
1386NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterTextureParams, params, paramCount, eNvFlowReflectHint_pinEnabled, 0)
1387NV_FLOW_REFLECT_END(0)
1388#undef NV_FLOW_REFLECT_TYPE
1389
1390#define NV_FLOW_REFLECT_TYPE NvFlowEmitterTextureAllocatePinsOut
1391NV_FLOW_REFLECT_BEGIN()
1392NV_FLOW_REFLECT_ARRAY(NvFlowInt4, locations, locationCount, eNvFlowReflectHint_pinEnabled, 0)
1393NV_FLOW_REFLECT_END(0)
1394#undef NV_FLOW_REFLECT_TYPE
1395
1396NV_FLOW_OP_TYPED(NvFlowEmitterTextureAllocate)
1397
1398
1399
1401{
1402 NvFlowUint64 luid;
1403
1404 NvFlowBool32 enabled;
1405
1406 NvFlowFloat4x4 localToWorld;
1407 NvFlowFloat4x4 localToWorldVelocity;
1408 NvFlowBool32 velocityIsWorldSpace;
1409
1410 int layer;
1411 float allocationScale;
1412
1413 NvFlowFloat3 velocity;
1414 float divergence;
1415
1416 float temperature;
1417 float fuel;
1418 float burn;
1419 float smoke;
1420
1421 NvFlowBool32 colorIsSrgb;
1422
1423 float velocityScale;
1424 float divergenceScale;
1425 float temperatureScale;
1426 float fuelScale;
1427 float burnScale;
1428 float smokeScale;
1429
1430 float coupleRateVelocity;
1431 float coupleRateDivergence;
1432
1433 float coupleRateTemperature;
1434 float coupleRateFuel;
1435 float coupleRateBurn;
1436 float coupleRateSmoke;
1437
1438 float minDistance;
1439 float maxDistance;
1440
1441 NvFlowUint* nanoVdbDistances;
1442 NvFlowUint64 nanoVdbDistanceCount;
1443 NvFlowUint64 nanoVdbDistanceVersion;
1444 NvFlowUint64 nanoVdbDistanceFirstElement;
1445
1446 NvFlowUint* nanoVdbVelocities;
1447 NvFlowUint64 nanoVdbVelocityCount;
1448 NvFlowUint64 nanoVdbVelocityVersion;
1449 NvFlowUint64 nanoVdbVelocityFirstElement;
1450
1451 NvFlowUint* nanoVdbDivergences;
1452 NvFlowUint64 nanoVdbDivergenceCount;
1453 NvFlowUint64 nanoVdbDivergenceVersion;
1454 NvFlowUint64 nanoVdbDivergenceFirstElement;
1455
1456 NvFlowUint* nanoVdbTemperatures;
1457 NvFlowUint64 nanoVdbTemperatureCount;
1458 NvFlowUint64 nanoVdbTemperatureVersion;
1459 NvFlowUint64 nanoVdbTemperatureFirstElement;
1460
1461 NvFlowUint* nanoVdbFuels;
1462 NvFlowUint64 nanoVdbFuelCount;
1463 NvFlowUint64 nanoVdbFuelVersion;
1464 NvFlowUint64 nanoVdbFuelFirstElement;
1465
1466 NvFlowUint* nanoVdbBurns;
1467 NvFlowUint64 nanoVdbBurnCount;
1468 NvFlowUint64 nanoVdbBurnVersion;
1469 NvFlowUint64 nanoVdbBurnFirstElement;
1470
1471 NvFlowUint* nanoVdbSmokes;
1472 NvFlowUint64 nanoVdbSmokeCount;
1473 NvFlowUint64 nanoVdbSmokeVersion;
1474 NvFlowUint64 nanoVdbSmokeFirstElement;
1475
1476 NvFlowUint* nanoVdbCoupleRateVelocities;
1477 NvFlowUint64 nanoVdbCoupleRateVelocityCount;
1478 NvFlowUint64 nanoVdbCoupleRateVelocityVersion;
1479 NvFlowUint64 nanoVdbCoupleRateVelocityFirstElement;
1480
1481 NvFlowUint* nanoVdbCoupleRateDivergences;
1482 NvFlowUint64 nanoVdbCoupleRateDivergenceCount;
1483 NvFlowUint64 nanoVdbCoupleRateDivergenceVersion;
1484 NvFlowUint64 nanoVdbCoupleRateDivergenceFirstElement;
1485
1486 NvFlowUint* nanoVdbCoupleRateTemperatures;
1487 NvFlowUint64 nanoVdbCoupleRateTemperatureCount;
1488 NvFlowUint64 nanoVdbCoupleRateTemperatureVersion;
1489 NvFlowUint64 nanoVdbCoupleRateTemperatureFirstElement;
1490
1491 NvFlowUint* nanoVdbCoupleRateFuels;
1492 NvFlowUint64 nanoVdbCoupleRateFuelCount;
1493 NvFlowUint64 nanoVdbCoupleRateFuelVersion;
1494 NvFlowUint64 nanoVdbCoupleRateFuelFirstElement;
1495
1496 NvFlowUint* nanoVdbCoupleRateBurns;
1497 NvFlowUint64 nanoVdbCoupleRateBurnCount;
1498 NvFlowUint64 nanoVdbCoupleRateBurnVersion;
1499 NvFlowUint64 nanoVdbCoupleRateBurnFirstElement;
1500
1501 NvFlowUint* nanoVdbCoupleRateSmokes;
1502 NvFlowUint64 nanoVdbCoupleRateSmokeCount;
1503 NvFlowUint64 nanoVdbCoupleRateSmokeVersion;
1504 NvFlowUint64 nanoVdbCoupleRateSmokeFirstElement;
1505
1506 NvFlowUint* nanoVdbRgba8s;
1507 NvFlowUint64 nanoVdbRgba8Count;
1508 NvFlowUint64 nanoVdbRgba8Version;
1509 NvFlowUint64 nanoVdbRgba8FirstElement;
1510
1511 NvFlowBool32 applyPostPressure;
1512 NvFlowBool32 allocateActiveLeaves;
1514
1515#define NvFlowEmitterNanoVdbParams_default_init { \
1516 0llu, /*luid*/ \
1517 NV_FLOW_TRUE, /*enabled*/ \
1518 { \
1519 1.f, 0.f, 0.f, 0.f, \
1520 0.f, 1.f, 0.f, 0.f, \
1521 0.f, 0.f, 1.f, 0.f, \
1522 0.f, 0.f, 0.f, 1.f \
1523 }, /*localToWorld*/ \
1524 { \
1525 1.f, 0.f, 0.f, 0.f, \
1526 0.f, 1.f, 0.f, 0.f, \
1527 0.f, 0.f, 1.f, 0.f, \
1528 0.f, 0.f, 0.f, 1.f \
1529 }, /*localToWorldVelocity*/ \
1530 NV_FLOW_FALSE, /*velocityIsWorldSpace*/ \
1531 0, /*layer*/ \
1532 1.f, /*fallocationScale*/ \
1533 {0.f, 0.f, 0.f}, /*velocity*/ \
1534 0.f, /*divergence*/ \
1535 2.f, /*temperature*/ \
1536 0.0f, /*fuel*/ \
1537 0.f, /*burn*/ \
1538 10.f, /*smoke*/ \
1539 NV_FLOW_FALSE, /*colorIsSrgb*/ \
1540 1.f, /*velocityScale*/ \
1541 1.f, /*divergenceScale*/ \
1542 1.f, /*temperatureScale*/ \
1543 1.f, /*fuelScale*/ \
1544 1.f, /*burnScale*/ \
1545 1.f, /*smokeScale*/ \
1546 2.f, /*coupleRateVelocity*/ \
1547 0.f, /*coupleRateDivergence*/ \
1548 2.f, /*coupleRateTemperature*/ \
1549 0.f, /*coupleRateFuel*/ \
1550 0.f, /*coupleRateBurn*/ \
1551 2.f, /*coupleRateSmoke*/ \
1552 -0.25f, /*minDistance*/ \
1553 0.25f, /*maxDistance*/ \
1554 0, /*nanoVdbDistances*/ \
1555 0, /*nanoVdbDistanceCount*/ \
1556 0, /*nanoVdbDistanceVersion*/ \
1557 0, /*nanoVdbDistanceFirstElement*/ \
1558 0, /*nanoVdbVelocities*/ \
1559 0, /*nanoVdbVelocityCount*/ \
1560 0, /*nanoVdbVelocityVersion*/ \
1561 0, /*nanoVdbVelocityFirstElement*/ \
1562 0, /*nanoVdbDivergences*/ \
1563 0, /*nanoVdbDivergenceCount*/ \
1564 0, /*nanoVdbDivergenceVersion*/ \
1565 0, /*nanoVdbDivergenceFirstElement*/ \
1566 0, /*nanoVdbTemperatures*/ \
1567 0, /*nanoVdbTemperatureCount*/ \
1568 0, /*nanoVdbTemperatureVersion*/ \
1569 0, /*nanoVdbTemperatureFirstElement*/ \
1570 0, /*nanoVdbFuels*/ \
1571 0, /*nanoVdbFuelCount*/ \
1572 0, /*nanoVdbFuelVersion*/ \
1573 0, /*nanoVdbFuelFirstElement*/ \
1574 0, /*nanoVdbBurns*/ \
1575 0, /*nanoVdbBurnCount*/ \
1576 0, /*nanoVdbBurnVersion*/ \
1577 0, /*nanoVdbBurnFirstElement*/ \
1578 0, /*nanoVdbSmokes*/ \
1579 0, /*nanoVdbSmokeCount*/ \
1580 0, /*nanoVdbSmokeVersion*/ \
1581 0, /*nanoVdbSmokeFirstElement*/ \
1582 0, /*nanoVdbCoupleRateVelocities*/ \
1583 0, /*nanoVdbCoupleRateVelocityCount*/ \
1584 0, /*nanoVdbCoupleRateVelocityVersion*/ \
1585 0, /*nanoVdbCoupleRateVelocityFirstElement*/ \
1586 0, /*nanoVdbCoupleRateDivergences*/ \
1587 0, /*nanoVdbCoupleRateDivergenceCount*/ \
1588 0, /*nanoVdbCoupleRateDivergenceVersion*/ \
1589 0, /*nanoVdbCoupleRateDivergenceFirstElement*/ \
1590 0, /*nanoVdbCoupleRateTemperatures*/ \
1591 0, /*nanoVdbCoupleRateTemperatureCount*/ \
1592 0, /*nanoVdbCoupleRateTemperatureVersion*/ \
1593 0, /*nanoVdbCoupleRateTemperatureFirstElement*/ \
1594 0, /*nanoVdbCoupleRateFuels*/ \
1595 0, /*nanoVdbCoupleRateFuelCount*/ \
1596 0, /*nanoVdbCoupleRateFuelVersion*/ \
1597 0, /*nanoVdbCoupleRateFuelFirstElement*/ \
1598 0, /*nanoVdbCoupleRateBurns*/ \
1599 0, /*nanoVdbCoupleRateBurnCount*/ \
1600 0, /*nanoVdbCoupleRateBurnVersion*/ \
1601 0, /*nanoVdbCoupleRateBurnFirstElement*/ \
1602 0, /*nanoVdbCoupleRateSmokes*/ \
1603 0, /*nanoVdbCoupleRateSmokeCount*/ \
1604 0, /*nanoVdbCoupleRateSmokeVersion*/ \
1605 0, /*nanoVdbCoupleRateSmokeFirstElement*/ \
1606 0, /*nanoVdbRgba8s*/ \
1607 0, /*nanoVdbRgba8Count*/ \
1608 0, /*nanoVdbRgba8Version*/ \
1609 0, /*nanoVdbRgba8FirstElement*/ \
1610 NV_FLOW_FALSE, /*applyPostPressure*/ \
1611 NV_FLOW_TRUE, /*allocateActiveLeaves*/ \
1612}
1613static const NvFlowEmitterNanoVdbParams NvFlowEmitterNanoVdbParams_default = NvFlowEmitterNanoVdbParams_default_init;
1614
1615#define NV_FLOW_REFLECT_TYPE NvFlowEmitterNanoVdbParams
1616NV_FLOW_REFLECT_BEGIN()
1617NV_FLOW_REFLECT_VALUE(NvFlowUint64, luid, eNvFlowReflectHint_transientNoEdit, 0)
1618NV_FLOW_REFLECT_VALUE(NvFlowBool32, enabled, 0, 0)
1619NV_FLOW_REFLECT_VALUE(NvFlowFloat4x4, localToWorld, eNvFlowReflectHint_transientNoEdit, 0)
1620NV_FLOW_REFLECT_VALUE(NvFlowFloat4x4, localToWorldVelocity, eNvFlowReflectHint_transientNoEdit, 0)
1621NV_FLOW_REFLECT_VALUE(NvFlowBool32, velocityIsWorldSpace, 0, 0)
1622NV_FLOW_REFLECT_VALUE(int, layer, 0, 0)
1623NV_FLOW_REFLECT_VALUE(float, allocationScale, 0, 0)
1624NV_FLOW_REFLECT_VALUE(NvFlowFloat3, velocity, 0, 0)
1625NV_FLOW_REFLECT_VALUE(float, divergence, 0, 0)
1626NV_FLOW_REFLECT_VALUE(float, temperature, 0, 0)
1627NV_FLOW_REFLECT_VALUE(float, fuel, 0, 0)
1628NV_FLOW_REFLECT_VALUE(float, burn, 0, 0)
1629NV_FLOW_REFLECT_VALUE(float, smoke, 0, 0)
1630NV_FLOW_REFLECT_VALUE(NvFlowBool32, colorIsSrgb, 0, 0)
1631NV_FLOW_REFLECT_VALUE(float, velocityScale, 0, 0)
1632NV_FLOW_REFLECT_VALUE(float, divergenceScale, 0, 0)
1633NV_FLOW_REFLECT_VALUE(float, temperatureScale, 0, 0)
1634NV_FLOW_REFLECT_VALUE(float, fuelScale, 0, 0)
1635NV_FLOW_REFLECT_VALUE(float, burnScale, 0, 0)
1636NV_FLOW_REFLECT_VALUE(float, smokeScale, 0, 0)
1637NV_FLOW_REFLECT_VALUE(float, coupleRateVelocity, 0, 0)
1638NV_FLOW_REFLECT_VALUE(float, coupleRateDivergence, 0, 0)
1639NV_FLOW_REFLECT_VALUE(float, coupleRateTemperature, 0, 0)
1640NV_FLOW_REFLECT_VALUE(float, coupleRateFuel, 0, 0)
1641NV_FLOW_REFLECT_VALUE(float, coupleRateBurn, 0, 0)
1642NV_FLOW_REFLECT_VALUE(float, coupleRateSmoke, 0, 0)
1643NV_FLOW_REFLECT_VALUE(float, minDistance, 0, 0)
1644NV_FLOW_REFLECT_VALUE(float, maxDistance, 0, 0)
1645NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowUint, nanoVdbDistances, nanoVdbDistanceCount, nanoVdbDistanceVersion, eNvFlowReflectHint_asset, "asset(nanovdb)")
1646NV_FLOW_REFLECT_VALUE(NvFlowUint64, nanoVdbDistanceFirstElement, 0, 0)
1647NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowUint, nanoVdbVelocities, nanoVdbVelocityCount, nanoVdbVelocityVersion, eNvFlowReflectHint_asset, "asset(nanovdb)")
1648NV_FLOW_REFLECT_VALUE(NvFlowUint64, nanoVdbVelocityFirstElement, 0, 0)
1649NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowUint, nanoVdbDivergences, nanoVdbDivergenceCount, nanoVdbDivergenceVersion, eNvFlowReflectHint_asset, "asset(nanovdb)")
1650NV_FLOW_REFLECT_VALUE(NvFlowUint64, nanoVdbDivergenceFirstElement, 0, 0)
1651NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowUint, nanoVdbTemperatures, nanoVdbTemperatureCount, nanoVdbTemperatureVersion, eNvFlowReflectHint_asset, "asset(nanovdb)")
1652NV_FLOW_REFLECT_VALUE(NvFlowUint64, nanoVdbTemperatureFirstElement, 0, 0)
1653NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowUint, nanoVdbFuels, nanoVdbFuelCount, nanoVdbFuelVersion, eNvFlowReflectHint_asset, "asset(nanovdb)")
1654NV_FLOW_REFLECT_VALUE(NvFlowUint64, nanoVdbFuelFirstElement, 0, 0)
1655NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowUint, nanoVdbBurns, nanoVdbBurnCount, nanoVdbBurnVersion, eNvFlowReflectHint_asset, "asset(nanovdb)")
1656NV_FLOW_REFLECT_VALUE(NvFlowUint64, nanoVdbBurnFirstElement, 0, 0)
1657NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowUint, nanoVdbSmokes, nanoVdbSmokeCount, nanoVdbSmokeVersion, eNvFlowReflectHint_asset, "asset(nanovdb)")
1658NV_FLOW_REFLECT_VALUE(NvFlowUint64, nanoVdbSmokeFirstElement, 0, 0)
1659NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowUint, nanoVdbCoupleRateVelocities, nanoVdbCoupleRateVelocityCount, nanoVdbCoupleRateVelocityVersion, eNvFlowReflectHint_asset, "asset(nanovdb)")
1660NV_FLOW_REFLECT_VALUE(NvFlowUint64, nanoVdbCoupleRateVelocityFirstElement, 0, 0)
1661NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowUint, nanoVdbCoupleRateDivergences, nanoVdbCoupleRateDivergenceCount, nanoVdbCoupleRateDivergenceVersion, eNvFlowReflectHint_asset, "asset(nanovdb)")
1662NV_FLOW_REFLECT_VALUE(NvFlowUint64, nanoVdbCoupleRateDivergenceFirstElement, 0, 0)
1663NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowUint, nanoVdbCoupleRateTemperatures, nanoVdbCoupleRateTemperatureCount, nanoVdbCoupleRateTemperatureVersion, eNvFlowReflectHint_asset, "asset(nanovdb)")
1664NV_FLOW_REFLECT_VALUE(NvFlowUint64, nanoVdbCoupleRateTemperatureFirstElement, 0, 0)
1665NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowUint, nanoVdbCoupleRateFuels, nanoVdbCoupleRateFuelCount, nanoVdbCoupleRateFuelVersion, eNvFlowReflectHint_asset, "asset(nanovdb)")
1666NV_FLOW_REFLECT_VALUE(NvFlowUint64, nanoVdbCoupleRateFuelFirstElement, 0, 0)
1667NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowUint, nanoVdbCoupleRateBurns, nanoVdbCoupleRateBurnCount, nanoVdbCoupleRateBurnVersion, eNvFlowReflectHint_asset, "asset(nanovdb)")
1668NV_FLOW_REFLECT_VALUE(NvFlowUint64, nanoVdbCoupleRateBurnFirstElement, 0, 0)
1669NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowUint, nanoVdbCoupleRateSmokes, nanoVdbCoupleRateSmokeCount, nanoVdbCoupleRateSmokeVersion, eNvFlowReflectHint_asset, "asset(nanovdb)")
1670NV_FLOW_REFLECT_VALUE(NvFlowUint64, nanoVdbCoupleRateSmokeFirstElement, 0, 0)
1671NV_FLOW_REFLECT_ARRAY_VERSIONED(NvFlowUint, nanoVdbRgba8s, nanoVdbRgba8Count, nanoVdbRgba8Version, eNvFlowReflectHint_asset, "asset(nanovdb)")
1672NV_FLOW_REFLECT_VALUE(NvFlowUint64, nanoVdbRgba8FirstElement, 0, 0)
1673NV_FLOW_REFLECT_VALUE(NvFlowBool32, applyPostPressure, 0, 0)
1674NV_FLOW_REFLECT_VALUE(NvFlowBool32, allocateActiveLeaves, 0, 0)
1675NV_FLOW_REFLECT_END(&NvFlowEmitterNanoVdbParams_default)
1676#undef NV_FLOW_REFLECT_TYPE
1677
1679{
1680 NvFlowContextInterface* contextInterface;
1681 NvFlowContext* context;
1682 float deltaTime;
1683 const NvFlowEmitterNanoVdbParams*const* velocityParams;
1684 NvFlowUint64 velocityParamCount;
1685 const NvFlowEmitterNanoVdbParams*const* densityParams;
1686 NvFlowUint64 densityParamCount;
1687 NvFlowSparseTexture value;
1688 NvFlowSparseTexture valueTemp;
1689 NvFlowBool32 isPostPressure;
1691
1696
1697#define NV_FLOW_REFLECT_TYPE NvFlowEmitterNanoVdbPinsIn
1698NV_FLOW_REFLECT_BEGIN()
1699NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
1700NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
1701NV_FLOW_REFLECT_VALUE(float, deltaTime, eNvFlowReflectHint_pinEnabledGlobal, 0)
1702NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterNanoVdbParams, velocityParams, velocityParamCount, eNvFlowReflectHint_pinEnabled, 0)
1703NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterNanoVdbParams, densityParams, densityParamCount, eNvFlowReflectHint_pinEnabled, 0)
1704NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, value, eNvFlowReflectHint_pinEnabledMutable, 0)
1705NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, valueTemp, eNvFlowReflectHint_pinEnabledMutable, 0)
1706NV_FLOW_REFLECT_VALUE(NvFlowBool32, isPostPressure, eNvFlowReflectHint_pinEnabled, 0)
1707NV_FLOW_REFLECT_END(0)
1708#undef NV_FLOW_REFLECT_TYPE
1709
1710#define NV_FLOW_REFLECT_TYPE NvFlowEmitterNanoVdbPinsOut
1711NV_FLOW_REFLECT_BEGIN()
1712NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, value, eNvFlowReflectHint_pinEnabled, 0)
1713NV_FLOW_REFLECT_END(0)
1714#undef NV_FLOW_REFLECT_TYPE
1715
1716NV_FLOW_OP_TYPED(NvFlowEmitterNanoVdb)
1717
1718
1719
1721{
1722 NvFlowContextInterface* contextInterface;
1723 NvFlowContext* context;
1724 NvFlowSparseParams sparseParams;
1725 float deltaTime;
1726 const NvFlowEmitterNanoVdbParams*const* params;
1727 NvFlowUint64 paramCount;
1729
1731{
1732 NvFlowInt4* locations;
1733 NvFlowUint64 locationCount;
1735
1736#define NV_FLOW_REFLECT_TYPE NvFlowEmitterNanoVdbAllocatePinsIn
1737NV_FLOW_REFLECT_BEGIN()
1738NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
1739NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
1740NV_FLOW_REFLECT_VALUE(NvFlowSparseParams, sparseParams, eNvFlowReflectHint_pinEnabled, 0)
1741NV_FLOW_REFLECT_VALUE(float, deltaTime, eNvFlowReflectHint_pinEnabledGlobal, 0)
1742NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEmitterNanoVdbParams, params, paramCount, eNvFlowReflectHint_pinEnabled, 0)
1743NV_FLOW_REFLECT_END(0)
1744#undef NV_FLOW_REFLECT_TYPE
1745
1746#define NV_FLOW_REFLECT_TYPE NvFlowEmitterNanoVdbAllocatePinsOut
1747NV_FLOW_REFLECT_BEGIN()
1748NV_FLOW_REFLECT_ARRAY(NvFlowInt4, locations, locationCount, eNvFlowReflectHint_pinEnabled, 0)
1749NV_FLOW_REFLECT_END(0)
1750#undef NV_FLOW_REFLECT_TYPE
1751
1752NV_FLOW_OP_TYPED(NvFlowEmitterNanoVdbAllocate)
1753
1754
1755
1757{
1758 void* data;
1760
1761NV_FLOW_REFLECT_STRUCT_OPAQUE_IMPL(NvFlowEllipsoidRasterFeedback)
1762
1764{
1765 float scale;
1766 float density;
1767 NvFlowBool32 sdfMode;
1768 const NvFlowFloat4* positions;
1769 NvFlowUint64 positionCount;
1770 const NvFlowFloat3* positionFloat3s;
1771 NvFlowUint64 positionFloat3Count;
1772 const NvFlowFloat4* anisotropyE1s;
1773 NvFlowUint64 anisotropyE1Count;
1774 const NvFlowFloat4* anisotropyE2s;
1775 NvFlowUint64 anisotropyE2Count;
1776 const NvFlowFloat4* anisotropyE3s;
1777 NvFlowUint64 anisotropyE3Count;
1778 NvFlowUint smoothIterations;
1779 float allocationScale;
1780 float allocationOffset;
1782
1783#define NvFlowEllipsoidRasterParams_default_init { \
1784 1.f, /*scale*/ \
1785 1.f, /*density*/ \
1786 NV_FLOW_TRUE, /*sdfMode*/ \
1787 0, /*positions*/ \
1788 0u, /*positionsCount*/ \
1789 0, /*positionFloat3s*/ \
1790 0u, /*positionsFloat3Count*/ \
1791 0, /*anisotropyE1s*/ \
1792 0u, /*anisotropyE1Count*/ \
1793 0, /*anisotropyE2s*/ \
1794 0u, /*anisotropyE2Count*/ \
1795 0, /*anisotropyE3s*/ \
1796 0u, /*anisotropyE3Count*/ \
1797 3u, /*smoothIterations*/ \
1798 1.f, /*allocationScale*/ \
1799 0.f /*allocationOffset*/ \
1800}
1801static const NvFlowEllipsoidRasterParams NvFlowEllipsoidRasterParams_default = NvFlowEllipsoidRasterParams_default_init;
1802
1803#define NV_FLOW_REFLECT_TYPE NvFlowEllipsoidRasterParams
1804NV_FLOW_REFLECT_BEGIN()
1805NV_FLOW_REFLECT_VALUE(float, scale, 0, 0)
1806NV_FLOW_REFLECT_VALUE(float, density, 0, 0)
1807NV_FLOW_REFLECT_VALUE(NvFlowBool32, sdfMode, 0, 0)
1808NV_FLOW_REFLECT_ARRAY(NvFlowFloat4, positions, positionCount, eNvFlowReflectHint_asset, "asset(array)")
1809NV_FLOW_REFLECT_ARRAY(NvFlowFloat3, positionFloat3s, positionFloat3Count, eNvFlowReflectHint_asset, "asset(array)")
1810NV_FLOW_REFLECT_ARRAY(NvFlowFloat4, anisotropyE1s, anisotropyE1Count, eNvFlowReflectHint_asset, "asset(array)")
1811NV_FLOW_REFLECT_ARRAY(NvFlowFloat4, anisotropyE2s, anisotropyE2Count, eNvFlowReflectHint_asset, "asset(array)")
1812NV_FLOW_REFLECT_ARRAY(NvFlowFloat4, anisotropyE3s, anisotropyE3Count, eNvFlowReflectHint_asset, "asset(array)")
1813NV_FLOW_REFLECT_VALUE(NvFlowUint, smoothIterations, 0, 0)
1814NV_FLOW_REFLECT_VALUE(float, allocationScale, 0, 0)
1815NV_FLOW_REFLECT_VALUE(float, allocationOffset, 0, 0)
1816NV_FLOW_REFLECT_END(&NvFlowEllipsoidRasterParams_default)
1817#undef NV_FLOW_REFLECT_TYPE
1818
1820{
1821 NvFlowContextInterface* contextInterface;
1822 NvFlowContext* context;
1824 const NvFlowEllipsoidRasterParams** params;
1825 NvFlowUint64 paramCount;
1826 NvFlowSparseTexture layout;
1828
1833
1834#define NV_FLOW_REFLECT_TYPE NvFlowEllipsoidRasterPinsIn
1835NV_FLOW_REFLECT_BEGIN()
1836NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
1837NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
1838NV_FLOW_REFLECT_VALUE(NvFlowEllipsoidRasterFeedback, feedback, eNvFlowReflectHint_pinEnabled, 0)
1839NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEllipsoidRasterParams, params, paramCount, eNvFlowReflectHint_pinEnabled, 0)
1840NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, layout, eNvFlowReflectHint_pinEnabled, 0)
1841NV_FLOW_REFLECT_END(0)
1842#undef NV_FLOW_REFLECT_TYPE
1843
1844#define NV_FLOW_REFLECT_TYPE NvFlowEllipsoidRasterPinsOut
1845NV_FLOW_REFLECT_BEGIN()
1846NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, value, eNvFlowReflectHint_pinEnabled, 0)
1847NV_FLOW_REFLECT_END(0)
1848#undef NV_FLOW_REFLECT_TYPE
1849
1850NV_FLOW_OP_TYPED(NvFlowEllipsoidRaster)
1851
1853{
1854 NvFlowContextInterface* contextInterface;
1855 NvFlowContext* context;
1856 NvFlowSparseParams sparseParams;
1857 const NvFlowEllipsoidRasterParams** params;
1858 NvFlowUint64 paramCount;
1860
1862{
1864 NvFlowInt4* locations;
1865 NvFlowUint64 locationCount;
1867
1868#define NV_FLOW_REFLECT_TYPE NvFlowEllipsoidRasterAllocatePinsIn
1869NV_FLOW_REFLECT_BEGIN()
1870NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
1871NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
1872NV_FLOW_REFLECT_VALUE(NvFlowSparseParams, sparseParams, eNvFlowReflectHint_pinEnabled, 0)
1873NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowEllipsoidRasterParams, params, paramCount, eNvFlowReflectHint_pinEnabled, 0)
1874NV_FLOW_REFLECT_END(0)
1875#undef NV_FLOW_REFLECT_TYPE
1876
1877#define NV_FLOW_REFLECT_TYPE NvFlowEllipsoidRasterAllocatePinsOut
1878NV_FLOW_REFLECT_BEGIN()
1879NV_FLOW_REFLECT_VALUE(NvFlowEllipsoidRasterFeedback, feedback, eNvFlowReflectHint_pinEnabled, 0)
1880NV_FLOW_REFLECT_ARRAY(NvFlowInt4, locations, locationCount, eNvFlowReflectHint_pinEnabled, 0)
1881NV_FLOW_REFLECT_END(0)
1882#undef NV_FLOW_REFLECT_TYPE
1883
1884NV_FLOW_OP_TYPED(NvFlowEllipsoidRasterAllocate)
1885
1886
1887
1889{
1890 NvFlowBool32 enabled;
1891 NvFlowFloat3 lightDirection;
1892 NvFlowFloat3 lightPosition;
1893 NvFlowBool32 isPointLight;
1894 float attenuation;
1895 float stepSizeScale;
1896 float stepOffsetScale;
1897 float minIntensity;
1898 NvFlowUint numSteps;
1899 NvFlowBool32 coarsePropagate;
1901
1902#define NvFlowShadowParams_default_init { \
1903 NV_FLOW_TRUE, /*enabled*/ \
1904 {1.f, 1.f, 1.f}, /*lightDirection*/ \
1905 {0.f, 0.f, 0.f}, /*lightPosition*/ \
1906 NV_FLOW_FALSE, /*isPointLight*/ \
1907 0.045f, /*attenuation*/ \
1908 0.75f, /*stepSizeScale*/ \
1909 1.f, /*stepOffsetScale*/ \
1910 0.125f, /*minIntensity*/ \
1911 16u, /*numSteps*/ \
1912 NV_FLOW_TRUE /*coarsePropagate*/ \
1913}
1914static const NvFlowShadowParams NvFlowShadowParams_default = NvFlowShadowParams_default_init;
1915
1916#define NV_FLOW_REFLECT_TYPE NvFlowShadowParams
1917NV_FLOW_REFLECT_BEGIN()
1918NV_FLOW_REFLECT_VALUE(NvFlowBool32, enabled, 0, 0)
1919NV_FLOW_REFLECT_VALUE(NvFlowFloat3, lightDirection, 0, 0)
1920NV_FLOW_REFLECT_VALUE(NvFlowFloat3, lightPosition, 0, 0)
1921NV_FLOW_REFLECT_VALUE(NvFlowBool32, isPointLight, 0, 0)
1922NV_FLOW_REFLECT_VALUE(float, attenuation, 0, 0)
1923NV_FLOW_REFLECT_VALUE(float, stepSizeScale, 0, 0)
1924NV_FLOW_REFLECT_VALUE(float, stepOffsetScale, 0, 0)
1925NV_FLOW_REFLECT_VALUE(float, minIntensity, 0, 0)
1926NV_FLOW_REFLECT_VALUE(NvFlowUint, numSteps, 0, 0)
1927NV_FLOW_REFLECT_VALUE(NvFlowBool32, coarsePropagate, 0, 0)
1928NV_FLOW_REFLECT_END(&NvFlowShadowParams_default)
1929#undef NV_FLOW_REFLECT_TYPE
1930
1932{
1933 NvFlowContextInterface* contextInterface;
1934 NvFlowContext* context;
1935 const NvFlowShadowParams** params;
1936 NvFlowUint64 paramCount;
1937 NvFlowTextureTransient* colormap;
1938 NvFlowSparseTexture density;
1939 NvFlowSparseTexture coarseDensity;
1941
1943{
1944 NvFlowSparseTexture densityShadow;
1946
1947#define NV_FLOW_REFLECT_TYPE NvFlowShadowPinsIn
1948NV_FLOW_REFLECT_BEGIN()
1949NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
1950NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
1951NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowShadowParams, params, paramCount, eNvFlowReflectHint_pinEnabled, 0)
1952NV_FLOW_REFLECT_POINTER(NvFlowTextureTransient, colormap, eNvFlowReflectHint_pinEnabled, 0)
1953NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, density, eNvFlowReflectHint_pinEnabled, 0)
1954NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, coarseDensity, eNvFlowReflectHint_pinEnabled, 0)
1955NV_FLOW_REFLECT_END(0)
1956#undef NV_FLOW_REFLECT_TYPE
1957
1958#define NV_FLOW_REFLECT_TYPE NvFlowShadowPinsOut
1959NV_FLOW_REFLECT_BEGIN()
1960NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, densityShadow, eNvFlowReflectHint_pinEnabled, 0)
1961NV_FLOW_REFLECT_END(0)
1962#undef NV_FLOW_REFLECT_TYPE
1963
1964NV_FLOW_OP_TYPED(NvFlowShadow)
1965
1966
1967
1969{
1970 NvFlowBool32 enableSpeedAsTemperature;
1971 NvFlowBool32 enableVelocityAsDensity;
1972 NvFlowFloat3 velocityScale;
1974
1975#define NvFlowDebugVolumeParams_default_init { \
1976 NV_FLOW_FALSE, /*enableSpeedAsTemperature*/ \
1977 NV_FLOW_FALSE, /*enableVelocityAsDensity*/ \
1978 {0.01f, 0.01f, 0.01f} /*velocityScale*/ \
1979}
1980static const NvFlowDebugVolumeParams NvFlowDebugVolumeParams_default = NvFlowDebugVolumeParams_default_init;
1981
1982#define NV_FLOW_REFLECT_TYPE NvFlowDebugVolumeParams
1983NV_FLOW_REFLECT_BEGIN()
1984NV_FLOW_REFLECT_VALUE(NvFlowBool32, enableSpeedAsTemperature, 0, 0)
1985NV_FLOW_REFLECT_VALUE(NvFlowBool32, enableVelocityAsDensity, 0, 0)
1986NV_FLOW_REFLECT_VALUE(NvFlowFloat3, velocityScale, 0, 0)
1987NV_FLOW_REFLECT_END(&NvFlowDebugVolumeParams_default)
1988#undef NV_FLOW_REFLECT_TYPE
1989
1991{
1992 NvFlowContextInterface* contextInterface;
1993 NvFlowContext* context;
1994 const NvFlowDebugVolumeParams** params;
1995 NvFlowUint64 paramCount;
1996 NvFlowSparseTexture velocity;
1997 NvFlowSparseTexture densityShadow;
1999
2001{
2002 NvFlowSparseTexture densityShadow;
2004
2005#define NV_FLOW_REFLECT_TYPE NvFlowDebugVolumePinsIn
2006NV_FLOW_REFLECT_BEGIN()
2007NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
2008NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
2009NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowDebugVolumeParams, params, paramCount, eNvFlowReflectHint_pinEnabled, 0)
2010NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, velocity, eNvFlowReflectHint_pinEnabled, 0)
2011NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, densityShadow, eNvFlowReflectHint_pinEnabled, 0)
2012NV_FLOW_REFLECT_END(0)
2013#undef NV_FLOW_REFLECT_TYPE
2014
2015#define NV_FLOW_REFLECT_TYPE NvFlowDebugVolumePinsOut
2016NV_FLOW_REFLECT_BEGIN()
2017NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, densityShadow, eNvFlowReflectHint_pinEnabled, 0)
2018NV_FLOW_REFLECT_END(0)
2019#undef NV_FLOW_REFLECT_TYPE
2020
2021NV_FLOW_OP_TYPED(NvFlowDebugVolume)
2022
2023
2024
2026{
2027 NvFlowBool32 enableCloudMode;
2028 NvFlowFloat3 sunDirection;
2029 NvFlowFloat3 ambientColor;
2030 float ambientMultiplier;
2031 float densityMultiplier;
2032 NvFlowFloat3 volumeBaseColor;
2033 float volumeColorMultiplier;
2034 float shadowStepMultiplier;
2035 int numShadowSteps;
2036 NvFlowFloat3 attenuationMultiplier;
2038
2039#define NvFlowRayMarchCloudParams_default_init { \
2040 NV_FLOW_FALSE, /*enableCloudMode*/ \
2041 {1.f, 1.f, 1.f}, /*sunDirection*/ \
2042 {0.4f, 0.55f, 0.9f}, /*ambientColor*/ \
2043 1.0f, /*ambientMultiplier*/ \
2044 0.5f, /*densityMultiplier*/ \
2045 {1.1f, 1.f, 0.95f}, /*volumeBaseColor*/ \
2046 1.0f, /*volumeColorMultiplier*/ \
2047 1.0f, /*shadowStepMultiplier*/ \
2048 10u, /*numShadowSteps*/ \
2049 {1.f, 1.f, 1.f} /*attenuationMultiplier*/ \
2050}
2051static const NvFlowRayMarchCloudParams NvFlowRayMarchCloudParams_default = NvFlowRayMarchCloudParams_default_init;
2052
2053#define NV_FLOW_REFLECT_TYPE NvFlowRayMarchCloudParams
2054NV_FLOW_REFLECT_BEGIN()
2055NV_FLOW_REFLECT_VALUE(NvFlowBool32, enableCloudMode, 0, 0)
2056NV_FLOW_REFLECT_VALUE(NvFlowFloat3, sunDirection, 0, 0)
2057NV_FLOW_REFLECT_VALUE(NvFlowFloat3, ambientColor, 0, 0)
2058NV_FLOW_REFLECT_VALUE(float, ambientMultiplier, 0, 0)
2059NV_FLOW_REFLECT_VALUE(float, densityMultiplier, 0, 0)
2060NV_FLOW_REFLECT_VALUE(NvFlowFloat3, volumeBaseColor, 0, 0)
2061NV_FLOW_REFLECT_VALUE(float, volumeColorMultiplier, 0, 0)
2062NV_FLOW_REFLECT_VALUE(float, shadowStepMultiplier, 0, 0)
2063NV_FLOW_REFLECT_VALUE(int, numShadowSteps, 0, 0)
2064NV_FLOW_REFLECT_VALUE(NvFlowFloat3, attenuationMultiplier, 0, 0)
2065NV_FLOW_REFLECT_END(&NvFlowRayMarchCloudParams_default)
2066#undef NV_FLOW_REFLECT_TYPE
2067
2069{
2070 NvFlowBool32 enableBlockWireframe;
2071 NvFlowBool32 enableRawMode;
2072 float colorScale;
2073 float attenuation;
2074 float stepSizeScale;
2075 float shadowFactor;
2078
2079#define NvFlowRayMarchParams_default_init { \
2080 NV_FLOW_FALSE, /*enableBlockWireframe*/ \
2081 NV_FLOW_FALSE, /*enableRawMode*/ \
2082 1.f, /*colorScale*/ \
2083 0.05f, /*attenuation*/ \
2084 0.75f, /*stepSizeScale*/ \
2085 1.f, /*shadowFactor*/ \
2086 NvFlowRayMarchCloudParams_default_init /*cloud*/ \
2087}
2088static const NvFlowRayMarchParams NvFlowRayMarchParams_default = NvFlowRayMarchParams_default_init;
2089
2090#define NV_FLOW_REFLECT_TYPE NvFlowRayMarchParams
2091NV_FLOW_REFLECT_BEGIN()
2092NV_FLOW_REFLECT_VALUE(NvFlowBool32, enableBlockWireframe, 0, 0)
2093NV_FLOW_REFLECT_VALUE(NvFlowBool32, enableRawMode, 0, 0)
2094NV_FLOW_REFLECT_VALUE(float, colorScale, 0, 0)
2095NV_FLOW_REFLECT_VALUE(float, attenuation, 0, 0)
2096NV_FLOW_REFLECT_VALUE(float, stepSizeScale, 0, 0)
2097NV_FLOW_REFLECT_VALUE(float, shadowFactor, 0, 0)
2098NV_FLOW_REFLECT_VALUE(NvFlowRayMarchCloudParams, cloud, 0, 0)
2099NV_FLOW_REFLECT_END(&NvFlowRayMarchParams_default)
2100#undef NV_FLOW_REFLECT_TYPE
2101
2103{
2104 NvFlowBool32 enableBlockWireframe;
2105 float stepSizeScale;
2106 float densityThreshold;
2107 NvFlowBool32 refractionMode;
2108 NvFlowBool32 visualizeNormals;
2109 float fluidIoR;
2110 NvFlowFloat3 fluidColor;
2111 float fluidAbsorptionCoefficient;
2112 NvFlowFloat3 fluidSpecularReflectance;
2113 NvFlowFloat3 fluidDiffuseReflectance;
2114 NvFlowFloat3 fluidRadiance;
2116
2117#define NvFlowRayMarchIsosurfaceParams_default_init { \
2118 NV_FLOW_FALSE, /*enableBlockWireframe*/ \
2119 0.75f, /*stepSizeScale*/ \
2120 0.5f, /*densityThreshold*/ \
2121 NV_FLOW_FALSE, /*refractionMode*/ \
2122 NV_FLOW_FALSE, /*visualizeNormals*/ \
2123 1.333f, /*fluidIoR*/ \
2124 {0.9f, 0.9f, 1.f}, /*fluidColor*/ \
2125 0.0035f, /*fluidAbsorptionCoefficient*/ \
2126 {0.1f, 0.1f, 0.1f}, /*fluidSpecularReflectance*/ \
2127 {0.1f, 0.1f, 0.1f}, /*fluidDiffuseReflectance*/ \
2128 {0.f, 0.f, 0.f} /*fluidRadiance*/ \
2129}
2130static const NvFlowRayMarchIsosurfaceParams NvFlowRayMarchIsosurfaceParams_default = NvFlowRayMarchIsosurfaceParams_default_init;
2131
2132#define NV_FLOW_REFLECT_TYPE NvFlowRayMarchIsosurfaceParams
2133NV_FLOW_REFLECT_BEGIN()
2134NV_FLOW_REFLECT_VALUE(NvFlowBool32, enableBlockWireframe, 0, 0)
2135NV_FLOW_REFLECT_VALUE(float, stepSizeScale, 0, 0)
2136NV_FLOW_REFLECT_VALUE(float, densityThreshold, 0, 0)
2137NV_FLOW_REFLECT_VALUE(NvFlowBool32, refractionMode, 0, 0)
2138NV_FLOW_REFLECT_VALUE(NvFlowBool32, visualizeNormals, 0, 0)
2139NV_FLOW_REFLECT_VALUE(float, fluidIoR, 0, 0)
2140NV_FLOW_REFLECT_VALUE(NvFlowFloat3, fluidColor, 0, 0)
2141NV_FLOW_REFLECT_VALUE(float, fluidAbsorptionCoefficient, 0, 0)
2142NV_FLOW_REFLECT_VALUE(NvFlowFloat3, fluidSpecularReflectance, 0, 0)
2143NV_FLOW_REFLECT_VALUE(NvFlowFloat3, fluidDiffuseReflectance, 0, 0)
2144NV_FLOW_REFLECT_VALUE(NvFlowFloat3, fluidRadiance, 0, 0)
2145NV_FLOW_REFLECT_END(&NvFlowRayMarchIsosurfaceParams_default)
2146#undef NV_FLOW_REFLECT_TYPE
2147
2148#define NvFlowRayMarchColormapParams_default_pointCount_init 6u
2149static const NvFlowUint64 NvFlowRayMarchColormapParams_default_pointCount = NvFlowRayMarchColormapParams_default_pointCount_init;
2150#define NvFlowRayMarchColormapParams_default_xPoints_init { \
2151 0.000000f, \
2152 0.050000f, \
2153 0.15000f, \
2154 0.600000f, \
2155 0.850000f, \
2156 1.000000f \
2157}
2158static const float NvFlowRayMarchColormapParams_default_xPoints[NvFlowRayMarchColormapParams_default_pointCount_init] = NvFlowRayMarchColormapParams_default_xPoints_init;
2159
2160#define NvFlowRayMarchColormapParams_default_colorScalePoints_init { \
2161 1.000000f, \
2162 1.000000f, \
2163 1.000000f, \
2164 1.000000f, \
2165 1.000000f, \
2166 1.000000f \
2167}
2168static const float NvFlowRayMarchColormapParams_default_colorScalePoints[NvFlowRayMarchColormapParams_default_pointCount_init] = NvFlowRayMarchColormapParams_default_colorScalePoints_init;
2169
2170#define NvFlowRayMarchColormapParams_default_rgbaPoints_smoke_init { \
2171 { 0.9f, 0.9f, 0.9f, 0.004902f }, \
2172 { 0.9f, 0.9f, 0.9f, 0.904902f }, \
2173 { 0.9f, 0.9f, 0.9f, 0.904902f }, \
2174 { 0.9f, 0.9f, 0.9f, 0.904902f }, \
2175 { 0.9f, 0.9f, 0.9f, 0.904902f }, \
2176 { 0.9f, 0.9f, 0.9f, 0.904902f }, \
2177}
2178static const NvFlowFloat4 NvFlowRayMarchColormapParams_default_rgbaPoints_smoke[NvFlowRayMarchColormapParams_default_pointCount_init] = NvFlowRayMarchColormapParams_default_rgbaPoints_smoke_init;
2179
2180#define NvFlowRayMarchColormapParams_default_rgbaPoints_fire_init { \
2181 { 0.015400f, 0.017700f, 0.015400f, 0.004902f }, \
2182 { 0.035750f, 0.035750f, 0.035750f, 0.504902f }, \
2183 { 0.035750f, 0.035750f, 0.035750f, 0.504902f }, \
2184 { 1.f, 0.1594125f, 0.0135315f, 0.800000f }, \
2185 { 13.534992f, 2.986956f, 0.125991f, 0.800000f }, \
2186 { 78.08f, 39.04f, 6.1f, 0.700000f }, \
2187}
2188static const NvFlowFloat4 NvFlowRayMarchColormapParams_default_rgbaPoints_fire[NvFlowRayMarchColormapParams_default_pointCount_init] = NvFlowRayMarchColormapParams_default_rgbaPoints_fire_init;
2189
2191{
2192 NvFlowUint resolution;
2193 const float* xPoints;
2194 NvFlowUint64 xPointCount;
2195 const NvFlowFloat4* rgbaPoints;
2196 NvFlowUint64 rgbaPointCount;
2197 const float* colorScalePoints;
2198 NvFlowUint64 colorScalePointCount;
2199 float colorScale;
2201
2202#define NvFlowRayMarchColormapParams_default_init { \
2203 32u, /*resolution*/ \
2204 NvFlowRayMarchColormapParams_default_xPoints, /*xPoints*/ \
2205 NvFlowRayMarchColormapParams_default_pointCount_init, /*xPointCount*/ \
2206 NvFlowRayMarchColormapParams_default_rgbaPoints_smoke, /*rgbaPoints*/ \
2207 NvFlowRayMarchColormapParams_default_pointCount_init, /*rgbaPointCount*/ \
2208 NvFlowRayMarchColormapParams_default_colorScalePoints, /*colorScalePoints*/ \
2209 NvFlowRayMarchColormapParams_default_pointCount_init, /*colorScaleCount*/ \
2210 2.5f /*colorScale*/ \
2211}
2212static const NvFlowRayMarchColormapParams NvFlowRayMarchColormapParams_default = NvFlowRayMarchColormapParams_default_init;
2213
2214#define NV_FLOW_REFLECT_TYPE NvFlowRayMarchColormapParams
2215NV_FLOW_REFLECT_BEGIN()
2216NV_FLOW_REFLECT_VALUE(NvFlowUint, resolution, 0, 0)
2217NV_FLOW_REFLECT_ARRAY(float, xPoints, xPointCount, 0, 0)
2218NV_FLOW_REFLECT_ARRAY(NvFlowFloat4, rgbaPoints, rgbaPointCount, 0, 0)
2219NV_FLOW_REFLECT_ARRAY(float, colorScalePoints, colorScalePointCount, 0, 0)
2220NV_FLOW_REFLECT_VALUE(float, colorScale, 0, 0)
2221NV_FLOW_REFLECT_END(&NvFlowRayMarchColormapParams_default)
2222#undef NV_FLOW_REFLECT_TYPE
2223
2225{
2226 const NvFlowFloat4x4* view;
2227 const NvFlowFloat4x4* projection;
2228 const NvFlowFloat4x4* projectionJittered;
2229 NvFlowUint textureWidth;
2230 NvFlowUint textureHeight;
2231 NvFlowUint sceneDepthWidth;
2232 NvFlowUint sceneDepthHeight;
2233 NvFlowTextureTransient* sceneDepthIn;
2234 NvFlowFormat sceneColorFormat;
2235 NvFlowTextureTransient* sceneColorIn;
2236 NvFlowTextureTransient** pSceneColorOut;
2238
2239NV_FLOW_REFLECT_STRUCT_OPAQUE_IMPL(NvFlowRayMarchTargetTexture)
2240
2242{
2243 NvFlowContextInterface* contextInterface;
2244 NvFlowContext* context;
2245 const NvFlowRayMarchParams** params;
2246 NvFlowUint64 paramCount;
2247 NvFlowSparseTexture velocity;
2248 NvFlowSparseTexture density;
2249 NvFlowTextureTransient* colormap;
2250 const NvFlowRayMarchTargetTexture* target;
2251 float compositeColorScale;
2253
2255{
2256 NvFlowUint unused;
2258
2259#define NV_FLOW_REFLECT_TYPE NvFlowRayMarchPinsIn
2260NV_FLOW_REFLECT_BEGIN()
2261NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
2262NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
2263NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowRayMarchParams, params, paramCount, eNvFlowReflectHint_pinEnabled, 0)
2264NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, velocity, eNvFlowReflectHint_pinEnabled, 0)
2265NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, density, eNvFlowReflectHint_pinEnabled, 0)
2266NV_FLOW_REFLECT_POINTER(NvFlowTextureTransient, colormap, eNvFlowReflectHint_pinEnabled, 0)
2267NV_FLOW_REFLECT_POINTER(NvFlowRayMarchTargetTexture, target, eNvFlowReflectHint_pinEnabled, 0)
2268NV_FLOW_REFLECT_VALUE(float, compositeColorScale, eNvFlowReflectHint_pinEnabled, 0)
2269NV_FLOW_REFLECT_END(0)
2270#undef NV_FLOW_REFLECT_TYPE
2271
2272#define NV_FLOW_REFLECT_TYPE NvFlowRayMarchPinsOut
2273NV_FLOW_REFLECT_BEGIN()
2274NV_FLOW_REFLECT_VALUE(NvFlowUint, unused, 0, 0)
2275NV_FLOW_REFLECT_END(0)
2276#undef NV_FLOW_REFLECT_TYPE
2277
2278NV_FLOW_OP_TYPED(NvFlowRayMarch)
2279
2281{
2282 NvFlowContextInterface* contextInterface;
2283 NvFlowContext* context;
2284 const NvFlowRayMarchColormapParams** params;
2285 NvFlowUint64 paramCount;
2287
2289{
2290 NvFlowTextureTransient* colormap;
2292
2293#define NV_FLOW_REFLECT_TYPE NvFlowRayMarchUpdateColormapPinsIn
2294NV_FLOW_REFLECT_BEGIN()
2295NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
2296NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
2297NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowRayMarchColormapParams, params, paramCount, eNvFlowReflectHint_pinEnabled, 0)
2298NV_FLOW_REFLECT_END(0)
2299#undef NV_FLOW_REFLECT_TYPE
2300
2301#define NV_FLOW_REFLECT_TYPE NvFlowRayMarchUpdateColormapPinsOut
2302NV_FLOW_REFLECT_BEGIN()
2303NV_FLOW_REFLECT_POINTER(NvFlowTextureTransient, colormap, eNvFlowReflectHint_pinEnabled, 0)
2304NV_FLOW_REFLECT_END(0)
2305#undef NV_FLOW_REFLECT_TYPE
2306
2307NV_FLOW_OP_TYPED(NvFlowRayMarchUpdateColormap)
2308
2310{
2311 NvFlowContextInterface* contextInterface;
2312 NvFlowContext* context;
2313 const NvFlowRayMarchIsosurfaceParams** params;
2314 NvFlowUint64 paramCount;
2315 NvFlowSparseTexture density;
2316 const NvFlowRayMarchTargetTexture* target;
2317 float compositeColorScale;
2319
2321{
2322 NvFlowUint unused;
2324
2325#define NV_FLOW_REFLECT_TYPE NvFlowRayMarchIsosurfacePinsIn
2326NV_FLOW_REFLECT_BEGIN()
2327NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
2328NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
2329NV_FLOW_REFLECT_POINTER_ARRAY(NvFlowRayMarchIsosurfaceParams, params, paramCount, eNvFlowReflectHint_pinEnabled, 0)
2330NV_FLOW_REFLECT_VALUE(NvFlowSparseTexture, density, eNvFlowReflectHint_pinEnabled, 0)
2331NV_FLOW_REFLECT_POINTER(NvFlowRayMarchTargetTexture, target, eNvFlowReflectHint_pinEnabled, 0)
2332NV_FLOW_REFLECT_VALUE(float, compositeColorScale, eNvFlowReflectHint_pinEnabled, 0)
2333NV_FLOW_REFLECT_END(0)
2334#undef NV_FLOW_REFLECT_TYPE
2335
2336#define NV_FLOW_REFLECT_TYPE NvFlowRayMarchIsosurfacePinsOut
2337NV_FLOW_REFLECT_BEGIN()
2338NV_FLOW_REFLECT_VALUE(NvFlowUint, unused, 0, 0)
2339NV_FLOW_REFLECT_END(0)
2340#undef NV_FLOW_REFLECT_TYPE
2341
2342NV_FLOW_OP_TYPED(NvFlowRayMarchIsosurface)
2343
2345{
2346 NvFlowContextInterface* contextInterface;
2347 NvFlowContext* context;
2348 NvFlowTextureTransient* texture;
2349 NvFlowUint width;
2350 NvFlowUint height;
2351 NvFlowFormat format;
2353
2355{
2356 NvFlowTextureTransient* texture;
2358
2359#define NV_FLOW_REFLECT_TYPE NvFlowRayMarchCopyTexturePinsIn
2360NV_FLOW_REFLECT_BEGIN()
2361NV_FLOW_REFLECT_POINTER(NvFlowContextInterface, contextInterface, eNvFlowReflectHint_pinEnabledGlobal, 0)
2362NV_FLOW_REFLECT_POINTER(NvFlowContext, context, eNvFlowReflectHint_pinEnabledGlobal, 0)
2363NV_FLOW_REFLECT_POINTER(NvFlowTextureTransient, texture, eNvFlowReflectHint_pinEnabled, 0)
2364NV_FLOW_REFLECT_VALUE(NvFlowUint, width, eNvFlowReflectHint_pinEnabled, 0)
2365NV_FLOW_REFLECT_VALUE(NvFlowUint, height, eNvFlowReflectHint_pinEnabled, 0)
2366NV_FLOW_REFLECT_ENUM(format, eNvFlowReflectHint_pinEnabled, 0)
2367NV_FLOW_REFLECT_END(0)
2368#undef NV_FLOW_REFLECT_TYPE
2369
2370#define NV_FLOW_REFLECT_TYPE NvFlowRayMarchCopyTexturePinsOut
2371NV_FLOW_REFLECT_BEGIN()
2372NV_FLOW_REFLECT_POINTER(NvFlowTextureTransient, texture, eNvFlowReflectHint_pinEnabled, 0)
2373NV_FLOW_REFLECT_END(0)
2374#undef NV_FLOW_REFLECT_TYPE
2375
2376NV_FLOW_OP_TYPED(NvFlowRayMarchCopyTexture)
2377
2378
2379
2380typedef struct NvFlowExtOpList
2381{
2382 NV_FLOW_REFLECT_INTERFACE();
2383
2384 NvFlowOpInterface* (NV_FLOW_ABI* pEmitterSphere)();
2385
2386 NvFlowOpInterface* (NV_FLOW_ABI* pEmitterSphereAllocate)();
2387
2388 NvFlowOpInterface* (NV_FLOW_ABI* pEmitterBox)();
2389
2390 NvFlowOpInterface* (NV_FLOW_ABI* pEmitterBoxAllocate)();
2391
2392 NvFlowOpInterface* (NV_FLOW_ABI* pEmitterPoint)();
2393
2394 NvFlowOpInterface* (NV_FLOW_ABI* pEmitterPointAllocate)();
2395
2396 NvFlowOpInterface* (NV_FLOW_ABI* pEmitterMesh)();
2397
2398 NvFlowOpInterface* (NV_FLOW_ABI* pEmitterMeshAllocate)();
2399
2400 NvFlowOpInterface* (NV_FLOW_ABI* pEmitterTexture)();
2401
2402 NvFlowOpInterface* (NV_FLOW_ABI* pEmitterTextureAllocate)();
2403
2404 NvFlowOpInterface* (NV_FLOW_ABI* pEmitterNanoVdb)();
2405
2406 NvFlowOpInterface* (NV_FLOW_ABI* pEmitterNanoVdbAllocate)();
2407
2408 NvFlowOpInterface* (NV_FLOW_ABI* pEllipsoidRaster)();
2409
2410 NvFlowOpInterface* (NV_FLOW_ABI* pEllipsoidRasterAllocate)();
2411
2412 NvFlowOpInterface* (NV_FLOW_ABI* pShadow)();
2413
2414 NvFlowOpInterface* (NV_FLOW_ABI* pDebugVolume)();
2415
2416 NvFlowOpInterface* (NV_FLOW_ABI* pRayMarch)();
2417
2418 NvFlowOpInterface* (NV_FLOW_ABI* pRayMarchUpdateColormap)();
2419
2420 NvFlowOpInterface* (NV_FLOW_ABI* pRayMarchIsosurface)();
2421
2422 NvFlowOpInterface* (NV_FLOW_ABI* pRayMarchCopyTexture)();
2424
2425#define NV_FLOW_REFLECT_TYPE NvFlowExtOpList
2426NV_FLOW_REFLECT_BEGIN()
2427NV_FLOW_REFLECT_FUNCTION_POINTER(pEmitterSphere, 0, 0)
2428NV_FLOW_REFLECT_FUNCTION_POINTER(pEmitterSphereAllocate, 0, 0)
2429NV_FLOW_REFLECT_FUNCTION_POINTER(pEmitterBox, 0, 0)
2430NV_FLOW_REFLECT_FUNCTION_POINTER(pEmitterBoxAllocate, 0, 0)
2431NV_FLOW_REFLECT_FUNCTION_POINTER(pEmitterPoint, 0, 0)
2432NV_FLOW_REFLECT_FUNCTION_POINTER(pEmitterPointAllocate, 0, 0)
2433NV_FLOW_REFLECT_FUNCTION_POINTER(pEmitterTexture, 0, 0)
2434NV_FLOW_REFLECT_FUNCTION_POINTER(pEmitterTextureAllocate, 0, 0)
2435NV_FLOW_REFLECT_FUNCTION_POINTER(pEmitterNanoVdb, 0, 0)
2436NV_FLOW_REFLECT_FUNCTION_POINTER(pEmitterNanoVdbAllocate, 0, 0)
2437NV_FLOW_REFLECT_FUNCTION_POINTER(pEllipsoidRaster, 0, 0)
2438NV_FLOW_REFLECT_FUNCTION_POINTER(pEllipsoidRasterAllocate, 0, 0)
2439NV_FLOW_REFLECT_FUNCTION_POINTER(pShadow, 0, 0)
2440NV_FLOW_REFLECT_FUNCTION_POINTER(pDebugVolume, 0, 0)
2441NV_FLOW_REFLECT_FUNCTION_POINTER(pRayMarch, 0, 0)
2442NV_FLOW_REFLECT_FUNCTION_POINTER(pRayMarchUpdateColormap, 0, 0)
2443NV_FLOW_REFLECT_FUNCTION_POINTER(pRayMarchIsosurface, 0, 0)
2444NV_FLOW_REFLECT_FUNCTION_POINTER(pRayMarchCopyTexture, 0, 0)
2445NV_FLOW_REFLECT_END(0)
2446NV_FLOW_REFLECT_INTERFACE_IMPL()
2447#undef NV_FLOW_REFLECT_TYPE
2448
2449typedef NvFlowExtOpList* (NV_FLOW_ABI* PFN_NvFlowGetExtOpList)();
2450
2451NV_FLOW_API NvFlowExtOpList* NvFlowGetExtOpList();
2452
2454
2455struct NvFlowGrid;
2456typedef struct NvFlowGrid NvFlowGrid;
2457
2458typedef struct NvFlowGridDesc
2459{
2460 NvFlowUint maxLocations;
2461 NvFlowUint maxLocationsIsosurface;
2463
2464#define NvFlowGridDesc_default_init { \
2465 4096u, /*maxLocations*/ \
2466 4096u /*maxLocationsIsosurface*/ \
2467}
2468static const NvFlowGridDesc NvFlowGridDesc_default = NvFlowGridDesc_default_init;
2469
2470NV_FLOW_REFLECT_TYPE_ALIAS(NvFlowEmitterSphereParams, NvFlowGridEmitterSphereParams)
2471NV_FLOW_REFLECT_TYPE_ALIAS(NvFlowEmitterBoxParams, NvFlowGridEmitterBoxParams)
2472NV_FLOW_REFLECT_TYPE_ALIAS(NvFlowEmitterPointParams, NvFlowGridEmitterPointParams)
2473NV_FLOW_REFLECT_TYPE_ALIAS(NvFlowEmitterMeshParams, NvFlowGridEmitterMeshParams)
2474NV_FLOW_REFLECT_TYPE_ALIAS(NvFlowEmitterTextureParams, NvFlowGridEmitterTextureParams)
2475NV_FLOW_REFLECT_TYPE_ALIAS(NvFlowEmitterNanoVdbParams, NvFlowGridEmitterNanoVdbParams)
2476
2478{
2479 NvFlowUint64 luid;
2480 int layer;
2481 float densityCellSize;
2482 NvFlowBool32 enableSmallBlocks;
2483 NvFlowBool32 enableLowPrecisionVelocity;
2484 NvFlowBool32 enableLowPrecisionDensity;
2485 NvFlowBool32 forceClear;
2486 NvFlowBool32 forceDisableEmitters;
2487 NvFlowBool32 forceDisableCoreSimulation;
2488 NvFlowBool32 simulateWhenPaused;
2489 NvFlowUint blockMinLifetime;
2490 float stepsPerSecond;
2491 float timeScale;
2492 NvFlowUint maxStepsPerSimulate;
2493 NvFlowBool32 enableVariableTimeStep;
2494 NvFlowBool32 interpolateTimeSteps;
2495 NvFlowUint velocitySubSteps;
2497 NvFlowVorticityParams vorticity;
2498 NvFlowPressureParams pressure;
2499 NvFlowSummaryAllocateParams summaryAllocate;
2500 NvFlowSparseNanoVdbExportParams nanoVdbExport;
2502
2503#define NvFlowGridSimulateLayerParams_default_init { \
2504 0llu, /*luid*/ \
2505 0, /*layer*/ \
2506 0.5f, /*densityCellSize*/ \
2507 NV_FLOW_FALSE, /*enableSmallBlocks*/ \
2508 NV_FLOW_FALSE, /*enableLowPrecisionVelocity*/ \
2509 NV_FLOW_FALSE, /*enableLowPrecisionDensity*/ \
2510 NV_FLOW_FALSE, /*forceClear*/ \
2511 NV_FLOW_FALSE, /*forceDisableEmitters*/ \
2512 NV_FLOW_FALSE, /*forceDisableCoreSimulation*/ \
2513 NV_FLOW_FALSE, /*simulateWhenPaused*/ \
2514 4u, /*blockMinLifetime*/ \
2515 60.f, /*stepsPerSecond*/ \
2516 1.f, /*timeScale*/ \
2517 1u, /*maxStepsPerSimulate*/ \
2518 NV_FLOW_FALSE, /*enableVariableTimeStep*/ \
2519 NV_FLOW_FALSE, /*interpolateTimeSteps*/ \
2520 1u, /*velocitySubSteps*/ \
2521 NvFlowAdvectionCombustionParams_default_init, /*advection*/ \
2522 NvFlowVorticityParams_default_init, /*vorticity*/ \
2523 NvFlowPressureParams_default_init, /*pressure*/ \
2524 NvFlowSummaryAllocateParams_default_init, /*summaryAllocate*/ \
2525 NvFlowSparseNanoVdbExportParams_default_init /*nanoVdbExport*/ \
2526}
2527static const NvFlowGridSimulateLayerParams NvFlowGridSimulateLayerParams_default = NvFlowGridSimulateLayerParams_default_init;
2528
2529#define NV_FLOW_REFLECT_TYPE NvFlowGridSimulateLayerParams
2530NV_FLOW_REFLECT_BEGIN()
2531NV_FLOW_REFLECT_VALUE(NvFlowUint64, luid, eNvFlowReflectHint_transientNoEdit, 0)
2532NV_FLOW_REFLECT_VALUE(int, layer, 0, 0)
2533NV_FLOW_REFLECT_VALUE(float, densityCellSize, 0, 0)
2534NV_FLOW_REFLECT_VALUE(NvFlowBool32, enableSmallBlocks, 0, 0)
2535NV_FLOW_REFLECT_VALUE(NvFlowBool32, enableLowPrecisionVelocity, 0, 0)
2536NV_FLOW_REFLECT_VALUE(NvFlowBool32, enableLowPrecisionDensity, 0, 0)
2537NV_FLOW_REFLECT_VALUE(NvFlowBool32, forceClear, 0, 0)
2538NV_FLOW_REFLECT_VALUE(NvFlowBool32, forceDisableEmitters, 0, 0)
2539NV_FLOW_REFLECT_VALUE(NvFlowBool32, forceDisableCoreSimulation, 0, 0)
2540NV_FLOW_REFLECT_VALUE(NvFlowBool32, simulateWhenPaused, 0, 0)
2541NV_FLOW_REFLECT_VALUE(NvFlowUint, blockMinLifetime, 0, 0)
2542NV_FLOW_REFLECT_VALUE(float, stepsPerSecond, 0, 0)
2543NV_FLOW_REFLECT_VALUE(float, timeScale, 0, 0)
2544NV_FLOW_REFLECT_VALUE(NvFlowUint, maxStepsPerSimulate, 0, 0)
2545NV_FLOW_REFLECT_VALUE(NvFlowBool32, enableVariableTimeStep, 0, 0)
2546NV_FLOW_REFLECT_VALUE(NvFlowBool32, interpolateTimeSteps, 0, 0)
2547NV_FLOW_REFLECT_VALUE(NvFlowUint, velocitySubSteps, 0, 0)
2548NV_FLOW_REFLECT_VALUE(NvFlowAdvectionCombustionParams, advection, 0, 0)
2549NV_FLOW_REFLECT_VALUE(NvFlowVorticityParams, vorticity, 0, 0)
2550NV_FLOW_REFLECT_VALUE(NvFlowPressureParams, pressure, 0, 0)
2551NV_FLOW_REFLECT_VALUE(NvFlowSummaryAllocateParams, summaryAllocate, 0, 0)
2552NV_FLOW_REFLECT_VALUE(NvFlowSparseNanoVdbExportParams, nanoVdbExport, 0, 0)
2553NV_FLOW_REFLECT_END(&NvFlowGridSimulateLayerParams_default)
2554#undef NV_FLOW_REFLECT_TYPE
2555
2556
2558{
2559 NvFlowUint64 luid;
2560 int layer;
2561 NvFlowShadowParams shadow;
2563 NvFlowDebugVolumeParams debugVolume;
2565
2566#define NvFlowGridOffscreenLayerParams_default_init { \
2567 0llu, /*luid*/ \
2568 0, /*layer*/ \
2569 NvFlowShadowParams_default_init, /*shadow*/ \
2570 NvFlowRayMarchColormapParams_default_init, /*colormap*/ \
2571 NvFlowDebugVolumeParams_default_init /*debugVolume*/ \
2572}
2573static const NvFlowGridOffscreenLayerParams NvFlowGridOffscreenLayerParams_default = NvFlowGridOffscreenLayerParams_default_init;
2574
2575#define NV_FLOW_REFLECT_TYPE NvFlowGridOffscreenLayerParams
2576NV_FLOW_REFLECT_BEGIN()
2577NV_FLOW_REFLECT_VALUE(NvFlowUint64, luid, eNvFlowReflectHint_transientNoEdit, 0)
2578NV_FLOW_REFLECT_VALUE(int, layer, 0, 0)
2579NV_FLOW_REFLECT_VALUE(NvFlowShadowParams, shadow, 0, 0)
2580NV_FLOW_REFLECT_VALUE(NvFlowRayMarchColormapParams, colormap, 0, 0)
2581NV_FLOW_REFLECT_VALUE(NvFlowDebugVolumeParams, debugVolume, 0, 0)
2582NV_FLOW_REFLECT_END(&NvFlowGridOffscreenLayerParams_default)
2583#undef NV_FLOW_REFLECT_TYPE
2584
2586{
2587 NvFlowUint64 luid;
2588 int layer;
2589 NvFlowRayMarchParams rayMarch;
2591
2592#define NvFlowGridRenderLayerParams_default_init { \
2593 0llu, /*luid*/ \
2594 0, /*layer*/ \
2595 NvFlowRayMarchParams_default_init /*rayMarch*/ \
2596}
2597static const NvFlowGridRenderLayerParams NvFlowGridRenderLayerParams_default = NvFlowGridRenderLayerParams_default_init;
2598
2599#define NV_FLOW_REFLECT_TYPE NvFlowGridRenderLayerParams
2600NV_FLOW_REFLECT_BEGIN()
2601NV_FLOW_REFLECT_VALUE(NvFlowUint64, luid, eNvFlowReflectHint_transientNoEdit, 0)
2602NV_FLOW_REFLECT_VALUE(int, layer, 0, 0)
2603NV_FLOW_REFLECT_VALUE(NvFlowRayMarchParams, rayMarch, 0, 0)
2604NV_FLOW_REFLECT_END(&NvFlowGridRenderLayerParams_default)
2605#undef NV_FLOW_REFLECT_TYPE
2606
2608{
2609 NvFlowUint64 luid;
2610 int layer;
2611 float densityCellSize;
2612 NvFlowEllipsoidRasterParams ellipsoidRaster;
2613 NvFlowRayMarchIsosurfaceParams rayMarchIsosurface;
2615
2616#define NvFlowGridIsosurfaceLayerParams_default_init { \
2617 0llu, /*luid*/ \
2618 0, /*layer*/ \
2619 2.f, /*densityCellSize*/ \
2620 NvFlowEllipsoidRasterParams_default_init, /*ellipsoidRaster*/ \
2621 NvFlowRayMarchIsosurfaceParams_default_init /*rayMarchIsosurface*/ \
2622}
2623static const NvFlowGridIsosurfaceLayerParams NvFlowGridIsosurfaceLayerParams_default = NvFlowGridIsosurfaceLayerParams_default_init;
2624
2625#define NV_FLOW_REFLECT_TYPE NvFlowGridIsosurfaceLayerParams
2626NV_FLOW_REFLECT_BEGIN()
2627NV_FLOW_REFLECT_VALUE(NvFlowUint64, luid, eNvFlowReflectHint_transientNoEdit, 0)
2628NV_FLOW_REFLECT_VALUE(int, layer, 0, 0)
2629NV_FLOW_REFLECT_VALUE(float, densityCellSize, 0, 0)
2630NV_FLOW_REFLECT_VALUE(NvFlowEllipsoidRasterParams, ellipsoidRaster, 0, 0)
2631NV_FLOW_REFLECT_VALUE(NvFlowRayMarchIsosurfaceParams, rayMarchIsosurface, 0, 0)
2632NV_FLOW_REFLECT_END(&NvFlowGridIsosurfaceLayerParams_default)
2633#undef NV_FLOW_REFLECT_TYPE
2634
2636{
2637 NvFlowDatabaseSnapshot snapshot;
2638 double absoluteSimTime;
2639 float deltaTime;
2640 NvFlowBool32 globalForceClear;
2641 const NvFlowUint8* userdata;
2642 NvFlowUint64 userdataSizeInBytes;
2644
2646{
2648 NvFlowUint64 snapshotCount;
2650
2652
2654{
2655 NvFlowBufferTransient* sparseBuffer;
2656 NvFlowTextureTransient* densityTexture;
2657 NvFlowTextureTransient* velocityTexture;
2658 NvFlowTextureTransient* colormap;
2659 NvFlowSparseParams sparseParams;
2662
2664{
2665 NvFlowBufferTransient* sparseBuffer;
2666 NvFlowTextureTransient* densityTexture;
2667 NvFlowSparseParams sparseParams;
2669
2671{
2672 NV_FLOW_REFLECT_INTERFACE();
2673
2674 NvFlowGrid*(NV_FLOW_ABI* createGrid)(
2675 NvFlowContextInterface* contextInterface,
2676 NvFlowContext* context,
2677 NvFlowOpList* opList,
2678 NvFlowExtOpList* extOpList,
2679 const NvFlowGridDesc* desc
2680 );
2681
2682 void(NV_FLOW_ABI* destroyGrid)(
2683 NvFlowContext* context,
2684 NvFlowGrid* grid
2685 );
2686
2687 void(NV_FLOW_ABI* resetGrid)(
2688 NvFlowContext* context,
2689 NvFlowGrid* grid,
2690 const NvFlowGridDesc* desc
2691 );
2692
2693 void(NV_FLOW_ABI* simulate)(
2694 NvFlowContext* context,
2695 NvFlowGrid* grid,
2696 const NvFlowGridParamsDesc* params,
2697 NvFlowBool32 globalForceClear
2698 );
2699
2700 void(NV_FLOW_ABI* offscreen)(
2701 NvFlowContext* context,
2702 NvFlowGrid* grid,
2703 const NvFlowGridParamsDesc* params
2704 );
2705
2706 void(NV_FLOW_ABI* getRenderData)(
2707 NvFlowContext* context,
2708 NvFlowGrid* grid,
2709 NvFlowGridRenderData* renderData
2710 );
2711
2712 void(NV_FLOW_ABI* render)(
2713 NvFlowContext* context,
2714 NvFlowGrid* grid,
2715 const NvFlowGridParamsDesc* params,
2716 const NvFlowFloat4x4* view,
2717 const NvFlowFloat4x4* projection,
2718 const NvFlowFloat4x4* projectionJittered,
2719 NvFlowUint width,
2720 NvFlowUint height,
2721 NvFlowUint sceneDepthWidth,
2722 NvFlowUint sceneDepthHeight,
2723 float compositeColorScale,
2724 NvFlowTextureTransient* sceneDepthIn,
2725 NvFlowFormat sceneColorFormat,
2726 NvFlowTextureTransient* sceneColorIn,
2727 NvFlowTextureTransient** pSceneColorOut
2728 );
2729
2730 void(NV_FLOW_ABI* updateIsosurface)(
2731 NvFlowContext* context,
2732 NvFlowGrid* grid,
2733 const NvFlowGridParamsDesc* params
2734 );
2735
2736 void(NV_FLOW_ABI* getIsosurfaceData)(
2737 NvFlowContext* context,
2738 NvFlowGrid* grid,
2739 NvFlowGridIsosurfaceData* isosurfaceData
2740 );
2741
2742 void(NV_FLOW_ABI* renderIsosurface)(
2743 NvFlowContext* context,
2744 NvFlowGrid* grid,
2745 const NvFlowGridParamsDesc* params,
2746 const NvFlowFloat4x4* view,
2747 const NvFlowFloat4x4* projection,
2748 const NvFlowFloat4x4* projectionJittered,
2749 NvFlowUint width,
2750 NvFlowUint height,
2751 NvFlowUint sceneDepthWidth,
2752 NvFlowUint sceneDepthHeight,
2753 float compositeColorScale,
2754 NvFlowTextureTransient* sceneDepthIn,
2755 NvFlowFormat sceneColorFormat,
2756 NvFlowTextureTransient* sceneColorIn,
2757 NvFlowTextureTransient** pSceneColorOut
2758 );
2759
2760 void(NV_FLOW_ABI* copyTexture)(
2761 NvFlowContext* context,
2762 NvFlowGrid* grid,
2763 NvFlowUint width,
2764 NvFlowUint height,
2765 NvFlowFormat sceneColorFormat,
2766 NvFlowTextureTransient* sceneColorIn,
2767 NvFlowTextureTransient** pSceneColorOut
2768 );
2769
2770 NvFlowUint(NV_FLOW_ABI* getActiveBlockCount)(NvFlowGrid* grid);
2771
2772 NvFlowUint(NV_FLOW_ABI* getActiveBlockCountIsosurface)(NvFlowGrid* grid);
2773
2774 void(NV_FLOW_ABI* setResourceMinLifetime)(NvFlowContext* context, NvFlowGrid* grid, NvFlowUint64 minLifetime);
2776
2777#define NV_FLOW_REFLECT_TYPE NvFlowGridInterface
2778NV_FLOW_REFLECT_BEGIN()
2779NV_FLOW_REFLECT_FUNCTION_POINTER(createGrid, 0, 0)
2780NV_FLOW_REFLECT_FUNCTION_POINTER(destroyGrid, 0, 0)
2781NV_FLOW_REFLECT_FUNCTION_POINTER(resetGrid, 0, 0)
2782NV_FLOW_REFLECT_FUNCTION_POINTER(simulate, 0, 0)
2783NV_FLOW_REFLECT_FUNCTION_POINTER(offscreen, 0, 0)
2784NV_FLOW_REFLECT_FUNCTION_POINTER(getRenderData, 0, 0)
2785NV_FLOW_REFLECT_FUNCTION_POINTER(render, 0, 0)
2786NV_FLOW_REFLECT_FUNCTION_POINTER(updateIsosurface, 0, 0)
2787NV_FLOW_REFLECT_FUNCTION_POINTER(getIsosurfaceData, 0, 0)
2788NV_FLOW_REFLECT_FUNCTION_POINTER(renderIsosurface, 0, 0)
2789NV_FLOW_REFLECT_FUNCTION_POINTER(copyTexture, 0, 0)
2790NV_FLOW_REFLECT_FUNCTION_POINTER(getActiveBlockCount, 0, 0)
2791NV_FLOW_REFLECT_FUNCTION_POINTER(getActiveBlockCountIsosurface, 0, 0)
2792NV_FLOW_REFLECT_FUNCTION_POINTER(setResourceMinLifetime, 0, 0)
2793NV_FLOW_REFLECT_END(0)
2794NV_FLOW_REFLECT_INTERFACE_IMPL()
2795#undef NV_FLOW_REFLECT_TYPE
2796
2797typedef NvFlowGridInterface* (NV_FLOW_ABI* PFN_NvFlowGetGridInterface)();
2798
2799NV_FLOW_API NvFlowGridInterface* NvFlowGetGridInterface();
2800
2801NV_FLOW_API NvFlowGridInterface* NvFlowGetGridInterfaceNoOpt();
2802
2804
2805struct NvFlowGridParams;
2806typedef struct NvFlowGridParams NvFlowGridParams;
2807
2808struct NvFlowGridParamsSnapshot;
2809typedef struct NvFlowGridParamsSnapshot NvFlowGridParamsSnapshot;
2810
2811struct NvFlowGridParamsNamed;
2812typedef struct NvFlowGridParamsNamed NvFlowGridParamsNamed;
2813
2815{
2816 NV_FLOW_REFLECT_INTERFACE();
2817
2818 NvFlowGridParams*(NV_FLOW_ABI* createGridParams)();
2819
2820 void(NV_FLOW_ABI* destroyGridParams)(NvFlowGridParams* gridParams);
2821
2822 void(NV_FLOW_ABI* enumerateParamTypes)(
2823 NvFlowGridParams* gridParams,
2824 const char** pTypenames,
2825 const char** pDisplayTypenames,
2826 const NvFlowReflectDataType** pDataTypes,
2827 NvFlowUint64* pCount
2828 );
2829
2830 void(NV_FLOW_ABI* getVersion)(
2831 NvFlowGridParams* gridParams,
2832 NvFlowUint64* pStagingVersion,
2833 NvFlowUint64* pMinActiveVersion
2834 );
2835
2836 void(NV_FLOW_ABI* commitParams)(
2837 NvFlowGridParams* gridParams,
2838 const NvFlowGridParamsDescSnapshot* snapshot
2839 );
2840
2841 NvFlowBool32(NV_FLOW_ABI* resetParams)(NvFlowGridParams* gridParams);
2842
2843 NvFlowGridParamsSnapshot*(NV_FLOW_ABI* getParamsSnapshot)(
2844 NvFlowGridParams* gridParams,
2845 double absoluteSimTime,
2846 NvFlowUint64 pullId
2847 );
2848
2849 NvFlowBool32(NV_FLOW_ABI* mapParamsDesc)(
2850 NvFlowGridParams* gridParams,
2851 NvFlowGridParamsSnapshot* snapshot,
2852 NvFlowGridParamsDesc* pParamsDesc
2853 );
2854
2855 void(NV_FLOW_ABI* unmapParamsDesc)(
2856 NvFlowGridParams* gridParams,
2857 NvFlowGridParamsSnapshot* snapshot
2858 );
2859
2860 NvFlowGridParamsNamed*(NV_FLOW_ABI* createGridParamsNamed)(const char* name);
2861
2862 int(NV_FLOW_ABI* destroyGridParamsNamed)(NvFlowGridParamsNamed* gridParamsNamed);
2863
2864 NvFlowGridParams*(NV_FLOW_ABI* mapGridParamsNamed)(NvFlowGridParamsNamed* gridParamsNamed);
2865
2867
2868#define NV_FLOW_REFLECT_TYPE NvFlowGridParamsInterface
2869NV_FLOW_REFLECT_BEGIN()
2870NV_FLOW_REFLECT_FUNCTION_POINTER(createGridParams, 0, 0)
2871NV_FLOW_REFLECT_FUNCTION_POINTER(destroyGridParams, 0, 0)
2872NV_FLOW_REFLECT_FUNCTION_POINTER(enumerateParamTypes, 0, 0)
2873NV_FLOW_REFLECT_FUNCTION_POINTER(getVersion, 0, 0)
2874NV_FLOW_REFLECT_FUNCTION_POINTER(commitParams, 0, 0)
2875NV_FLOW_REFLECT_FUNCTION_POINTER(resetParams, 0, 0)
2876NV_FLOW_REFLECT_FUNCTION_POINTER(getParamsSnapshot, 0, 0)
2877NV_FLOW_REFLECT_FUNCTION_POINTER(mapParamsDesc, 0, 0)
2878NV_FLOW_REFLECT_FUNCTION_POINTER(unmapParamsDesc, 0, 0)
2879NV_FLOW_REFLECT_FUNCTION_POINTER(createGridParamsNamed, 0, 0)
2880NV_FLOW_REFLECT_FUNCTION_POINTER(destroyGridParamsNamed, 0, 0)
2881NV_FLOW_REFLECT_FUNCTION_POINTER(mapGridParamsNamed, 0, 0)
2882NV_FLOW_REFLECT_END(0)
2883NV_FLOW_REFLECT_INTERFACE_IMPL()
2884#undef NV_FLOW_REFLECT_TYPE
2885
2886typedef NvFlowGridParamsInterface* (NV_FLOW_ABI* PFN_NvFlowGetGridParamsInterface)();
2887
2888NV_FLOW_API NvFlowGridParamsInterface* NvFlowGetGridParamsInterface();
2889
2891
2892struct NvFlowThreadPool;
2893typedef struct NvFlowThreadPool NvFlowThreadPool;
2894
2895typedef void(*NvFlowThreadPoolTask_t)(NvFlowUint taskIdx, NvFlowUint threadIdx, void* sharedMem, void* userdata);
2896
2898{
2899 NV_FLOW_REFLECT_INTERFACE();
2900
2901 NvFlowUint(NV_FLOW_ABI* getDefaultThreadCount)();
2902
2903 NvFlowThreadPool*(NV_FLOW_ABI* create)(NvFlowUint threadCount, NvFlowUint64 sharedMemorySizeInBytes);
2904
2905 void(NV_FLOW_ABI* destroy)(NvFlowThreadPool* pool);
2906
2907 NvFlowUint(NV_FLOW_ABI* getThreadCount)(NvFlowThreadPool* pool);
2908
2909 void(NV_FLOW_ABI* execute)(NvFlowThreadPool* pool, NvFlowUint taskCount, NvFlowUint taskGranularity, NvFlowThreadPoolTask_t task, void* userdata);
2911
2912#define NV_FLOW_REFLECT_TYPE NvFlowThreadPoolInterface
2913NV_FLOW_REFLECT_BEGIN()
2914NV_FLOW_REFLECT_FUNCTION_POINTER(getDefaultThreadCount, 0, 0)
2915NV_FLOW_REFLECT_FUNCTION_POINTER(create, 0, 0)
2916NV_FLOW_REFLECT_FUNCTION_POINTER(destroy, 0, 0)
2917NV_FLOW_REFLECT_FUNCTION_POINTER(getThreadCount, 0, 0)
2918NV_FLOW_REFLECT_FUNCTION_POINTER(execute, 0, 0)
2919NV_FLOW_REFLECT_END(0)
2920NV_FLOW_REFLECT_INTERFACE_IMPL()
2921#undef NV_FLOW_REFLECT_TYPE
2922
2923typedef NvFlowThreadPoolInterface* (NV_FLOW_ABI* PFN_NvFlowThreadPoolInterface)();
2924
2925NV_FLOW_API NvFlowThreadPoolInterface* NvFlowGetThreadPoolInterface();
2926
2928
2929struct NvFlowContextOpt;
2930typedef struct NvFlowContextOpt NvFlowContextOpt;
2931
2933{
2934 NV_FLOW_REFLECT_INTERFACE();
2935
2936 NvFlowContextOpt*(NV_FLOW_ABI* create)(NvFlowContextInterface* backendContextInterface, NvFlowContext* backendContext);
2937
2938 void(NV_FLOW_ABI* destroy)(NvFlowContextOpt* contextOpt);
2939
2940 void(NV_FLOW_ABI* getContext)(NvFlowContextOpt* contextOpt, NvFlowContextInterface** pContextInterface, NvFlowContext** pContext);
2941
2942 void(NV_FLOW_ABI* flush)(NvFlowContextOpt* contextOpt);
2943
2944 NvFlowBufferTransient*(NV_FLOW_ABI* importBackendBufferTransient)(NvFlowContextOpt* contextOpt, NvFlowBufferTransient* backendBufferTransient);
2945
2946 NvFlowTextureTransient*(NV_FLOW_ABI* importBackendTextureTransient)(NvFlowContextOpt* contextOpt, NvFlowTextureTransient* backendTextureTransient);
2947
2948 void(NV_FLOW_ABI* exportBufferTransient)(NvFlowContextOpt* contextOpt, NvFlowBufferTransient* bufferTransient, NvFlowBufferTransient** pBackendBufferTransient);
2949
2950 void(NV_FLOW_ABI* exportTextureTransient)(NvFlowContextOpt* contextOpt, NvFlowTextureTransient* textureTransient, NvFlowTextureTransient** pBackendTextureTransient);
2951
2952 void(NV_FLOW_ABI* setResourceMinLifetime)(NvFlowContextOpt* contextOpt, NvFlowUint64 minLifetime);
2954
2955#define NV_FLOW_REFLECT_TYPE NvFlowContextOptInterface
2956NV_FLOW_REFLECT_BEGIN()
2957NV_FLOW_REFLECT_FUNCTION_POINTER(create, 0, 0)
2958NV_FLOW_REFLECT_FUNCTION_POINTER(destroy, 0, 0)
2959NV_FLOW_REFLECT_FUNCTION_POINTER(getContext, 0, 0)
2960NV_FLOW_REFLECT_FUNCTION_POINTER(flush, 0, 0)
2961NV_FLOW_REFLECT_FUNCTION_POINTER(importBackendBufferTransient, 0, 0)
2962NV_FLOW_REFLECT_FUNCTION_POINTER(importBackendTextureTransient, 0, 0)
2963NV_FLOW_REFLECT_FUNCTION_POINTER(exportBufferTransient, 0, 0)
2964NV_FLOW_REFLECT_FUNCTION_POINTER(exportTextureTransient, 0, 0)
2965NV_FLOW_REFLECT_FUNCTION_POINTER(setResourceMinLifetime, 0, 0)
2966NV_FLOW_REFLECT_END(0)
2967NV_FLOW_REFLECT_INTERFACE_IMPL()
2968#undef NV_FLOW_REFLECT_TYPE
2969
2970typedef NvFlowContextOptInterface*(NV_FLOW_ABI* PFN_NvFlowGetContextOptInterface)();
2971
2972NV_FLOW_API NvFlowContextOptInterface* NvFlowGetContextOptInterface();
2973
2975
2976struct NvFlowDeviceManager;
2977typedef struct NvFlowDeviceManager NvFlowDeviceManager;
2978
2980{
2981 NvFlowUint8 deviceUUID[16u];
2982 NvFlowUint8 deviceLUID[8u];
2983 NvFlowUint deviceNodeMask;
2984 NvFlowBool32 deviceLUIDValid;
2986
2987typedef struct NvFlowDeviceDesc
2988{
2989 NvFlowUint deviceIndex;
2990 NvFlowBool32 enableExternalUsage;
2991 NvFlowLogPrint_t logPrint;
2993
2994struct NvFlowSwapchainDesc;
2995typedef struct NvFlowSwapchainDesc NvFlowSwapchainDesc;
2996
2997#if defined(NV_FLOW_SWAPCHAIN_DESC)
2998struct NvFlowSwapchainDesc
2999{
3000#if defined(_WIN32)
3001 HINSTANCE hinstance;
3002 HWND hwnd;
3003#else
3004 Display* dpy;
3005 Window window;
3006#endif
3007 NvFlowFormat format;
3008};
3009#endif
3010
3011struct NvFlowDevice;
3012typedef struct NvFlowDevice NvFlowDevice;
3013
3014struct NvFlowDeviceQueue;
3015typedef struct NvFlowDeviceQueue NvFlowDeviceQueue;
3016
3017struct NvFlowDeviceSemaphore;
3018typedef struct NvFlowDeviceSemaphore NvFlowDeviceSemaphore;
3019
3020struct NvFlowSwapchain;
3021typedef struct NvFlowSwapchain NvFlowSwapchain;
3022
3024{
3025 const char* label;
3026 float cpuDeltaTime;
3027 float gpuDeltaTime;
3029
3031{
3032 NV_FLOW_REFLECT_INTERFACE();
3033
3034 NvFlowDeviceManager*(NV_FLOW_ABI* createDeviceManager)(NvFlowBool32 enableValidationOnDebugBuild, NvFlowThreadPoolInterface* threadPoolInterface, NvFlowUint threadCount);
3035
3036 void(NV_FLOW_ABI* destroyDeviceManager)(NvFlowDeviceManager* manager);
3037
3038 NvFlowBool32(NV_FLOW_ABI* enumerateDevices)(NvFlowDeviceManager* manager, NvFlowUint deviceIndex, NvFlowPhysicalDeviceDesc* pDesc);
3039
3040
3041 NvFlowDevice*(NV_FLOW_ABI* createDevice)(NvFlowDeviceManager* manager, const NvFlowDeviceDesc* desc);
3042
3043 void(NV_FLOW_ABI* destroyDevice)(NvFlowDeviceManager* manager, NvFlowDevice* device);
3044
3045
3046 NvFlowDeviceSemaphore*(NV_FLOW_ABI* createSemaphore)(NvFlowDevice* device);
3047
3048 void(NV_FLOW_ABI* destroySemaphore)(NvFlowDeviceSemaphore* semaphore);
3049
3050 void(NV_FLOW_ABI* getSemaphoreExternalHandle)(NvFlowDeviceSemaphore* semaphore, void* dstHandle, NvFlowUint64 dstHandleSize);
3051
3052 void(NV_FLOW_ABI* closeSemaphoreExternalHandle)(NvFlowDeviceSemaphore* semaphore, const void* srcHandle, NvFlowUint64 srcHandleSize);
3053
3054
3055 NvFlowDeviceQueue*(NV_FLOW_ABI* getDeviceQueue)(NvFlowDevice* device);
3056
3057 int(NV_FLOW_ABI* flush)(NvFlowDeviceQueue* queue, NvFlowUint64* flushedFrameID, NvFlowDeviceSemaphore* waitSemaphore, NvFlowDeviceSemaphore* signalSemaphore);
3058
3059 NvFlowUint64(NV_FLOW_ABI* getLastFrameCompleted)(NvFlowDeviceQueue* queue);
3060
3061 void(NV_FLOW_ABI* waitForFrame)(NvFlowDeviceQueue* queue, NvFlowUint64 frameFrameID);
3062
3063 void(NV_FLOW_ABI* waitIdle)(NvFlowDeviceQueue* queue);
3064
3065 NvFlowContextInterface*(NV_FLOW_ABI* getContextInterface)(NvFlowDeviceQueue* queue);
3066
3067 NvFlowContext*(NV_FLOW_ABI* getContext)(NvFlowDeviceQueue* queue);
3068
3069
3070 NvFlowSwapchain*(NV_FLOW_ABI* createSwapchain)(NvFlowDeviceQueue* queue, const NvFlowSwapchainDesc* desc);
3071
3072 void(NV_FLOW_ABI* destroySwapchain)(NvFlowSwapchain* swapchain);
3073
3074 void(NV_FLOW_ABI* resizeSwapchain)(NvFlowSwapchain* swapchain, NvFlowUint width, NvFlowUint height);
3075
3076 int(NV_FLOW_ABI* presentSwapchain)(NvFlowSwapchain* swapchain, NvFlowBool32 vsync, NvFlowUint64* flushedFrameID);
3077
3078 NvFlowTexture*(NV_FLOW_ABI* getSwapchainFrontTexture)(NvFlowSwapchain* swapchain);
3079
3080
3081 void(NV_FLOW_ABI* enableProfiler)(NvFlowContext* context, void* userdata, void(NV_FLOW_ABI* reportEntries)(void* userdata, NvFlowUint64 captureID, NvFlowUint numEntries, NvFlowProfilerEntry* entries));
3082
3083 void(NV_FLOW_ABI* disableProfiler)(NvFlowContext* context);
3084
3085
3086 NvFlowUint64(NV_FLOW_ABI* registerBufferId)(NvFlowContext* context, NvFlowBuffer* buffer);
3087
3088 NvFlowUint64(NV_FLOW_ABI* registerTextureId)(NvFlowContext* context, NvFlowTexture* texture);
3089
3090 void(NV_FLOW_ABI* unregisterBufferId)(NvFlowContext* context, NvFlowUint64 bufferId);
3091
3092 void(NV_FLOW_ABI* unregisterTextureId)(NvFlowContext* context, NvFlowUint64 textureId);
3093
3094 void(NV_FLOW_ABI* setResourceMinLifetime)(NvFlowContext* context, NvFlowUint64 minLifetime);
3095
3096
3097 void(NV_FLOW_ABI* getBufferExternalHandle)(NvFlowContext* context, NvFlowBuffer* buffer, void* dstHandle, NvFlowUint64 dstHandleSize, NvFlowUint64* pBufferSizeInBytes);
3098
3099 void(NV_FLOW_ABI* closeBufferExternalHandle)(NvFlowContext* context, NvFlowBuffer* buffer, const void* srcHandle, NvFlowUint64 srcHandleSize);
3100
3102
3103#define NV_FLOW_REFLECT_TYPE NvFlowDeviceInterface
3104NV_FLOW_REFLECT_BEGIN()
3105NV_FLOW_REFLECT_FUNCTION_POINTER(createDeviceManager, 0, 0)
3106NV_FLOW_REFLECT_FUNCTION_POINTER(destroyDeviceManager, 0, 0)
3107NV_FLOW_REFLECT_FUNCTION_POINTER(enumerateDevices, 0, 0)
3108NV_FLOW_REFLECT_FUNCTION_POINTER(createDevice, 0, 0)
3109NV_FLOW_REFLECT_FUNCTION_POINTER(destroyDevice, 0, 0)
3110NV_FLOW_REFLECT_FUNCTION_POINTER(createSemaphore, 0, 0)
3111NV_FLOW_REFLECT_FUNCTION_POINTER(destroySemaphore, 0, 0)
3112NV_FLOW_REFLECT_FUNCTION_POINTER(getSemaphoreExternalHandle, 0, 0)
3113NV_FLOW_REFLECT_FUNCTION_POINTER(closeSemaphoreExternalHandle, 0, 0)
3114NV_FLOW_REFLECT_FUNCTION_POINTER(getDeviceQueue, 0, 0)
3115NV_FLOW_REFLECT_FUNCTION_POINTER(flush, 0, 0)
3116NV_FLOW_REFLECT_FUNCTION_POINTER(getLastFrameCompleted, 0, 0)
3117NV_FLOW_REFLECT_FUNCTION_POINTER(waitForFrame, 0, 0)
3118NV_FLOW_REFLECT_FUNCTION_POINTER(waitIdle, 0, 0)
3119NV_FLOW_REFLECT_FUNCTION_POINTER(getContextInterface, 0, 0)
3120NV_FLOW_REFLECT_FUNCTION_POINTER(getContext, 0, 0)
3121NV_FLOW_REFLECT_FUNCTION_POINTER(createSwapchain, 0, 0)
3122NV_FLOW_REFLECT_FUNCTION_POINTER(destroySwapchain, 0, 0)
3123NV_FLOW_REFLECT_FUNCTION_POINTER(resizeSwapchain, 0, 0)
3124NV_FLOW_REFLECT_FUNCTION_POINTER(presentSwapchain, 0, 0)
3125NV_FLOW_REFLECT_FUNCTION_POINTER(getSwapchainFrontTexture, 0, 0)
3126NV_FLOW_REFLECT_FUNCTION_POINTER(enableProfiler, 0, 0)
3127NV_FLOW_REFLECT_FUNCTION_POINTER(disableProfiler, 0, 0)
3128NV_FLOW_REFLECT_FUNCTION_POINTER(registerBufferId, 0, 0)
3129NV_FLOW_REFLECT_FUNCTION_POINTER(registerTextureId, 0, 0)
3130NV_FLOW_REFLECT_FUNCTION_POINTER(unregisterBufferId, 0, 0)
3131NV_FLOW_REFLECT_FUNCTION_POINTER(unregisterTextureId, 0, 0)
3132NV_FLOW_REFLECT_FUNCTION_POINTER(setResourceMinLifetime, 0, 0)
3133NV_FLOW_REFLECT_FUNCTION_POINTER(getBufferExternalHandle, 0, 0)
3134NV_FLOW_REFLECT_FUNCTION_POINTER(closeBufferExternalHandle, 0, 0)
3135NV_FLOW_REFLECT_END(0)
3136NV_FLOW_REFLECT_INTERFACE_IMPL()
3137#undef NV_FLOW_REFLECT_TYPE
3138
3139typedef NvFlowDeviceInterface* (NV_FLOW_ABI* PFN_NvFlowGetDeviceInterface)(NvFlowContextApi api);
3140
3141NV_FLOW_API NvFlowDeviceInterface* NvFlowGetDeviceInterface(NvFlowContextApi api);
3142
3144
3145struct NvFlowRadixSort;
3146typedef struct NvFlowRadixSort NvFlowRadixSort;
3147
3149{
3150 NV_FLOW_REFLECT_INTERFACE();
3151
3152 NvFlowRadixSort*(NV_FLOW_ABI* create)(NvFlowContextInterface* contextInterface, NvFlowContext* context);
3153
3154 void(NV_FLOW_ABI* destroy)(NvFlowContext* context, NvFlowRadixSort* radixSort);
3155
3156 void(NV_FLOW_ABI* reserve)(NvFlowContext* context, NvFlowRadixSort* radixSort, NvFlowUint numKeys);
3157
3158 void(NV_FLOW_ABI* getInputBuffers)(NvFlowContext* context, NvFlowRadixSort* radixSort, NvFlowBufferTransient** pKeyBuffer, NvFlowBufferTransient** pValBuffer);
3159
3160 void(NV_FLOW_ABI* sort)(NvFlowContext* context, NvFlowRadixSort* radixSort, NvFlowUint numKeys, NvFlowUint numKeyBits);
3161
3162 void(NV_FLOW_ABI* getOutputBuffers)(NvFlowContext* context, NvFlowRadixSort* radixSort, NvFlowBufferTransient** pKeyBuffer, NvFlowBufferTransient** pValBuffer);
3164
3165#define NV_FLOW_REFLECT_TYPE NvFlowRadixSortInterface
3166NV_FLOW_REFLECT_BEGIN()
3167NV_FLOW_REFLECT_FUNCTION_POINTER(create, 0, 0)
3168NV_FLOW_REFLECT_FUNCTION_POINTER(destroy, 0, 0)
3169NV_FLOW_REFLECT_FUNCTION_POINTER(reserve, 0, 0)
3170NV_FLOW_REFLECT_FUNCTION_POINTER(getInputBuffers, 0, 0)
3171NV_FLOW_REFLECT_FUNCTION_POINTER(sort, 0, 0)
3172NV_FLOW_REFLECT_FUNCTION_POINTER(getOutputBuffers, 0, 0)
3173NV_FLOW_REFLECT_END(0)
3174NV_FLOW_REFLECT_INTERFACE_IMPL()
3175#undef NV_FLOW_REFLECT_TYPE
3176
3177typedef NvFlowRadixSortInterface* (NV_FLOW_ABI* PFN_NvFlowGetRadixSortInterface)();
3178
3179NV_FLOW_API NvFlowRadixSortInterface* NvFlowGetRadixSortInterface();
3180
3181#endif
Definition base.h:1940
Definition NvFlow.h:578
Definition NvFlowContext.h:362
Definition NvFlowExt.h:2933
Definition NvFlowReflect.h:488
********************************* DebugVolume ***************************************
Definition NvFlowExt.h:1969
Definition NvFlowExt.h:1991
Definition NvFlowExt.h:2001
Definition NvFlowExt.h:2988
Definition NvFlowExt.h:3031
Definition NvFlowExt.h:1853
Definition NvFlowExt.h:1862
********************************* Ellipsoid Raster ***************************************
Definition NvFlowExt.h:1757
Definition NvFlowExt.h:1764
Definition NvFlowExt.h:1820
Definition NvFlowExt.h:1830
********************************* EmitterBoxAllocate ***************************************
Definition NvFlowExt.h:379
Definition NvFlowExt.h:389
********************************* EmitterBox ***************************************
Definition NvFlowExt.h:223
Definition NvFlowExt.h:337
Definition NvFlowExt.h:351
********************************* EmitterMeshAllocate ***************************************
Definition NvFlowExt.h:1065
Definition NvFlowExt.h:1076
Definition NvFlowExt.h:1014
********************************* EmitterMesh ***************************************
Definition NvFlowExt.h:749
Definition NvFlowExt.h:1021
Definition NvFlowExt.h:1036
********************************* EmitterNanoVdbAllocate ***************************************
Definition NvFlowExt.h:1721
Definition NvFlowExt.h:1731
********************************* EmitterNanoVdb ***************************************
Definition NvFlowExt.h:1401
Definition NvFlowExt.h:1679
Definition NvFlowExt.h:1693
********************************* EmitterPointAllocate ***************************************
Definition NvFlowExt.h:706
Definition NvFlowExt.h:717
Definition NvFlowExt.h:653
********************************* EmitterPoint ***************************************
Definition NvFlowExt.h:415
Definition NvFlowExt.h:660
Definition NvFlowExt.h:676
********************************* EmitterSphereAllocate ***************************************
Definition NvFlowExt.h:187
Definition NvFlowExt.h:197
********************************* EmitterSphere ***************************************
Definition NvFlowExt.h:36
Definition NvFlowExt.h:145
Definition NvFlowExt.h:159
********************************* EmitterTextureAllocate ***************************************
Definition NvFlowExt.h:1365
Definition NvFlowExt.h:1375
********************************* EmitterTexture ***************************************
Definition NvFlowExt.h:1105
Definition NvFlowExt.h:1323
Definition NvFlowExt.h:1337
********************************* NvFlowExtOpList ***************************************
Definition NvFlowExt.h:2381
Definition NvFlowExt.h:2459
Definition NvFlowExt.h:2671
Definition NvFlowExt.h:2664
Definition NvFlowExt.h:2608
Definition NvFlowExt.h:2558
Definition NvFlowExt.h:2636
Definition NvFlowExt.h:2646
Definition NvFlowExt.h:2815
Definition NvFlowExt.h:2654
Definition NvFlowExt.h:2586
Definition NvFlowExt.h:2478
Definition NvFlow.h:71
********************************* NvFlowOpList ***************************************
Definition NvFlow.h:1007
Definition NvFlowExt.h:2980
********************************* Pressure ***************************************
Definition NvFlow.h:772
Definition NvFlowExt.h:3024
Definition NvFlowExt.h:3149
********************************* RayMarch ***************************************
Definition NvFlowExt.h:2026
Definition NvFlowExt.h:2191
Definition NvFlowExt.h:2345
Definition NvFlowExt.h:2355
Definition NvFlowExt.h:2103
Definition NvFlowExt.h:2310
Definition NvFlowExt.h:2321
Definition NvFlowExt.h:2069
Definition NvFlowExt.h:2242
Definition NvFlowExt.h:2255
Definition NvFlowExt.h:2225
Definition NvFlowExt.h:2281
Definition NvFlowExt.h:2289
Definition NvFlowReflect.h:182
********************************* Shadow ***************************************
Definition NvFlowExt.h:1889
Definition NvFlowExt.h:1932
Definition NvFlowExt.h:1943
********************************* SparseNanoVdbExport ***************************************
Definition NvFlow.h:414
Definition NvFlow.h:512
Definition NvFlow.h:190
Definition NvFlow.h:279
********************************* Summary ***************************************
Definition NvFlow.h:904
Definition NvFlowExt.h:2898
********************************* Vorticity ***************************************
Definition NvFlow.h:821