Skip to content

Commit da08aa6

Browse files
ywmaaclayjohn
authored andcommitted
Implement vertex shading
This adds support in all backends, but the Compatibility renderer works the best. Mobile and Forward+ can only support one directional light shader (the first in the tree) While the Compatibility renderer supports any number of shadows. Co-authored-by: Clay John <claynjohn@gmail.com>
1 parent 57f28d1 commit da08aa6

14 files changed

Lines changed: 720 additions & 206 deletions

doc/classes/ProjectSettings.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2840,11 +2840,6 @@
28402840
</member>
28412841
<member name="rendering/shading/overrides/force_vertex_shading" type="bool" setter="" getter="" default="false">
28422842
If [code]true[/code], forces vertex shading for all rendering. This can increase performance a lot, but also reduces quality immensely. Can be used to optimize performance on low-end mobile devices.
2843-
[b]Note:[/b] This setting currently has no effect, as vertex shading is not implemented yet.
2844-
</member>
2845-
<member name="rendering/shading/overrides/force_vertex_shading.mobile" type="bool" setter="" getter="" default="true">
2846-
Lower-end override for [member rendering/shading/overrides/force_vertex_shading] on mobile devices, due to performance concerns or driver support.
2847-
[b]Note:[/b] This setting currently has no effect, as vertex shading is not implemented yet.
28482843
</member>
28492844
<member name="rendering/textures/canvas_textures/default_texture_filter" type="int" setter="" getter="" default="1">
28502845
The default texture filtering mode to use for [CanvasItem]s built-in texture. In shaders, this texture is accessed as [code]TEXTURE[/code].

drivers/gles3/rasterizer_scene_gles3.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4131,6 +4131,9 @@ RasterizerSceneGLES3::RasterizerSceneGLES3() {
41314131
global_defines += "\n#define MAX_DIRECTIONAL_LIGHT_DATA_STRUCTS " + itos(MAX_DIRECTIONAL_LIGHTS) + "\n";
41324132
global_defines += "\n#define MAX_FORWARD_LIGHTS " + itos(config->max_lights_per_object) + "u\n";
41334133
global_defines += "\n#define MAX_ROUGHNESS_LOD " + itos(sky_globals.roughness_layers - 1) + ".0\n";
4134+
if (config->force_vertex_shading) {
4135+
global_defines += "\n#define USE_VERTEX_LIGHTING\n";
4136+
}
41344137
material_storage->shaders.scene_shader.initialize(global_defines);
41354138
scene_globals.shader_default_version = material_storage->shaders.scene_shader.version_create();
41364139
material_storage->shaders.scene_shader.version_bind_shader(scene_globals.shader_default_version, SceneShaderGLES3::MODE_COLOR);

0 commit comments

Comments
 (0)