Documentation for Substance 3D Painter is now available on Experience League. After March 14th, HelpX pages will automatically redirect to the equivalent Experience League page.
Refer to the FAQ for more information about which documentation is affected.
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
- Output templates
- Export overview
- Glossary
- Getting Started overview
- Interface
- Interface overview
- Assets
- Substance 3D Assets
- Color picker
- Display settings
- History
- Layer stack
- Main menu
- Project configuration
- Properties
- Settings
- Shader settings
- Texture Set
- Toolbars
- Viewport
- Miscellaneous
- Painting
- Painting overview
- Paint tools
- Path tools
- Path tool overview
- Paint along path
- Ribbon path
- Filled path
- Erase along path
- Smudge along path
- Straight line
- Lazy mouse
- Symmetry
- Fill projections
- Presets
- Presets overview
- Creating and saving presets
- Creating particles presets
- Photoshop brush presets
- Dynamic strokes
- Advanced channel painting
- Vector graphic (.svg & .ai)
- Text resource
- Effects
- Baking
- Content
- Creating custom effects
- Importing assets
- Creating custom effects
- Features
- Automatic resource update
- 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 11.1
- Version 11.0
- Version 10.1
- Known issues
- Old versions
- Version 10.0
- Version 9.1
- 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