Last updated on
Jul 13, 2023
- Substance 3D home
- Home
- Getting Started
- Getting Started overview
- Activation and licenses
- System requirements
- Project creation
- Export
- Export overview
- Export window
- Export presets
- Export overview
- Glossary
- Performance
- Getting Started overview
- Interface
- Assets
- Substance 3D Assets
- Color picker
- Display settings
- History
- Layer stack
- Main menu
- Project configuration
- Properties
- Settings
- Shader settings
- Texture Set
- Toolbars
- Viewport
- Miscellaneous
- Assets
- Painting
- Painting overview
- Tool list
- Straight line
- Lazy mouse
- Symmetry
- Fill projections
- Presets
- Presets overview
- Creating and saving presets
- Creating particles presets
- Photoshop brush presets (ABR)
- Dynamic strokes
- Advanced channel painting
- Vector graphic (.svg & .ai)
- Text resource
- Effects
- Baking
- Content
- Creating custom effects
- Importing assets
- Creating custom effects
- Features
- Automatic UV Unwrapping
- Physical size
- Smart Materials and Masks
- Subsurface Scattering
- Dynamic Material Layering
- UV Reprojection
- UV Tiles
- Color Management
- Post Processing
- Iray Renderer
- Plugins
- Sparse Virtual Textures
- Custom Shaders
- SpaceMouse® by 3Dconnexion
- Universal Scene Description (USD)
- Send to
- Technical Support
- Performance Guidelines
- Configuring Pens and Tablets
- Exporting the log file
- Exporting a DXDiag
- Technical issues
- GPU Issues
- Crash when working with overclocked GPU
- Forcing the external GPU on Mac OS
- GPU drivers compatibility
- GPU drivers crash with long computations (TDR crash)
- GPU has outdated drivers
- GPU is not recognized
- GPU is not recognized and is mentionned as GDI Generic
- Issues with Nvidia GPUs on recent Mac OS versions
- Multi/Bi-GPU
- Running on integrated GPU
- Painter doesn't start on the right GPU
- Startup Issues
- Rendering Issues
- Stability Issues
- Miscellaneous Issues
- GPU Issues
- Workflow Issues
- Export Issues
- Tools Issues
- Project Issues
- Library Issues
- Viewport Issues
- Plugins Issues
- License Issues
- Pipeline and integration
- Installation and preferences
- Configuration
- Resource management
- Scripting and development
- Scripts and plugins
- Shader API Reference
- Shader API overview
- Changelog - Shader API
- Libraries - Shader API
- Lib Alpha - Shader API
- Lib Bayer - Shader API
- Lib Defines - Shader API
- Lib Emissive - Shader API
- Lib Env - Shader API
- Lib Normal - Shader API
- Lib PBR - Shader API
- Lib PBR Aniso - Shader API
- Lib Pom - Shader API
- Lib Random - Shader API
- Lib Sampler - Shader API
- Lib Sparse - Shader API
- Lib SSS - Shader API
- Lib Utils - Shader API
- Lib Vectors - Shader API
- Parameters - Shader API
- Shaders - Shader API
- Release notes
- Release notes overview
- All Changes
- Version 10.1
- Version 10.0
- Version 9.1
- Old versions
- Version 9.0
- Version 8.3
- Version 8.2
- Version 8.1
- Version 7.4
- Version 7.3
- Version 7.2
- Version 2021.1 (7.1.0)
- Version 2020.2 (6.2.0)
- Version 2020.1 (6.1.0)
- Version 2019.3
- Version 2019.2
- Version 2019.1
- Version 2018.3
- Version 2018.2
- Version 2018.1
- Version 2017.4
- Version 2017.3
- Version 2017.2
- Version 2017.1
- Version 2.6
- Version 2.5
- Version 2.4
- Version 2.3
- Version 2.2
Changelog - Shader API
Changelog
2018.3.2
- lib-sparse.glsl: Sampling functions uses texture derivatives instead simple mipmap level. It's a requirement for the support of anisotropy sampling. Sampling functions signatures are not modified.
- lib-pom.glsl: the getParallaxOffset function signature has changed in order to uses texture derivatives
2018.3.0
- Add a new lib-pbr-aniso.glsl library to help visualizing anisotropic specular highlight
- Add a new lib-sparse.glsl library to help channel sampling by taking care of mipmaps availability
- Update shader libraries interfaces to take care of this safe sampling
- Deprecation: The previous functions based on the vec2 texture coordinates and the texture sampler have been deprecated (please use new signatures)
- lib-pom.glsl: Add a applyParallaxOffset function to simplify to use of parallax occlusion effect
- lib-random.glsl: Add a Blue Noise random value generator and temporal alternatives
- lib-sampler.glsl: Split all channel sampling helpers to have both value interpretation and sampling helpers
2018.2.0
- Surface shader API change: the shade function signature has changed, see surface-shader.glsl
- The shadeShadow function is no longer used and can safely be removed from custom surface shaders
- Add Subsurface Scattering support, see surface-shader.glsl and lib-sss.glsl for details
- lib-pbr.glsl: the pbrComputeBRDF function has been removed. See pbr-metal-rough.glsl example to know how to use the library now
- New engine parameters have been added: texture_blue_noise, aspect_ratio, camera_vp_matrix_inverse, environment_exposure, environment_rotation, fovy, main_light and screen_size. See all-engine-params.glsl for details
- Add the description metadata to provide tooltips for custom shader parameters
2017.4.2
- Fix missing shaders in documentation samples (pixelated and toon shaders)
- Fix dithering for high resolution
- lib-bayer.glsl: bayerMatrix8() return valid values for coords > 4k
2017.4.1
- Fix pbr-coated shader
- lib-vectors.glsl: tangentSpaceToWorldSpace() and worldSpaceToTangentSpace() outputs are now normalized
2017.4.0
- Incorrect specular reflection in the 2D view for certain meshes
2017.3.1
- Cheaper dithering
2017.2.0
- Remove interpolated tbn normalization to match Substance Designer and bakers behavior
- [Viewport] Replace Hammersley table by a Fibonacci spiral
2.6.0
- Fix shaders blending and culling modes
- Rework dithering. Now if we have a render in linear, we apply it after the color profile
2.5.0
- Add support for Color Profiles (LUT) in viewports (Optional sRGB conversion)
- Add dithering to opacity in shaders
- Add parallax occlusion mapping to PBR shaders
- Add a way to hide custom params from the default shader UI
- Add a link to channel tags list in layering shader documentation
- Replace 'channel_ao' tag by 'channel_ambientocclusion'
- [Viewport] Some normal maps have clamped values which appear as artifacts
- Fix available channels in shaders doc
- Allow to define a custom shader UI
- Add a standard custom shader UI for material layering shaders
- Custom UI files are now searched relatively to a shaders/custom-ui folder in the shelves (like the mdl)
- Use the specular level channel in default shaders
- Fix vec3 shader params example
- Upgrade Painter to OpenGL core profile
2.4.0
- Fix the difference on the normal map combined exported and the one displayed in the viewport
2.2.0
- Add support for bindless textures in generic material for non Document textures
- Update custom shader sliders documentation
- Allow to define step precision for sliders
- Documentation for dynamic material layering
2.1.1
- Add a 'RGB2Gray' function in lib-utils
2.1.0
- Allow to define groups for shader parameters and materials/masks
- Add missing channels in documentation ('ao', 'diffuse', 'specularlevel')
2.0.4
- Normal unpack function incorrect with low alpha values
- Allow to read mesh vertex colors in custom shader
- [Viewport] Stretched environment map on some computers
2.0.0
- Allow to override Normal/AO additional maps by dedicated channel
- Change Height2Normal function to use Sobel method
- Add the possibility to define a mdl per shader
- Add a new mdl folder in the shelf
- Add diffuse and specular level channel presets
- Documentation update for tone mapping
- Fix reflections when in orthographic mode
- Fixed the vertical white glitch appearing at a specific location on the envmap
- Allow to define 'default_color' for texture params
1.7.0
- Allow to sample external textures (from shelf)
1.6.0
- Expose gamma/tonemapping function to allow to override them
- Expose multiple texcoords
1.5.0
- Add line number and filename in shader error report
1.4.1
- All sRGB conversions follow the sRGB standard, except those done in the shaders that have close approximation
- Height channel to Normal map is converted to the wrong color space
1.4.0
- Add ambient occlusion channel
- Add new workflow for normal edition
- Add 'or' expression syntax for texture related auto parameters
- Fix pbr shader for Intel gpu on OSX
1.3.4
- Allow to interpolate binormals in fragment shader
- Fix Mikkt tangent space
1.3.3
- Fix spherical harmonics producing negative light intensity
- Exposure computation is different from Substance Designer (and fix exposure slider)
- Shadows should not be visible on 100% metallic surface
1.3.0
- Add shadow function
- Add support for opacity ('alpha_test' and 'alpha_blend')
1.2.0
- Ability to set required openGL states into custom shaders
- Fix inverted bitangents
- Add support for normal channel
1.0
- Add support for custom shaders