aboutsummaryrefslogtreecommitdiff
path: root/drivers/gles3/rasterizer_scene_gles3.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gles3/rasterizer_scene_gles3.h')
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.h324
1 files changed, 146 insertions, 178 deletions
diff --git a/drivers/gles3/rasterizer_scene_gles3.h b/drivers/gles3/rasterizer_scene_gles3.h
index b21ef8317..417a1d850 100644
--- a/drivers/gles3/rasterizer_scene_gles3.h
+++ b/drivers/gles3/rasterizer_scene_gles3.h
@@ -29,29 +29,27 @@
#ifndef RASTERIZERSCENEGLES3_H
#define RASTERIZERSCENEGLES3_H
-#include "rasterizer_storage_gles3.h"
-#include "drivers/gles3/shaders/scene.glsl.h"
#include "drivers/gles3/shaders/cube_to_dp.glsl.h"
+#include "drivers/gles3/shaders/effect_blur.glsl.h"
+#include "drivers/gles3/shaders/exposure.glsl.h"
#include "drivers/gles3/shaders/resolve.glsl.h"
+#include "drivers/gles3/shaders/scene.glsl.h"
#include "drivers/gles3/shaders/screen_space_reflection.glsl.h"
-#include "drivers/gles3/shaders/effect_blur.glsl.h"
-#include "drivers/gles3/shaders/subsurf_scattering.glsl.h"
-#include "drivers/gles3/shaders/ssao_minify.glsl.h"
#include "drivers/gles3/shaders/ssao.glsl.h"
#include "drivers/gles3/shaders/ssao_blur.glsl.h"
-#include "drivers/gles3/shaders/exposure.glsl.h"
+#include "drivers/gles3/shaders/ssao_minify.glsl.h"
+#include "drivers/gles3/shaders/subsurf_scattering.glsl.h"
#include "drivers/gles3/shaders/tonemap.glsl.h"
+#include "rasterizer_storage_gles3.h"
class RasterizerSceneGLES3 : public RasterizerScene {
public:
-
enum ShadowFilterMode {
SHADOW_FILTER_NEAREST,
SHADOW_FILTER_PCF5,
SHADOW_FILTER_PCF13,
};
-
ShadowFilterMode shadow_filter_mode;
uint64_t shadow_atlas_realloc_tolerance_msec;
@@ -83,8 +81,6 @@ public:
struct State {
-
-
bool texscreen_copied;
int current_blend_mode;
float current_line_width;
@@ -104,7 +100,6 @@ public:
ExposureShaderGLES3 exposure_shader;
TonemapShaderGLES3 tonemap_shader;
-
struct SceneDataUBO {
float projection_matrix[16];
@@ -167,7 +162,6 @@ public:
bool used_contact_shadows;
-
int spot_light_count;
int omni_light_count;
int directional_light_count;
@@ -178,15 +172,14 @@ public:
} state;
-
/* SHADOW ATLAS API */
struct ShadowAtlas : public RID_Data {
enum {
- QUADRANT_SHIFT=27,
- SHADOW_INDEX_MASK=(1<<QUADRANT_SHIFT)-1,
- SHADOW_INVALID=0xFFFFFFFF
+ QUADRANT_SHIFT = 27,
+ SHADOW_INDEX_MASK = (1 << QUADRANT_SHIFT) - 1,
+ SHADOW_INVALID = 0xFFFFFFFF
};
struct Quadrant {
@@ -199,15 +192,15 @@ public:
uint64_t alloc_tick;
Shadow() {
- version=0;
- alloc_tick=0;
+ version = 0;
+ alloc_tick = 0;
}
};
Vector<Shadow> shadows;
Quadrant() {
- subdivision=0; //not in use
+ subdivision = 0; //not in use
}
} quadrants[4];
@@ -220,7 +213,7 @@ public:
GLuint fbo;
GLuint depth;
- Map<RID,uint32_t> shadow_owners;
+ Map<RID, uint32_t> shadow_owners;
};
struct ShadowCubeMap {
@@ -235,10 +228,10 @@ public:
RID_Owner<ShadowAtlas> shadow_atlas_owner;
RID shadow_atlas_create();
- void shadow_atlas_set_size(RID p_atlas,int p_size);
- void shadow_atlas_set_quadrant_subdivision(RID p_atlas,int p_quadrant,int p_subdivision);
+ void shadow_atlas_set_size(RID p_atlas, int p_size);
+ void shadow_atlas_set_quadrant_subdivision(RID p_atlas, int p_quadrant, int p_subdivision);
bool _shadow_atlas_find_shadow(ShadowAtlas *shadow_atlas, int *p_in_quadrants, int p_quadrant_count, int p_current_subdiv, uint64_t p_tick, int &r_quadrant, int &r_shadow);
- bool shadow_atlas_update_light(RID p_atlas,RID p_light_intance,float p_coverage,uint64_t p_light_version);
+ bool shadow_atlas_update_light(RID p_atlas, RID p_light_intance, float p_coverage, uint64_t p_light_version);
struct DirectionalShadow {
GLuint fbo;
@@ -272,8 +265,8 @@ public:
mutable RID_Owner<ReflectionAtlas> reflection_atlas_owner;
virtual RID reflection_atlas_create();
- virtual void reflection_atlas_set_size(RID p_ref_atlas,int p_size);
- virtual void reflection_atlas_set_subdivision(RID p_ref_atlas,int p_subdiv);
+ virtual void reflection_atlas_set_size(RID p_ref_atlas, int p_size);
+ virtual void reflection_atlas_set_subdivision(RID p_ref_atlas, int p_subdiv);
/* REFLECTION CUBEMAPS */
@@ -300,8 +293,6 @@ public:
int render_step;
-
-
uint64_t last_pass;
int reflection_index;
@@ -319,20 +310,16 @@ public:
//notes: for ambientblend, use distance to edge to blend between already existing global environment
};
-
mutable RID_Owner<ReflectionProbeInstance> reflection_probe_instance_owner;
virtual RID reflection_probe_instance_create(RID p_probe);
- virtual void reflection_probe_instance_set_transform(RID p_instance,const Transform& p_transform);
+ virtual void reflection_probe_instance_set_transform(RID p_instance, const Transform &p_transform);
virtual void reflection_probe_release_atlas_index(RID p_instance);
virtual bool reflection_probe_instance_needs_redraw(RID p_instance);
virtual bool reflection_probe_instance_has_reflection(RID p_instance);
virtual bool reflection_probe_instance_begin_render(RID p_instance, RID p_reflection_atlas);
virtual bool reflection_probe_instance_postprocess_step(RID p_instance);
-
-
-
/* ENVIRONMENT API */
struct Environment : public RID_Data {
@@ -360,7 +347,6 @@ public:
bool ssr_smooth;
bool ssr_roughness;
-
bool ssao_enabled;
float ssao_intensity;
float ssao_radius;
@@ -403,62 +389,61 @@ public:
VS::EnvironmentDOFBlurQuality dof_blur_near_quality;
Environment() {
- bg_mode=VS::ENV_BG_CLEAR_COLOR;
- skybox_scale=1.0;
- bg_energy=1.0;
- skybox_ambient=0;
- ambient_energy=1.0;
- ambient_skybox_contribution=0.0;
- canvas_max_layer=0;
-
- ssr_enabled=false;
- ssr_max_steps=64;
- ssr_accel=0.04;
- ssr_fade=2.0;
- ssr_depth_tolerance=0.2;
- ssr_smooth=true;
- ssr_roughness=true;
+ bg_mode = VS::ENV_BG_CLEAR_COLOR;
+ skybox_scale = 1.0;
+ bg_energy = 1.0;
+ skybox_ambient = 0;
+ ambient_energy = 1.0;
+ ambient_skybox_contribution = 0.0;
+ canvas_max_layer = 0;
- ssao_enabled=false;
- ssao_intensity=1.0;
- ssao_radius=1.0;
- ssao_intensity2=1.0;
- ssao_radius2=0.0;
- ssao_bias=0.01;
- ssao_light_affect=0;
- ssao_filter=true;
+ ssr_enabled = false;
+ ssr_max_steps = 64;
+ ssr_accel = 0.04;
+ ssr_fade = 2.0;
+ ssr_depth_tolerance = 0.2;
+ ssr_smooth = true;
+ ssr_roughness = true;
- tone_mapper=VS::ENV_TONE_MAPPER_LINEAR;
- tone_mapper_exposure=1.0;
- tone_mapper_exposure_white=1.0;
- auto_exposure=false;
- auto_exposure_speed=0.5;
- auto_exposure_min=0.05;
- auto_exposure_max=8;
- auto_exposure_grey=0.4;
+ ssao_enabled = false;
+ ssao_intensity = 1.0;
+ ssao_radius = 1.0;
+ ssao_intensity2 = 1.0;
+ ssao_radius2 = 0.0;
+ ssao_bias = 0.01;
+ ssao_light_affect = 0;
+ ssao_filter = true;
- glow_enabled=false;
- glow_levels=(1<<2)|(1<<4);
- glow_intensity=0.8;
- glow_strength=1.0;
- glow_bloom=0.0;
- glow_blend_mode=VS::GLOW_BLEND_MODE_SOFTLIGHT;
- glow_hdr_bleed_treshold=1.0;
- glow_hdr_bleed_scale=2.0;
- glow_bicubic_upscale=false;
+ tone_mapper = VS::ENV_TONE_MAPPER_LINEAR;
+ tone_mapper_exposure = 1.0;
+ tone_mapper_exposure_white = 1.0;
+ auto_exposure = false;
+ auto_exposure_speed = 0.5;
+ auto_exposure_min = 0.05;
+ auto_exposure_max = 8;
+ auto_exposure_grey = 0.4;
- dof_blur_far_enabled=false;
- dof_blur_far_distance=10;
- dof_blur_far_transition=5;
- dof_blur_far_amount=0.1;
- dof_blur_far_quality=VS::ENV_DOF_BLUR_QUALITY_MEDIUM;
+ glow_enabled = false;
+ glow_levels = (1 << 2) | (1 << 4);
+ glow_intensity = 0.8;
+ glow_strength = 1.0;
+ glow_bloom = 0.0;
+ glow_blend_mode = VS::GLOW_BLEND_MODE_SOFTLIGHT;
+ glow_hdr_bleed_treshold = 1.0;
+ glow_hdr_bleed_scale = 2.0;
+ glow_bicubic_upscale = false;
- dof_blur_near_enabled=false;
- dof_blur_near_distance=2;
- dof_blur_near_transition=1;
- dof_blur_near_amount=0.1;
- dof_blur_near_quality=VS::ENV_DOF_BLUR_QUALITY_MEDIUM;
+ dof_blur_far_enabled = false;
+ dof_blur_far_distance = 10;
+ dof_blur_far_transition = 5;
+ dof_blur_far_amount = 0.1;
+ dof_blur_far_quality = VS::ENV_DOF_BLUR_QUALITY_MEDIUM;
+ dof_blur_near_enabled = false;
+ dof_blur_near_distance = 2;
+ dof_blur_near_transition = 1;
+ dof_blur_near_amount = 0.1;
+ dof_blur_near_quality = VS::ENV_DOF_BLUR_QUALITY_MEDIUM;
}
};
@@ -466,27 +451,25 @@ public:
virtual RID environment_create();
- virtual void environment_set_background(RID p_env,VS::EnvironmentBG p_bg);
- virtual void environment_set_skybox(RID p_env,RID p_skybox);
- virtual void environment_set_skybox_scale(RID p_env,float p_scale);
- virtual void environment_set_bg_color(RID p_env,const Color& p_color);
- virtual void environment_set_bg_energy(RID p_env,float p_energy);
- virtual void environment_set_canvas_max_layer(RID p_env,int p_max_layer);
- virtual void environment_set_ambient_light(RID p_env,const Color& p_color,float p_energy=1.0,float p_skybox_contribution=0.0);
-
- virtual void environment_set_dof_blur_near(RID p_env,bool p_enable,float p_distance,float p_transition,float p_far_amount,VS::EnvironmentDOFBlurQuality p_quality);
- virtual void environment_set_dof_blur_far(RID p_env,bool p_enable,float p_distance,float p_transition,float p_far_amount,VS::EnvironmentDOFBlurQuality p_quality);
- virtual void environment_set_glow(RID p_env,bool p_enable,int p_level_flags,float p_intensity,float p_strength,float p_bloom_treshold,VS::EnvironmentGlowBlendMode p_blend_mode,float p_hdr_bleed_treshold,float p_hdr_bleed_scale,bool p_bicubic_upscale);
- virtual void environment_set_fog(RID p_env,bool p_enable,float p_begin,float p_end,RID p_gradient_texture);
+ virtual void environment_set_background(RID p_env, VS::EnvironmentBG p_bg);
+ virtual void environment_set_skybox(RID p_env, RID p_skybox);
+ virtual void environment_set_skybox_scale(RID p_env, float p_scale);
+ virtual void environment_set_bg_color(RID p_env, const Color &p_color);
+ virtual void environment_set_bg_energy(RID p_env, float p_energy);
+ virtual void environment_set_canvas_max_layer(RID p_env, int p_max_layer);
+ virtual void environment_set_ambient_light(RID p_env, const Color &p_color, float p_energy = 1.0, float p_skybox_contribution = 0.0);
- virtual void environment_set_ssr(RID p_env,bool p_enable, int p_max_steps,float p_accel,float p_fade,float p_depth_tolerance,bool p_smooth,bool p_roughness);
- virtual void environment_set_ssao(RID p_env,bool p_enable, float p_radius, float p_radius2, float p_intensity2, float p_intensity, float p_bias, float p_light_affect,const Color &p_color,bool p_blur);
+ virtual void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, VS::EnvironmentDOFBlurQuality p_quality);
+ virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, VS::EnvironmentDOFBlurQuality p_quality);
+ virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_treshold, VS::EnvironmentGlowBlendMode p_blend_mode, float p_hdr_bleed_treshold, float p_hdr_bleed_scale, bool p_bicubic_upscale);
+ virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture);
+ virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_accel, float p_fade, float p_depth_tolerance, bool p_smooth, bool p_roughness);
+ virtual void environment_set_ssao(RID p_env, bool p_enable, float p_radius, float p_radius2, float p_intensity2, float p_intensity, float p_bias, float p_light_affect, const Color &p_color, bool p_blur);
- virtual void environment_set_tonemap(RID p_env,VS::EnvironmentToneMapper p_tone_mapper,float p_exposure,float p_white,bool p_auto_exposure,float p_min_luminance,float p_max_luminance,float p_auto_exp_speed,float p_auto_exp_scale);
-
- virtual void environment_set_adjustment(RID p_env,bool p_enable,float p_brightness,float p_contrast,float p_saturation,RID p_ramp);
+ virtual void environment_set_tonemap(RID p_env, VS::EnvironmentToneMapper p_tone_mapper, float p_exposure, float p_white, bool p_auto_exposure, float p_min_luminance, float p_max_luminance, float p_auto_exp_speed, float p_auto_exp_scale);
+ virtual void environment_set_adjustment(RID p_env, bool p_enable, float p_brightness, float p_contrast, float p_saturation, RID p_ramp);
/* LIGHT INSTANCE */
@@ -503,7 +486,6 @@ public:
float shadow_matrix3[16];
float shadow_matrix4[16];
float shadow_split_offsets[4];
-
};
struct LightInstance : public RID_Data {
@@ -516,8 +498,6 @@ public:
float split;
};
-
-
ShadowTransform shadow_transform[4];
RID self;
@@ -542,18 +522,16 @@ public:
Rect2 directional_rect;
-
Set<RID> shadow_atlases; //shadow atlases where this light is registered
- LightInstance() { }
-
+ LightInstance() {}
};
mutable RID_Owner<LightInstance> light_instance_owner;
virtual RID light_instance_create(RID p_light);
- virtual void light_instance_set_transform(RID p_light_instance,const Transform& p_transform);
- virtual void light_instance_set_shadow_transform(RID p_light_instance,const CameraMatrix& p_projection,const Transform& p_transform,float p_far,float p_split,int p_pass);
+ virtual void light_instance_set_transform(RID p_light_instance, const Transform &p_transform);
+ virtual void light_instance_set_shadow_transform(RID p_light_instance, const CameraMatrix &p_projection, const Transform &p_transform, float p_far, float p_split, int p_pass);
virtual void light_instance_mark_visible(RID p_light_instance);
/* REFLECTION INSTANCE */
@@ -566,42 +544,42 @@ public:
Vector3 bounds;
Transform transform_to_data;
- GIProbeInstance() { probe=NULL; tex_cache=0; }
+ GIProbeInstance() {
+ probe = NULL;
+ tex_cache = 0;
+ }
};
-
-
mutable RID_Owner<GIProbeInstance> gi_probe_instance_owner;
virtual RID gi_probe_instance_create();
- virtual void gi_probe_instance_set_light_data(RID p_probe,RID p_base,RID p_data);
- virtual void gi_probe_instance_set_transform_to_data(RID p_probe,const Transform& p_xform);
- virtual void gi_probe_instance_set_bounds(RID p_probe,const Vector3& p_bounds);
+ virtual void gi_probe_instance_set_light_data(RID p_probe, RID p_base, RID p_data);
+ virtual void gi_probe_instance_set_transform_to_data(RID p_probe, const Transform &p_xform);
+ virtual void gi_probe_instance_set_bounds(RID p_probe, const Vector3 &p_bounds);
/* RENDER LIST */
struct RenderList {
enum {
- DEFAULT_MAX_ELEMENTS=65536,
- SORT_FLAG_SKELETON=1,
- SORT_FLAG_INSTANCING=2,
- MAX_DIRECTIONAL_LIGHTS=16,
- MAX_LIGHTS=4096,
- MAX_REFLECTIONS=1024,
+ DEFAULT_MAX_ELEMENTS = 65536,
+ SORT_FLAG_SKELETON = 1,
+ SORT_FLAG_INSTANCING = 2,
+ MAX_DIRECTIONAL_LIGHTS = 16,
+ MAX_LIGHTS = 4096,
+ MAX_REFLECTIONS = 1024,
-
- SORT_KEY_DEPTH_LAYER_SHIFT=60,
- SORT_KEY_UNSHADED_FLAG=uint64_t(1)<<59,
- SORT_KEY_NO_DIRECTIONAL_FLAG=uint64_t(1)<<58,
- SORT_KEY_GI_PROBES_FLAG=uint64_t(1)<<57,
- SORT_KEY_SHADING_SHIFT=57,
- SORT_KEY_SHADING_MASK=7,
- SORT_KEY_MATERIAL_INDEX_SHIFT=40,
- SORT_KEY_GEOMETRY_INDEX_SHIFT=20,
- SORT_KEY_GEOMETRY_TYPE_SHIFT=15,
- SORT_KEY_SKELETON_FLAG=2,
- SORT_KEY_MIRROR_FLAG=1
+ SORT_KEY_DEPTH_LAYER_SHIFT = 60,
+ SORT_KEY_UNSHADED_FLAG = uint64_t(1) << 59,
+ SORT_KEY_NO_DIRECTIONAL_FLAG = uint64_t(1) << 58,
+ SORT_KEY_GI_PROBES_FLAG = uint64_t(1) << 57,
+ SORT_KEY_SHADING_SHIFT = 57,
+ SORT_KEY_SHADING_MASK = 7,
+ SORT_KEY_MATERIAL_INDEX_SHIFT = 40,
+ SORT_KEY_GEOMETRY_INDEX_SHIFT = 20,
+ SORT_KEY_GEOMETRY_TYPE_SHIFT = 15,
+ SORT_KEY_SKELETON_FLAG = 2,
+ SORT_KEY_MIRROR_FLAG = 1
};
@@ -614,74 +592,70 @@ public:
RasterizerStorageGLES3::Material *material;
RasterizerStorageGLES3::GeometryOwner *owner;
uint64_t sort_key;
-
};
-
Element *_elements;
Element **elements;
int element_count;
int alpha_element_count;
-
void clear() {
- element_count=0;
- alpha_element_count=0;
+ element_count = 0;
+ alpha_element_count = 0;
}
//should eventually be replaced by radix
struct SortByKey {
- _FORCE_INLINE_ bool operator()(const Element* A, const Element* B ) const {
+ _FORCE_INLINE_ bool operator()(const Element *A, const Element *B) const {
return A->sort_key < B->sort_key;
}
};
void sort_by_key(bool p_alpha) {
- SortArray<Element*,SortByKey> sorter;
+ SortArray<Element *, SortByKey> sorter;
if (p_alpha) {
- sorter.sort(&elements[max_elements-alpha_element_count],alpha_element_count);
+ sorter.sort(&elements[max_elements - alpha_element_count], alpha_element_count);
} else {
- sorter.sort(elements,element_count);
+ sorter.sort(elements, element_count);
}
}
struct SortByDepth {
- _FORCE_INLINE_ bool operator()(const Element* A, const Element* B ) const {
+ _FORCE_INLINE_ bool operator()(const Element *A, const Element *B) const {
return A->instance->depth > B->instance->depth;
}
};
void sort_by_depth(bool p_alpha) {
- SortArray<Element*,SortByDepth> sorter;
+ SortArray<Element *, SortByDepth> sorter;
if (p_alpha) {
- sorter.sort(&elements[max_elements-alpha_element_count],alpha_element_count);
+ sorter.sort(&elements[max_elements - alpha_element_count], alpha_element_count);
} else {
- sorter.sort(elements,element_count);
+ sorter.sort(elements, element_count);
}
}
+ _FORCE_INLINE_ Element *add_element() {
- _FORCE_INLINE_ Element* add_element() {
-
- if (element_count+alpha_element_count>=max_elements)
+ if (element_count + alpha_element_count >= max_elements)
return NULL;
- elements[element_count]=&_elements[element_count];
+ elements[element_count] = &_elements[element_count];
return elements[element_count++];
}
- _FORCE_INLINE_ Element* add_alpha_element() {
+ _FORCE_INLINE_ Element *add_alpha_element() {
- if (element_count+alpha_element_count>=max_elements)
+ if (element_count + alpha_element_count >= max_elements)
return NULL;
- int idx = max_elements-alpha_element_count-1;
- elements[idx]=&_elements[idx];
+ int idx = max_elements - alpha_element_count - 1;
+ elements[idx] = &_elements[idx];
alpha_element_count++;
return elements[idx];
}
@@ -689,18 +663,16 @@ public:
void init() {
element_count = 0;
- alpha_element_count =0;
- elements=memnew_arr(Element*,max_elements);
- _elements=memnew_arr(Element,max_elements);
- for (int i=0;i<max_elements;i++)
- elements[i]=&_elements[i]; // assign elements
-
+ alpha_element_count = 0;
+ elements = memnew_arr(Element *, max_elements);
+ _elements = memnew_arr(Element, max_elements);
+ for (int i = 0; i < max_elements; i++)
+ elements[i] = &_elements[i]; // assign elements
}
-
RenderList() {
- max_elements=DEFAULT_MAX_ELEMENTS;
+ max_elements = DEFAULT_MAX_ELEMENTS;
}
~RenderList() {
@@ -709,45 +681,41 @@ public:
}
};
-
LightInstance *directional_light;
LightInstance *directional_lights[RenderList::MAX_DIRECTIONAL_LIGHTS];
-
-
RenderList render_list;
- _FORCE_INLINE_ void _set_cull(bool p_front,bool p_reverse_cull);
+ _FORCE_INLINE_ void _set_cull(bool p_front, bool p_reverse_cull);
- _FORCE_INLINE_ bool _setup_material(RasterizerStorageGLES3::Material* p_material,bool p_alpha_pass);
- _FORCE_INLINE_ void _setup_transform(InstanceBase *p_instance,const Transform& p_view_transform,const CameraMatrix& p_projection);
+ _FORCE_INLINE_ bool _setup_material(RasterizerStorageGLES3::Material *p_material, bool p_alpha_pass);
+ _FORCE_INLINE_ void _setup_transform(InstanceBase *p_instance, const Transform &p_view_transform, const CameraMatrix &p_projection);
_FORCE_INLINE_ void _setup_geometry(RenderList::Element *e);
_FORCE_INLINE_ void _render_geometry(RenderList::Element *e);
- _FORCE_INLINE_ void _setup_light(RenderList::Element *e,const Transform& p_view_transform);
-
- void _render_list(RenderList::Element **p_elements, int p_element_count, const Transform& p_view_transform, const CameraMatrix& p_projection, GLuint p_base_env, bool p_reverse_cull, bool p_alpha_pass, bool p_shadow, bool p_directional_add, bool p_directional_shadows);
+ _FORCE_INLINE_ void _setup_light(RenderList::Element *e, const Transform &p_view_transform);
+ void _render_list(RenderList::Element **p_elements, int p_element_count, const Transform &p_view_transform, const CameraMatrix &p_projection, GLuint p_base_env, bool p_reverse_cull, bool p_alpha_pass, bool p_shadow, bool p_directional_add, bool p_directional_shadows);
- _FORCE_INLINE_ void _add_geometry( RasterizerStorageGLES3::Geometry* p_geometry, InstanceBase *p_instance, RasterizerStorageGLES3::GeometryOwner *p_owner,int p_material,bool p_shadow);
+ _FORCE_INLINE_ void _add_geometry(RasterizerStorageGLES3::Geometry *p_geometry, InstanceBase *p_instance, RasterizerStorageGLES3::GeometryOwner *p_owner, int p_material, bool p_shadow);
- void _draw_skybox(RasterizerStorageGLES3::SkyBox *p_skybox, const CameraMatrix& p_projection, const Transform& p_transform, bool p_vflip, float p_scale);
+ void _draw_skybox(RasterizerStorageGLES3::SkyBox *p_skybox, const CameraMatrix &p_projection, const Transform &p_transform, bool p_vflip, float p_scale);
- void _setup_environment(Environment *env, const CameraMatrix &p_cam_projection, const Transform& p_cam_transform);
+ void _setup_environment(Environment *env, const CameraMatrix &p_cam_projection, const Transform &p_cam_transform);
void _setup_directional_light(int p_index, const Transform &p_camera_inverse_transformm, bool p_use_shadows);
- void _setup_lights(RID *p_light_cull_result, int p_light_cull_count, const Transform &p_camera_inverse_transform, const CameraMatrix& p_camera_projection, RID p_shadow_atlas);
- void _setup_reflections(RID *p_reflection_probe_cull_result, int p_reflection_probe_cull_count, const Transform& p_camera_inverse_transform, const CameraMatrix& p_camera_projection, RID p_reflection_atlas, Environment *p_env);
+ void _setup_lights(RID *p_light_cull_result, int p_light_cull_count, const Transform &p_camera_inverse_transform, const CameraMatrix &p_camera_projection, RID p_shadow_atlas);
+ void _setup_reflections(RID *p_reflection_probe_cull_result, int p_reflection_probe_cull_count, const Transform &p_camera_inverse_transform, const CameraMatrix &p_camera_projection, RID p_reflection_atlas, Environment *p_env);
void _copy_screen();
void _copy_to_front_buffer(Environment *env);
void _copy_texture_to_front_buffer(GLuint p_texture); //used for debug
- void _fill_render_list(InstanceBase** p_cull_result,int p_cull_count,bool p_shadow);
+ void _fill_render_list(InstanceBase **p_cull_result, int p_cull_count, bool p_shadow);
void _render_mrts(Environment *env, const CameraMatrix &p_cam_projection);
void _post_process(Environment *env, const CameraMatrix &p_cam_projection);
- virtual void render_scene(const Transform& p_cam_transform,const CameraMatrix& p_cam_projection,bool p_cam_ortogonal,InstanceBase** p_cull_result,int p_cull_count,RID* p_light_cull_result,int p_light_cull_count,RID* p_reflection_probe_cull_result,int p_reflection_probe_cull_count,RID p_environment,RID p_shadow_atlas,RID p_reflection_atlas,RID p_reflection_probe,int p_reflection_probe_pass);
- virtual void render_shadow(RID p_light,RID p_shadow_atlas,int p_pass,InstanceBase** p_cull_result,int p_cull_count);
+ virtual void render_scene(const Transform &p_cam_transform, const CameraMatrix &p_cam_projection, bool p_cam_ortogonal, InstanceBase **p_cull_result, int p_cull_count, RID *p_light_cull_result, int p_light_cull_count, RID *p_reflection_probe_cull_result, int p_reflection_probe_cull_count, RID p_environment, RID p_shadow_atlas, RID p_reflection_atlas, RID p_reflection_probe, int p_reflection_probe_pass);
+ virtual void render_shadow(RID p_light, RID p_shadow_atlas, int p_pass, InstanceBase **p_cull_result, int p_cull_count);
virtual bool free(RID p_rid);
void _generate_brdf();