forked from bevyengine/bevy
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'upstream/main' into bind_group_entries
- Loading branch information
Showing
16 changed files
with
856 additions
and
352 deletions.
There are no files selected for viewing
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
#import bevy_pbr::pbr_fragment pbr_input_from_standard_material | ||
#import bevy_pbr::pbr_functions alpha_discard | ||
|
||
#ifdef PREPASS_PIPELINE | ||
#import bevy_pbr::prepass_io VertexOutput, FragmentOutput | ||
#import bevy_pbr::pbr_deferred_functions deferred_output | ||
#else | ||
#import bevy_pbr::forward_io VertexOutput, FragmentOutput | ||
#import bevy_pbr::pbr_functions apply_pbr_lighting, main_pass_post_lighting_processing | ||
#endif | ||
|
||
struct MyExtendedMaterial { | ||
quantize_steps: u32, | ||
} | ||
|
||
@group(1) @binding(100) | ||
var<uniform> my_extended_material: MyExtendedMaterial; | ||
|
||
@fragment | ||
fn fragment( | ||
in: VertexOutput, | ||
@builtin(front_facing) is_front: bool, | ||
) -> FragmentOutput { | ||
// generate a PbrInput struct from the StandardMaterial bindings | ||
var pbr_input = pbr_input_from_standard_material(in, is_front); | ||
|
||
// we can optionally modify the input before lighting and alpha_discard is applied | ||
pbr_input.material.base_color.b = pbr_input.material.base_color.r; | ||
|
||
// alpha discard | ||
pbr_input.material.base_color = alpha_discard(pbr_input.material, pbr_input.material.base_color); | ||
|
||
#ifdef PREPASS_PIPELINE | ||
// in deferred mode we can't modify anything after that, as lighting is run in a separate fullscreen shader. | ||
let out = deferred_output(in, pbr_input); | ||
#else | ||
var out: FragmentOutput; | ||
// apply lighting | ||
out.color = apply_pbr_lighting(pbr_input); | ||
|
||
// we can optionally modify the lit color before post-processing is applied | ||
out.color = vec4<f32>(vec4<u32>(out.color * f32(my_extended_material.quantize_steps))) / f32(my_extended_material.quantize_steps); | ||
|
||
// apply in-shader post processing (fog, alpha-premultiply, and also tonemapping, debanding if the camera is non-hdr) | ||
// note this does not include fullscreen postprocessing effects like bloom. | ||
out.color = main_pass_post_lighting_processing(pbr_input, out.color); | ||
|
||
// we can optionally modify the final result here | ||
out.color = out.color * 2.0; | ||
#endif | ||
|
||
return out; | ||
} |
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
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
Oops, something went wrong.