From 1c765c9ae761ab79d4b4d430f91221f106707704 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Sun, 26 Jan 2025 12:38:46 -0800 Subject: [PATCH] Add support for specular tints and maps per the `KHR_materials_specular` glTF extension. (#14069) This commit allows specular highlights to be tinted with a color and for the reflectance and color tint values to vary across a model via a pair of maps. The implementation follows the [`KHR_materials_specular`] glTF extension. In order to reduce the number of samplers and textures in the default `StandardMaterial` configuration, the maps are gated behind the `pbr_specular_textures` Cargo feature. Specular tinting is currently unsupported in the deferred renderer, because I didn't want to bloat the deferred G-buffers. A possible fix for this in the future would be to make the G-buffer layout more configurable, so that specular tints could be supported on an opt-in basis. As an alternative, Bevy could force meshes with specular tints to render in forward mode. Both of these solutions require some more design, so I consider them out of scope for now. Note that the map is a *specular* map, not a *reflectance* map. In Bevy and Filament terms, the reflectance values in the specular map range from [0.0, 0.5], rather than [0.0, 1.0]. This is an unfortunate [`KHR_materials_specular`] specification requirement that stems from the fact that glTF is specified in terms of a specular strength model, not the reflectance model that Filament and Bevy use. A workaround, which is noted in the `StandardMaterial` documentation, is to set the `reflectance` value to 2.0, which spreads the specular map range from [0.0, 1.0] as normal. The glTF loader has been updated to parse the [`KHR_materials_specular`] extension. Note that, unless the non-default `pbr_specular_textures` is supplied, the maps are ignored. The `specularFactor` value is applied as usual. Note that, as with the specular map, the glTF `specularFactor` is twice Bevy's `reflectance` value. This PR adds a new example, `specular_tint`, which demonstrates the specular tint and map features. Note that this example requires the [`KHR_materials_specular`] Cargo feature. [`KHR_materials_specular`]: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_specular ## Changelog ### Added * Specular highlights can now be tinted with the `specular_tint` field in `StandardMaterial`. * Specular maps are now available in `StandardMaterial`, gated behind the `pbr_specular_textures` Cargo feature. * The `KHR_materials_specular` glTF extension is now supported, allowing for customization of specular reflectance and specular maps. Note that the latter are gated behind the `pbr_specular_textures` Cargo feature. --- Cargo.toml | 15 ++ assets/textures/AlphaNoise.png | Bin 0 -> 184086 bytes crates/bevy_gltf/Cargo.toml | 1 + crates/bevy_gltf/src/loader.rs | 203 +++++++++++++--- crates/bevy_internal/Cargo.toml | 6 + crates/bevy_pbr/Cargo.toml | 1 + .../src/deferred/pbr_deferred_functions.wgsl | 23 +- crates/bevy_pbr/src/pbr_material.rs | 114 ++++++++- crates/bevy_pbr/src/render/mesh.rs | 3 + crates/bevy_pbr/src/render/pbr_bindings.wgsl | 14 ++ crates/bevy_pbr/src/render/pbr_fragment.wgsl | 77 +++++- crates/bevy_pbr/src/render/pbr_functions.wgsl | 2 +- crates/bevy_pbr/src/render/pbr_types.wgsl | 6 +- docs/cargo_features.md | 1 + examples/3d/specular_tint.rs | 227 ++++++++++++++++++ examples/README.md | 1 + 16 files changed, 640 insertions(+), 54 deletions(-) create mode 100644 assets/textures/AlphaNoise.png create mode 100644 examples/3d/specular_tint.rs diff --git a/Cargo.toml b/Cargo.toml index e5e600bca4..502f73a17e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -430,6 +430,9 @@ pbr_anisotropy_texture = ["bevy_internal/pbr_anisotropy_texture"] # Enable support for PCSS, at the risk of blowing past the global, per-shader sampler limit on older/lower-end GPUs experimental_pbr_pcss = ["bevy_internal/experimental_pbr_pcss"] +# Enable support for specular textures in the `StandardMaterial`, at the risk of blowing past the global, per-shader texture limit on older/lower-end GPUs +pbr_specular_textures = ["bevy_internal/pbr_specular_textures"] + # Enable some limitations to be able to use WebGL2. Please refer to the [WebGL2 and WebGPU](https://github.com/bevyengine/bevy/tree/latest/examples#webgl2-and-webgpu) section of the examples README for more information on how to run Wasm builds with WebGPU. webgl2 = ["bevy_internal/webgl"] @@ -4020,6 +4023,18 @@ description = "Demonstrates how to make materials that use bindless textures" category = "Shaders" wasm = true +[[example]] +name = "specular_tint" +path = "examples/3d/specular_tint.rs" +doc-scrape-examples = true +required-features = ["pbr_specular_textures"] + +[package.metadata.example.specular_tint] +name = "Specular Tint" +description = "Demonstrates specular tints and maps" +category = "3D Rendering" +wasm = true + [profile.wasm-release] inherits = "release" opt-level = "z" diff --git a/assets/textures/AlphaNoise.png b/assets/textures/AlphaNoise.png new file mode 100644 index 0000000000000000000000000000000000000000..4fa95181035757ad108711619d350118a87776db GIT binary patch literal 184086 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ðqRu&kBgQcV|AGMMYo+sPnLD)auyBU> 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 + reflectance: specular.specular_factor.unwrap_or(1.0) as f32 * 0.5, + #[cfg(feature = "pbr_specular_textures")] + specular_channel: specular.specular_channel, + #[cfg(feature = "pbr_specular_textures")] + specular_texture: specular.specular_texture, + specular_tint: match specular.specular_color_factor { + Some(color) => Color::linear_rgb(color[0] as f32, color[1] as f32, color[2] as f32), + None => Color::WHITE, + }, + #[cfg(feature = "pbr_specular_textures")] + specular_tint_channel: specular.specular_color_channel, + #[cfg(feature = "pbr_specular_textures")] + specular_tint_texture: specular.specular_color_texture, ..Default::default() } }) @@ -1731,7 +1755,8 @@ fn texture_handle(load_context: &mut LoadContext, texture: &gltf::Texture) -> Ha /// for an extension, forcing us to parse its texture references manually. #[cfg(any( feature = "pbr_anisotropy_texture", - feature = "pbr_multi_layer_material_textures" + feature = "pbr_multi_layer_material_textures", + feature = "pbr_specular_textures" ))] fn texture_handle_from_info( load_context: &mut LoadContext, @@ -2122,40 +2147,35 @@ impl ClearcoatExtension { .as_object()?; #[cfg(feature = "pbr_multi_layer_material_textures")] - let (clearcoat_channel, clearcoat_texture) = extension - .get("clearcoatTexture") - .and_then(|value| value::from_value::(value.clone()).ok()) - .map(|json_info| { - ( - get_uv_channel(material, "clearcoat", json_info.tex_coord), - texture_handle_from_info(load_context, document, &json_info), - ) - }) - .unzip(); + let (clearcoat_channel, clearcoat_texture) = parse_material_extension_texture( + load_context, + document, + material, + extension, + "clearcoatTexture", + "clearcoat", + ); #[cfg(feature = "pbr_multi_layer_material_textures")] - let (clearcoat_roughness_channel, clearcoat_roughness_texture) = extension - .get("clearcoatRoughnessTexture") - .and_then(|value| value::from_value::(value.clone()).ok()) - .map(|json_info| { - ( - get_uv_channel(material, "clearcoat roughness", json_info.tex_coord), - texture_handle_from_info(load_context, document, &json_info), - ) - }) - .unzip(); + let (clearcoat_roughness_channel, clearcoat_roughness_texture) = + parse_material_extension_texture( + load_context, + document, + material, + extension, + "clearcoatRoughnessTexture", + "clearcoat roughness", + ); #[cfg(feature = "pbr_multi_layer_material_textures")] - let (clearcoat_normal_channel, clearcoat_normal_texture) = extension - .get("clearcoatNormalTexture") - .and_then(|value| value::from_value::(value.clone()).ok()) - .map(|json_info| { - ( - get_uv_channel(material, "clearcoat normal", json_info.tex_coord), - texture_handle_from_info(load_context, document, &json_info), - ) - }) - .unzip(); + let (clearcoat_normal_channel, clearcoat_normal_texture) = parse_material_extension_texture( + load_context, + document, + material, + extension, + "clearcoatNormalTexture", + "clearcoat normal", + ); Some(ClearcoatExtension { clearcoat_factor: extension.get("clearcoatFactor").and_then(Value::as_f64), @@ -2163,15 +2183,15 @@ impl ClearcoatExtension { .get("clearcoatRoughnessFactor") .and_then(Value::as_f64), #[cfg(feature = "pbr_multi_layer_material_textures")] - clearcoat_channel: clearcoat_channel.unwrap_or_default(), + clearcoat_channel, #[cfg(feature = "pbr_multi_layer_material_textures")] clearcoat_texture, #[cfg(feature = "pbr_multi_layer_material_textures")] - clearcoat_roughness_channel: clearcoat_roughness_channel.unwrap_or_default(), + clearcoat_roughness_channel, #[cfg(feature = "pbr_multi_layer_material_textures")] clearcoat_roughness_texture, #[cfg(feature = "pbr_multi_layer_material_textures")] - clearcoat_normal_channel: clearcoat_normal_channel.unwrap_or_default(), + clearcoat_normal_channel, #[cfg(feature = "pbr_multi_layer_material_textures")] clearcoat_normal_texture, }) @@ -2234,6 +2254,121 @@ impl AnisotropyExtension { } } +/// Parsed data from the `KHR_materials_specular` extension. +/// +/// We currently don't parse `specularFactor` and `specularTexture`, since +/// they're incompatible with Filament. +/// +/// Note that the map is a *specular map*, not a *reflectance map*. In Bevy and +/// Filament terms, the reflectance values in the specular map range from [0.0, +/// 0.5], rather than [0.0, 1.0]. This is an unfortunate +/// `KHR_materials_specular` specification requirement that stems from the fact +/// that glTF is specified in terms of a specular strength model, not the +/// reflectance model that Filament and Bevy use. A workaround, which is noted +/// in the [`StandardMaterial`] documentation, is to set the reflectance value +/// to 2.0, which spreads the specular map range from [0.0, 1.0] as normal. +/// +/// See the specification: +/// +#[derive(Default)] +struct SpecularExtension { + specular_factor: Option, + #[cfg(feature = "pbr_specular_textures")] + specular_channel: UvChannel, + #[cfg(feature = "pbr_specular_textures")] + specular_texture: Option>, + specular_color_factor: Option<[f64; 3]>, + #[cfg(feature = "pbr_specular_textures")] + specular_color_channel: UvChannel, + #[cfg(feature = "pbr_specular_textures")] + specular_color_texture: Option>, +} + +impl SpecularExtension { + fn parse( + _load_context: &mut LoadContext, + _document: &Document, + material: &Material, + ) -> Option { + let extension = material + .extensions()? + .get("KHR_materials_specular")? + .as_object()?; + + #[cfg(feature = "pbr_specular_textures")] + let (_specular_channel, _specular_texture) = parse_material_extension_texture( + _load_context, + _document, + material, + extension, + "specularTexture", + "specular", + ); + + #[cfg(feature = "pbr_specular_textures")] + let (_specular_color_channel, _specular_color_texture) = parse_material_extension_texture( + _load_context, + _document, + material, + extension, + "specularColorTexture", + "specular color", + ); + + Some(SpecularExtension { + specular_factor: extension.get("specularFactor").and_then(Value::as_f64), + #[cfg(feature = "pbr_specular_textures")] + specular_channel: _specular_channel, + #[cfg(feature = "pbr_specular_textures")] + specular_texture: _specular_texture, + specular_color_factor: extension + .get("specularColorFactor") + .and_then(Value::as_array) + .and_then(|json_array| { + if json_array.len() < 3 { + None + } else { + Some([ + json_array[0].as_f64()?, + json_array[1].as_f64()?, + json_array[2].as_f64()?, + ]) + } + }), + #[cfg(feature = "pbr_specular_textures")] + specular_color_channel: _specular_color_channel, + #[cfg(feature = "pbr_specular_textures")] + specular_color_texture: _specular_color_texture, + }) + } +} + +/// Parses a texture that's part of a material extension block and returns its +/// UV channel and image reference. +#[cfg(any( + feature = "pbr_specular_textures", + feature = "pbr_multi_layer_material_textures" +))] +fn parse_material_extension_texture( + load_context: &mut LoadContext, + document: &Document, + material: &Material, + extension: &Map, + texture_name: &str, + texture_kind: &str, +) -> (UvChannel, Option>) { + match extension + .get(texture_name) + .and_then(|value| value::from_value::(value.clone()).ok()) + { + Some(json_info) => ( + get_uv_channel(material, texture_kind, json_info.tex_coord), + Some(texture_handle_from_info(load_context, document, &json_info)), + ), + None => (UvChannel::default(), None), + } +} + /// Returns the index (within the `textures` array) of the texture with the /// given field name in the data for the material extension with the given name, /// if there is one. diff --git a/crates/bevy_internal/Cargo.toml b/crates/bevy_internal/Cargo.toml index ee8214ab3d..3bdbb019c7 100644 --- a/crates/bevy_internal/Cargo.toml +++ b/crates/bevy_internal/Cargo.toml @@ -136,6 +136,12 @@ pbr_anisotropy_texture = [ # Percentage-closer soft shadows experimental_pbr_pcss = ["bevy_pbr?/experimental_pbr_pcss"] +# Specular textures in `StandardMaterial`: +pbr_specular_textures = [ + "bevy_pbr?/pbr_specular_textures", + "bevy_gltf?/pbr_specular_textures", +] + # Optimise for WebGL2 webgl = [ "bevy_core_pipeline?/webgl", diff --git a/crates/bevy_pbr/Cargo.toml b/crates/bevy_pbr/Cargo.toml index cb8a22fb8b..bf568885e7 100644 --- a/crates/bevy_pbr/Cargo.toml +++ b/crates/bevy_pbr/Cargo.toml @@ -15,6 +15,7 @@ pbr_transmission_textures = [] pbr_multi_layer_material_textures = [] pbr_anisotropy_texture = [] experimental_pbr_pcss = [] +pbr_specular_textures = [] shader_format_glsl = ["bevy_render/shader_format_glsl"] trace = ["bevy_render/trace"] ios_simulator = ["bevy_render/ios_simulator"] diff --git a/crates/bevy_pbr/src/deferred/pbr_deferred_functions.wgsl b/crates/bevy_pbr/src/deferred/pbr_deferred_functions.wgsl index e96de6bded..e6254b1154 100644 --- a/crates/bevy_pbr/src/deferred/pbr_deferred_functions.wgsl +++ b/crates/bevy_pbr/src/deferred/pbr_deferred_functions.wgsl @@ -23,21 +23,24 @@ // Creates the deferred gbuffer from a PbrInput. fn deferred_gbuffer_from_pbr_input(in: PbrInput) -> vec4 { - // Only monochrome occlusion supported. May not be worth including at all. - // Some models have baked occlusion, GLTF only supports monochrome. - // Real time occlusion is applied in the deferred lighting pass. - // Deriving luminance via Rec. 709. coefficients - // https://en.wikipedia.org/wiki/Rec._709 - let diffuse_occlusion = dot(in.diffuse_occlusion, vec3(0.2126, 0.7152, 0.0722)); + // Only monochrome occlusion supported. May not be worth including at all. + // Some models have baked occlusion, GLTF only supports monochrome. + // Real time occlusion is applied in the deferred lighting pass. + // Deriving luminance via Rec. 709. coefficients + // https://en.wikipedia.org/wiki/Rec._709 + let rec_709_coeffs = vec3(0.2126, 0.7152, 0.0722); + let diffuse_occlusion = dot(in.diffuse_occlusion, rec_709_coeffs); + // Only monochrome specular supported. + let reflectance = dot(in.material.reflectance, rec_709_coeffs); #ifdef WEBGL2 // More crunched for webgl so we can also fit depth. var props = deferred_types::pack_unorm3x4_plus_unorm_20_(vec4( - in.material.reflectance, + reflectance, in.material.metallic, diffuse_occlusion, in.frag_coord.z)); #else var props = deferred_types::pack_unorm4x8_(vec4( - in.material.reflectance, // could be fewer bits + reflectance, // could be fewer bits in.material.metallic, // could be fewer bits diffuse_occlusion, // is this worth including? 0.0)); // spare @@ -100,10 +103,10 @@ fn pbr_input_from_deferred_gbuffer(frag_coord: vec4, gbuffer: vec4) -> #ifdef WEBGL2 // More crunched for webgl so we can also fit depth. let props = deferred_types::unpack_unorm3x4_plus_unorm_20_(gbuffer.b); // Bias to 0.5 since that's the value for almost all materials. - pbr.material.reflectance = saturate(props.r - 0.03333333333); + pbr.material.reflectance = vec3(saturate(props.r - 0.03333333333)); #else let props = deferred_types::unpack_unorm4x8_(gbuffer.b); - pbr.material.reflectance = props.r; + pbr.material.reflectance = vec3(props.r); #endif // WEBGL2 pbr.material.metallic = props.g; pbr.diffuse_occlusion = vec3(props.b); diff --git a/crates/bevy_pbr/src/pbr_material.rs b/crates/bevy_pbr/src/pbr_material.rs index 150f58acf9..48353eb67c 100644 --- a/crates/bevy_pbr/src/pbr_material.rs +++ b/crates/bevy_pbr/src/pbr_material.rs @@ -183,6 +183,19 @@ pub struct StandardMaterial { #[doc(alias = "specular_intensity")] pub reflectance: f32, + /// A color with which to modulate the [`StandardMaterial::reflectance`] for + /// non-metals. + /// + /// The specular highlights and reflection are tinted with this color. Note + /// that it has no effect for non-metals. + /// + /// This feature is currently unsupported in the deferred rendering path, in + /// order to reduce the size of the geometry buffers. + /// + /// Defaults to [`Color::WHITE`]. + #[doc(alias = "specular_color")] + pub specular_tint: Color, + /// The amount of light transmitted _diffusely_ through the material (i.e. “translucency”). /// /// Implemented as a second, flipped [Lambertian diffuse](https://en.wikipedia.org/wiki/Lambertian_reflectance) lobe, @@ -401,6 +414,54 @@ pub struct StandardMaterial { #[dependency] pub occlusion_texture: Option>, + /// The UV channel to use for the [`StandardMaterial::specular_texture`]. + /// + /// Defaults to [`UvChannel::Uv0`]. + #[cfg(feature = "pbr_specular_textures")] + pub specular_channel: UvChannel, + + /// A map that specifies reflectance for non-metallic materials. + /// + /// Alpha values from [0.0, 1.0] in this texture are linearly mapped to + /// reflectance values of [0.0, 0.5] and multiplied by the constant + /// [`StandardMaterial::reflectance`] value. This follows the + /// `KHR_materials_specular` specification. The map will have no effect if + /// the material is fully metallic. + /// + /// When using this map, you may wish to set the + /// [`StandardMaterial::reflectance`] value to 2.0 so that this map can + /// express the full [0.0, 1.0] range of values. + /// + /// Note that, because the reflectance is stored in the alpha channel, and + /// the [`StandardMaterial::specular_tint_texture`] has no alpha value, it + /// may be desirable to pack the values together and supply the same + /// texture to both fields. + #[texture(27)] + #[sampler(28)] + #[cfg(feature = "pbr_specular_textures")] + pub specular_texture: Option>, + + /// The UV channel to use for the + /// [`StandardMaterial::specular_tint_texture`]. + /// + /// Defaults to [`UvChannel::Uv0`]. + #[cfg(feature = "pbr_specular_textures")] + pub specular_tint_channel: UvChannel, + + /// A map that specifies color adjustment to be applied to the specular + /// reflection for non-metallic materials. + /// + /// The RGB values of this texture modulate the + /// [`StandardMaterial::specular_tint`] value. See the documentation for + /// that field for more information. + /// + /// Like the fixed specular tint value, this texture map isn't supported in + /// the deferred renderer. + #[cfg(feature = "pbr_specular_textures")] + #[texture(29)] + #[sampler(30)] + pub specular_tint_texture: Option>, + /// An extra thin translucent layer on top of the main PBR layer. This is /// typically used for painted surfaces. /// @@ -801,6 +862,15 @@ impl Default for StandardMaterial { occlusion_texture: None, normal_map_channel: UvChannel::Uv0, normal_map_texture: None, + #[cfg(feature = "pbr_specular_textures")] + specular_channel: UvChannel::Uv0, + #[cfg(feature = "pbr_specular_textures")] + specular_texture: None, + specular_tint: Color::WHITE, + #[cfg(feature = "pbr_specular_textures")] + specular_tint_channel: UvChannel::Uv0, + #[cfg(feature = "pbr_specular_textures")] + specular_tint_texture: None, clearcoat: 0.0, clearcoat_perceptual_roughness: 0.5, #[cfg(feature = "pbr_multi_layer_material_textures")] @@ -887,6 +957,8 @@ bitflags::bitflags! { const CLEARCOAT_ROUGHNESS_TEXTURE = 1 << 15; const CLEARCOAT_NORMAL_TEXTURE = 1 << 16; const ANISOTROPY_TEXTURE = 1 << 17; + const SPECULAR_TEXTURE = 1 << 18; + const SPECULAR_TINT_TEXTURE = 1 << 19; const ALPHA_MODE_RESERVED_BITS = Self::ALPHA_MODE_MASK_BITS << Self::ALPHA_MODE_SHIFT_BITS; // ← Bitmask reserving bits for the `AlphaMode` const ALPHA_MODE_OPAQUE = 0 << Self::ALPHA_MODE_SHIFT_BITS; // ← Values are just sequential values bitshifted into const ALPHA_MODE_MASK = 1 << Self::ALPHA_MODE_SHIFT_BITS; // the bitmask, and can range from 0 to 7. @@ -918,14 +990,14 @@ pub struct StandardMaterialUniform { pub attenuation_color: Vec4, /// The transform applied to the UVs corresponding to `ATTRIBUTE_UV_0` on the mesh before sampling. Default is identity. pub uv_transform: Mat3, + /// Specular intensity for non-metals on a linear scale of [0.0, 1.0] + /// defaults to 0.5 which is mapped to 4% reflectance in the shader + pub reflectance: Vec3, /// Linear perceptual roughness, clamped to [0.089, 1.0] in the shader /// Defaults to minimum of 0.089 pub roughness: f32, /// From [0.0, 1.0], dielectric to pure metallic pub metallic: f32, - /// Specular intensity for non-metals on a linear scale of [0.0, 1.0] - /// defaults to 0.5 which is mapped to 4% reflectance in the shader - pub reflectance: f32, /// Amount of diffuse light transmitted through the material pub diffuse_transmission: f32, /// Amount of specular light transmitted through the material @@ -1011,6 +1083,16 @@ impl AsBindGroupShaderType for StandardMaterial { } } + #[cfg(feature = "pbr_specular_textures")] + { + if self.specular_texture.is_some() { + flags |= StandardMaterialFlags::SPECULAR_TEXTURE; + } + if self.specular_tint_texture.is_some() { + flags |= StandardMaterialFlags::SPECULAR_TINT_TEXTURE; + } + } + #[cfg(feature = "pbr_multi_layer_material_textures")] { if self.clearcoat_texture.is_some() { @@ -1075,7 +1157,7 @@ impl AsBindGroupShaderType for StandardMaterial { emissive, roughness: self.perceptual_roughness, metallic: self.metallic, - reflectance: self.reflectance, + reflectance: LinearRgba::from(self.specular_tint).to_vec3() * self.reflectance, clearcoat: self.clearcoat, clearcoat_perceptual_roughness: self.clearcoat_perceptual_roughness, anisotropy_strength: self.anisotropy_strength, @@ -1125,6 +1207,8 @@ bitflags! { const CLEARCOAT_UV = 0x040000; const CLEARCOAT_ROUGHNESS_UV = 0x080000; const CLEARCOAT_NORMAL_UV = 0x100000; + const SPECULAR_UV = 0x200000; + const SPECULAR_TINT_UV = 0x400000; const DEPTH_BIAS = 0xffffffff_00000000; } } @@ -1221,6 +1305,18 @@ impl From<&StandardMaterial> for StandardMaterialKey { ); } + #[cfg(feature = "pbr_specular_textures")] + { + key.set( + StandardMaterialKey::SPECULAR_UV, + material.specular_channel != UvChannel::Uv0, + ); + key.set( + StandardMaterialKey::SPECULAR_TINT_UV, + material.specular_tint_channel != UvChannel::Uv0, + ); + } + #[cfg(feature = "pbr_multi_layer_material_textures")] { key.set( @@ -1392,7 +1488,15 @@ impl Material for StandardMaterial { ), ( StandardMaterialKey::ANISOTROPY_UV, - "STANDARD_MATERIAL_ANISOTROPY_UV", + "STANDARD_MATERIAL_ANISOTROPY_UV_B", + ), + ( + StandardMaterialKey::SPECULAR_UV, + "STANDARD_MATERIAL_SPECULAR_UV_B", + ), + ( + StandardMaterialKey::SPECULAR_TINT_UV, + "STANDARD_MATERIAL_SPECULAR_TINT_UV_B", ), ] { if key.bind_group_data.intersects(flags) { diff --git a/crates/bevy_pbr/src/render/mesh.rs b/crates/bevy_pbr/src/render/mesh.rs index fcd41b3cb6..96b783ea66 100644 --- a/crates/bevy_pbr/src/render/mesh.rs +++ b/crates/bevy_pbr/src/render/mesh.rs @@ -2054,6 +2054,9 @@ impl SpecializedMeshPipeline for MeshPipeline { if cfg!(feature = "pbr_anisotropy_texture") { shader_defs.push("PBR_ANISOTROPY_TEXTURE_SUPPORTED".into()); } + if cfg!(feature = "pbr_specular_textures") { + shader_defs.push("PBR_SPECULAR_TEXTURES_SUPPORTED".into()); + } let mut bind_group_layout = vec![self.get_view_layout(key.into()).clone()]; diff --git a/crates/bevy_pbr/src/render/pbr_bindings.wgsl b/crates/bevy_pbr/src/render/pbr_bindings.wgsl index 9b9d9dcc92..d6514acfa9 100644 --- a/crates/bevy_pbr/src/render/pbr_bindings.wgsl +++ b/crates/bevy_pbr/src/render/pbr_bindings.wgsl @@ -77,3 +77,17 @@ @group(2) @binding(26) var clearcoat_normal_sampler: sampler; #endif // BINDLESS #endif // PBR_MULTI_LAYER_MATERIAL_TEXTURES_SUPPORTED + +#ifdef PBR_SPECULAR_TEXTURES_SUPPORTED +#ifdef BINDLESS +@group(2) @binding(27) var specular_texture: binding_array, 16>; +@group(2) @binding(28) var specular_sampler: binding_array; +@group(2) @binding(29) var specular_tint_texture: binding_array, 16>; +@group(2) @binding(30) var specular_tint_sampler: binding_array; +#else +@group(2) @binding(27) var specular_texture: texture_2d; +@group(2) @binding(28) var specular_sampler: sampler; +@group(2) @binding(29) var specular_tint_texture: texture_2d; +@group(2) @binding(30) var specular_tint_sampler: sampler; +#endif // BINDLESS +#endif // PBR_SPECULAR_TEXTURES_SUPPORTED diff --git a/crates/bevy_pbr/src/render/pbr_fragment.wgsl b/crates/bevy_pbr/src/render/pbr_fragment.wgsl index a8a02b3f71..ac68e9f0aa 100644 --- a/crates/bevy_pbr/src/render/pbr_fragment.wgsl +++ b/crates/bevy_pbr/src/render/pbr_fragment.wgsl @@ -233,19 +233,92 @@ fn pbr_input_from_standard_material( // NOTE: Unlit bit not set means == 0 is true, so the true case is if lit if ((flags & pbr_types::STANDARD_MATERIAL_FLAGS_UNLIT_BIT) == 0u) { #ifdef BINDLESS - pbr_input.material.reflectance = pbr_bindings::material[slot].reflectance; pbr_input.material.ior = pbr_bindings::material[slot].ior; pbr_input.material.attenuation_color = pbr_bindings::material[slot].attenuation_color; pbr_input.material.attenuation_distance = pbr_bindings::material[slot].attenuation_distance; pbr_input.material.alpha_cutoff = pbr_bindings::material[slot].alpha_cutoff; #else // BINDLESS - pbr_input.material.reflectance = pbr_bindings::material.reflectance; pbr_input.material.ior = pbr_bindings::material.ior; pbr_input.material.attenuation_color = pbr_bindings::material.attenuation_color; pbr_input.material.attenuation_distance = pbr_bindings::material.attenuation_distance; pbr_input.material.alpha_cutoff = pbr_bindings::material.alpha_cutoff; #endif // BINDLESS + // reflectance +#ifdef BINDLESS + pbr_input.material.reflectance = pbr_bindings::material[slot].reflectance; +#else // BINDLESS + pbr_input.material.reflectance = pbr_bindings::material.reflectance; +#endif // BINDLESS + +#ifdef PBR_SPECULAR_TEXTURES_SUPPORTED +#ifdef VERTEX_UVS + + // Specular texture + if ((flags & pbr_types::STANDARD_MATERIAL_FLAGS_SPECULAR_TEXTURE_BIT) != 0u) { + let specular = +#ifdef MESHLET_MESH_MATERIAL_PASS + textureSampleGrad( +#else // MESHLET_MESH_MATERIAL_PASS + textureSampleBias( +#endif // MESHLET_MESH_MATERIAL_PASS +#ifdef BINDLESS + pbr_bindings::specular_texture[slot], + pbr_bindings::specular_sampler[slot], +#else // BINDLESS + pbr_bindings::specular_texture, + pbr_bindings::specular_sampler, +#endif // BINDLESS +#ifdef STANDARD_MATERIAL_SPECULAR_UV_B + uv_b, +#else // STANDARD_MATERIAL_SPECULAR_UV_B + uv, +#endif // STANDARD_MATERIAL_SPECULAR_UV_B +#ifdef MESHLET_MESH_MATERIAL_PASS + bias.ddx_uv, + bias.ddy_uv, +#else // MESHLET_MESH_MATERIAL_PASS + bias.mip_bias, +#endif // MESHLET_MESH_MATERIAL_PASS + ).a; + // This 0.5 factor is from the `KHR_materials_specular` specification: + // + pbr_input.material.reflectance *= specular * 0.5; + } + + // Specular tint texture + if ((flags & pbr_types::STANDARD_MATERIAL_FLAGS_SPECULAR_TINT_TEXTURE_BIT) != 0u) { + let specular_tint = +#ifdef MESHLET_MESH_MATERIAL_PASS + textureSampleGrad( +#else // MESHLET_MESH_MATERIAL_PASS + textureSampleBias( +#endif // MESHLET_MESH_MATERIAL_PASS +#ifdef BINDLESS + pbr_bindings::specular_tint_texture[slot], + pbr_bindings::specular_tint_sampler[slot], +#else // BINDLESS + pbr_bindings::specular_tint_texture, + pbr_bindings::specular_tint_sampler, +#endif // BINDLESS +#ifdef STANDARD_MATERIAL_SPECULAR_TINT_UV_B + uv_b, +#else // STANDARD_MATERIAL_SPECULAR_TINT_UV_B + uv, +#endif // STANDARD_MATERIAL_SPECULAR_TINT_UV_B +#ifdef MESHLET_MESH_MATERIAL_PASS + bias.ddx_uv, + bias.ddy_uv, +#else // MESHLET_MESH_MATERIAL_PASS + bias.mip_bias, +#endif // MESHLET_MESH_MATERIAL_PASS + ).rgb; + pbr_input.material.reflectance *= specular_tint; + } + +#endif // VERTEX_UVS +#endif // PBR_SPECULAR_TEXTURES_SUPPORTED + // emissive #ifdef BINDLESS var emissive: vec4 = pbr_bindings::material[slot].emissive; diff --git a/crates/bevy_pbr/src/render/pbr_functions.wgsl b/crates/bevy_pbr/src/render/pbr_functions.wgsl index 04b52f8780..44890b3a65 100644 --- a/crates/bevy_pbr/src/render/pbr_functions.wgsl +++ b/crates/bevy_pbr/src/render/pbr_functions.wgsl @@ -273,7 +273,7 @@ fn calculate_diffuse_color( // Remapping [0,1] reflectance to F0 // See https://google.github.io/filament/Filament.html#materialsystem/parameterization/remapping -fn calculate_F0(base_color: vec3, metallic: f32, reflectance: f32) -> vec3 { +fn calculate_F0(base_color: vec3, metallic: f32, reflectance: vec3) -> vec3 { return 0.16 * reflectance * reflectance * (1.0 - metallic) + base_color * metallic; } diff --git a/crates/bevy_pbr/src/render/pbr_types.wgsl b/crates/bevy_pbr/src/render/pbr_types.wgsl index d9b600c40b..29d479c4e3 100644 --- a/crates/bevy_pbr/src/render/pbr_types.wgsl +++ b/crates/bevy_pbr/src/render/pbr_types.wgsl @@ -7,9 +7,9 @@ struct StandardMaterial { emissive: vec4, attenuation_color: vec4, uv_transform: mat3x3, + reflectance: vec3, perceptual_roughness: f32, metallic: f32, - reflectance: f32, diffuse_transmission: f32, specular_transmission: f32, thickness: f32, @@ -52,6 +52,8 @@ const STANDARD_MATERIAL_FLAGS_CLEARCOAT_TEXTURE_BIT: u32 = 16384u; const STANDARD_MATERIAL_FLAGS_CLEARCOAT_ROUGHNESS_TEXTURE_BIT: u32 = 32768u; const STANDARD_MATERIAL_FLAGS_CLEARCOAT_NORMAL_TEXTURE_BIT: u32 = 65536u; const STANDARD_MATERIAL_FLAGS_ANISOTROPY_TEXTURE_BIT: u32 = 131072u; +const STANDARD_MATERIAL_FLAGS_SPECULAR_TEXTURE_BIT: u32 = 262144u; +const STANDARD_MATERIAL_FLAGS_SPECULAR_TINT_TEXTURE_BIT: u32 = 524288u; const STANDARD_MATERIAL_FLAGS_ALPHA_MODE_RESERVED_BITS: u32 = 3758096384u; // (0b111u32 << 29) const STANDARD_MATERIAL_FLAGS_ALPHA_MODE_OPAQUE: u32 = 0u; // (0u32 << 29) const STANDARD_MATERIAL_FLAGS_ALPHA_MODE_MASK: u32 = 536870912u; // (1u32 << 29) @@ -73,7 +75,7 @@ fn standard_material_new() -> StandardMaterial { material.emissive = vec4(0.0, 0.0, 0.0, 1.0); material.perceptual_roughness = 0.5; material.metallic = 0.00; - material.reflectance = 0.5; + material.reflectance = vec3(0.5); material.diffuse_transmission = 0.0; material.specular_transmission = 0.0; material.thickness = 0.0; diff --git a/docs/cargo_features.md b/docs/cargo_features.md index 04a925ad68..5fcca5a600 100644 --- a/docs/cargo_features.md +++ b/docs/cargo_features.md @@ -87,6 +87,7 @@ The default feature set enables most of the expected features of a game engine, |mp3|MP3 audio format support| |pbr_anisotropy_texture|Enable support for anisotropy texture in the `StandardMaterial`, at the risk of blowing past the global, per-shader texture limit on older/lower-end GPUs| |pbr_multi_layer_material_textures|Enable support for multi-layer material textures in the `StandardMaterial`, at the risk of blowing past the global, per-shader texture limit on older/lower-end GPUs| +|pbr_specular_textures|Enable support for specular textures in the `StandardMaterial`, at the risk of blowing past the global, per-shader texture limit on older/lower-end GPUs| |pbr_transmission_textures|Enable support for transmission-related textures in the `StandardMaterial`, at the risk of blowing past the global, per-shader texture limit on older/lower-end GPUs| |pnm|PNM image format support, includes pam, pbm, pgm and ppm| |qoi|QOI image format support| diff --git a/examples/3d/specular_tint.rs b/examples/3d/specular_tint.rs new file mode 100644 index 0000000000..5dc362b9c1 --- /dev/null +++ b/examples/3d/specular_tint.rs @@ -0,0 +1,227 @@ +//! Demonstrates specular tints and maps. + +use std::f32::consts::PI; + +use bevy::{color::palettes::css::WHITE, core_pipeline::Skybox, prelude::*}; + +/// The camera rotation speed in radians per frame. +const ROTATION_SPEED: f32 = 0.005; +/// The rate at which the specular tint hue changes in degrees per frame. +const HUE_SHIFT_SPEED: f32 = 0.2; + +static SWITCH_TO_MAP_HELP_TEXT: &str = "Press Space to switch to a specular map"; +static SWITCH_TO_SOLID_TINT_HELP_TEXT: &str = "Press Space to switch to a solid specular tint"; + +/// The current settings the user has chosen. +#[derive(Resource, Default)] +struct AppStatus { + /// The type of tint (solid or texture map). + tint_type: TintType, + /// The hue of the solid tint in radians. + hue: f32, +} + +/// Assets needed by the demo. +#[derive(Resource)] +struct AppAssets { + /// A color tileable 3D noise texture. + noise_texture: Handle, +} + +impl FromWorld for AppAssets { + fn from_world(world: &mut World) -> Self { + let asset_server = world.resource::(); + Self { + noise_texture: asset_server.load("textures/AlphaNoise.png"), + } + } +} + +/// The type of specular tint that the user has selected. +#[derive(Clone, Copy, PartialEq, Default)] +enum TintType { + /// A solid color. + #[default] + Solid, + /// A Perlin noise texture. + Map, +} + +/// The entry point. +fn main() { + App::new() + .add_plugins(DefaultPlugins.set(WindowPlugin { + primary_window: Some(Window { + title: "Bevy Specular Tint Example".into(), + ..default() + }), + ..default() + })) + .init_resource::() + .init_resource::() + .insert_resource(AmbientLight { + color: Color::BLACK, + brightness: 0.0, + ..default() + }) + .add_systems(Startup, setup) + .add_systems(Update, rotate_camera) + .add_systems(Update, (toggle_specular_map, update_text).chain()) + .add_systems(Update, shift_hue.after(toggle_specular_map)) + .run(); +} + +/// Creates the scene. +fn setup( + mut commands: Commands, + asset_server: Res, + app_status: Res, + mut meshes: ResMut>, + mut standard_materials: ResMut>, +) { + // Spawns a camera. + commands.spawn(( + Transform::from_xyz(-2.0, 0.0, 3.5).looking_at(Vec3::ZERO, Vec3::Y), + Camera { + hdr: true, + ..default() + }, + Camera3d::default(), + Skybox { + image: asset_server.load("environment_maps/pisa_specular_rgb9e5_zstd.ktx2"), + brightness: 3000.0, + ..default() + }, + EnvironmentMapLight { + diffuse_map: asset_server.load("environment_maps/pisa_diffuse_rgb9e5_zstd.ktx2"), + specular_map: asset_server.load("environment_maps/pisa_specular_rgb9e5_zstd.ktx2"), + // We want relatively high intensity here in order for the specular + // tint to show up well. + intensity: 25000.0, + ..default() + }, + )); + + // Spawn the sphere. + commands.spawn(( + Transform::from_rotation(Quat::from_rotation_x(PI * 0.5)), + Mesh3d(meshes.add(Sphere::default().mesh().uv(32, 18))), + MeshMaterial3d(standard_materials.add(StandardMaterial { + // We want only reflected specular light here, so we set the base + // color as black. + base_color: Color::BLACK, + reflectance: 1.0, + specular_tint: Color::hsva(app_status.hue, 1.0, 1.0, 1.0), + // The object must not be metallic, or else the reflectance is + // ignored per the Filament spec: + // + // + metallic: 0.0, + perceptual_roughness: 0.0, + ..default() + })), + )); + + // Spawn the help text. + commands.spawn(( + Node { + position_type: PositionType::Absolute, + bottom: Val::Px(12.0), + left: Val::Px(12.0), + ..default() + }, + app_status.create_text(), + )); +} + +/// Rotates the camera a bit every frame. +fn rotate_camera(mut cameras: Query<&mut Transform, With>) { + for mut camera_transform in cameras.iter_mut() { + camera_transform.translation = + Quat::from_rotation_y(ROTATION_SPEED) * camera_transform.translation; + camera_transform.look_at(Vec3::ZERO, Vec3::Y); + } +} + +/// Alters the hue of the solid color a bit every frame. +fn shift_hue( + mut app_status: ResMut, + objects_with_materials: Query<&MeshMaterial3d>, + mut standard_materials: ResMut>, +) { + if app_status.tint_type != TintType::Solid { + return; + } + + app_status.hue += HUE_SHIFT_SPEED; + + for material_handle in objects_with_materials.iter() { + let Some(material) = standard_materials.get_mut(material_handle) else { + continue; + }; + material.specular_tint = Color::hsva(app_status.hue, 1.0, 1.0, 1.0); + } +} + +impl AppStatus { + /// Returns appropriate help text that reflects the current app status. + fn create_text(&self) -> Text { + let tint_map_help_text = match self.tint_type { + TintType::Solid => SWITCH_TO_MAP_HELP_TEXT, + TintType::Map => SWITCH_TO_SOLID_TINT_HELP_TEXT, + }; + + Text::new(tint_map_help_text) + } +} + +/// Changes the specular tint to a solid color or map when the user presses +/// Space. +fn toggle_specular_map( + keyboard: Res>, + mut app_status: ResMut, + app_assets: Res, + objects_with_materials: Query<&MeshMaterial3d>, + mut standard_materials: ResMut>, +) { + if !keyboard.just_pressed(KeyCode::Space) { + return; + } + + // Swap tint type. + app_status.tint_type = match app_status.tint_type { + TintType::Solid => TintType::Map, + TintType::Map => TintType::Solid, + }; + + for material_handle in objects_with_materials.iter() { + let Some(material) = standard_materials.get_mut(material_handle) else { + continue; + }; + + // Adjust the tint type. + match app_status.tint_type { + TintType::Solid => { + material.reflectance = 1.0; + material.specular_tint_texture = None; + } + TintType::Map => { + // Set reflectance to 2.0 to spread out the map's reflectance + // range from the default [0.0, 0.5] to [0.0, 1.0]. + material.reflectance = 2.0; + // As the tint map is multiplied by the tint color, we set the + // latter to white so that only the map has an effect. + material.specular_tint = WHITE.into(); + material.specular_tint_texture = Some(app_assets.noise_texture.clone()); + } + }; + } +} + +/// Updates the help text at the bottom of the screen to reflect the current app +/// status. +fn update_text(mut text_query: Query<&mut Text>, app_status: Res) { + for mut text in text_query.iter_mut() { + *text = app_status.create_text(); + } +} diff --git a/examples/README.md b/examples/README.md index a63e4aedb1..8963590365 100644 --- a/examples/README.md +++ b/examples/README.md @@ -180,6 +180,7 @@ Example | Description [Shadow Biases](../examples/3d/shadow_biases.rs) | Demonstrates how shadow biases affect shadows in a 3d scene [Shadow Caster and Receiver](../examples/3d/shadow_caster_receiver.rs) | Demonstrates how to prevent meshes from casting/receiving shadows in a 3d scene [Skybox](../examples/3d/skybox.rs) | Load a cubemap texture onto a cube like a skybox and cycle through different compressed texture formats. +[Specular Tint](../examples/3d/specular_tint.rs) | Demonstrates specular tints and maps [Spherical Area Lights](../examples/3d/spherical_area_lights.rs) | Demonstrates how point light radius values affect light behavior [Split Screen](../examples/3d/split_screen.rs) | Demonstrates how to render two cameras to the same window to accomplish "split screen" [Spotlight](../examples/3d/spotlight.rs) | Illustrates spot lights