| Field | Type | Offset | Description | Notes |
|---|---|---|---|---|
| textureId | s32 | 0x0 | Texture ID | |
| dmypolyId | s32 | 0x4 | Dummy polygon ID for decal generation. If specified by TAE, it will be the value of TAE. | |
| pitchAngle | f32 | 0x8 | The reference angle offset (up and down). In degrees | |
| yawAngle | f32 | 0xc | The reference angle offset (left and right). In degrees | |
| nearDistance | f32 | 0x10 | Decal placement near distance. In metres. | |
| farDistance | f32 | 0x14 | Decal placement far distance. In metres. | |
| nearSize | f32 | 0x18 | Size at the near distance. In metres. | |
| farSize | f32 | 0x1c | Size at the far distance. In metres. | |
| maskSpeffectId | s32 | 0x20 | If SpEffect ID is not -1, then decal is only applied if the specified SpEffect is present. | This field refers to the following params: SpEffectParam |
| pad_10 | u32 | 0x24 [0-3] | This field is padding. | |
| replaceTextureId_byMaterial | u32 | 0x24 [4] | When generated by an attack hit, change the texture depending on the defense material in 1. New texture ID = blood material ID * 10000000 + original texture ID | |
| dmypolyCategory | u32 | 0x24 [5-6] | Where to search for the dummy polygon ID. | This field uses the following enum: DECAL_DUMMY_SEARCH_TYPE |
| pad_05 | u32 | 0x24 [7-10] | This field is padding. | |
| useDeferredDecal | u32 | 0x24 [11] | If ON, acts as a deferred decal. | This field is a boolean. |
| usePaintDecal | u32 | 0x24 [12] | If ON, acts as a paint decal. | This field is a boolean. |
| bloodTypeEnable | u32 | 0x24 [13] | Affected by optional blood decal, ID +1000 in mild, cannot be pasted if hidden. | This field is a boolean. |
| bUseNormal | u32 | 0x24 [14] | If ON, use normal mask (supports normal and shininess texture). | This field is a boolean. |
| pad_08 | u32 | 0x24 [15] | This field is padding. | |
| pad_09 | u32 | 0x24 [16] | This field is padding. | |
| usePom | u32 | 0x24 [17] | If ON, use parallel occlusion mapping. | This field is a boolean. |
| useEmissive | u32 | 0x24 [18] | If ON, use emissive mask. | This field is a boolean. |
| putVertical | u32 | 0x24 [19] | Enable if the decal is to be placed vertically. | This field is a boolean. |
| randomSizeMin | s16 | 0x28 | When placing the decal, what is the minimum scale it can be randomly placed at. | |
| randomSizeMax | s16 | 0x2a | When placing the decal, what is the minimum scale it can be randomly placed at. | |
| randomRollMin | f32 | 0x2c | When placing the decal, what is the minimum roll angle it can be randomly placed at. In degrees. | |
| randomRollMax | f32 | 0x30 | When placing the decal, what is the maximum roll angle it can be randomly placed at. In degrees. | |
| randomPitchMin | f32 | 0x34 | When placing the decal, what is the minimum pitch angle it can be randomly placed at. In degrees. | |
| randomPitchMax | f32 | 0x38 | When placing the decal, what is the maximum pitch angle it can be randomly placed at. In degrees. | |
| randomYawMin | f32 | 0x3c | When placing the decal, what is the minimum yaw angle it can be randomly placed at. In degrees. | |
| randomYawMax | f32 | 0x40 | When placing the decal, what is the maximum yaw angle it can be randomly placed at. In degrees. | |
| pomHightScale | f32 | 0x44 | The height scale to use with parallel occlusion mapping. | |
| pomSampleMin | u8 | 0x48 | The minimum sample count to use with parallel occlusion mapping. | |
| pomSampleMax | u8 | 0x49 | The maximum sample count to use with parallel occlusion mapping. | |
| blendMode | s8 | 0x4a | Blend mode to use for this decal. | This field uses the following enum: DECAL_PARAM_BLEND_MODE |
| appearDirType | s8 | 0x4b | Reference coordinates that determine the direction in which the decal will fly. | This field uses the following enum: DECAL_PARAM_DIR_TYPE |
| emissiveValueBegin | f32 | 0x4c | The start value used in the emissive mask. | |
| emissiveValueEnd | f32 | 0x50 | The end value used in the emissive mask. | |
| emissiveTime | f32 | 0x54 | The interpolation time from start value to end value. | |
| bIntpEnable | u8 | 0x58 | Do you generate at the time when the bar is extended due to the decal generation via TAE? | This field is a boolean. |
| bIntpEnable_forTank | u8 | 0x59 | Do you generate at the time when the bar is extended due to the decal generation via TAE? | This field is a boolean. |
| pad_01 | dummy8 | 0x5a | This field is padding. | |
| intpIntervalDist | f32 | 0x5c | Distance to interpolate decals generated between TAE bars when interpolation is enabled. In metres. | |
| beginIntpTextureId | s32 | 0x60 | Texture ID at the start of interpolation (-1 uses textureID). | |
| endIntpTextureId | s32 | 0x64 | Texture at the end of interpolation Texture ID (-1 uses textureID). | |
| appearSfxId | s32 | 0x68 | SFXID issued when the decal is placed (-1 means none). | This field takes an Particle ID. |
| appearSfxOffsetPos | f32 | 0x6c | Offset distance applied to the SFX generation position | |
| maskTextureId | s32 | 0x70 | Mask texture ID (-1 uses textureID). | |
| diffuseTextureId | s32 | 0x74 | Albedo texture ID (-1 uses textureID). | |
| metallicTextureId | s32 | 0x78 | ||
| maskScale | f32 | 0x7c | Mask strength (currently valid only with deferred decals) | |
| normalTextureId | s32 | 0x80 | Normal texture ID (-1 uses textureID). | |
| heightTextureId | s32 | 0x84 | Displacement texture ID (-1 uses textureID). | |
| emissiveTextureId | s32 | 0x88 | Emissive texture ID (-1 uses textureID). | |
| diffuseColorR | u8 | 0x8c | Albedo color R | |
| diffuseColorG | u8 | 0x8d | Albedo color G | |
| diffuseColorB | u8 | 0x8e | Albedo color B | |
| bLifeEnable | u8 | 0x8f | Is a duration set? | This field is a boolean. |
| metallicScale | f32 | 0x90 | Metallic scale (1.0 equal size) | |
| siniScale | f32 | 0x94 | The strength of shininess. | |
| lifeTimeSec | f32 | 0x98 | The duration of the decal after placement. In seconds. | |
| fadeOutTimeSec | f32 | 0x9c | Fade out time for the decal. In seconds. | |
| priority | s16 | 0xa0 | Decals with a priority higher than others will stay over lower priorities. (-1 does not disappear) | |
| bDistThinOutEnable | u8 | 0xa2 | Whether to thin out nearby decals after placement. | This field is a boolean. |
| bAlignedTexRandomVariationEnable | u8 | 0xa3 | If ON, one variation number randomly determined for each texture other than 0 will be applied. The number of non-zero variations must be the same. | This field is a boolean. |
| distThinOutCheckDist | f32 | 0xa4 | The distance at which decals are checked and subsequently thinned-out. | |
| distThinOutCheckAngleDeg | f32 | 0xa8 | The angle from the placed decal at which decals are checked and subsequently thinned-out. | |
| distThinOutMaxNum | u8 | 0xac | If the angle is greater than or equal to this number, thin out | |
| distThinOutCheckNum | u8 | 0xad | How many recent items should be checked for thinning? | |
| delayAppearFrame | s16 | 0xae | When trying to apply a decal, it actually gets applied after this frame. Based on 30 FPS. | |
| randVaria_Diffuse | u32 | 0xb0 [0-3] | Number of random variations of albedo texture (including 0th, 2 for 2 textures) | |
| randVaria_Mask | u32 | 0xb0 [4-7] | Number of random variations of mask texture (including 0th, 2 for 2 textures) | |
| randVaria_metallic | u32 | 0xb0 [8-11] | ||
| pad_12 | u32 | 0xb0 [12-15] | This field is padding. | |
| randVaria_Normal | u32 | 0xb0 [16-19] | Number of random variations of normal texture (including 0th, 2 for 2 textures) | |
| randVaria_Height | u32 | 0xb0 [20-23] | Number of random variations of displacement texture (including 0th, 2 for 2 textures) | |
| randVaria_Emissive | u32 | 0xb0 [24-27] | Number of random variations of emissive textures (including 0th, 2 for 2 textures) | |
| pad_11 | u32 | 0xb0 [28-31] | This field is padding. | |
| fadeInTimeSec | f32 | 0xb4 | Fade in time for the decal. In seconds. | |
| thinOutOverlapMultiRadius | f32 | 0xb8 | Determine if it is a duplicate within the range of decal size multiplied by this value | |
| thinOutNeighborAddRadius | f32 | 0xbc | Determine if it is nearby based on the decal size plus this distance. In metres. | |
| thinOutOverlapLimitNum | u32 | 0xc0 | The number of decals that can be duplicated within the overlap radius. | |
| thinOutNeighborLimitNum | u32 | 0xc4 | The number of decals that can be duplicated within the neighbor radius. | |
| thinOutMode | s8 | 0xc8 | Thinning mode for the decal. | This field uses the following enum: DECAL_PARAM_THIN_OUT_MODE |
| emissiveColorR | u8 | 0xc9 | Emissive color R | |
| emissiveColorG | u8 | 0xca | Emissive color G | |
| emissiveColorB | u8 | 0xcb | Emissive color B | |
| maxDecalSfxCreatableSlopeAngleDeg | f32 | 0xcc | The maximum angle limit when generating the decal particle. | |
| appearAssetId | s32 | 0xd0 | The asset to generate when the decal is placed. | |
| assetPitchAngleDeg | f32 | 0xd4 | Random placement for the asset. The reference angle offset (up and down). In degrees | |
| assetYawAngleDeg | f32 | 0xd8 | Random placement for the asset. The reference angle offset (up and down). In degrees | |
| assetMinAppearTimeSec | f32 | 0xdc | Random placement for the asset. The minimum time the generated asset is displayed for. In seconds. | |
| assetMaxAppearTimeSec | f32 | 0xe0 | Random placement for the asset. The maximum time the generated asset is displayed for. In seconds. | |
| assetMinFadeTimeSec | f32 | 0xe4 | Random placement for the asset. The minimum time the generated asset is faded by. In seconds. | |
| assetMaxFadeTimeSec | f32 | 0xe8 | Random placement for the asset. The maximum time the generated asset is faded by. In seconds. | |
| assetMinAnimId | s32 | 0xec | Random playback will be performed from animations with IDs between the lower limit and above and the upper limit. If the upper limit is -1, try to play the animation for this item. | |
| assetMaxAnimId | s32 | 0xf0 | Random playback will be performed from animations with IDs between the lower limit and above and the upper limit. If the lower limit is -1, try to play the animation for this item. | |
| refParamId | s32 | 0xf4 | ID of decal to reference (if -1, other entered number will be used). | This field refers to the following params: DecalParam |
| pad_02 | dummy8 | 0xf8 | This field is padding. |
| Option | Description | Notes |
|---|---|---|
1 | Transparency | |
2 | Multiply |
| Option | Description | Notes |
|---|---|---|
0 | Local | |
1 | Map Global | |
2 | Attacker Model Global | |
3 | Damaged Model Global | |
4 | Local Axis of Bullet |
| Option | Description | Notes |
|---|---|---|
0 | Delete | |
1 | Do not Generate |
| Option | Description | Notes |
|---|---|---|
0 | Body | |
1 | Left-hand Weapon | |
2 | Right-hand Weapon |