Allow all lossless image formats to be used for VRS texture project setting

WebP can also be lossy, but the class reference now warns about the
requirement to use a lossless format for the VRS texture to work correctly.
This commit is contained in:
Hugo Locurcio 2022-11-18 16:29:08 +01:00
parent 7d9923b2e0
commit 4b13093251
No known key found for this signature in database
GPG Key ID: 39E8F8BE30B0A49C
3 changed files with 28 additions and 2 deletions

View File

@ -2265,7 +2265,20 @@
Set the default Variable Rate Shading (VRS) mode for the main viewport. See [member Viewport.vrs_mode] to change this at runtime, and [enum Viewport.VRSMode] for possible values. Set the default Variable Rate Shading (VRS) mode for the main viewport. See [member Viewport.vrs_mode] to change this at runtime, and [enum Viewport.VRSMode] for possible values.
</member> </member>
<member name="rendering/vrs/texture" type="String" setter="" getter="" default="&quot;&quot;"> <member name="rendering/vrs/texture" type="String" setter="" getter="" default="&quot;&quot;">
If [member rendering/vrs/mode] is set to texture, this is the path to default texture loaded as the VRS image. If [member rendering/vrs/mode] is set to [b]Texture[/b], this is the path to default texture loaded as the VRS image.
The texture [i]must[/i] use a lossless compression format so that colors can be matched precisely. The following VRS densities are mapped to various colors, with brighter colors representing a lower level of shading precision:
[codeblock]
- 1x1 = rgb(0, 0, 0) - #000000
- 1x2 = rgb(0, 85, 0) - #005500
- 2x1 = rgb(85, 0, 0) - #550000
- 2x2 = rgb(85, 85, 0) - #555500
- 2x4 = rgb(85, 170, 0) - #55aa00
- 4x2 = rgb(170, 85, 0) - #aa5500
- 4x4 = rgb(170, 170, 0) - #aaaa00
- 4x8 = rgb(170, 255, 0) - #aaff00 - Not supported on most hardware
- 8x4 = rgb(255, 170, 0) - #ffaa00 - Not supported on most hardware
- 8x8 = rgb(255, 255, 0) - #ffff00 - Not supported on most hardware
[/codeblock]
</member> </member>
<member name="threading/worker_pool/low_priority_thread_ratio" type="float" setter="" getter="" default="0.3"> <member name="threading/worker_pool/low_priority_thread_ratio" type="float" setter="" getter="" default="0.3">
</member> </member>

View File

@ -343,6 +343,19 @@
</member> </member>
<member name="vrs_texture" type="Texture2D" setter="set_vrs_texture" getter="get_vrs_texture"> <member name="vrs_texture" type="Texture2D" setter="set_vrs_texture" getter="get_vrs_texture">
Texture to use when [member vrs_mode] is set to [constant Viewport.VRS_TEXTURE]. Texture to use when [member vrs_mode] is set to [constant Viewport.VRS_TEXTURE].
The texture [i]must[/i] use a lossless compression format so that colors can be matched precisely. The following VRS densities are mapped to various colors, with brighter colors representing a lower level of shading precision:
[codeblock]
- 1x1 = rgb(0, 0, 0) - #000000
- 1x2 = rgb(0, 85, 0) - #005500
- 2x1 = rgb(85, 0, 0) - #550000
- 2x2 = rgb(85, 85, 0) - #555500
- 2x4 = rgb(85, 170, 0) - #55aa00
- 4x2 = rgb(170, 85, 0) - #aa5500
- 4x4 = rgb(170, 170, 0) - #aaaa00
- 4x8 = rgb(170, 255, 0) - #aaff00 - Not supported on most hardware
- 8x4 = rgb(255, 170, 0) - #ffaa00 - Not supported on most hardware
- 8x8 = rgb(255, 255, 0) - #ffff00 - Not supported on most hardware
[/codeblock]
</member> </member>
<member name="world_2d" type="World2D" setter="set_world_2d" getter="get_world_2d"> <member name="world_2d" type="World2D" setter="set_world_2d" getter="get_world_2d">
The custom [World2D] which can be used as 2D environment source. The custom [World2D] which can be used as 2D environment source.

View File

@ -1450,7 +1450,7 @@ SceneTree::SceneTree() {
ProjectSettings::get_singleton()->set_custom_property_info("rendering/vrs/texture", ProjectSettings::get_singleton()->set_custom_property_info("rendering/vrs/texture",
PropertyInfo(Variant::STRING, PropertyInfo(Variant::STRING,
"rendering/vrs/texture", "rendering/vrs/texture",
PROPERTY_HINT_FILE, "*.png")); PROPERTY_HINT_FILE, "*.bmp,*.png,*.tga,*.webp"));
if (vrs_mode == 1 && !vrs_texture_path.is_empty()) { if (vrs_mode == 1 && !vrs_texture_path.is_empty()) {
Ref<Image> vrs_image; Ref<Image> vrs_image;
vrs_image.instantiate(); vrs_image.instantiate();