aboutsummaryrefslogtreecommitdiff
path: root/docs/_source/ext_shaders.txt
diff options
context:
space:
mode:
authorAnton Novoselov <[email protected]>2017-08-01 12:53:38 +0300
committerAnton Novoselov <[email protected]>2017-08-01 12:53:38 +0300
commit236f03c0b9a4982328ed1201978f7f69d192d9b2 (patch)
treee486f2fa39dba203563895541e92c60ed3e25759 /docs/_source/ext_shaders.txt
parentAdded screens to welcome page (diff)
downloadblast-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.txt46
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
+
+*/