diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-09-12 09:25:15 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-09-12 09:25:15 +0200 |
commit | 612d4ea8f4327be70f1d07649fac4058bb365cdf (patch) | |
tree | 78cf501f9fbde8c46600681ebfc362f6e9f310db | |
parent | b9b07d619fb083c7bfd7f15823e9c13a8779fd44 (diff) | |
parent | abe8d2c7195c70ae2a4d37e0049f15d78ed649a8 (diff) | |
download | redot-engine-612d4ea8f4327be70f1d07649fac4058bb365cdf.tar.gz |
Merge pull request #95773 from tetrapod00/document-normal-texture-compositor
Add documentation for need for normal roughness texture conversion for CompositorEffects
-rw-r--r-- | doc/classes/CompositorEffect.xml | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/doc/classes/CompositorEffect.xml b/doc/classes/CompositorEffect.xml index 76a3887918..9ac54edb11 100644 --- a/doc/classes/CompositorEffect.xml +++ b/doc/classes/CompositorEffect.xml @@ -57,6 +57,17 @@ var render_scene_buffers : RenderSceneBuffersRD = render_data.get_render_scene_buffers() var roughness_buffer = render_scene_buffers.get_texture("forward_clustered", "normal_roughness") [/codeblock] + The raw normal and roughness buffer is stored in an optimized format, different than the one available in Spatial shaders. When sampling the buffer, a conversion function must be applied. Use this function, copied from [url=https://github.com/godotengine/godot/blob/da5f39889f155658cef7f7ec3cc1abb94e17d815/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered_inc.glsl#L334-L341]here[/url]: + [codeblock] + vec4 normal_roughness_compatibility(vec4 p_normal_roughness) { + float roughness = p_normal_roughness.w; + if (roughness > 0.5) { + roughness = 1.0 - roughness; + } + roughness /= (127.0 / 255.0); + return vec4(normalize(p_normal_roughness.xyz * 2.0 - 1.0) * 0.5 + 0.5, roughness); + } + [/codeblock] </member> <member name="needs_separate_specular" type="bool" setter="set_needs_separate_specular" getter="get_needs_separate_specular"> If [code]true[/code] this triggers specular data being rendered to a separate buffer and combined after effects have been applied, only applicable for the Forward+ renderer. |