mirror of
https://github.com/bevyengine/bevy
synced 2025-02-16 14:08:32 +00:00
Fix deferred rendering (#15656)
# Objective Fixes #15525 The deferred and mesh pipelines tonemapping LUT bindings were accidentally out of sync, breaking deferred rendering. As noted in the issue it's still broken on wasm due to hitting a texture limit. ## Solution Add constants for these instead of hardcoding them. ## Testing Test with `cargo run --example deferred_rendering` and see it works, run the same on main and see it crash.
This commit is contained in:
parent
0094bcbc07
commit
ddd4b4daf8
3 changed files with 9 additions and 5 deletions
|
@ -2,7 +2,8 @@ use crate::{
|
|||
graph::NodePbr, irradiance_volume::IrradianceVolume, prelude::EnvironmentMapLight,
|
||||
MeshPipeline, MeshViewBindGroup, RenderViewLightProbes, ScreenSpaceAmbientOcclusion,
|
||||
ScreenSpaceReflectionsUniform, ViewEnvironmentMapUniformOffset, ViewLightProbesUniformOffset,
|
||||
ViewScreenSpaceReflectionsUniformOffset,
|
||||
ViewScreenSpaceReflectionsUniformOffset, TONEMAPPING_LUT_SAMPLER_BINDING_INDEX,
|
||||
TONEMAPPING_LUT_TEXTURE_BINDING_INDEX,
|
||||
};
|
||||
use bevy_app::prelude::*;
|
||||
use bevy_asset::{load_internal_asset, Handle};
|
||||
|
@ -259,11 +260,11 @@ impl SpecializedRenderPipeline for DeferredLightingLayout {
|
|||
shader_defs.push("TONEMAP_IN_SHADER".into());
|
||||
shader_defs.push(ShaderDefVal::UInt(
|
||||
"TONEMAPPING_LUT_TEXTURE_BINDING_INDEX".into(),
|
||||
22,
|
||||
TONEMAPPING_LUT_TEXTURE_BINDING_INDEX,
|
||||
));
|
||||
shader_defs.push(ShaderDefVal::UInt(
|
||||
"TONEMAPPING_LUT_SAMPLER_BINDING_INDEX".into(),
|
||||
23,
|
||||
TONEMAPPING_LUT_SAMPLER_BINDING_INDEX,
|
||||
));
|
||||
|
||||
let method = key.intersection(MeshPipelineKey::TONEMAP_METHOD_RESERVED_BITS);
|
||||
|
|
|
@ -158,6 +158,9 @@ pub const RGB9E5_FUNCTIONS_HANDLE: Handle<Shader> = Handle::weak_from_u128(26590
|
|||
const MESHLET_VISIBILITY_BUFFER_RESOLVE_SHADER_HANDLE: Handle<Shader> =
|
||||
Handle::weak_from_u128(2325134235233421);
|
||||
|
||||
const TONEMAPPING_LUT_TEXTURE_BINDING_INDEX: u32 = 23;
|
||||
const TONEMAPPING_LUT_SAMPLER_BINDING_INDEX: u32 = 24;
|
||||
|
||||
/// Sets up the entire PBR infrastructure of bevy.
|
||||
pub struct PbrPlugin {
|
||||
/// Controls if the prepass is enabled for the [`StandardMaterial`].
|
||||
|
|
|
@ -1842,11 +1842,11 @@ impl SpecializedMeshPipeline for MeshPipeline {
|
|||
shader_defs.push("TONEMAP_IN_SHADER".into());
|
||||
shader_defs.push(ShaderDefVal::UInt(
|
||||
"TONEMAPPING_LUT_TEXTURE_BINDING_INDEX".into(),
|
||||
23,
|
||||
TONEMAPPING_LUT_TEXTURE_BINDING_INDEX,
|
||||
));
|
||||
shader_defs.push(ShaderDefVal::UInt(
|
||||
"TONEMAPPING_LUT_SAMPLER_BINDING_INDEX".into(),
|
||||
24,
|
||||
TONEMAPPING_LUT_SAMPLER_BINDING_INDEX,
|
||||
));
|
||||
|
||||
let method = key.intersection(MeshPipelineKey::TONEMAP_METHOD_RESERVED_BITS);
|
||||
|
|
Loading…
Add table
Reference in a new issue