Implement more rendering options as specialization constants

* Shadow quality settings now specialization constant.
* Decal and light projector filters can be set.
* Changing those settings forces re-creation of the pipelines.

These changes should help improve performance related to shadow mapping, and allows improving performance by sacrificing decal and light projector quality.
This commit is contained in:
reduz 2021-07-19 16:41:55 -03:00
parent 855c7c7414
commit 9293bc3935
27 changed files with 574 additions and 142 deletions

View file

@ -1209,6 +1209,14 @@
<description>
</description>
</method>
<method name="decals_set_filter">
<return type="void">
</return>
<argument index="0" name="filter" type="int" enum="RenderingServer.DecalFilter">
</argument>
<description>
</description>
</method>
<method name="directional_light_create">
<return type="RID">
</return>
@ -2153,6 +2161,14 @@
Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual paraboloid is faster but may suffer from artifacts. Equivalent to [member OmniLight3D.omni_shadow_mode].
</description>
</method>
<method name="light_projectors_set_filter">
<return type="void">
</return>
<argument index="0" name="filter" type="int" enum="RenderingServer.LightProjectorFilter">
</argument>
<description>
</description>
</method>
<method name="light_set_bake_mode">
<return type="void">
</return>
@ -4865,6 +4881,16 @@
<constant name="MULTIMESH_TRANSFORM_3D" value="1" enum="MultimeshTransformFormat">
Use [Transform3D] to store MultiMesh transform.
</constant>
<constant name="LIGHT_PROJECTOR_FILTER_NEAREST" value="0" enum="LightProjectorFilter">
</constant>
<constant name="LIGHT_PROJECTOR_FILTER_NEAREST_MIPMAPS" value="1" enum="LightProjectorFilter">
</constant>
<constant name="LIGHT_PROJECTOR_FILTER_LINEAR" value="2" enum="LightProjectorFilter">
</constant>
<constant name="LIGHT_PROJECTOR_FILTER_LINEAR_MIPMAPS" value="3" enum="LightProjectorFilter">
</constant>
<constant name="LIGHT_PROJECTOR_FILTER_LINEAR_MIPMAPS_ANISOTROPIC" value="4" enum="LightProjectorFilter">
</constant>
<constant name="LIGHT_DIRECTIONAL" value="0" enum="LightType">
Is a directional (sun) light.
</constant>
@ -4986,6 +5012,16 @@
</constant>
<constant name="DECAL_TEXTURE_MAX" value="4" enum="DecalTexture">
</constant>
<constant name="DECAL_FILTER_NEAREST" value="0" enum="DecalFilter">
</constant>
<constant name="DECAL_FILTER_NEAREST_MIPMAPS" value="1" enum="DecalFilter">
</constant>
<constant name="DECAL_FILTER_LINEAR" value="2" enum="DecalFilter">
</constant>
<constant name="DECAL_FILTER_LINEAR_MIPMAPS" value="3" enum="DecalFilter">
</constant>
<constant name="DECAL_FILTER_LINEAR_MIPMAPS_ANISOTROPIC" value="4" enum="DecalFilter">
</constant>
<constant name="VOXEL_GI_QUALITY_LOW" value="0" enum="VoxelGIQuality">
</constant>
<constant name="VOXEL_GI_QUALITY_HIGH" value="1" enum="VoxelGIQuality">