1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-18 14:21:41 +00:00

working reflection probes!!

This commit is contained in:
Juan Linietsky
2016-11-19 13:23:37 -03:00
parent a7078a4be9
commit c39d2b3f42
25 changed files with 2605 additions and 240 deletions

View File

@@ -54,7 +54,7 @@ public:
virtual RID environment_create()=0;
virtual void environment_set_background(RID p_env,VS::EnvironmentBG p_bg)=0;
virtual void environment_set_skybox(RID p_env,RID p_skybox,int p_radiance_size)=0;
virtual void environment_set_skybox(RID p_env,RID p_skybox)=0;
virtual void environment_set_skybox_scale(RID p_env,float p_scale)=0;
virtual void environment_set_bg_color(RID p_env,const Color& p_color)=0;
virtual void environment_set_bg_energy(RID p_env,float p_energy)=0;
@@ -84,6 +84,7 @@ public:
Vector<RID> materials;
Vector<RID> light_instances;
Vector<RID> reflection_probe_instances;
Vector<float> morph_values;
@@ -125,7 +126,19 @@ public:
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)=0;
virtual void light_instance_mark_visible(RID p_light_instance)=0;
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_environment,RID p_shadow_atlas)=0;
virtual RID reflection_atlas_create()=0;
virtual void reflection_atlas_set_size(RID p_ref_atlas,int p_size)=0;
virtual void reflection_atlas_set_subdivision(RID p_ref_atlas,int p_subdiv)=0;
virtual RID reflection_probe_instance_create(RID p_probe)=0;
virtual void reflection_probe_instance_set_transform(RID p_instance,const Transform& p_transform)=0;
virtual void reflection_probe_release_atlas_index(RID p_instance)=0;
virtual bool reflection_probe_instance_needs_redraw(RID p_instance)=0;
virtual bool reflection_probe_instance_has_reflection(RID p_instance)=0;
virtual bool reflection_probe_instance_begin_render(RID p_instance, RID p_reflection_atlas)=0;
virtual bool reflection_probe_instance_postprocess_step(RID p_instance)=0;
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)=0;
virtual void render_shadow(RID p_light,RID p_shadow_atlas,int p_pass,InstanceBase** p_cull_result,int p_cull_count)=0;
virtual void set_scene_pass(uint64_t p_pass)=0;
@@ -165,6 +178,11 @@ public:
virtual RID texture_create_radiance_cubemap(RID p_source,int p_resolution=-1) const=0;
/* SKYBOX API */
virtual RID skybox_create()=0;
virtual void skybox_set_texture(RID p_skybox,RID p_cube_map,int p_radiance_size)=0;
/* SHADER API */
@@ -324,16 +342,27 @@ public:
virtual RID reflection_probe_create()=0;
virtual void reflection_probe_set_update_mode(RID p_probe, VS::ReflectionProbeUpdateMode p_mode)=0;
virtual void reflection_probe_set_intensity(RID p_probe, float p_intensity)=0;
virtual void reflection_probe_set_clip(RID p_probe, float p_near, float p_far)=0;
virtual void reflection_probe_set_min_blend_distance(RID p_probe, float p_distance)=0;
virtual void reflection_probe_set_interior_ambient(RID p_probe, const Color& p_ambient)=0;
virtual void reflection_probe_set_interior_ambient_energy(RID p_probe, float p_energy)=0;
virtual void reflection_probe_set_interior_ambient_probe_contribution(RID p_probe, float p_contrib)=0;
virtual void reflection_probe_set_max_distance(RID p_probe, float p_distance)=0;
virtual void reflection_probe_set_extents(RID p_probe, const Vector3& p_extents)=0;
virtual void reflection_probe_set_origin_offset(RID p_probe, const Vector3& p_offset)=0;
virtual void reflection_probe_set_enable_parallax_correction(RID p_probe, bool p_enable)=0;
virtual void reflection_probe_set_resolution(RID p_probe, int p_resolution)=0;
virtual void reflection_probe_set_hide_skybox(RID p_probe, bool p_hide)=0;
virtual void reflection_probe_set_as_interior(RID p_probe, bool p_enable)=0;
virtual void reflection_probe_set_enable_box_projection(RID p_probe, bool p_enable)=0;
virtual void reflection_probe_set_enable_shadows(RID p_probe, bool p_enable)=0;
virtual void reflection_probe_set_cull_mask(RID p_probe, uint32_t p_layers)=0;
virtual AABB reflection_probe_get_aabb(RID p_probe) const=0;
virtual VS::ReflectionProbeUpdateMode reflection_probe_get_update_mode(RID p_probe) const=0;
virtual uint32_t reflection_probe_get_cull_mask(RID p_probe) const=0;
virtual Vector3 reflection_probe_get_extents(RID p_probe) const=0;
virtual Vector3 reflection_probe_get_origin_offset(RID p_probe) const=0;
virtual float reflection_probe_get_origin_max_distance(RID p_probe) const=0;
virtual bool reflection_probe_renders_shadows(RID p_probe) const=0;
/* ROOM API */