Knowledgebase - Skyrim particles & ENB
Posted: 22 Jan 2019, 15:18
I would like to put together a list of known works/doesn't work Skyrim particle light related items. Feel free to post more and I'll add them, or correct any errors I've made.
Last update: 2019/02/15
Change log:
2019/02/15 - added note on alpha blending flags and on effect shader flags which I tested for interference with particle lights
2019/02/02 - corrected note about greyscale textures
2019/01/27 - added note about greyscale textures
2019/01/26 - THIS IS WRONG: "particles from MeshEmitters are not recognized by ENB (emit no light)"
WORKS
- particles from NiParticleSystem are recognized by ENB but particles from BSStripParticleSystem are not
- to have a particle emit Particle light you need the following settings:
-- BSEffectShaderProperty
--- "Soft Effect" flag enabled
--- no greyscale texture and Greyscale_To_PaletteColor / Alpha flags disabled
--- several other flags will also interfere so for my particles I only enable Soft Effect, ZBuffer Test and Vertex Colors
-- NiAlphaProperty
--- flags set to *drumroll* 4109
--- Threshold 128 or less
-- NiPSysData
--- "Has Texture Indices" set to no and subtexture offset zeroed
--- "Aspect Ratio" is best set to 1 and all other aspect settings zeroed or the light may look weird from different angles.
- to have a particle emit Fire light you need the following settings:
-- BSEffectShaderProperty
--- "Soft Effect" flag enabled
--- greyscale texture and greyscale texture flags are OK but not required
--- several other flags will also interfere so for my particles I only enable Soft Effect, ZBuffer Test and Vertex Colors
-- NiAlphaProperty
--- flags set to 4109
--- Threshold 128 or less
-- NiPSysData
--- "Has Texture Indices" set to yes - this is how ENB recognizes the particle as Fire particle. It doesn't matter if the rest of the subtexture data is there or not.
--- "Aspect Ratio" is best set to 1 and all other aspect settings zeroed or the light may look weird from different angles.
- these flags are safe (when enabled the particle still emits light): External_Emittance, Own_Emit, Use_Falloff, Vertex_Alpha | Double_Sided; flags related to "real" meshes (e.g. Specular, Skinned etc) I haven't tested since we assume they are never enabled for particles.
- light color is affected by Emissive color in EffectShaderProperty and by the colors in SimpleColorModifier
- light intensity is affected by the alphas of the colors in the abovementioned blocks and also by Emissive Multiplier in EffectShaderProperty, but most of all - BY INITIAL SIZE in the emitter object. This causes some particle effects which by default use large setting for initial size to emit much more light than they should - the best example is Frost Wall.
- color information in Source Texture in EffectShaderProperty is discarded
- overlapping particles result in more light intensity (I assume it's added up since the blending mode is additive).
DOESN'T WORK
- particles with these flags enabled do not emit light: Decal, Dynamic_Decal | Effect_Lighting
- many meshes which use bilboards with animated textures (rather than particle systems) do not emit light when it looks like they should. I haven't really looked into this yet so I may be wrong. I've been entirely focused on partile systems so far.
ITEMS not directly related to ENB lights
- addonnodes do not work when bone attachment nodes are present in the mesh
- addonnodes do not work in an actor nif
- particle systems can't be inserted directly in actor nif (?) instead they can be added as separate nif - see how the Spriggan is built, an "effects" nif with the particle systems, and a constantly cast ability calling this effect, like an aura.
- saving an actor nif (even with no changes) in NifSkope causes CTD. Maybe caused by auto-sanitization.
Last update: 2019/02/15
Change log:
2019/02/15 - added note on alpha blending flags and on effect shader flags which I tested for interference with particle lights
2019/02/02 - corrected note about greyscale textures
2019/01/27 - added note about greyscale textures
2019/01/26 - THIS IS WRONG: "particles from MeshEmitters are not recognized by ENB (emit no light)"
WORKS
- particles from NiParticleSystem are recognized by ENB but particles from BSStripParticleSystem are not
- to have a particle emit Particle light you need the following settings:
-- BSEffectShaderProperty
--- "Soft Effect" flag enabled
--- no greyscale texture and Greyscale_To_PaletteColor / Alpha flags disabled
--- several other flags will also interfere so for my particles I only enable Soft Effect, ZBuffer Test and Vertex Colors
-- NiAlphaProperty
--- flags set to *drumroll* 4109
--- Threshold 128 or less
-- NiPSysData
--- "Has Texture Indices" set to no and subtexture offset zeroed
--- "Aspect Ratio" is best set to 1 and all other aspect settings zeroed or the light may look weird from different angles.
- to have a particle emit Fire light you need the following settings:
-- BSEffectShaderProperty
--- "Soft Effect" flag enabled
--- greyscale texture and greyscale texture flags are OK but not required
--- several other flags will also interfere so for my particles I only enable Soft Effect, ZBuffer Test and Vertex Colors
-- NiAlphaProperty
--- flags set to 4109
--- Threshold 128 or less
-- NiPSysData
--- "Has Texture Indices" set to yes - this is how ENB recognizes the particle as Fire particle. It doesn't matter if the rest of the subtexture data is there or not.
--- "Aspect Ratio" is best set to 1 and all other aspect settings zeroed or the light may look weird from different angles.
- these flags are safe (when enabled the particle still emits light): External_Emittance, Own_Emit, Use_Falloff, Vertex_Alpha | Double_Sided; flags related to "real" meshes (e.g. Specular, Skinned etc) I haven't tested since we assume they are never enabled for particles.
- light color is affected by Emissive color in EffectShaderProperty and by the colors in SimpleColorModifier
- light intensity is affected by the alphas of the colors in the abovementioned blocks and also by Emissive Multiplier in EffectShaderProperty, but most of all - BY INITIAL SIZE in the emitter object. This causes some particle effects which by default use large setting for initial size to emit much more light than they should - the best example is Frost Wall.
- color information in Source Texture in EffectShaderProperty is discarded
- overlapping particles result in more light intensity (I assume it's added up since the blending mode is additive).
DOESN'T WORK
- particles with these flags enabled do not emit light: Decal, Dynamic_Decal | Effect_Lighting
- many meshes which use bilboards with animated textures (rather than particle systems) do not emit light when it looks like they should. I haven't really looked into this yet so I may be wrong. I've been entirely focused on partile systems so far.
ITEMS not directly related to ENB lights
- addonnodes do not work when bone attachment nodes are present in the mesh
- addonnodes do not work in an actor nif
- particle systems can't be inserted directly in actor nif (?) instead they can be added as separate nif - see how the Spriggan is built, an "effects" nif with the particle systems, and a constantly cast ability calling this effect, like an aura.
- saving an actor nif (even with no changes) in NifSkope causes CTD. Maybe caused by auto-sanitization.