You've already forked godot
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:
@@ -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;
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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 */
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user