summaryrefslogtreecommitdiffstats
path: root/drivers/gles3/rasterizer_scene_gles3.h
diff options
context:
space:
mode:
authorYuri Sizov <yuris@humnom.net>2023-12-08 15:23:27 +0100
committerYuri Sizov <yuris@humnom.net>2023-12-08 15:23:27 +0100
commit44d544fc98d55cd71e53f384e11989d62f736ea0 (patch)
tree4dd57631ece5b10f1f3ff5152185e0ebeed6d6b3 /drivers/gles3/rasterizer_scene_gles3.h
parent62b264e6ac038f8bf8968ad2b2922e4db790124d (diff)
parent749f60ee365a6d661795637838e41122aff23058 (diff)
downloadredot-engine-44d544fc98d55cd71e53f384e11989d62f736ea0.tar.gz
Merge pull request #85120 from dsnopek/gl-lightmap
OpenGL: Implement rendering of lightmaps
Diffstat (limited to 'drivers/gles3/rasterizer_scene_gles3.h')
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/gles3/rasterizer_scene_gles3.h b/drivers/gles3/rasterizer_scene_gles3.h
index beb597ff99..a860793c21 100644
--- a/drivers/gles3/rasterizer_scene_gles3.h
+++ b/drivers/gles3/rasterizer_scene_gles3.h
@@ -170,6 +170,9 @@ private:
float cos_spot_angle;
float specular_amount;
float shadow_opacity;
+
+ float pad[3];
+ uint32_t bake_mode;
};
static_assert(sizeof(LightData) % 16 == 0, "LightData size must be a multiple of 16 bytes");
@@ -181,7 +184,7 @@ private:
float size;
uint32_t enabled; // For use by SkyShaders
- float pad;
+ uint32_t bake_mode;
float shadow_opacity;
float specular;
};
@@ -269,6 +272,10 @@ private:
GeometryInstanceGLES3 *owner = nullptr;
};
+ struct GeometryInstanceLightmapSH {
+ Color sh[9];
+ };
+
class GeometryInstanceGLES3 : public RenderGeometryInstanceBase {
public:
//used during rendering
@@ -296,6 +303,11 @@ private:
LocalVector<uint32_t> omni_light_gl_cache;
LocalVector<uint32_t> spot_light_gl_cache;
+ RID lightmap_instance;
+ Rect2 lightmap_uv_scale;
+ uint32_t lightmap_slice_index;
+ GeometryInstanceLightmapSH *lightmap_sh = nullptr;
+
// Used during setup.
GeometryInstanceSurface *surface_caches = nullptr;
SelfList<GeometryInstanceGLES3> dirty_list_element;