Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <jeroen@blender.org>2022-11-11 16:53:21 +0300
committerJeroen Bakker <jeroen@blender.org>2022-11-11 16:53:21 +0300
commite37d254170c3ab2c54d4082926d9c685cafdfc45 (patch)
tree0346348bc11ef371f7382d7a75926f813b3ef301
parent3da57487873dcac70e29b4f4b82d93889477fed9 (diff)
Rename to virtual monitor.
-rw-r--r--source/blender/blenkernel/BKE_node.h2
-rw-r--r--source/blender/blenkernel/intern/camera.c17
-rw-r--r--source/blender/editors/space_node/drawnode.cc6
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.cc16
-rw-r--r--source/blender/gpu/intern/gpu_node_graph.c10
-rw-r--r--source/blender/makesdna/DNA_camera_types.h4
-rw-r--r--source/blender/makesrna/intern/rna_nodetree.c5
-rw-r--r--source/blender/nodes/NOD_static_types.h2
-rw-r--r--source/blender/nodes/shader/CMakeLists.txt2
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_virtual_monitor.cc (renamed from source/blender/nodes/shader/nodes/node_shader_virtual_camera.cc)24
10 files changed, 54 insertions, 34 deletions
diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h
index cf78c954e44..b332f90ee83 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -1222,7 +1222,7 @@ void BKE_nodetree_remove_layer_n(struct bNodeTree *ntree, struct Scene *scene, i
#define SH_NODE_COMBINE_COLOR 711
#define SH_NODE_SEPARATE_COLOR 712
#define SH_NODE_MIX 713
-#define SH_NODE_VIRTUAL_CAMERA 714
+#define SH_NODE_VIRTUAL_MONITOR 714
/** \} */
diff --git a/source/blender/blenkernel/intern/camera.c b/source/blender/blenkernel/intern/camera.c
index 93be310b3b3..e3a72c5d69e 100644
--- a/source/blender/blenkernel/intern/camera.c
+++ b/source/blender/blenkernel/intern/camera.c
@@ -41,6 +41,8 @@
#include "DEG_depsgraph_query.h"
+#include "GPU_viewport.h"
+
#include "MEM_guardedalloc.h"
#include "BLO_read_write.h"
@@ -83,10 +85,21 @@ static void camera_copy_data(Main *UNUSED(bmain), ID *id_dst, const ID *id_src,
}
/** Free (or release) any data used by this camera (does not free the camera itself). */
+static void camera_free_runtime_data(Camera *camera)
+{
+ if (camera->runtime.virtual_monitor_offscreen) {
+ GPU_offscreen_free(camera->runtime.virtual_monitor_offscreen);
+ camera->runtime.virtual_monitor_offscreen = NULL;
+ }
+ /* GPU texture is owned by the GPUOffscreen instance. */
+ camera->runtime.offscreen_color_texture = NULL;
+}
+
static void camera_free_data(ID *id)
{
Camera *cam = (Camera *)id;
BLI_freelistN(&cam->bg_images);
+ camera_free_runtime_data(cam);
}
static void camera_foreach_id(ID *id, LibraryForeachIDData *data)
@@ -137,8 +150,8 @@ static void camera_blend_read_data(BlendDataReader *reader, ID *id)
bgpic->flag &= ~CAM_BGIMG_FLAG_OVERRIDE_LIBRARY_LOCAL;
}
}
- ca->runtime.virtual_display_texture = NULL;
- ca->runtime.gpu_texture = NULL;
+ ca->runtime.virtual_monitor_offscreen = NULL;
+ ca->runtime.offscreen_color_texture = NULL;
}
static void camera_blend_read_lib(BlendLibReader *reader, ID *id)
diff --git a/source/blender/editors/space_node/drawnode.cc b/source/blender/editors/space_node/drawnode.cc
index b713b225638..196726a2a14 100644
--- a/source/blender/editors/space_node/drawnode.cc
+++ b/source/blender/editors/space_node/drawnode.cc
@@ -432,7 +432,7 @@ static void node_shader_buts_tex_environment(uiLayout *layout, bContext *C, Poin
node_buts_image_user(layout, C, &iuserptr, &imaptr, &iuserptr, false, true);
}
-static void node_shader_buts_virtual_camera(uiLayout *layout, bContext *C, PointerRNA *ptr)
+static void node_shader_buts_virtual_monitor(uiLayout *layout, bContext *C, PointerRNA *ptr)
{
uiTemplateID(layout,
C,
@@ -513,8 +513,8 @@ static void node_shader_set_butfunc(bNodeType *ntype)
ntype->draw_buttons = node_shader_buts_tex_environment;
ntype->draw_buttons_ex = node_shader_buts_tex_environment_ex;
break;
- case SH_NODE_VIRTUAL_CAMERA:
- ntype->draw_buttons = node_shader_buts_virtual_camera;
+ case SH_NODE_VIRTUAL_MONITOR:
+ ntype->draw_buttons = node_shader_buts_virtual_monitor;
break;
case SH_NODE_DISPLACEMENT:
case SH_NODE_VECTOR_DISPLACEMENT:
diff --git a/source/blender/editors/space_view3d/view3d_draw.cc b/source/blender/editors/space_view3d/view3d_draw.cc
index 468de37a9a2..c06d0981cb0 100644
--- a/source/blender/editors/space_view3d/view3d_draw.cc
+++ b/source/blender/editors/space_view3d/view3d_draw.cc
@@ -1552,16 +1552,16 @@ static void view3d_virtual_camera_update(const bContext *C, ARegion *region, Obj
int2 resolution(1920 / 2, 1080 / 2);
RegionView3D *old_rv3d = static_cast<RegionView3D *>(region->regiondata);
- RegionView3D rv3d = {*old_rv3d};
- region->regiondata = &rv3d;
+ RegionView3D rv3d;
+ memcpy(&rv3d, old_rv3d, sizeof(RegionView3D));
Object *old_camera = v3d->camera;
v3d->camera = object;
rv3d.persp = RV3D_CAMOB;
Camera *camera = static_cast<Camera *>(object->data);
- if (camera->runtime.virtual_display_texture == nullptr) {
- camera->runtime.virtual_display_texture = GPU_offscreen_create(
+ if (camera->runtime.virtual_monitor_offscreen == nullptr) {
+ camera->runtime.virtual_monitor_offscreen = GPU_offscreen_create(
UNPACK2(resolution), true, GPU_RGBA16F, nullptr);
}
@@ -1578,7 +1578,7 @@ static void view3d_virtual_camera_update(const bContext *C, ARegion *region, Obj
BKE_camera_params_compute_matrix(&params);
copy_m4_m4(winmat.ptr(), params.winmat);
- GPUOffScreen *offscreen = camera->runtime.virtual_display_texture;
+ GPUOffScreen *offscreen = camera->runtime.virtual_monitor_offscreen;
GPU_offscreen_bind(offscreen, true);
ED_view3d_draw_offscreen(depsgraph,
@@ -1597,8 +1597,8 @@ static void view3d_virtual_camera_update(const bContext *C, ARegion *region, Obj
offscreen,
nullptr);
GPU_offscreen_unbind(offscreen, true);
- camera->runtime.gpu_texture = GPU_offscreen_color_texture(
- camera->runtime.virtual_display_texture);
+ camera->runtime.offscreen_color_texture = GPU_offscreen_color_texture(
+ camera->runtime.virtual_monitor_offscreen);
v3d->camera = old_camera;
region->regiondata = old_rv3d;
@@ -1617,7 +1617,7 @@ static void view3d_draw_virtual_camera(const bContext *C, ARegion *region)
}
LISTBASE_FOREACH (bNode *, node, &material->nodetree->nodes) {
- if (node->type != SH_NODE_VIRTUAL_CAMERA) {
+ if (node->type != SH_NODE_VIRTUAL_MONITOR) {
continue;
}
Object *ob = static_cast<Object *>(static_cast<void *>(node->id));
diff --git a/source/blender/gpu/intern/gpu_node_graph.c b/source/blender/gpu/intern/gpu_node_graph.c
index 153906675b0..837cb114ac3 100644
--- a/source/blender/gpu/intern/gpu_node_graph.c
+++ b/source/blender/gpu/intern/gpu_node_graph.c
@@ -639,8 +639,14 @@ GPUNodeLink *GPU_image_camera(GPUMaterial *mat, Camera *camera, eGPUSamplerState
GPUNodeGraph *graph = gpu_material_node_graph(mat);
GPUNodeLink *link = gpu_node_link_create();
link->link_type = GPU_NODE_LINK_IMAGE_CAMERA;
- link->texture = gpu_node_graph_add_texture(
- graph, NULL, NULL, NULL, NULL, &camera->runtime.gpu_texture, link->link_type, sampler_state);
+ link->texture = gpu_node_graph_add_texture(graph,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ &camera->runtime.offscreen_color_texture,
+ link->link_type,
+ sampler_state);
GPU_material_flag_set(mat, GPU_MATFLAG_VIRTUAL_CAMERA);
return link;
}
diff --git a/source/blender/makesdna/DNA_camera_types.h b/source/blender/makesdna/DNA_camera_types.h
index 86a9e344b59..707f28e6c09 100644
--- a/source/blender/makesdna/DNA_camera_types.h
+++ b/source/blender/makesdna/DNA_camera_types.h
@@ -72,9 +72,9 @@ typedef struct Camera_Runtime {
float drw_focusmat[4][4];
float drw_normalmat[4][4];
- struct GPUOffScreen *virtual_display_texture;
+ struct GPUOffScreen *virtual_monitor_offscreen;
/* Local reference to not owning gpu texture. Used to have a reliable pointer to the texture. */
- struct GPUTexture *gpu_texture;
+ struct GPUTexture *offscreen_color_texture;
} Camera_Runtime;
typedef struct Camera {
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 1c903ce1dcd..21fb156cc29 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -5885,7 +5885,7 @@ static void def_sh_tex_coord(StructRNA *srna)
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
}
-static void def_sh_virtual_camera(StructRNA *srna)
+static void def_sh_virtual_monitor(StructRNA *srna)
{
PropertyRNA *prop;
@@ -5897,7 +5897,8 @@ static void def_sh_virtual_camera(StructRNA *srna)
RNA_def_property_struct_type(prop, "Object");
RNA_def_property_ui_text(prop, "Camera", "");
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
- // TODO: add poll function show all cameras in active scene, excluding scene camera.
+ /* TODO: add poll function show all cameras in active scene and view layer, excluding scene
+ * camera. */
}
static void def_sh_vect_transform(StructRNA *srna)
diff --git a/source/blender/nodes/NOD_static_types.h b/source/blender/nodes/NOD_static_types.h
index 1a3311c6fe6..a9054d9d291 100644
--- a/source/blender/nodes/NOD_static_types.h
+++ b/source/blender/nodes/NOD_static_types.h
@@ -123,7 +123,7 @@ DefNode(ShaderNode, SH_NODE_CURVE_FLOAT, def_float_curve, "CUR
DefNode(ShaderNode, SH_NODE_COMBINE_COLOR, def_sh_combsep_color, "COMBINE_COLOR", CombineColor, "Combine Color", "Create a color from individual components using multiple models")
DefNode(ShaderNode, SH_NODE_SEPARATE_COLOR, def_sh_combsep_color, "SEPARATE_COLOR", SeparateColor, "Separate Color", "Split a color into its individual components using multiple models")
DefNode(ShaderNode, SH_NODE_MIX, def_sh_mix, "MIX", Mix, "Mix", "Mix values by a factor")
-DefNode(ShaderNode, SH_NODE_VIRTUAL_CAMERA, def_sh_virtual_camera, "VIRTUAL_CAMERA", VirtualCamera, "Virtual Camera", "Virtual Camera")
+DefNode(ShaderNode, SH_NODE_VIRTUAL_MONITOR, def_sh_virtual_monitor, "VIRTUAL_MONITOR", VirtualMonitor, "Virtual Monitor", "Use the feed from a virtual camera (has to be in the same scene and view layer)")
DefNode(CompositorNode, CMP_NODE_VIEWER, def_cmp_viewer, "VIEWER", Viewer, "Viewer", "" )
DefNode(CompositorNode, CMP_NODE_RGB, 0, "RGB", RGB, "RGB", "" )
diff --git a/source/blender/nodes/shader/CMakeLists.txt b/source/blender/nodes/shader/CMakeLists.txt
index 9a429307542..e48bb346abf 100644
--- a/source/blender/nodes/shader/CMakeLists.txt
+++ b/source/blender/nodes/shader/CMakeLists.txt
@@ -113,7 +113,7 @@ set(SRC
nodes/node_shader_vector_rotate.cc
nodes/node_shader_vector_transform.cc
nodes/node_shader_vertex_color.cc
- nodes/node_shader_virtual_camera.cc
+ nodes/node_shader_virtual_monitor.cc
nodes/node_shader_volume_absorption.cc
nodes/node_shader_volume_info.cc
nodes/node_shader_volume_principled.cc
diff --git a/source/blender/nodes/shader/nodes/node_shader_virtual_camera.cc b/source/blender/nodes/shader/nodes/node_shader_virtual_monitor.cc
index 0220e773839..452e9ce6eec 100644
--- a/source/blender/nodes/shader/nodes/node_shader_virtual_camera.cc
+++ b/source/blender/nodes/shader/nodes/node_shader_virtual_monitor.cc
@@ -7,20 +7,20 @@
#include "DEG_depsgraph_query.h"
-namespace blender::nodes::node_shader_virtual_camera_cc {
+namespace blender::nodes::node_shader_virtual_monitor_cc {
-static void sh_node_virtual_camera_declare(NodeDeclarationBuilder &b)
+static void sh_node_virtual_monitor_declare(NodeDeclarationBuilder &b)
{
b.add_input<decl::Vector>(N_("Vector")).implicit_field(implicit_field_inputs::position);
b.add_output<decl::Color>(N_("Color")).no_muted_links();
b.add_output<decl::Float>(N_("Alpha")).no_muted_links();
}
-static int node_shader_gpu_virtual_camera(GPUMaterial *mat,
- bNode *node,
- bNodeExecData * /*execdata*/,
- GPUNodeStack *in,
- GPUNodeStack *out)
+static int node_shader_gpu_virtual_monitor(GPUMaterial *mat,
+ bNode *node,
+ bNodeExecData * /*execdata*/,
+ GPUNodeStack *in,
+ GPUNodeStack *out)
{
Object *object = (Object *)node->id;
if (object == nullptr || object->type != OB_CAMERA) {
@@ -36,17 +36,17 @@ static int node_shader_gpu_virtual_camera(GPUMaterial *mat,
mat, node, "node_virtual_camera", in, out, GPU_image_camera(mat, cam, GPU_SAMPLER_DEFAULT));
}
-} // namespace blender::nodes::node_shader_virtual_camera_cc
+} // namespace blender::nodes::node_shader_virtual_monitor_cc
void register_node_type_sh_virtual_camera()
{
- namespace file_ns = blender::nodes::node_shader_virtual_camera_cc;
+ namespace file_ns = blender::nodes::node_shader_virtual_monitor_cc;
static bNodeType ntype;
- sh_node_type_base(&ntype, SH_NODE_VIRTUAL_CAMERA, "Virtual Camera", NODE_CLASS_TEXTURE);
- ntype.declare = file_ns::sh_node_virtual_camera_declare;
- node_type_gpu(&ntype, file_ns::node_shader_gpu_virtual_camera);
+ sh_node_type_base(&ntype, SH_NODE_VIRTUAL_MONITOR, "Virtual Monitor", NODE_CLASS_INPUT);
+ ntype.declare = file_ns::sh_node_virtual_monitor_declare;
+ node_type_gpu(&ntype, file_ns::node_shader_gpu_virtual_monitor);
nodeRegisterType(&ntype);
}