41 lines
1.3 KiB
HLSL
41 lines
1.3 KiB
HLSL
![]() |
/******************************************************************************/
|
|||
|
/*
|
|||
|
Project - MudBun
|
|||
|
Publisher - Long Bunny Labs
|
|||
|
http://LongBunnyLabs.com
|
|||
|
Author - Ming-Lun "Allen" Chou
|
|||
|
http://AllenChou.net
|
|||
|
*/
|
|||
|
/******************************************************************************/
|
|||
|
|
|||
|
#ifndef MUDBUN_CUSTOM_BONE
|
|||
|
#define MUDBUN_CUSTOM_BONE
|
|||
|
|
|||
|
// apply bone weights for this brush
|
|||
|
// keep track of the 4 closest brushes (sorted closest first)
|
|||
|
// typically it should just call blend_bone_weight,
|
|||
|
// unless there's more than one bone for the brush (like a curve with multiple control points)
|
|||
|
void apply_custom_brush_bone_weights
|
|||
|
(
|
|||
|
float3 p, // sample position in world space
|
|||
|
float3 pRel, // sample position in brush space
|
|||
|
SdfBrush brush, // brush data (see BrushDefs.cginc for data layout)
|
|||
|
float brushRes, // signed distance from the brush's surface
|
|||
|
inout float4 boneRes, // signed distances from the 4 closest brushes' surface
|
|||
|
inout int4 boneIndex, // indices of the 4 closest brushes
|
|||
|
inout float4 boneWeight // bone weights of the 4 closest brushes
|
|||
|
)
|
|||
|
{
|
|||
|
switch (brush.type)
|
|||
|
{
|
|||
|
default:
|
|||
|
{
|
|||
|
blend_bone_weights(brushRes, brush, brush.boneIndex, boneRes, boneIndex, boneWeight);
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endif
|
|||
|
|