Difference between revisions of "Arcane University:NetImmerse Format/BSLightingShaderProperty"

The Beyond Skyrim Wiki — Hosted by UESP
Jump to: navigation, search
(move from nif page)
 
m (Shader Flags 1: typo)
 
(17 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[File:BSshadertypes01.png|right]]  
+
The '''BSLightingShaderProperty''' is the most common type of [[AU:NetImmerse Format#Shader properties|shader property]] used in Skyrim [[AU:nif|nif]]s. 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 [[AU:effect shader|effect shader]] may be better.
  
Here you can see the available shader types of a BSLightingShaderProperty. They also need specific shader flags to be set and specific texture maps. Some are essential, others optional. These are all the available Shader Flags for Skyrim:
+
== Shader Types ==
 +
There are several overall shader types which you can choose from. They are ordered here and in [[AU:NifSkope|NifSkope]] generally from most common to least common. Each one uses the textures in its child block BSTextureSet slightly differently. Some of the data which is used in common across different shader types is outlined below:
  
[[File:BSshadersFlagsExport.png]]
+
* '''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.{{tn|Needs testing for exact behavior}}
 +
* '''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.
  
Commonly used in Skyrim are Default shader type (“0”) and Environment Map shader type (“1”). Green shows you those who are essential for exporting a default type mesh successfully, the minimum to be set. Pink are those commonly used additional options for Lighting, environment mapping, or weighting (rigging), glow effects. There are more advanced features like multilayer parallax, but the intention of this short tutorial is, to give people a quick and solid introduction into the rendering settings for meshes used in Skyrim, which are unlike the more recent PBR Systems. You set your mesh shader property type in BSLightingShaderProperties. Note that each NiTriShape can only have one shader type and a small range of optional shader flags and use specific controllers (properties seen below).
+
=== Default ===
 +
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.
  
[[File:BScontrollers01.png]]
+
=== Environment Map ===
 +
[[File:EnvShader1.png|thumb|upright=2|Dwarven armor comparison]]
 +
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 standard for the '''Glossiness''' value is 100. It ranged between 0 and 999.
+
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.
* '''Specular Strength''' ranges from 0 to 10 but 2 would already be very strong, 1 being the default.
 
* '''Refraction Strength''' ranges from 0 to 1. 1 being absolute transparency.
 
* '''Alpha''' also does transparency but in a different way.
 
* '''Emissive Colour''' and '''Specular Colour''' are the RGB values that are shining or reflecting when looking straight at the mesh.
 
* '''UV Scale''' is the scaling size of the UV map. You can right-click on your mesh in the render window and chose textures / UV map and manually edit it, rotate, and scale it.
 
  
The most commonly used BSLightingShaderProperties are Default shader type (“0”) and Environment Map shader type (“1”). You set your mesh shader property type in BSLightingShaderProperties. Note that each NiTriShape can only have one shader type and a small range of optional shader flags and use specific controllers(see below). But, if needed, you can simply use multiple NiTriShapes combined on top of each other. As an example, it might make sense to split your mesh into subsections by material (metal, leather) and export each as a different NiTriShape (first sublevel) into the same mesh. Consider a leather armor for instance. I would suggest having an organic leather/cloth part (which usually absorbs light to a high degree and would use the default shader type) and the metal elements (which would reflect light stronger and profit from cube maps used in the environment map shader type).
+
Values added:
 +
* '''Environment Map Scale''': Multiplier on environment map intensity. Values between 0.25 and 2 are typical.
  
====Default Shader====
+
=== Glow Shader ===
 +
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 [[AU:texture slot#Slot 2: Glow|texture slot 2]]. Emissive multiple can be animated for a puslating glow effect.
  
* Name: Default Shader Type (0)
+
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.
* used for: Assets with color, height, and specularity.
 
* common examples: rocks, clothes, furniture, stones, plants, sometimes metals if specularity is done in a way that can pretend metallic reflections.
 
* necessary slots: Slot1) base color/diffuse map AND Slot2) normal map with specularity in alpha channel (optional)
 
* necessary flags: those who are marked green above under shader flags, for export; and additionally what you need (vertex paint, specularity for example, if you learned how to apply these)
 
  
[[File:DefaultShaderExample01.jpg]]
+
=== Parallax ===
[[File:DefaultShaderExample02.png]]
+
The parallax shader was used in Skyrim, but is broken in Special Edition. Enabling it requires either the [https://www.nexusmods.com/skyrimspecialedition/mods/31963 SSE Parallax Shader Fix] mod or ENB. It uses a single channel (grayscale) texture from [[AU:texture slot#Slot 3: Height / Parallax|slot 3]]. Zero (black) is maximum depth, one (white) is maximum height, and 0.5 (gray) is neutral.
  
A House as an example and the shader flags and lighting properties.
+
=== Face Tint ===
  
[[File:DefaultShaderExample03.png]]
+
=== Skin Tint ===
[[File:DefaultShaderExample04.png]]
 
  
The texture set of a default shader set, consisting of a diffuse and normal map.
+
=== Hair Tint ===
  
====Environmental Shader====
+
=== Multilayer Parallax ===
 +
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?{{tn|Nifskope shows no effect from this texture. Needs to be tested in game.}} 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.
  
* Name: Environment Map Shader Type (1)
+
Fields added:
* used for: Assets with colour, height, and specularity and additional shininess or gloss.
+
* '''Parallax inner layer thickness''': The apparent depth of the inner layer.
* common examples: Metals, Chitin, Ore, Armours, Glass, Mirrors, Ice (more stable and consistent with ENBs than parallax)
+
* '''Parallax refraction scale''': How much to refract the inner layer. Ranges from 0.0 (no refraction) to 1.0 (extreme refraction).
* necessary slots: Slot 1) base color/diffuse map AND Slot 2) normal map with specularity in alpha channel (optional) AND environmental/cube map (slot 5) (DTX1, see DDS Texture files for details) AND optional: an environment mask (_m or _em), that sets which areas are reflective (Slot 6)
+
* '''Parallax inner layer texture scale''': Scale of the inner layer UV map.
* necessary flags: SLSF1_Environment_Mapping, SLSF2_Glow_Map disabled
+
* '''Parallax envmap strength''': Multiplier on environment map intensity, same as the regular Environment Map shader.{{tn|Nifskope does not show this effect. Needs to be tested in game.}}
* controllers: Environmental Map Scale; 1 is normal intensity, less is lower intensity, greater is higher intensity.
 
  
[[File:envShader1.png]]
+
=== Eye Envmap ===
  
Dwemer armour only with slot 1 and slot 2 (diffuse and normal); Dwemer armour with additional m map in slot 6; Dwemer armour with additional cube map on top of that in slot 5.
+
== Shader Flags ==
 +
Shader flags are divided into two fields: Shader Flags 1 and Shader Flags 2.
  
[[File:EnvShader2.png]]
+
=== Shader Flags 1 ===
 +
* '''Specular''': Enables specularity.
 +
* '''Skinned''': Enables skinning (rigged meshes).
 +
* '''Temp refraction''': Refraction gives overall transparency, but the separate refraction setting is used. Deprecated?{{tn|Needs to be confirmed.}}
 +
* '''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''.
 +
* '''Grayscale to palette color''': Used only by [[AU:effect shader|effect shader]]s.
 +
* '''Grayscale to palette alpha''': Used only by [[AU:effect shader|effect shader]]s.
 +
* '''Use falloff''': Used only by [[AU:effect shader|effect shader]]s.
 +
* '''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 (looks like it does in CK though!)
 +
* '''Facegen detail map''': Enabled 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.{{tn|Needs to be tested in game.}}
 +
* '''Landscape''': LOD only?{{tn|Needs to be tested.}}
 +
* '''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.
 +
* '''Projected UV''': Used only by [[AU:effect shader|effect shader]]s.
 +
* '''Multiple Textures''': Unknown.
 +
* '''Remappable Textures''': Enables swapping of textures using [https://ck.uesp.net/wiki/TextureSet 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 [[AU:NetImmerse Format#BSXFlags|BSXFlag]].
 +
* '''Soft effect''': Unknown.
 +
* '''ZBuffer test''': Enables depth testing.
  
Ice: Example of BSLightingshaderproperties controller settings. The ice profits from a detailed normal map with a spec map and the resulting specularity and gloss can be set only by these. An ice cubemap is used in slot 5, but no material map in slot 6.
+
=== Shader Flags 2 ===
  
[[File:EnvShader3.png]]
+
== Further Reading ==
 +
*[https://forums.nexusmods.com/index.php?/topic/1188259-bslightingshaderproperty-basics/ BSLightingShaderProperty Basics]: explains further about BSLightingShaderProperty node and its uses. Includes image examples.
  
A typical metal texture set for Skyrim: the rendering will make the diffuse appear much brighter. A lot of detail is being baked into the diffuse. Finally, the sword appears silver-metallic in the game engine.
+
[[Category:Data Format]]
 
 
For how to work on the material map for the roughness and metallic shine, see https://www.youtube.com/watch?v=DWs9rDpA5tQ
 

Latest revision as of 00:13, 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.

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. Some of the data which is used in common across different shader types is 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.

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]

Dwarven armor comparison

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.

Values 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.

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.
  • Grayscale to palette color: Used only by effect shaders.
  • Grayscale to palette alpha: Used only by effect shaders.
  • Use falloff: Used only by effect shaders.
  • 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 (looks like it does in CK though!)
  • Facegen detail map: Enabled 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: LOD only?testing needed
  • 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.
  • Projected UV: Used only by effect shaders.
  • 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]

Further Reading[edit]