1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

Lots of 3D improvements:

-Object Manipulator Gizmo keeps proper scale in all windows and projections, (configurable on settings too).
-Manipulator gizmos for other objects (camera, shapes, etc) massively improved and bug-fixed.
-Manipulator gizmos are different for edited object and other objects.
-Properly highlight manipulator gizmo handles when hovered.
-Fixed bugs in fragment program when using more than 1 light together.
-Reload png/jpg files automatically in editor if edited externally.
-Added 4-stages Parallel Split Shadow Mapping, to improve shadow quality in large scenarios
-Added PCF13 to improve smoothness of shadow borders
-General optimization of directional light shadow mapping for Orthogonal,PSM and PSSM.
-Fixed normal mapping when importing DAE files, works nicely now.
This commit is contained in:
Juan Linietsky
2014-05-04 22:50:23 -03:00
parent 3c17e0c915
commit 72ae89c5aa
36 changed files with 3222 additions and 2360 deletions

View File

@@ -153,6 +153,16 @@ protected:
void _free_fixed_material(const RID& p_material);
public:
enum ShadowFilterTechnique {
SHADOW_FILTER_NONE,
SHADOW_FILTER_PCF5,
SHADOW_FILTER_PCF13,
SHADOW_FILTER_ESM,
SHADOW_FILTER_VSM,
};
/* TEXTURE API */
virtual RID texture_create()=0;
@@ -264,6 +274,9 @@ public:
virtual AABB mesh_get_aabb(RID p_mesh) const=0;
virtual void mesh_set_custom_aabb(RID p_mesh,const AABB& p_aabb)=0;
virtual AABB mesh_get_custom_aabb(RID p_mesh) const=0;
/* MULTIMESH API */
virtual RID multimesh_create()=0;

View File

@@ -587,6 +587,23 @@ AABB RasterizerDummy::mesh_get_aabb(RID p_mesh) const {
return aabb;
}
void RasterizerDummy::mesh_set_custom_aabb(RID p_mesh,const AABB& p_aabb) {
Mesh *mesh = mesh_owner.get( p_mesh );
ERR_FAIL_COND(!mesh);
mesh->custom_aabb=p_aabb;
}
AABB RasterizerDummy::mesh_get_custom_aabb(RID p_mesh) const {
const Mesh *mesh = mesh_owner.get( p_mesh );
ERR_FAIL_COND_V(!mesh,AABB());
return mesh->custom_aabb;
}
/* MULTIMESH API */
RID RasterizerDummy::multimesh_create() {

View File

@@ -189,6 +189,7 @@ class RasterizerDummy : public Rasterizer {
Vector<Surface*> surfaces;
int morph_target_count;
VS::MorphTargetMode morph_target_mode;
AABB custom_aabb;
mutable uint64_t last_pass;
Mesh() {
@@ -464,6 +465,10 @@ public:
virtual AABB mesh_get_aabb(RID p_mesh) const;
virtual void mesh_set_custom_aabb(RID p_mesh,const AABB& p_aabb);
virtual AABB mesh_get_custom_aabb(RID p_mesh) const;
/* MULTIMESH API */
virtual RID multimesh_create();

View File

@@ -434,6 +434,21 @@ int VisualServerRaster::mesh_get_surface_count(RID p_mesh) const{
}
void VisualServerRaster::mesh_set_custom_aabb(RID p_mesh,const AABB& p_aabb) {
VS_CHANGED;
_dependency_queue_update(p_mesh,true);
rasterizer->mesh_set_custom_aabb(p_mesh,p_aabb);
}
AABB VisualServerRaster::mesh_get_custom_aabb(RID p_mesh) const {
return rasterizer->mesh_get_custom_aabb(p_mesh);
}
/* MULTIMESH */
RID VisualServerRaster::multimesh_create() {

View File

@@ -742,7 +742,10 @@ public:
virtual void mesh_remove_surface(RID p_mesh,int p_index);
virtual int mesh_get_surface_count(RID p_mesh) const;
virtual void mesh_set_custom_aabb(RID p_mesh,const AABB& p_aabb);
virtual AABB mesh_get_custom_aabb(RID p_mesh) const;
/* MULTIMESH API */

View File

@@ -696,6 +696,7 @@ public:
FUNC2(mesh_set_morph_target_count,RID,int);
FUNC1RC(int,mesh_get_morph_target_count,RID);
FUNC2(mesh_set_morph_target_mode,RID,MorphTargetMode);
FUNC1RC(MorphTargetMode,mesh_get_morph_target_mode,RID);
@@ -717,6 +718,9 @@ public:
FUNC1RC(int,mesh_get_surface_count,RID);
FUNC2(mesh_set_custom_aabb,RID,const AABB&);
FUNC1RC(AABB,mesh_get_custom_aabb,RID);
/* MULTIMESH API */

View File

@@ -334,7 +334,10 @@ public:
virtual void mesh_remove_surface(RID p_mesh,int p_index)=0;
virtual int mesh_get_surface_count(RID p_mesh) const=0;
virtual void mesh_set_custom_aabb(RID p_mesh,const AABB& p_aabb)=0;
virtual AABB mesh_get_custom_aabb(RID p_mesh) const=0;
/* MULTIMESH API */
virtual RID multimesh_create()=0;
@@ -502,7 +505,8 @@ public:
enum LightDirectionalShadowMode {
LIGHT_DIRECTIONAL_SHADOW_ORTHOGONAL,
LIGHT_DIRECTIONAL_SHADOW_PERSPECTIVE,
LIGHT_DIRECTIONAL_SHADOW_PARALLEL_SPLIT
LIGHT_DIRECTIONAL_SHADOW_PARALLEL_2_SPLITS,
LIGHT_DIRECTIONAL_SHADOW_PARALLEL_4_SPLITS
};
virtual void light_directional_set_shadow_mode(RID p_light,LightDirectionalShadowMode p_mode)=0;