0031096: Visualization, TKOpenGl - support metallic-roughness texture mapping
[occt.git] / src / Graphic3d / Graphic3d_TextureUnit.hxx
1 // Copyright (c) 2017 OPEN CASCADE SAS
2 //
3 // This file is part of Open CASCADE Technology software library.
4 //
5 // This library is free software; you can redistribute it and/or modify it under
6 // the terms of the GNU Lesser General Public License version 2.1 as published
7 // by the Free Software Foundation, with special exception defined in the file
8 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9 // distribution for complete text of the license and disclaimer of any warranty.
10 //
11 // Alternatively, this file may be used under the terms of Open CASCADE
12 // commercial license or contractual agreement.
13
14 #ifndef _Graphic3d_TextureUnit_HeaderFile
15 #define _Graphic3d_TextureUnit_HeaderFile
16
17 //! Texture unit.
18 enum Graphic3d_TextureUnit
19 {
20   // value as index number
21   Graphic3d_TextureUnit_0,
22   Graphic3d_TextureUnit_1,
23   Graphic3d_TextureUnit_2,
24   Graphic3d_TextureUnit_3,
25   Graphic3d_TextureUnit_4,
26   Graphic3d_TextureUnit_5,
27   Graphic3d_TextureUnit_6,
28   Graphic3d_TextureUnit_7,
29   Graphic3d_TextureUnit_8,
30   Graphic3d_TextureUnit_9,
31   Graphic3d_TextureUnit_10,
32   Graphic3d_TextureUnit_11,
33   Graphic3d_TextureUnit_12,
34   Graphic3d_TextureUnit_13,
35   Graphic3d_TextureUnit_14,
36   Graphic3d_TextureUnit_15,
37
38   // aliases
39
40   //! sampler2D occSamplerBaseColor.
41   //! RGB(A) base color of the material and alpha mask/opacity.
42   Graphic3d_TextureUnit_BaseColor = Graphic3d_TextureUnit_0,
43   //! sampler2D occSamplerEmissive.
44   //! RGB emissive map controls the color and intensity of the light being emitted by the material.
45   Graphic3d_TextureUnit_Emissive  = Graphic3d_TextureUnit_1,
46   //! sampler2D occSamplerOcclusion.
47   //! Occlusion map indicating areas of indirect lighting.
48   //! Encoded into RED channel, with 1.0 meaning no occlusion (full color intensity) and 0.0 complete occlusion (black).
49   Graphic3d_TextureUnit_Occlusion = Graphic3d_TextureUnit_2,
50   //! sampler2D occSamplerNormal.
51   //! XYZ tangent space normal map.
52   Graphic3d_TextureUnit_Normal    = Graphic3d_TextureUnit_3,
53   //! sampler2D occSamplerMetallicRoughness.
54   //! Metalness + roughness of the material.
55   //! Encoded into GREEN (roughness) + BLUE (metallic) channels,
56   //! so that it can be optionally combined with occlusion texture (RED channel).
57   Graphic3d_TextureUnit_MetallicRoughness = Graphic3d_TextureUnit_4,
58
59   //! samplerCube occSampler0.
60   //! Environment cubemap for background. Rendered by dedicated program and normally occupies first texture unit.
61   Graphic3d_TextureUnit_EnvMap = Graphic3d_TextureUnit_0,
62
63   //! sampler2D occSamplerPointSprite.
64   //! Sprite alpha-mask or RGBA image mapped using point UV, additional to BaseColor (mapping using vertex UV).
65   //! This texture unit is set Graphic3d_TextureUnit_1, so that it can be combined with Graphic3d_TextureUnit_BaseColor,
66   //! while other texture maps (normal map and others) are unexpected and unsupported for points.
67   //! Note that it can be overridden to Graphic3d_TextureUnit_0 for FFP fallback on hardware without multi-texturing.
68   Graphic3d_TextureUnit_PointSprite = Graphic3d_TextureUnit_1,
69
70   //! sampler2D occEnvLUT.
71   //! Lookup table for approximated PBR environment lighting.
72   //! Configured as index at the end of available texture units - 3.
73   Graphic3d_TextureUnit_PbrEnvironmentLUT = -3,
74   //! sampler2D occDiffIBLMapSHCoeffs.
75   //! Diffuse (irradiance) IBL map's spherical harmonics coefficients baked for PBR from environment cubemap image.
76   //! Configured as index at the end of available texture units - 2.
77   Graphic3d_TextureUnit_PbrIblDiffuseSH   = -2,
78   //! samplerCube occSpecIBLMap.
79   //! Specular IBL (Image-Based Lighting) environment map baked for PBR from environment cubemap image.
80   //! Configured as index at the end of available texture units - 1.
81   Graphic3d_TextureUnit_PbrIblSpecular    = -1,
82 };
83 enum
84 {
85   Graphic3d_TextureUnit_NB = Graphic3d_TextureUnit_15 + 1,
86 };
87
88 #endif // _Graphic3d_TextureUnit_HeaderFile