Difference between revisions of "Arcane University:NetImmerse Format/BSLightingShaderProperty"
(→Shader flags: fix arg) |
(→Environment map: better image description) |
||
| Line 25: | Line 25: | ||
=== Environment map === | === Environment map === | ||
| − | [[File:EnvShader1.png|thumb|upright=2|Dwarven armor comparison]] | + | [[File:EnvShader1.png|thumb|upright=2|Dwarven armor comparison, showing the cumulative effects of specular and environment mapping.]] |
The environment map shader is also quite common. It provides a method of simulating reflectivity by using a prerendered environment texture as the reflection. This is applied additively to the mesh. It is commonly used for metals, ore, and ice. Shapes using the environment map shader should have diffuse, combined normal/specular, environment, and environment mask textures. The environment mask texture is used to define how strongly the cubemap is blended per texel. If no environment mask is assigned, the shader falls back on the specular map as a mask. The environment map shader is incompatible with glow mapping, so if you have a mesh for which you want to use both effects, you have to split it into parts, or overlay a partially transparent mesh. | The environment map shader is also quite common. It provides a method of simulating reflectivity by using a prerendered environment texture as the reflection. This is applied additively to the mesh. It is commonly used for metals, ore, and ice. Shapes using the environment map shader should have diffuse, combined normal/specular, environment, and environment mask textures. The environment mask texture is used to define how strongly the cubemap is blended per texel. If no environment mask is assigned, the shader falls back on the specular map as a mask. The environment map shader is incompatible with glow mapping, so if you have a mesh for which you want to use both effects, you have to split it into parts, or overlay a partially transparent mesh. | ||
Latest revision as of 15:30, 1 December 2025
The BSLightingShaderProperty is the most common type of shader property used in Skyrim nifs. It defines the attributes of the material which is used for shading the mesh. It is suitable for most tangible objects. For objects which require more elaborate blending effects, an effect shader may be better.
Contents
[edit]
Some fields are present only for certain shader types, and some are always present. Fields which are always present are outlined below:
- UV Offset: How much to offset the UV map.
- UV Scale: How much to scale the UV map.
- Texture Set: Which textures to use. This block can be shared among multiple shader properties within the nif, saving a small amount of memory and making it slightly easier to make changes if multiple shapes in the nif use the same textures.
- Emissive Color: Color of any glow effects. If the shader type is not "Glow Shader," it will make the whole mesh glow.
- Emissive Multiple: Multiplier on glow intensity.
- Texture Clamp Mode: Whether to clamp or wrap the UVs for vertices which fall outside the 0.0-1.0 range. Tiling textures must use wrapping. Non-tiling may use either wrap or clamp, but may be slightly more performant using clamp.
- Alpha: Overall opacity of the TriShape, zero being fully transparent, and one being fully opaque. Can be buggy, so use an alpha property instead whenever possible.
- Refraction Strength: Ranges from zero to 1.testing needed
- Glossiness: Inverse width of the specular highlight. Higher values are narrower, lower values are wider.
- Specular Color: The color of the specular highlight.
- Specular Strength: Multiplier on specular highlight intensity. Values between 0.25 and 1 are typical.
- Lighting Effect 1: Soft lighting intensity (must use soft lighting shader flag). Adds a glow through the object to simulate light being diffused and passing through the object. This is good for simulating translucence on objects such as leaves.
- Lighting Effect 2: Rim lighting intensity (must use rim lighting shader flag). Rim lighting is only visible when light is on the opposite side of the mesh and simulates light bending around the object and lighting it at the edges.
Shader types[edit]
There are several overall shader types which you can choose from. They are ordered here and in NifSkope generally from most common to least common. Each one uses the textures in its child block BSTextureSet slightly differently.
Default[edit]
The default shader is the most commonly used. It is good for most solid objects which do not require any additional shading effects. Shapes using the default shader should have a diffuse texture and combined normal/specular texture.
Environment map[edit]
The environment map shader is also quite common. It provides a method of simulating reflectivity by using a prerendered environment texture as the reflection. This is applied additively to the mesh. It is commonly used for metals, ore, and ice. Shapes using the environment map shader should have diffuse, combined normal/specular, environment, and environment mask textures. The environment mask texture is used to define how strongly the cubemap is blended per texel. If no environment mask is assigned, the shader falls back on the specular map as a mask. The environment map shader is incompatible with glow mapping, so if you have a mesh for which you want to use both effects, you have to split it into parts, or overlay a partially transparent mesh.
To use the Environment Map shader, set the shader type and the Environment Map shader flag, and make sure the Glow Map shader flag is not set.
Fields added:
- Environment Map Scale: Multiplier on environment map intensity. Values between 0.25 and 2 are typical.
Glow shader[edit]
The glow shader is another very common shader type. This shader allows per-texel glow on a mesh, rather than simply full-mesh glow. The effect is applied additively using the color map in texture slot 2. Emissive multiple can be animated for a puslating glow effect.
To use the glow shader, set the shader type and the Glow Map shader flag, and make sure the Environment Map shader flag is not set.
Parallax[edit]
The parallax shader was used in Skyrim, but is broken in Special Edition. Enabling it requires either the SSE Parallax Shader Fix mod or ENB. It uses a single channel (grayscale) texture from slot 3. Zero (black) is maximum depth, one (white) is maximum height, and 0.5 (gray) is neutral.
Face Tint[edit]
Skin Tint[edit]
Hair Tint[edit]
Multilayer parallax[edit]
The multilayer parallax shader is one of the more complex shaders, but can look quite nice when set up properly. It provides a method of faking translucency and depth within a mesh, using a second diffuse texture, parallax, and refraction. It is useful for things like ice. The frost atronach is a great example from Skyrim to look at. It also allows for environment mapping on the outer mesh. To use the multilayer parallax shader, set the shader type, and add the multi layer parallax, rim lighting, and back lighting shader flags. The textures are set up as follows:
- Slot 0: Diffuse: A typical diffuse texture for the outer layer. It must have alpha transparency in order for the inner layer to be visible. No alpha property is needed here.
- Slot 1: Normal / Gloss: The typical combined normal + gloss map.
- Slot 2: Subsurface Color: Subsurface color map?testing needed Often uses the same texture as slot 7.
- Slot 3: Not used.
- Slot 4: Environment: The typical environment, or cubemap, texture.
- Slot 5: Not used.
- Slot 6: Multilayer: The inner layer diffuse. This texture can be scaled and refracted using the shader settings.
- Slot 7: Subsurface Color Tint: Subsurface color map. This functions similarly to rim lighting. It is blended additively around the edges of the mesh, giving the appearance of light being tinted as it passes through thin parts of the mesh.
Fields added:
- Parallax inner layer thickness: The apparent depth of the inner layer.
- Parallax refraction scale: How much to refract the inner layer. Ranges from 0.0 (no refraction) to 1.0 (extreme refraction).
- Parallax inner layer texture scale: Scale of the inner layer UV map.
- Parallax envmap strength: Multiplier on environment map intensity, same as the regular Environment Map shader.testing needed
Eye envmap[edit]
Shader flags[edit]
Shader flags are divided into two fields: Shader Flags 1 and Shader Flags 2. Only flags which are valid for lighting shaders are shown; flags which are valid only for effect shaders are omitted.
Shader flags 1[edit]
- Specular: Enables specularity.
- Skinned: Enables skinning (rigged meshes).
- Temp refraction: Refraction gives overall transparency, but the separate refraction setting is used. Deprecated?testing needed
- Vertex alpha: Enables vertex alpha, either for transparency or for leaf animations. However, if the shape has an alpha property, the shape will have transparency in game even if this flag is not set.
- Environment mapping: Enables environment map with the corresponding shader type.
- Receive shadows: Enables receiving shadows on this mesh.
- Cast shadows: Enables casting shadows. Does nothing in Special Edition, effectively always enabled (looks like it works in CK though!).
- Facegen detail map: Enables face detail map in slot 4.
- Parallax: Enables parallax shader with the corresponding shader type.
- Model space normals: Uses model space normals in slot 1 and a separate specular map in slot 7.
- Non projective shadows: Prevents shadows from being cast from this object onto the environment.testing needed
- Landscape: Unknown.
- Refraction: Use normal map for refraction effect.
- Fire Refraction: Enables animated scrolling refraction effect.
- Eye environment mapping: Enables eye environment mapping with the corresponding shader type. Model must also be skinned.
- Hair soft lighting: Enables soft lighting for hair (keeps it from getting too bright under lights).
- Screendoor alpha fade: Unknown.
- Localmap hide secret: Hides this object and anything beneath it from the local map.
- Facegen RGB tint: Enables tint mask for faces, with the corresponding shader type.
- Own emit: Provides its own emittance color? Seems to be set on virtually all skyrim shapes.
- Multiple Textures: Unknown.
- Remappable Textures: Enables swapping of textures using TextureSets.
- Decal: Helps prevent z-fighting by making this shape appear on top of nearby shapes if they get too close together in the z order.
- Dynamic decal: Same as above?
- Parallax Occlusion: Unknown.
- External Emittance: Enables receiving external emittance data for this shape, with the corresponding BSXFlag.
- Soft effect: Unknown.
- ZBuffer test: Enables depth testing.
Shader flags 2[edit]
- ZBuffer write: Enables writing to the depth buffer.
- LOD landscape: Enables landscape LOD shader.
- LOD Objects: Enables object LOD shader.
- No Fade: Disables fading of the object, even if its root is a BSFadeNode.
- Double Sided: Enables double sided rendering. The backface will have reversed normals, so it's only good for minor details. If the player is really going to look at the back side, make it a true double sided mesh instead.
- Vertex Colors: Enables vertex colors. They are blended multiplicatively, so if the mesh has no vertex colors, they will be interpreted as all zeroes and the mesh will appear black in game.
- Glow map: Enables glow shader.
- Assume shadowmask: Allows shapes with alpha blending to receive shadows.
- Packed tangent: Unknown.
- Multi index snow: Unknown.
- Vertex lighting: Enables vertex lighting using vertex colors as a source?testing needed
- Uniform scale: Unknown.
- Fit Slope: Unknown.
- Billboard: Billboard mesh?
- No LOD land blend: Prevents landscape from smooth fading into nearby landscape LOD, engine only.
- EnvMap light fade: Fades the cubemap's brightness based on the distance to the nearest light. Makes environment mapped shapes not "glow" at all times. This flag is set on virtually all Skyrim shapes, but is probably only necessary when using the environment map shader.
- Wireframe: Enables wireframe rendering?testing needed
- Weapon blood: Used for blood decals on weapons.
- Hide on local map: Similar to Localmap hide secret, but only for self?testing needed
- Premult alpha: Enables premultiplied alpha.
- Cloud LOD: Unknown.
- Anisotropic lighting: Unknown. Used for hair?
- No transparency multisampling: Unknown.
- Unused01: Unused.
- Multi layer parallax: Enables multilayer parallax shader.
- Soft lighting: Enables soft lighting effect.
- Rim lighting: Enables rim lighting effect.
- Back lighting: Enables back lighting effect.
- Unused02: Unused.
- Tree anim: Enables tree/leaf animation, using vertex alpha values. Root node must be either BSTreeNode or BSLeafAnimNode.
- HD LOD Objects: Unknown.
Further Reading[edit]
- BSLightingShaderProperty Basics: explains further about BSLightingShaderProperty node and its uses. Includes image examples.