Decouple RasterizerDummy from RenderingServer and DisplayServer
Also move some Extension classes to a separate file to avoid including gdvirtual unnecessarily.
This commit is contained in:
parent
671864fb05
commit
462f31801d
17 changed files with 468 additions and 237 deletions
|
|
@ -30,6 +30,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "core/object/ref_counted.h"
|
||||
#include "core/object/script_language.h"
|
||||
#include "scene/gui/control.h"
|
||||
|
||||
class ScriptEditorDebugger;
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "core/doc_data.h"
|
||||
#include "core/templates/rb_set.h"
|
||||
#include "editor/plugins/editor_plugin.h"
|
||||
#include "scene/gui/dialogs.h"
|
||||
|
|
|
|||
|
|
@ -70,6 +70,7 @@
|
|||
#include "rendering/rendering_server.h"
|
||||
#include "rendering/shader_include_db.h"
|
||||
#include "rendering/storage/render_data.h"
|
||||
#include "rendering/storage/render_data_extension.h"
|
||||
#include "rendering/storage/render_scene_buffers.h"
|
||||
#include "rendering/storage/render_scene_data.h"
|
||||
#include "servers/rendering/shader_types.h"
|
||||
|
|
|
|||
109
servers/rendering/dummy/rasterizer_dummy.cpp
Normal file
109
servers/rendering/dummy/rasterizer_dummy.cpp
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
/**************************************************************************/
|
||||
/* rasterizer_dummy.cpp */
|
||||
/**************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* https://godotengine.org */
|
||||
/**************************************************************************/
|
||||
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
|
||||
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/**************************************************************************/
|
||||
|
||||
#include "rasterizer_dummy.h"
|
||||
|
||||
#include "servers/display/display_server.h"
|
||||
#include "servers/rendering/dummy/environment/fog.h"
|
||||
#include "servers/rendering/dummy/environment/gi.h"
|
||||
#include "servers/rendering/dummy/rasterizer_canvas_dummy.h"
|
||||
#include "servers/rendering/dummy/rasterizer_scene_dummy.h"
|
||||
#include "servers/rendering/dummy/storage/light_storage.h"
|
||||
#include "servers/rendering/dummy/storage/material_storage.h"
|
||||
#include "servers/rendering/dummy/storage/mesh_storage.h"
|
||||
#include "servers/rendering/dummy/storage/particles_storage.h"
|
||||
#include "servers/rendering/dummy/storage/texture_storage.h"
|
||||
#include "servers/rendering/dummy/storage/utilities.h"
|
||||
|
||||
void RasterizerDummy::end_frame(bool p_present) {
|
||||
if (p_present) {
|
||||
DisplayServer::get_singleton()->swap_buffers();
|
||||
}
|
||||
}
|
||||
|
||||
RendererCanvasRender *RasterizerDummy::get_canvas() {
|
||||
return canvas;
|
||||
}
|
||||
RendererSceneRender *RasterizerDummy::get_scene() {
|
||||
return scene;
|
||||
}
|
||||
|
||||
RendererFog *RasterizerDummy::get_fog() {
|
||||
return fog;
|
||||
}
|
||||
RendererGI *RasterizerDummy::get_gi() {
|
||||
return gi;
|
||||
}
|
||||
RendererLightStorage *RasterizerDummy::get_light_storage() {
|
||||
return light_storage;
|
||||
}
|
||||
RendererMaterialStorage *RasterizerDummy::get_material_storage() {
|
||||
return material_storage;
|
||||
}
|
||||
RendererMeshStorage *RasterizerDummy::get_mesh_storage() {
|
||||
return mesh_storage;
|
||||
}
|
||||
RendererParticlesStorage *RasterizerDummy::get_particles_storage() {
|
||||
return particles_storage;
|
||||
}
|
||||
RendererTextureStorage *RasterizerDummy::get_texture_storage() {
|
||||
return texture_storage;
|
||||
}
|
||||
RendererUtilities *RasterizerDummy::get_utilities() {
|
||||
return utilities;
|
||||
}
|
||||
|
||||
RasterizerDummy::RasterizerDummy() {
|
||||
canvas = memnew(RasterizerCanvasDummy);
|
||||
scene = memnew(RasterizerSceneDummy);
|
||||
|
||||
fog = memnew(RendererDummy::Fog);
|
||||
gi = memnew(RendererDummy::GI);
|
||||
light_storage = memnew(RendererDummy::LightStorage);
|
||||
material_storage = memnew(RendererDummy::MaterialStorage);
|
||||
mesh_storage = memnew(RendererDummy::MeshStorage);
|
||||
particles_storage = memnew(RendererDummy::ParticlesStorage);
|
||||
texture_storage = memnew(RendererDummy::TextureStorage);
|
||||
utilities = memnew(RendererDummy::Utilities);
|
||||
}
|
||||
|
||||
RasterizerDummy::~RasterizerDummy() {
|
||||
memdelete(canvas);
|
||||
memdelete(scene);
|
||||
|
||||
memdelete(fog);
|
||||
memdelete(gi);
|
||||
memdelete(light_storage);
|
||||
memdelete(material_storage);
|
||||
memdelete(mesh_storage);
|
||||
memdelete(particles_storage);
|
||||
memdelete(texture_storage);
|
||||
memdelete(utilities);
|
||||
}
|
||||
|
|
@ -30,20 +30,23 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "servers/display/display_server.h"
|
||||
#include "servers/rendering/dummy/environment/fog.h"
|
||||
#include "servers/rendering/dummy/environment/gi.h"
|
||||
#include "servers/rendering/dummy/rasterizer_canvas_dummy.h"
|
||||
#include "servers/rendering/dummy/rasterizer_scene_dummy.h"
|
||||
#include "servers/rendering/dummy/storage/light_storage.h"
|
||||
#include "servers/rendering/dummy/storage/material_storage.h"
|
||||
#include "servers/rendering/dummy/storage/mesh_storage.h"
|
||||
#include "servers/rendering/dummy/storage/particles_storage.h"
|
||||
#include "servers/rendering/dummy/storage/texture_storage.h"
|
||||
#include "servers/rendering/dummy/storage/utilities.h"
|
||||
#include "servers/rendering/renderer_compositor.h"
|
||||
#include "servers/rendering/rendering_server_enums.h"
|
||||
|
||||
class RasterizerCanvasDummy;
|
||||
class RasterizerSceneDummy;
|
||||
|
||||
namespace RendererDummy {
|
||||
class Fog;
|
||||
class GI;
|
||||
class LightStorage;
|
||||
class MaterialStorage;
|
||||
class MeshStorage;
|
||||
class ParticlesStorage;
|
||||
class TextureStorage;
|
||||
class Utilities;
|
||||
} //namespace RendererDummy
|
||||
|
||||
class RasterizerDummy : public RendererCompositor {
|
||||
private:
|
||||
uint64_t frame = 1;
|
||||
|
|
@ -51,29 +54,30 @@ private:
|
|||
double time = 0.0;
|
||||
|
||||
protected:
|
||||
RasterizerCanvasDummy canvas;
|
||||
RasterizerSceneDummy scene;
|
||||
RasterizerCanvasDummy *canvas = nullptr;
|
||||
RasterizerSceneDummy *scene = nullptr;
|
||||
|
||||
RendererDummy::Fog fog;
|
||||
RendererDummy::GI gi;
|
||||
RendererDummy::LightStorage light_storage;
|
||||
RendererDummy::MaterialStorage material_storage;
|
||||
RendererDummy::MeshStorage mesh_storage;
|
||||
RendererDummy::ParticlesStorage particles_storage;
|
||||
RendererDummy::TextureStorage texture_storage;
|
||||
RendererDummy::Utilities utilities;
|
||||
RendererDummy::Fog *fog = nullptr;
|
||||
RendererDummy::GI *gi = nullptr;
|
||||
RendererDummy::LightStorage *light_storage = nullptr;
|
||||
RendererDummy::MaterialStorage *material_storage = nullptr;
|
||||
RendererDummy::MeshStorage *mesh_storage = nullptr;
|
||||
RendererDummy::ParticlesStorage *particles_storage = nullptr;
|
||||
RendererDummy::TextureStorage *texture_storage = nullptr;
|
||||
RendererDummy::Utilities *utilities = nullptr;
|
||||
|
||||
public:
|
||||
RendererUtilities *get_utilities() override { return &utilities; }
|
||||
RendererLightStorage *get_light_storage() override { return &light_storage; }
|
||||
RendererMaterialStorage *get_material_storage() override { return &material_storage; }
|
||||
RendererMeshStorage *get_mesh_storage() override { return &mesh_storage; }
|
||||
RendererParticlesStorage *get_particles_storage() override { return &particles_storage; }
|
||||
RendererTextureStorage *get_texture_storage() override { return &texture_storage; }
|
||||
RendererGI *get_gi() override { return &gi; }
|
||||
RendererFog *get_fog() override { return &fog; }
|
||||
RendererCanvasRender *get_canvas() override { return &canvas; }
|
||||
RendererSceneRender *get_scene() override { return &scene; }
|
||||
RendererCanvasRender *get_canvas() override;
|
||||
RendererSceneRender *get_scene() override;
|
||||
|
||||
RendererFog *get_fog() override;
|
||||
RendererGI *get_gi() override;
|
||||
RendererLightStorage *get_light_storage() override;
|
||||
RendererMaterialStorage *get_material_storage() override;
|
||||
RendererMeshStorage *get_mesh_storage() override;
|
||||
RendererParticlesStorage *get_particles_storage() override;
|
||||
RendererTextureStorage *get_texture_storage() override;
|
||||
RendererUtilities *get_utilities() override;
|
||||
|
||||
void set_boot_image_with_stretch(const Ref<Image> &p_image, const Color &p_color, RSE::SplashStretchMode p_stretch_mode, bool p_use_filter = true) override {}
|
||||
|
||||
|
|
@ -89,11 +93,7 @@ public:
|
|||
bool is_opengl() override { return false; }
|
||||
void gl_end_frame(bool p_swap_buffers) override {}
|
||||
|
||||
void end_frame(bool p_present) override {
|
||||
if (p_present) {
|
||||
DisplayServer::get_singleton()->swap_buffers();
|
||||
}
|
||||
}
|
||||
void end_frame(bool p_present) override;
|
||||
|
||||
void finalize() override {}
|
||||
|
||||
|
|
@ -111,6 +111,6 @@ public:
|
|||
double get_total_time() const override { return time; }
|
||||
bool can_create_resources_async() const override { return false; }
|
||||
|
||||
RasterizerDummy() {}
|
||||
~RasterizerDummy() {}
|
||||
RasterizerDummy();
|
||||
~RasterizerDummy();
|
||||
};
|
||||
|
|
|
|||
57
servers/rendering/dummy/rasterizer_scene_dummy.cpp
Normal file
57
servers/rendering/dummy/rasterizer_scene_dummy.cpp
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
/**************************************************************************/
|
||||
/* rasterizer_scene_dummy.cpp */
|
||||
/**************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* https://godotengine.org */
|
||||
/**************************************************************************/
|
||||
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
|
||||
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/**************************************************************************/
|
||||
|
||||
#include "rasterizer_scene_dummy.h"
|
||||
|
||||
#include "core/io/image.h"
|
||||
#include "core/variant/typed_array.h"
|
||||
#include "servers/rendering/rendering_server_globals.h"
|
||||
|
||||
TypedArray<Image> RasterizerSceneDummy::bake_render_uv2(RID p_base, const TypedArray<RID> &p_material_overrides, const Size2i &p_image_size) {
|
||||
return TypedArray<Image>();
|
||||
}
|
||||
|
||||
bool RasterizerSceneDummy::free(RID p_rid) {
|
||||
if (is_environment(p_rid)) {
|
||||
environment_free(p_rid);
|
||||
return true;
|
||||
} else if (is_compositor(p_rid)) {
|
||||
compositor_free(p_rid);
|
||||
return true;
|
||||
} else if (is_compositor_effect(p_rid)) {
|
||||
compositor_effect_free(p_rid);
|
||||
return true;
|
||||
} else if (RSG::camera_attributes->owns_camera_attributes(p_rid)) {
|
||||
RSG::camera_attributes->camera_attributes_free(p_rid);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -33,7 +33,11 @@
|
|||
#include "core/templates/paged_allocator.h"
|
||||
#include "servers/rendering/dummy/storage/utilities.h"
|
||||
#include "servers/rendering/renderer_scene_render.h"
|
||||
#include "servers/rendering/rendering_server_globals.h"
|
||||
|
||||
class Image;
|
||||
|
||||
template <typename T>
|
||||
class TypedArray;
|
||||
|
||||
class RasterizerSceneDummy : public RendererSceneRender {
|
||||
public:
|
||||
|
|
@ -173,25 +177,9 @@ public:
|
|||
void sub_surface_scattering_set_quality(RSE::SubSurfaceScatteringQuality p_quality) override {}
|
||||
void sub_surface_scattering_set_scale(float p_scale, float p_depth_scale) override {}
|
||||
|
||||
TypedArray<Image> bake_render_uv2(RID p_base, const TypedArray<RID> &p_material_overrides, const Size2i &p_image_size) override { return TypedArray<Image>(); }
|
||||
TypedArray<Image> bake_render_uv2(RID p_base, const TypedArray<RID> &p_material_overrides, const Size2i &p_image_size) override;
|
||||
|
||||
bool free(RID p_rid) override {
|
||||
if (is_environment(p_rid)) {
|
||||
environment_free(p_rid);
|
||||
return true;
|
||||
} else if (is_compositor(p_rid)) {
|
||||
compositor_free(p_rid);
|
||||
return true;
|
||||
} else if (is_compositor_effect(p_rid)) {
|
||||
compositor_effect_free(p_rid);
|
||||
return true;
|
||||
} else if (RSG::camera_attributes->owns_camera_attributes(p_rid)) {
|
||||
RSG::camera_attributes->camera_attributes_free(p_rid);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
bool free(RID p_rid) override;
|
||||
void update() override {}
|
||||
void sdfgi_set_debug_probe_select(const Vector3 &p_position, const Vector3 &p_dir) override {}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
#include "servers/rendering/rendering_method.h"
|
||||
#include "servers/rendering/storage/compositor_storage.h"
|
||||
#include "servers/rendering/storage/environment_storage.h"
|
||||
#include "storage/render_scene_buffers.h"
|
||||
#include "servers/rendering/storage/render_scene_buffers.h"
|
||||
|
||||
class RendererSceneRender {
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -30,8 +30,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "render_scene_buffers.h"
|
||||
#include "servers/rendering/rendering_server_enums.h"
|
||||
#include "servers/rendering/storage/render_scene_buffers.h"
|
||||
|
||||
class RendererLightStorage {
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -36,34 +36,3 @@ void RenderData::_bind_methods() {
|
|||
ClassDB::bind_method(D_METHOD("get_environment"), &RenderData::get_environment);
|
||||
ClassDB::bind_method(D_METHOD("get_camera_attributes"), &RenderData::get_camera_attributes);
|
||||
}
|
||||
|
||||
void RenderDataExtension::_bind_methods() {
|
||||
GDVIRTUAL_BIND(_get_render_scene_buffers);
|
||||
GDVIRTUAL_BIND(_get_render_scene_data)
|
||||
GDVIRTUAL_BIND(_get_environment)
|
||||
GDVIRTUAL_BIND(_get_camera_attributes)
|
||||
}
|
||||
|
||||
Ref<RenderSceneBuffers> RenderDataExtension::get_render_scene_buffers() const {
|
||||
Ref<RenderSceneBuffers> ret;
|
||||
GDVIRTUAL_CALL(_get_render_scene_buffers, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
RenderSceneData *RenderDataExtension::get_render_scene_data() const {
|
||||
RenderSceneData *ret = nullptr;
|
||||
GDVIRTUAL_CALL(_get_render_scene_data, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
RID RenderDataExtension::get_environment() const {
|
||||
RID ret;
|
||||
GDVIRTUAL_CALL(_get_environment, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
RID RenderDataExtension::get_camera_attributes() const {
|
||||
RID ret;
|
||||
GDVIRTUAL_CALL(_get_camera_attributes, ret);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,8 +31,8 @@
|
|||
#pragma once
|
||||
|
||||
#include "core/object/object.h"
|
||||
#include "render_scene_buffers.h"
|
||||
#include "render_scene_data.h"
|
||||
#include "servers/rendering/storage/render_scene_buffers.h"
|
||||
#include "servers/rendering/storage/render_scene_data.h"
|
||||
|
||||
class RenderData : public Object {
|
||||
GDCLASS(RenderData, Object);
|
||||
|
|
@ -47,21 +47,3 @@ public:
|
|||
virtual RID get_environment() const = 0;
|
||||
virtual RID get_camera_attributes() const = 0;
|
||||
};
|
||||
|
||||
class RenderDataExtension : public RenderData {
|
||||
GDCLASS(RenderDataExtension, RenderData);
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
virtual Ref<RenderSceneBuffers> get_render_scene_buffers() const override;
|
||||
virtual RenderSceneData *get_render_scene_data() const override;
|
||||
|
||||
virtual RID get_environment() const override;
|
||||
virtual RID get_camera_attributes() const override;
|
||||
|
||||
GDVIRTUAL0RC(Ref<RenderSceneBuffers>, _get_render_scene_buffers)
|
||||
GDVIRTUAL0RC(RenderSceneData *, _get_render_scene_data)
|
||||
GDVIRTUAL0RC(RID, _get_environment)
|
||||
GDVIRTUAL0RC(RID, _get_camera_attributes)
|
||||
};
|
||||
|
|
|
|||
144
servers/rendering/storage/render_data_extension.cpp
Normal file
144
servers/rendering/storage/render_data_extension.cpp
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
/**************************************************************************/
|
||||
/* render_data_extension.cpp */
|
||||
/**************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* https://godotengine.org */
|
||||
/**************************************************************************/
|
||||
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
|
||||
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/**************************************************************************/
|
||||
|
||||
#include "render_data_extension.h"
|
||||
|
||||
#include "servers/rendering/rendering_server.h" // IWYU pragma: Needed to bind RSE enums.
|
||||
|
||||
// RenderSceneBuffersExtension
|
||||
|
||||
void RenderSceneBuffersExtension::_bind_methods() {
|
||||
GDVIRTUAL_BIND(_configure, "config");
|
||||
GDVIRTUAL_BIND(_set_fsr_sharpness, "fsr_sharpness");
|
||||
GDVIRTUAL_BIND(_set_texture_mipmap_bias, "texture_mipmap_bias");
|
||||
GDVIRTUAL_BIND(_set_anisotropic_filtering_level, "anisotropic_filtering_level");
|
||||
GDVIRTUAL_BIND(_set_use_debanding, "use_debanding");
|
||||
}
|
||||
|
||||
void RenderSceneBuffersExtension::configure(const RenderSceneBuffersConfiguration *p_config) {
|
||||
GDVIRTUAL_CALL(_configure, p_config);
|
||||
}
|
||||
|
||||
void RenderSceneBuffersExtension::set_fsr_sharpness(float p_fsr_sharpness) {
|
||||
GDVIRTUAL_CALL(_set_fsr_sharpness, p_fsr_sharpness);
|
||||
}
|
||||
|
||||
void RenderSceneBuffersExtension::set_texture_mipmap_bias(float p_texture_mipmap_bias) {
|
||||
GDVIRTUAL_CALL(_set_texture_mipmap_bias, p_texture_mipmap_bias);
|
||||
}
|
||||
|
||||
void RenderSceneBuffersExtension::set_anisotropic_filtering_level(RSE::ViewportAnisotropicFiltering p_anisotropic_filtering_level) {
|
||||
GDVIRTUAL_CALL(_set_anisotropic_filtering_level, p_anisotropic_filtering_level);
|
||||
}
|
||||
|
||||
void RenderSceneBuffersExtension::set_use_debanding(bool p_use_debanding) {
|
||||
GDVIRTUAL_CALL(_set_use_debanding, p_use_debanding);
|
||||
}
|
||||
|
||||
// RenderSceneDataExtension
|
||||
|
||||
void RenderSceneDataExtension::_bind_methods() {
|
||||
GDVIRTUAL_BIND(_get_cam_transform);
|
||||
GDVIRTUAL_BIND(_get_cam_projection);
|
||||
GDVIRTUAL_BIND(_get_view_count);
|
||||
GDVIRTUAL_BIND(_get_view_eye_offset, "view");
|
||||
GDVIRTUAL_BIND(_get_view_projection, "view");
|
||||
|
||||
GDVIRTUAL_BIND(_get_uniform_buffer);
|
||||
}
|
||||
|
||||
Transform3D RenderSceneDataExtension::get_cam_transform() const {
|
||||
Transform3D ret;
|
||||
GDVIRTUAL_CALL(_get_cam_transform, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
Projection RenderSceneDataExtension::get_cam_projection() const {
|
||||
Projection ret;
|
||||
GDVIRTUAL_CALL(_get_cam_projection, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
uint32_t RenderSceneDataExtension::get_view_count() const {
|
||||
uint32_t ret = 0;
|
||||
GDVIRTUAL_CALL(_get_view_count, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
Vector3 RenderSceneDataExtension::get_view_eye_offset(uint32_t p_view) const {
|
||||
Vector3 ret;
|
||||
GDVIRTUAL_CALL(_get_view_eye_offset, p_view, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
Projection RenderSceneDataExtension::get_view_projection(uint32_t p_view) const {
|
||||
Projection ret;
|
||||
GDVIRTUAL_CALL(_get_view_projection, p_view, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
RID RenderSceneDataExtension::get_uniform_buffer() const {
|
||||
RID ret;
|
||||
GDVIRTUAL_CALL(_get_uniform_buffer, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
// RenderDataExtension
|
||||
|
||||
void RenderDataExtension::_bind_methods() {
|
||||
GDVIRTUAL_BIND(_get_render_scene_buffers);
|
||||
GDVIRTUAL_BIND(_get_render_scene_data)
|
||||
GDVIRTUAL_BIND(_get_environment)
|
||||
GDVIRTUAL_BIND(_get_camera_attributes)
|
||||
}
|
||||
|
||||
Ref<RenderSceneBuffers> RenderDataExtension::get_render_scene_buffers() const {
|
||||
Ref<RenderSceneBuffers> ret;
|
||||
GDVIRTUAL_CALL(_get_render_scene_buffers, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
RenderSceneData *RenderDataExtension::get_render_scene_data() const {
|
||||
RenderSceneData *ret = nullptr;
|
||||
GDVIRTUAL_CALL(_get_render_scene_data, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
RID RenderDataExtension::get_environment() const {
|
||||
RID ret;
|
||||
GDVIRTUAL_CALL(_get_environment, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
RID RenderDataExtension::get_camera_attributes() const {
|
||||
RID ret;
|
||||
GDVIRTUAL_CALL(_get_camera_attributes, ret);
|
||||
return ret;
|
||||
}
|
||||
103
servers/rendering/storage/render_data_extension.h
Normal file
103
servers/rendering/storage/render_data_extension.h
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
/**************************************************************************/
|
||||
/* render_data_extension.h */
|
||||
/**************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* https://godotengine.org */
|
||||
/**************************************************************************/
|
||||
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
|
||||
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/**************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "core/object/gdvirtual.gen.h"
|
||||
#include "servers/rendering/storage/render_data.h"
|
||||
#include "servers/rendering/storage/render_scene_buffers.h"
|
||||
#include "servers/rendering/storage/render_scene_data.h"
|
||||
|
||||
class RenderSceneBuffersExtension : public RenderSceneBuffers {
|
||||
GDCLASS(RenderSceneBuffersExtension, RenderSceneBuffers);
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
GDVIRTUAL1(_configure, const RenderSceneBuffersConfiguration *)
|
||||
GDVIRTUAL1(_set_fsr_sharpness, float)
|
||||
GDVIRTUAL1(_set_texture_mipmap_bias, float)
|
||||
GDVIRTUAL1(_set_anisotropic_filtering_level, int)
|
||||
GDVIRTUAL1(_set_use_debanding, bool)
|
||||
|
||||
public:
|
||||
virtual ~RenderSceneBuffersExtension() {}
|
||||
|
||||
virtual void configure(const RenderSceneBuffersConfiguration *p_config) override;
|
||||
|
||||
virtual void set_fsr_sharpness(float p_fsr_sharpness) override;
|
||||
virtual void set_texture_mipmap_bias(float p_texture_mipmap_bias) override;
|
||||
virtual void set_anisotropic_filtering_level(RSE::ViewportAnisotropicFiltering p_anisotropic_filtering_level) override;
|
||||
virtual void set_use_debanding(bool p_use_debanding) override;
|
||||
};
|
||||
|
||||
class RenderSceneDataExtension : public RenderSceneData {
|
||||
GDCLASS(RenderSceneDataExtension, RenderSceneData);
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
virtual Transform3D get_cam_transform() const override;
|
||||
virtual Projection get_cam_projection() const override;
|
||||
|
||||
virtual uint32_t get_view_count() const override;
|
||||
virtual Vector3 get_view_eye_offset(uint32_t p_view) const override;
|
||||
virtual Projection get_view_projection(uint32_t p_view) const override;
|
||||
|
||||
virtual RID get_uniform_buffer() const override;
|
||||
|
||||
GDVIRTUAL0RC(Transform3D, _get_cam_transform)
|
||||
GDVIRTUAL0RC(Projection, _get_cam_projection)
|
||||
|
||||
GDVIRTUAL0RC(uint32_t, _get_view_count)
|
||||
GDVIRTUAL1RC(Vector3, _get_view_eye_offset, uint32_t)
|
||||
GDVIRTUAL1RC(Projection, _get_view_projection, uint32_t)
|
||||
|
||||
GDVIRTUAL0RC(RID, _get_uniform_buffer)
|
||||
};
|
||||
|
||||
class RenderDataExtension : public RenderData {
|
||||
GDCLASS(RenderDataExtension, RenderData);
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
virtual Ref<RenderSceneBuffers> get_render_scene_buffers() const override;
|
||||
virtual RenderSceneData *get_render_scene_data() const override;
|
||||
|
||||
virtual RID get_environment() const override;
|
||||
virtual RID get_camera_attributes() const override;
|
||||
|
||||
GDVIRTUAL0RC(Ref<RenderSceneBuffers>, _get_render_scene_buffers)
|
||||
GDVIRTUAL0RC(RenderSceneData *, _get_render_scene_data)
|
||||
GDVIRTUAL0RC(RID, _get_environment)
|
||||
GDVIRTUAL0RC(RID, _get_camera_attributes)
|
||||
};
|
||||
|
|
@ -77,31 +77,3 @@ void RenderSceneBuffersConfiguration::_bind_methods() {
|
|||
void RenderSceneBuffers::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("configure", "config"), &RenderSceneBuffers::configure);
|
||||
}
|
||||
|
||||
void RenderSceneBuffersExtension::_bind_methods() {
|
||||
GDVIRTUAL_BIND(_configure, "config");
|
||||
GDVIRTUAL_BIND(_set_fsr_sharpness, "fsr_sharpness");
|
||||
GDVIRTUAL_BIND(_set_texture_mipmap_bias, "texture_mipmap_bias");
|
||||
GDVIRTUAL_BIND(_set_anisotropic_filtering_level, "anisotropic_filtering_level");
|
||||
GDVIRTUAL_BIND(_set_use_debanding, "use_debanding");
|
||||
}
|
||||
|
||||
void RenderSceneBuffersExtension::configure(const RenderSceneBuffersConfiguration *p_config) {
|
||||
GDVIRTUAL_CALL(_configure, p_config);
|
||||
}
|
||||
|
||||
void RenderSceneBuffersExtension::set_fsr_sharpness(float p_fsr_sharpness) {
|
||||
GDVIRTUAL_CALL(_set_fsr_sharpness, p_fsr_sharpness);
|
||||
}
|
||||
|
||||
void RenderSceneBuffersExtension::set_texture_mipmap_bias(float p_texture_mipmap_bias) {
|
||||
GDVIRTUAL_CALL(_set_texture_mipmap_bias, p_texture_mipmap_bias);
|
||||
}
|
||||
|
||||
void RenderSceneBuffersExtension::set_anisotropic_filtering_level(RSE::ViewportAnisotropicFiltering p_anisotropic_filtering_level) {
|
||||
GDVIRTUAL_CALL(_set_anisotropic_filtering_level, p_anisotropic_filtering_level);
|
||||
}
|
||||
|
||||
void RenderSceneBuffersExtension::set_use_debanding(bool p_use_debanding) {
|
||||
GDVIRTUAL_CALL(_set_use_debanding, p_use_debanding);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,7 +30,6 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "core/object/gdvirtual.gen.h"
|
||||
#include "core/object/ref_counted.h"
|
||||
#include "servers/rendering/rendering_server_enums.h"
|
||||
|
||||
|
|
@ -116,26 +115,3 @@ public:
|
|||
virtual void set_anisotropic_filtering_level(RSE::ViewportAnisotropicFiltering p_anisotropic_filtering_level) = 0;
|
||||
virtual void set_use_debanding(bool p_use_debanding) = 0;
|
||||
};
|
||||
|
||||
class RenderSceneBuffersExtension : public RenderSceneBuffers {
|
||||
GDCLASS(RenderSceneBuffersExtension, RenderSceneBuffers);
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
GDVIRTUAL1(_configure, const RenderSceneBuffersConfiguration *)
|
||||
GDVIRTUAL1(_set_fsr_sharpness, float)
|
||||
GDVIRTUAL1(_set_texture_mipmap_bias, float)
|
||||
GDVIRTUAL1(_set_anisotropic_filtering_level, int)
|
||||
GDVIRTUAL1(_set_use_debanding, bool)
|
||||
|
||||
public:
|
||||
virtual ~RenderSceneBuffersExtension() {}
|
||||
|
||||
virtual void configure(const RenderSceneBuffersConfiguration *p_config) override;
|
||||
|
||||
virtual void set_fsr_sharpness(float p_fsr_sharpness) override;
|
||||
virtual void set_texture_mipmap_bias(float p_texture_mipmap_bias) override;
|
||||
virtual void set_anisotropic_filtering_level(RSE::ViewportAnisotropicFiltering p_anisotropic_filtering_level) override;
|
||||
virtual void set_use_debanding(bool p_use_debanding) override;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@
|
|||
|
||||
#include "render_scene_data.h"
|
||||
|
||||
#include "core/object/class_db.h"
|
||||
|
||||
void RenderSceneData::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_cam_transform"), &RenderSceneData::get_cam_transform);
|
||||
ClassDB::bind_method(D_METHOD("get_cam_projection"), &RenderSceneData::get_cam_projection);
|
||||
|
|
@ -40,49 +42,3 @@ void RenderSceneData::_bind_methods() {
|
|||
|
||||
ClassDB::bind_method(D_METHOD("get_uniform_buffer"), &RenderSceneData::get_uniform_buffer);
|
||||
}
|
||||
|
||||
void RenderSceneDataExtension::_bind_methods() {
|
||||
GDVIRTUAL_BIND(_get_cam_transform);
|
||||
GDVIRTUAL_BIND(_get_cam_projection);
|
||||
GDVIRTUAL_BIND(_get_view_count);
|
||||
GDVIRTUAL_BIND(_get_view_eye_offset, "view");
|
||||
GDVIRTUAL_BIND(_get_view_projection, "view");
|
||||
|
||||
GDVIRTUAL_BIND(_get_uniform_buffer);
|
||||
}
|
||||
|
||||
Transform3D RenderSceneDataExtension::get_cam_transform() const {
|
||||
Transform3D ret;
|
||||
GDVIRTUAL_CALL(_get_cam_transform, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
Projection RenderSceneDataExtension::get_cam_projection() const {
|
||||
Projection ret;
|
||||
GDVIRTUAL_CALL(_get_cam_projection, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
uint32_t RenderSceneDataExtension::get_view_count() const {
|
||||
uint32_t ret = 0;
|
||||
GDVIRTUAL_CALL(_get_view_count, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
Vector3 RenderSceneDataExtension::get_view_eye_offset(uint32_t p_view) const {
|
||||
Vector3 ret;
|
||||
GDVIRTUAL_CALL(_get_view_eye_offset, p_view, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
Projection RenderSceneDataExtension::get_view_projection(uint32_t p_view) const {
|
||||
Projection ret;
|
||||
GDVIRTUAL_CALL(_get_view_projection, p_view, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
RID RenderSceneDataExtension::get_uniform_buffer() const {
|
||||
RID ret;
|
||||
GDVIRTUAL_CALL(_get_uniform_buffer, ret);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,10 +30,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "core/object/class_db.h"
|
||||
#include "core/object/gdvirtual.gen.h"
|
||||
#include "core/object/object.h"
|
||||
#include "core/object/script_language.h"
|
||||
|
||||
class RenderSceneData : public Object {
|
||||
GDCLASS(RenderSceneData, Object);
|
||||
|
|
@ -51,29 +48,3 @@ public:
|
|||
|
||||
virtual RID get_uniform_buffer() const = 0;
|
||||
};
|
||||
|
||||
class RenderSceneDataExtension : public RenderSceneData {
|
||||
GDCLASS(RenderSceneDataExtension, RenderSceneData);
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
virtual Transform3D get_cam_transform() const override;
|
||||
virtual Projection get_cam_projection() const override;
|
||||
|
||||
virtual uint32_t get_view_count() const override;
|
||||
virtual Vector3 get_view_eye_offset(uint32_t p_view) const override;
|
||||
virtual Projection get_view_projection(uint32_t p_view) const override;
|
||||
|
||||
virtual RID get_uniform_buffer() const override;
|
||||
|
||||
GDVIRTUAL0RC(Transform3D, _get_cam_transform)
|
||||
GDVIRTUAL0RC(Projection, _get_cam_projection)
|
||||
|
||||
GDVIRTUAL0RC(uint32_t, _get_view_count)
|
||||
GDVIRTUAL1RC(Vector3, _get_view_eye_offset, uint32_t)
|
||||
GDVIRTUAL1RC(Projection, _get_view_projection, uint32_t)
|
||||
|
||||
GDVIRTUAL0RC(RID, _get_uniform_buffer)
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue