-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
reference renderer work #12
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
hoffstadt
added
backend: Metal
specific to Metal
priority: Normal
normal priority
extension: Graphics
related to low level graphics extension
extension: Renderer
related to reference renderer extension
type: Feature
related to a new feature
type: Improvement
related to an improvement
type: Bug
bug
extension: Job
related to job extension
labels
May 2, 2024
hoffstadt
force-pushed
the
dev
branch
2 times, most recently
from
May 3, 2024 12:38
6bd9781
to
9f9cf6d
Compare
hoffstadt
force-pushed
the
dev
branch
2 times, most recently
from
May 3, 2024 14:54
3ad74be
to
6415c7e
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
backend: Metal
specific to Metal
extension: Graphics
related to low level graphics extension
extension: Job
related to job extension
extension: Renderer
related to reference renderer extension
priority: Normal
normal priority
type: Bug
bug
type: Feature
related to a new feature
type: Improvement
related to an improvement
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
The purpose of this pull request (PR) is to support efforts towards a 1.0 reference renderer. These contributions cover several areas including fixes, improvements, and new features.
Deferred + Forward Physics Based Renderer Implementation
With this PR, the reference renderer now uses a forward rendering pass for transparent and more complex materials (clear coat, iridescent, etc.). For opaque objects a deferred rendering technique is used. Both pipelines are physics-based rendering and support image-based lighting.
Skinning Operation were moved to compute shaders
Prior to this PR, skinning was performed in the pixel shader. This required additional shader permutations for skinned vs nonskinned meshes. It also duplicated the skinning operations if skinned meshes were used in multiple passes. Now, compute shaders are run once per pass for skinned meshes.
Current Frame Graph
With the changes of this PR, the current frame graph looks like the following:
Misc.
Increased the allowable bind groups per compute shader
Prior to this PR, compute shaders were only allowed a single bind group. Now they are allowed up to 3 + a dynamic binding identical to the system used for graphics shaders.
Exposed sampler mipmap filtering mode
Prior to this PR, the mipmap filtering mode of samplers were set to NEAREST. Now the filtering mode is a field in the sampler description used to create samplers.
Improved Metal backend's method for ensuring heap residency
Prior to this PR, before draw calls & dispatches were executed, every heap was made resident. With the improvements included here, only the necessary heaps for the current work are made resident. Further improvements will be made in this area.
Fixed Metal backend's copy buffer to texture function
An issue was discovered and fixed where specifying a textures mip & array levels were ignoring.
Fixed Metal backend's create compute shader function
An issue was discovered and fixed where a compute shaders entry function override was ignored.
Future Reference Renderer Work