// Copyright (c) 2017 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // // This library is free software; you can redistribute it and/or modify it under // the terms of the GNU Lesser General Public License version 2.1 as published // by the Free Software Foundation, with special exception defined in the file // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT // distribution for complete text of the license and disclaimer of any warranty. // // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. #ifndef _Graphic3d_TextureUnit_HeaderFile #define _Graphic3d_TextureUnit_HeaderFile //! Texture unit. enum Graphic3d_TextureUnit { // value as index number Graphic3d_TextureUnit_0, Graphic3d_TextureUnit_1, Graphic3d_TextureUnit_2, Graphic3d_TextureUnit_3, Graphic3d_TextureUnit_4, Graphic3d_TextureUnit_5, Graphic3d_TextureUnit_6, Graphic3d_TextureUnit_7, Graphic3d_TextureUnit_8, Graphic3d_TextureUnit_9, Graphic3d_TextureUnit_10, Graphic3d_TextureUnit_11, Graphic3d_TextureUnit_12, Graphic3d_TextureUnit_13, Graphic3d_TextureUnit_14, Graphic3d_TextureUnit_15, // aliases //! 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, }; #endif // _Graphic3d_TextureUnit_HeaderFile