diff options
author | ywmaa <ywmaa.personal@gmail.com> | 2023-10-15 03:48:52 +0300 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-09-29 00:36:09 +0200 |
commit | 0a9ad8f9de825a14d112d9ebd0674a9c82f56e12 (patch) | |
tree | 38101f70d58a0f69b12b8c11eb068833fe4bc356 /drivers/gles3/rasterizer_scene_gles3.cpp | |
parent | 76a135926aef1f02f27e4e09093787f2c670956d (diff) | |
download | redot-engine-0a9ad8f9de825a14d112d9ebd0674a9c82f56e12.tar.gz |
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>
Diffstat (limited to 'drivers/gles3/rasterizer_scene_gles3.cpp')
-rw-r--r-- | drivers/gles3/rasterizer_scene_gles3.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp index 65749323fd..c2d1784958 100644 --- a/drivers/gles3/rasterizer_scene_gles3.cpp +++ b/drivers/gles3/rasterizer_scene_gles3.cpp @@ -4125,6 +4125,9 @@ RasterizerSceneGLES3::RasterizerSceneGLES3() { global_defines += "\n#define MAX_DIRECTIONAL_LIGHT_DATA_STRUCTS " + itos(MAX_DIRECTIONAL_LIGHTS) + "\n"; global_defines += "\n#define MAX_FORWARD_LIGHTS " + itos(config->max_lights_per_object) + "u\n"; global_defines += "\n#define MAX_ROUGHNESS_LOD " + itos(sky_globals.roughness_layers - 1) + ".0\n"; + if (config->force_vertex_shading) { + global_defines += "\n#define USE_VERTEX_LIGHTING\n"; + } material_storage->shaders.scene_shader.initialize(global_defines); scene_globals.shader_default_version = material_storage->shaders.scene_shader.version_create(); material_storage->shaders.scene_shader.version_bind_shader(scene_globals.shader_default_version, SceneShaderGLES3::MODE_COLOR); |