-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Closed
Labels
A-RenderingDrawing game state to the screenDrawing game state to the screenC-FeatureA new feature, making something new possibleA new feature, making something new possible
Description
Description
- As of 0.6, the approach to importing the core PBR shader functionality is unclear but we want them to be reusable, whether due to people having PBR data that they need to obtain from different bindings, or if they want to customise the shading code. The story around how to do these kinds of things should be clear to enable flexible reuse and extension.
Solution
- Reusable PBR shader types/bindings/functions #3969
- Split mesh view, mesh, and pbr shaders into types, bindings, and functions. The purpose of this is to allow reuse of types and functions without bindings, or types and bindings without functions, or all three, or whatever you like.
- Move all normal and view vector calculation into separate functions to make them callable
- Add mesh coordinate space transformation functions to support consistent calculation of world/clip positions and normals. Particularly clip positions are important due to using the equal depth comparison function for geometry with opaque or alpha mask materials in the main 3D passes.
- Add
PbrMaterialandPbrInputpbr types that contain all the material and fragment stage input information needed by the core pbr shaders - Add a
pbr()shader function and pass all variables and bindings as arguments. Functions within thepbr()code path have to reference 'global' bindings directly due to the way shader programs / WGSL work. - Add back the
array_textureexample and leverage the imports, mesh position coordinate space transform functions. This could/should be extended to call into thepbr()function to demonstrate using the core pbr functionality with custom inputs.
odecay and iamabigartist
Metadata
Metadata
Assignees
Labels
A-RenderingDrawing game state to the screenDrawing game state to the screenC-FeatureA new feature, making something new possibleA new feature, making something new possible
Type
Projects
Status
Done