diff options
| author | Anton Novoselov <[email protected]> | 2017-08-01 12:53:38 +0300 |
|---|---|---|
| committer | Anton Novoselov <[email protected]> | 2017-08-01 12:53:38 +0300 |
| commit | 236f03c0b9a4982328ed1201978f7f69d192d9b2 (patch) | |
| tree | e486f2fa39dba203563895541e92c60ed3e25759 /docs/_source/ext_shaders.txt | |
| parent | Added screens to welcome page (diff) | |
| download | blast-236f03c0b9a4982328ed1201978f7f69d192d9b2.tar.xz blast-236f03c0b9a4982328ed1201978f7f69d192d9b2.zip | |
Blast 1.1 release (windows / linux)
see docs/release_notes.txt for details
Diffstat (limited to 'docs/_source/ext_shaders.txt')
| -rw-r--r-- | docs/_source/ext_shaders.txt | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/docs/_source/ext_shaders.txt b/docs/_source/ext_shaders.txt new file mode 100644 index 0000000..3bfb37d --- /dev/null +++ b/docs/_source/ext_shaders.txt @@ -0,0 +1,46 @@ +/*! \page pageextshaders Damage Shaders (NvBlastExtShaders) + +The Blast&tm; damage shader extension provides basic implementations of programs generating fracture commands, the first step in breaking a Blast&tm; Actor, see \ref splitting. +These programs come as two shader functions (callbacks): one for Actors with a support graph, and one for Actors with just one chunk, respectively. +The NvBlastDamageProgram containing both shaders can be used for low-level directly (NvBlastActorGenerateFracture) or for TkActor's damage and fracture functions. + +For example, one may construct a damage program using the "shear" damage shaders declared in NvBlastExtDamageShaders.h: + +\code + NvBlastDamageProgram damageProgram = { NvBlastExtShearGraphShader, NvBlastExtShearSubgraphShader }; +\endcode + +The appropriate shader ("graph" or "subgraph") will be called for an Actor being processed, along with the Actor's necessary geometry and program parameters. +The parameters (NvBlastProgramParams) are set to contain + +1. Material, something that describes an Actor properties (e.g. mass, stiffness, fragility) which are not expected to be changed often. + +2. Damage description, something that describes a particular damage event (e.g. position, radius and force of explosion). + +For example: + +\code + NvBlastExtMaterial material = { health, minDamageThreshold, maxDamageThreshold }; + NvBlastExtRadialDamageDesc damageDesc = { compressive, posX, posY, posZ, minR, maxR }; +\endcode + +When used with TkActor::damage() functions, TkActor will cache the necessary data for deferred processing through TkGroup. This includes accumulating damage requests for +the same material and program parameter combination. A default material can be set for a TkFamily that all its Actors uses. + +A Tk layer example follows. + +\code + tkGroup->addActor(*tkActor); + tkActor->damage(damageProgram, damageDesc0, sizeof(NvBlastExtRadialDamageDesc), &material); + tkActor->damage(damageProgram, damageDesc1, sizeof(NvBlastExtRadialDamageDesc), &material); + tkGroup->process(); +\endcode + +In contrast, the user is responsible for providing all the damage descriptions persisting through the low-level NvBlastActorGenerateFracture call when not using the Tk layer: + +\code + NvBlastProgramParams programParams = { damageDescs, 2, &material }; + NvBlastActorGenerateFracture(commandBuffers, actor, damageProgram, &programParams, nullptr, nullptr); +\endcode + +*/ |