mirror of
https://github.com/Relintai/pandemonium_engine_minimal.git
synced 2024-11-10 20:12:10 +01:00
Removed the remnants of RasterizerScene.
This commit is contained in:
parent
dfeeb606e8
commit
88e8d53c52
@ -36,19 +36,6 @@
|
|||||||
#include "servers/rendering/rasterizer.h"
|
#include "servers/rendering/rasterizer.h"
|
||||||
#include "servers/rendering_server.h"
|
#include "servers/rendering_server.h"
|
||||||
|
|
||||||
class RasterizerSceneDummy : public RasterizerScene {
|
|
||||||
public:
|
|
||||||
void render_scene(const Transform &p_cam_transform, const Projection &p_cam_projection, const int p_eye, bool p_cam_ortogonal, InstanceBase **p_cull_result, int p_cull_count) {}
|
|
||||||
|
|
||||||
void set_scene_pass(uint64_t p_pass) {}
|
|
||||||
void set_debug_draw_mode(RS::ViewportDebugDraw p_debug_draw) {}
|
|
||||||
|
|
||||||
bool free(RID p_rid) { return true; }
|
|
||||||
|
|
||||||
RasterizerSceneDummy() {}
|
|
||||||
~RasterizerSceneDummy() {}
|
|
||||||
};
|
|
||||||
|
|
||||||
class RasterizerStorageDummy : public RasterizerStorage {
|
class RasterizerStorageDummy : public RasterizerStorage {
|
||||||
public:
|
public:
|
||||||
/* TEXTURE API */
|
/* TEXTURE API */
|
||||||
@ -214,9 +201,6 @@ public:
|
|||||||
bool material_is_animated(RID p_material) { return false; }
|
bool material_is_animated(RID p_material) { return false; }
|
||||||
bool material_casts_shadows(RID p_material) { return false; }
|
bool material_casts_shadows(RID p_material) { return false; }
|
||||||
|
|
||||||
void material_add_instance_owner(RID p_material, RasterizerScene::InstanceBase *p_instance) {}
|
|
||||||
void material_remove_instance_owner(RID p_material, RasterizerScene::InstanceBase *p_instance) {}
|
|
||||||
|
|
||||||
/* MESH API */
|
/* MESH API */
|
||||||
|
|
||||||
RID mesh_create() {
|
RID mesh_create() {
|
||||||
@ -460,7 +444,6 @@ class RasterizerDummy : public Rasterizer {
|
|||||||
protected:
|
protected:
|
||||||
RasterizerCanvasDummy canvas;
|
RasterizerCanvasDummy canvas;
|
||||||
RasterizerStorageDummy storage;
|
RasterizerStorageDummy storage;
|
||||||
RasterizerSceneDummy scene;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RasterizerStorage *get_storage() { return &storage; }
|
RasterizerStorage *get_storage() { return &storage; }
|
||||||
|
@ -1670,32 +1670,6 @@ bool RasterizerStorageGLES2::material_uses_ensure_correct_normals(RID p_material
|
|||||||
return material->shader->spatial.uses_ensure_correct_normals;
|
return material->shader->spatial.uses_ensure_correct_normals;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RasterizerStorageGLES2::material_add_instance_owner(RID p_material, RasterizerScene::InstanceBase *p_instance) {
|
|
||||||
Material *material = material_owner.getornull(p_material);
|
|
||||||
ERR_FAIL_COND(!material);
|
|
||||||
|
|
||||||
RBMap<RasterizerScene::InstanceBase *, int>::Element *E = material->instance_owners.find(p_instance);
|
|
||||||
if (E) {
|
|
||||||
E->get()++;
|
|
||||||
} else {
|
|
||||||
material->instance_owners[p_instance] = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void RasterizerStorageGLES2::material_remove_instance_owner(RID p_material, RasterizerScene::InstanceBase *p_instance) {
|
|
||||||
Material *material = material_owner.getornull(p_material);
|
|
||||||
ERR_FAIL_COND(!material);
|
|
||||||
|
|
||||||
RBMap<RasterizerScene::InstanceBase *, int>::Element *E = material->instance_owners.find(p_instance);
|
|
||||||
ERR_FAIL_COND(!E);
|
|
||||||
|
|
||||||
E->get()--;
|
|
||||||
|
|
||||||
if (E->get() == 0) {
|
|
||||||
material->instance_owners.erase(E);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void RasterizerStorageGLES2::material_set_render_priority(RID p_material, int priority) {
|
void RasterizerStorageGLES2::material_set_render_priority(RID p_material, int priority) {
|
||||||
ERR_FAIL_COND(priority < RS::MATERIAL_RENDER_PRIORITY_MIN);
|
ERR_FAIL_COND(priority < RS::MATERIAL_RENDER_PRIORITY_MIN);
|
||||||
ERR_FAIL_COND(priority > RS::MATERIAL_RENDER_PRIORITY_MAX);
|
ERR_FAIL_COND(priority > RS::MATERIAL_RENDER_PRIORITY_MAX);
|
||||||
@ -3233,53 +3207,6 @@ void RasterizerStorageGLES2::update_dirty_blend_shapes() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////////
|
|
||||||
|
|
||||||
void RasterizerStorageGLES2::instance_add_skeleton(RID p_skeleton, RasterizerScene::InstanceBase *p_instance) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void RasterizerStorageGLES2::instance_remove_skeleton(RID p_skeleton, RasterizerScene::InstanceBase *p_instance) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void RasterizerStorageGLES2::instance_add_dependency(RID p_base, RasterizerScene::InstanceBase *p_instance) {
|
|
||||||
Instantiable *inst = nullptr;
|
|
||||||
switch (p_instance->base_type) {
|
|
||||||
case RS::INSTANCE_MESH: {
|
|
||||||
inst = mesh_owner.getornull(p_base);
|
|
||||||
ERR_FAIL_COND(!inst);
|
|
||||||
} break;
|
|
||||||
case RS::INSTANCE_MULTIMESH: {
|
|
||||||
inst = multimesh_owner.getornull(p_base);
|
|
||||||
ERR_FAIL_COND(!inst);
|
|
||||||
} break;
|
|
||||||
default: {
|
|
||||||
ERR_FAIL();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inst->instance_list.add(&p_instance->dependency_item);
|
|
||||||
}
|
|
||||||
|
|
||||||
void RasterizerStorageGLES2::instance_remove_dependency(RID p_base, RasterizerScene::InstanceBase *p_instance) {
|
|
||||||
Instantiable *inst = nullptr;
|
|
||||||
|
|
||||||
switch (p_instance->base_type) {
|
|
||||||
case RS::INSTANCE_MESH: {
|
|
||||||
inst = mesh_owner.getornull(p_base);
|
|
||||||
ERR_FAIL_COND(!inst);
|
|
||||||
} break;
|
|
||||||
case RS::INSTANCE_MULTIMESH: {
|
|
||||||
inst = multimesh_owner.getornull(p_base);
|
|
||||||
ERR_FAIL_COND(!inst);
|
|
||||||
} break;
|
|
||||||
default: {
|
|
||||||
ERR_FAIL();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inst->instance_list.remove(&p_instance->dependency_item);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* RENDER TARGET */
|
/* RENDER TARGET */
|
||||||
|
|
||||||
void RasterizerStorageGLES2::_render_target_allocate(RenderTarget *rt) {
|
void RasterizerStorageGLES2::_render_target_allocate(RenderTarget *rt) {
|
||||||
@ -4084,24 +4011,6 @@ bool RasterizerStorageGLES2::free(RID p_rid) {
|
|||||||
g->material = RID();
|
g->material = RID();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (RBMap<RasterizerScene::InstanceBase *, int>::Element *E = m->instance_owners.front(); E; E = E->next()) {
|
|
||||||
RasterizerScene::InstanceBase *ins = E->key();
|
|
||||||
|
|
||||||
if (ins->material_override == p_rid) {
|
|
||||||
ins->material_override = RID();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ins->material_overlay == p_rid) {
|
|
||||||
ins->material_overlay = RID();
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < ins->materials.size(); i++) {
|
|
||||||
if (ins->materials[i] == p_rid) {
|
|
||||||
ins->materials.write[i] = RID();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
material_owner.free(p_rid);
|
material_owner.free(p_rid);
|
||||||
memdelete(m);
|
memdelete(m);
|
||||||
|
|
||||||
|
@ -172,23 +172,10 @@ public:
|
|||||||
/////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
struct Instantiable : public RID_Data {
|
struct Instantiable : public RID_Data {
|
||||||
SelfList<RasterizerScene::InstanceBase>::List instance_list;
|
|
||||||
|
|
||||||
_FORCE_INLINE_ void instance_change_notify(bool p_aabb, bool p_materials) {
|
_FORCE_INLINE_ void instance_change_notify(bool p_aabb, bool p_materials) {
|
||||||
SelfList<RasterizerScene::InstanceBase> *instances = instance_list.first();
|
|
||||||
while (instances) {
|
|
||||||
instances->self()->base_changed(p_aabb, p_materials);
|
|
||||||
instances = instances->next();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ void instance_remove_deps() {
|
_FORCE_INLINE_ void instance_remove_deps() {
|
||||||
SelfList<RasterizerScene::InstanceBase> *instances = instance_list.first();
|
|
||||||
|
|
||||||
while (instances) {
|
|
||||||
instances->self()->base_removed();
|
|
||||||
instances = instances->next();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Instantiable() {}
|
Instantiable() {}
|
||||||
@ -542,7 +529,6 @@ public:
|
|||||||
uint64_t last_pass;
|
uint64_t last_pass;
|
||||||
|
|
||||||
RBMap<Geometry *, int> geometry_owners;
|
RBMap<Geometry *, int> geometry_owners;
|
||||||
RBMap<RasterizerScene::InstanceBase *, int> instance_owners;
|
|
||||||
|
|
||||||
bool can_cast_shadow_cache;
|
bool can_cast_shadow_cache;
|
||||||
bool is_animated_cache;
|
bool is_animated_cache;
|
||||||
@ -586,9 +572,6 @@ public:
|
|||||||
virtual bool material_uses_tangents(RID p_material);
|
virtual bool material_uses_tangents(RID p_material);
|
||||||
virtual bool material_uses_ensure_correct_normals(RID p_material);
|
virtual bool material_uses_ensure_correct_normals(RID p_material);
|
||||||
|
|
||||||
virtual void material_add_instance_owner(RID p_material, RasterizerScene::InstanceBase *p_instance);
|
|
||||||
virtual void material_remove_instance_owner(RID p_material, RasterizerScene::InstanceBase *p_instance);
|
|
||||||
|
|
||||||
virtual void material_set_render_priority(RID p_material, int priority);
|
virtual void material_set_render_priority(RID p_material, int priority);
|
||||||
|
|
||||||
void update_dirty_materials();
|
void update_dirty_materials();
|
||||||
@ -810,14 +793,6 @@ public:
|
|||||||
|
|
||||||
void update_dirty_multimeshes();
|
void update_dirty_multimeshes();
|
||||||
|
|
||||||
/* INSTANCE */
|
|
||||||
|
|
||||||
virtual void instance_add_skeleton(RID p_skeleton, RasterizerScene::InstanceBase *p_instance);
|
|
||||||
virtual void instance_remove_skeleton(RID p_skeleton, RasterizerScene::InstanceBase *p_instance);
|
|
||||||
|
|
||||||
virtual void instance_add_dependency(RID p_base, RasterizerScene::InstanceBase *p_instance);
|
|
||||||
virtual void instance_remove_dependency(RID p_base, RasterizerScene::InstanceBase *p_instance);
|
|
||||||
|
|
||||||
/* RENDER TARGET */
|
/* RENDER TARGET */
|
||||||
|
|
||||||
struct RenderTarget : public RID_Data {
|
struct RenderTarget : public RID_Data {
|
||||||
|
@ -36,85 +36,6 @@
|
|||||||
|
|
||||||
#include "core/containers/self_list.h"
|
#include "core/containers/self_list.h"
|
||||||
|
|
||||||
class RasterizerScene {
|
|
||||||
public:
|
|
||||||
struct InstanceBase : RID_Data {
|
|
||||||
RS::InstanceType base_type;
|
|
||||||
RID base;
|
|
||||||
|
|
||||||
RID skeleton;
|
|
||||||
RID material_override;
|
|
||||||
RID material_overlay;
|
|
||||||
|
|
||||||
// This is the main transform to be drawn with ..
|
|
||||||
// This will either be the interpolated transform (when using fixed timestep interpolation)
|
|
||||||
// or the ONLY transform (when not using FTI).
|
|
||||||
Transform transform;
|
|
||||||
|
|
||||||
// for interpolation we store the current transform (this physics tick)
|
|
||||||
// and the transform in the previous tick
|
|
||||||
Transform transform_curr;
|
|
||||||
Transform transform_prev;
|
|
||||||
|
|
||||||
int depth_layer;
|
|
||||||
uint32_t layer_mask;
|
|
||||||
|
|
||||||
//RID sampled_light;
|
|
||||||
|
|
||||||
Vector<RID> materials;
|
|
||||||
Vector<RID> light_instances;
|
|
||||||
|
|
||||||
PoolVector<float> blend_values;
|
|
||||||
|
|
||||||
//fit in 32 bits
|
|
||||||
bool mirror : 1;
|
|
||||||
bool receive_shadows : 1;
|
|
||||||
bool visible : 1;
|
|
||||||
bool redraw_if_visible : 1;
|
|
||||||
|
|
||||||
bool on_interpolate_list : 1;
|
|
||||||
bool on_interpolate_transform_list : 1;
|
|
||||||
bool interpolated : 1;
|
|
||||||
TransformInterpolator::Method interpolation_method : 3;
|
|
||||||
|
|
||||||
// For fixed timestep interpolation.
|
|
||||||
// Note 32 bits is plenty for checksum, no need for real_t
|
|
||||||
float transform_checksum_curr;
|
|
||||||
float transform_checksum_prev;
|
|
||||||
|
|
||||||
float depth; //used for sorting
|
|
||||||
|
|
||||||
SelfList<InstanceBase> dependency_item;
|
|
||||||
|
|
||||||
virtual void base_removed() = 0;
|
|
||||||
virtual void base_changed(bool p_aabb, bool p_materials) = 0;
|
|
||||||
InstanceBase() :
|
|
||||||
dependency_item(this) {
|
|
||||||
base_type = RS::INSTANCE_NONE;
|
|
||||||
receive_shadows = true;
|
|
||||||
visible = true;
|
|
||||||
depth_layer = 0;
|
|
||||||
layer_mask = 1;
|
|
||||||
redraw_if_visible = false;
|
|
||||||
on_interpolate_list = false;
|
|
||||||
on_interpolate_transform_list = false;
|
|
||||||
interpolated = true;
|
|
||||||
interpolation_method = TransformInterpolator::INTERP_LERP;
|
|
||||||
transform_checksum_curr = 0.0;
|
|
||||||
transform_checksum_prev = 0.0;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
virtual void render_scene(const Transform &p_cam_transform, const Projection &p_cam_projection, const int p_eye, bool p_cam_ortogonal, InstanceBase **p_cull_result, int p_cull_count) = 0;
|
|
||||||
|
|
||||||
virtual void set_scene_pass(uint64_t p_pass) = 0;
|
|
||||||
virtual void set_debug_draw_mode(RS::ViewportDebugDraw p_debug_draw) = 0;
|
|
||||||
|
|
||||||
virtual bool free(RID p_rid) = 0;
|
|
||||||
|
|
||||||
virtual ~RasterizerScene() {}
|
|
||||||
};
|
|
||||||
|
|
||||||
class RasterizerStorage {
|
class RasterizerStorage {
|
||||||
public:
|
public:
|
||||||
/* TEXTURE API */
|
/* TEXTURE API */
|
||||||
@ -208,9 +129,6 @@ public:
|
|||||||
virtual bool material_uses_tangents(RID p_material);
|
virtual bool material_uses_tangents(RID p_material);
|
||||||
virtual bool material_uses_ensure_correct_normals(RID p_material);
|
virtual bool material_uses_ensure_correct_normals(RID p_material);
|
||||||
|
|
||||||
virtual void material_add_instance_owner(RID p_material, RasterizerScene::InstanceBase *p_instance) = 0;
|
|
||||||
virtual void material_remove_instance_owner(RID p_material, RasterizerScene::InstanceBase *p_instance) = 0;
|
|
||||||
|
|
||||||
/* MESH API */
|
/* MESH API */
|
||||||
|
|
||||||
virtual RID mesh_create() = 0;
|
virtual RID mesh_create() = 0;
|
||||||
@ -332,12 +250,6 @@ private:
|
|||||||
void _multimesh_add_to_interpolation_lists(RID p_multimesh, MMInterpolator &r_mmi);
|
void _multimesh_add_to_interpolation_lists(RID p_multimesh, MMInterpolator &r_mmi);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void instance_add_skeleton(RID p_skeleton, RasterizerScene::InstanceBase *p_instance) = 0;
|
|
||||||
virtual void instance_remove_skeleton(RID p_skeleton, RasterizerScene::InstanceBase *p_instance) = 0;
|
|
||||||
|
|
||||||
virtual void instance_add_dependency(RID p_base, RasterizerScene::InstanceBase *p_instance) = 0;
|
|
||||||
virtual void instance_remove_dependency(RID p_base, RasterizerScene::InstanceBase *p_instance) = 0;
|
|
||||||
|
|
||||||
/* RENDER TARGET */
|
/* RENDER TARGET */
|
||||||
|
|
||||||
enum RenderTargetFlags {
|
enum RenderTargetFlags {
|
||||||
|
@ -32,7 +32,6 @@
|
|||||||
|
|
||||||
RasterizerStorage *RenderingServerGlobals::storage = nullptr;
|
RasterizerStorage *RenderingServerGlobals::storage = nullptr;
|
||||||
RasterizerCanvas *RenderingServerGlobals::canvas_render = nullptr;
|
RasterizerCanvas *RenderingServerGlobals::canvas_render = nullptr;
|
||||||
RasterizerScene *RenderingServerGlobals::scene_render = nullptr;
|
|
||||||
Rasterizer *RenderingServerGlobals::rasterizer = nullptr;
|
Rasterizer *RenderingServerGlobals::rasterizer = nullptr;
|
||||||
|
|
||||||
RenderingServerCanvas *RenderingServerGlobals::canvas = nullptr;
|
RenderingServerCanvas *RenderingServerGlobals::canvas = nullptr;
|
||||||
|
@ -39,7 +39,6 @@ class RenderingServerGlobals {
|
|||||||
public:
|
public:
|
||||||
static RasterizerStorage *storage;
|
static RasterizerStorage *storage;
|
||||||
static RasterizerCanvas *canvas_render;
|
static RasterizerCanvas *canvas_render;
|
||||||
static RasterizerScene *scene_render;
|
|
||||||
static Rasterizer *rasterizer;
|
static Rasterizer *rasterizer;
|
||||||
|
|
||||||
static RenderingServerCanvas *canvas;
|
static RenderingServerCanvas *canvas;
|
||||||
|
@ -78,9 +78,6 @@ void RenderingServerRaster::free(RID p_rid) {
|
|||||||
if (RSG::viewport->free(p_rid)) {
|
if (RSG::viewport->free(p_rid)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (RSG::scene_render->free(p_rid)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ERR_FAIL_MSG("Invalid RID.");
|
ERR_FAIL_MSG("Invalid RID.");
|
||||||
}
|
}
|
||||||
|
@ -128,7 +128,6 @@ void RenderingServerViewport::draw_viewports() {
|
|||||||
RSG::storage->render_target_set_external_texture(vp->render_target, 0, 0);
|
RSG::storage->render_target_set_external_texture(vp->render_target, 0, 0);
|
||||||
RSG::rasterizer->set_current_render_target(vp->render_target);
|
RSG::rasterizer->set_current_render_target(vp->render_target);
|
||||||
|
|
||||||
RSG::scene_render->set_debug_draw_mode(vp->debug_draw);
|
|
||||||
RSG::storage->render_info_begin_capture();
|
RSG::storage->render_info_begin_capture();
|
||||||
|
|
||||||
// render standard mono camera
|
// render standard mono camera
|
||||||
@ -153,7 +152,6 @@ void RenderingServerViewport::draw_viewports() {
|
|||||||
if (vp->update_mode == RS::VIEWPORT_UPDATE_ONCE) {
|
if (vp->update_mode == RS::VIEWPORT_UPDATE_ONCE) {
|
||||||
vp->update_mode = RS::VIEWPORT_UPDATE_DISABLED;
|
vp->update_mode = RS::VIEWPORT_UPDATE_DISABLED;
|
||||||
}
|
}
|
||||||
RSG::scene_render->set_debug_draw_mode(RS::VIEWPORT_DEBUG_DRAW_DISABLED);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user