0031096: Visualization, TKOpenGl - support metallic-roughness texture mapping
[occt.git] / src / Graphic3d / Graphic3d_TextureUnit.hxx
index 477147b..f554b8e 100644 (file)
@@ -35,17 +35,54 @@ enum Graphic3d_TextureUnit
   Graphic3d_TextureUnit_14,
   Graphic3d_TextureUnit_15,
 
-  Graphic3d_TextureUnit_BaseColor         = Graphic3d_TextureUnit_0, //!< base color of the material
-  //Graphic3d_TextureUnit_Normal            = Graphic3d_TextureUnit_1, //!< tangent space normal map
-  //Graphic3d_TextureUnit_MetallicRoughness = Graphic3d_TextureUnit_2, //!< metalness+roughness of the material
-  //Graphic3d_TextureUnit_Emissive          = Graphic3d_TextureUnit_3, //!< emissive map controls the color and intensity of the light being emitted by the material
-  //Graphic3d_TextureUnit_Occlusion         = Graphic3d_TextureUnit_4, //!< occlusion map indicating areas of indirect lighting
+  // aliases
 
-  Graphic3d_TextureUnit_EnvMap = Graphic3d_TextureUnit_0  //!< environment cubemap for background
+  //! sampler2D occSamplerBaseColor.
+  //! RGB(A) base color of the material and alpha mask/opacity.
+  Graphic3d_TextureUnit_BaseColor = Graphic3d_TextureUnit_0,
+  //! sampler2D occSamplerEmissive.
+  //! RGB emissive map controls the color and intensity of the light being emitted by the material.
+  Graphic3d_TextureUnit_Emissive  = Graphic3d_TextureUnit_1,
+  //! sampler2D occSamplerOcclusion.
+  //! Occlusion map indicating areas of indirect lighting.
+  //! Encoded into RED channel, with 1.0 meaning no occlusion (full color intensity) and 0.0 complete occlusion (black).
+  Graphic3d_TextureUnit_Occlusion = Graphic3d_TextureUnit_2,
+  //! sampler2D occSamplerNormal.
+  //! XYZ tangent space normal map.
+  Graphic3d_TextureUnit_Normal    = Graphic3d_TextureUnit_3,
+  //! sampler2D occSamplerMetallicRoughness.
+  //! Metalness + roughness of the material.
+  //! Encoded into GREEN (roughness) + BLUE (metallic) channels,
+  //! so that it can be optionally combined with occlusion texture (RED channel).
+  Graphic3d_TextureUnit_MetallicRoughness = Graphic3d_TextureUnit_4,
+
+  //! samplerCube occSampler0.
+  //! Environment cubemap for background. Rendered by dedicated program and normally occupies first texture unit.
+  Graphic3d_TextureUnit_EnvMap = Graphic3d_TextureUnit_0,
+
+  //! sampler2D occSamplerPointSprite.
+  //! Sprite alpha-mask or RGBA image mapped using point UV, additional to BaseColor (mapping using vertex UV).
+  //! This texture unit is set Graphic3d_TextureUnit_1, so that it can be combined with Graphic3d_TextureUnit_BaseColor,
+  //! while other texture maps (normal map and others) are unexpected and unsupported for points.
+  //! Note that it can be overridden to Graphic3d_TextureUnit_0 for FFP fallback on hardware without multi-texturing.
+  Graphic3d_TextureUnit_PointSprite = Graphic3d_TextureUnit_1,
+
+  //! sampler2D occEnvLUT.
+  //! Lookup table for approximated PBR environment lighting.
+  //! Configured as index at the end of available texture units - 3.
+  Graphic3d_TextureUnit_PbrEnvironmentLUT = -3,
+  //! sampler2D occDiffIBLMapSHCoeffs.
+  //! Diffuse (irradiance) IBL map's spherical harmonics coefficients baked for PBR from environment cubemap image.
+  //! Configured as index at the end of available texture units - 2.
+  Graphic3d_TextureUnit_PbrIblDiffuseSH   = -2,
+  //! samplerCube occSpecIBLMap.
+  //! Specular IBL (Image-Based Lighting) environment map baked for PBR from environment cubemap image.
+  //! Configured as index at the end of available texture units - 1.
+  Graphic3d_TextureUnit_PbrIblSpecular    = -1,
 };
 enum
 {
-  Graphic3d_TextureUnit_NB = Graphic3d_TextureUnit_15 + 1
+  Graphic3d_TextureUnit_NB = Graphic3d_TextureUnit_15 + 1,
 };
 
 #endif // _Graphic3d_TextureUnit_HeaderFile