#include "NvBlastTypes.h"#include "NvBlastDebugRender.h"Go to the source code of this file.
| void NvBlastExtCapsuleFalloffGraphShader | ( | NvBlastFractureBuffers * | commandBuffers, | |
| const NvBlastGraphShaderActor * | actor, | |||
| const void * | params | |||
| ) |
Capsule Radial Falloff damage for both graph and subgraph shaders.
For every bond/chunk damage is calculated from the distance to line segment AB described in NvBlastExtCapsuleRadialDamageDesc. If distance is smaller then minRadius, full compressive amount of damage is applied. From minRadius to maxRaidus it linearly falls off to zero.
NOTE: The signature of shader functions are equal to NvBlastGraphShaderFunction and NvBlastSubgraphShaderFunction respectively. They are not expected to be called directly.
| void NvBlastExtCapsuleFalloffSubgraphShader | ( | NvBlastFractureBuffers * | commandBuffers, | |
| const NvBlastSubgraphShaderActor * | actor, | |||
| const void * | params | |||
| ) |
| void NvBlastExtCutterGraphShader | ( | NvBlastFractureBuffers * | commandBuffers, | |
| const NvBlastGraphShaderActor * | actor, | |||
| const void * | params | |||
| ) |
| void NvBlastExtCutterSubgraphShader | ( | NvBlastFractureBuffers * | commandBuffers, | |
| const NvBlastSubgraphShaderActor * | actor, | |||
| const void * | params | |||
| ) |
| NvBlastExtDamageAccelerator* NvBlastExtDamageAcceleratorCreate | ( | const NvBlastAsset * | asset, | |
| int | type | |||
| ) |
| void NvBlastExtFalloffGraphShader | ( | NvBlastFractureBuffers * | commandBuffers, | |
| const NvBlastGraphShaderActor * | actor, | |||
| const void * | params | |||
| ) |
Radial Falloff and Radial Cutter damage for both graph and subgraph shaders.
NOTE: The signature of shader functions are equal to NvBlastGraphShaderFunction and NvBlastSubgraphShaderFunction respectively. They are not expected to be called directly.
| void NvBlastExtFalloffSubgraphShader | ( | NvBlastFractureBuffers * | commandBuffers, | |
| const NvBlastSubgraphShaderActor * | actor, | |||
| const void * | params | |||
| ) |
| void NvBlastExtImpactSpreadGraphShader | ( | NvBlastFractureBuffers * | commandBuffers, | |
| const NvBlastGraphShaderActor * | actor, | |||
| const void * | params | |||
| ) |
Impact Spread Damage Shaders.
It assumes that position is somewhere on the chunk and looks for nearest chunk to this position and damages it. Then it does breadth-first support graph traversal. For radial falloff metric distance is measured along the edges of the graph. That allows to avoid damaging parts which are near in space but disjointed topologically. For example if you hit one column of an arc it would take much bigger radius for damage to travel to the other column than in the simple radial damage.
Shader is designed to be used with impact damage, where it is know in advance that actual hit happened.
This shader requires NvBlastExtDamageAccelerator passed in, it request scratch memory from it, therefore it is also designed to work only in single threaded mode. It can easily be changed by passing scratch memory as a part of NvBlastExtProgramParams if required.
NOTE: The signature of shader functions are equal to NvBlastGraphShaderFunction and NvBlastSubgraphShaderFunction respectively. They are not expected to be called directly.
| void NvBlastExtImpactSpreadSubgraphShader | ( | NvBlastFractureBuffers * | commandBuffers, | |
| const NvBlastSubgraphShaderActor * | actor, | |||
| const void * | params | |||
| ) |
| void NvBlastExtShearGraphShader | ( | NvBlastFractureBuffers * | commandBuffers, | |
| const NvBlastGraphShaderActor * | actor, | |||
| const void * | params | |||
| ) |
Shear Damage Shaders
NOTE: The signature of shader functions are equal to NvBlastGraphShaderFunction and NvBlastSubgraphShaderFunction respectively. They are not expected to be called directly.
| void NvBlastExtShearSubgraphShader | ( | NvBlastFractureBuffers * | commandBuffers, | |
| const NvBlastSubgraphShaderActor * | actor, | |||
| const void * | params | |||
| ) |
| void NvBlastExtTriangleIntersectionGraphShader | ( | NvBlastFractureBuffers * | commandBuffers, | |
| const NvBlastGraphShaderActor * | actor, | |||
| const void * | params | |||
| ) |
Triangle Intersection damage for both graph and subgraph shaders.
Every bond is considered to be a segment connecting two chunk centroids. For every bond (segment) intersection with passed triangle is checked. If intersects full damage is applied on bond. For subgraph shader segments are formed as connections between it's subchunks centroids. Intersection is check in the same fashion.
The idea is that if you want to cut an object say with the laser sword, you can form a triangle by taking the position of a sword on this timeframe and on previous one. So that nothing will be missed in terms of space and time. By sweeping sword through whole object it will be cut in halves inevitably, since all bonds segments form connected graph.
NOTE: The signature of shader functions are equal to NvBlastGraphShaderFunction and NvBlastSubgraphShaderFunction respectively. They are not expected to be called directly.
| void NvBlastExtTriangleIntersectionSubgraphShader | ( | NvBlastFractureBuffers * | commandBuffers, | |
| const NvBlastSubgraphShaderActor * | actor, | |||
| const void * | params | |||
| ) |