[Bf-blender-cvs] [07d50783759] temp-geometry-nodes-delete-geometry-image-texture: Revert "Geometry Nodes: Add Image texture node (WIP)"
Dalai Felinto
noreply at git.blender.org
Thu Oct 7 09:12:26 CEST 2021
Commit: 07d50783759a1014e6be4ed0e3adf34629e034a8
Author: Dalai Felinto
Date: Thu Oct 7 09:12:02 2021 +0200
Branches: temp-geometry-nodes-delete-geometry-image-texture
https://developer.blender.org/rB07d50783759a1014e6be4ed0e3adf34629e034a8
Revert "Geometry Nodes: Add Image texture node (WIP)"
This reverts commit 9d216ef72b84e96ced1afac4f2991f1d5a918f5a.
===================================================================
M release/datafiles/locale
M release/scripts/addons
M release/scripts/addons_contrib
M release/scripts/startup/nodeitems_builtins.py
M source/blender/modifiers/intern/MOD_nodes_evaluator.cc
M source/blender/nodes/CMakeLists.txt
R050 source/blender/nodes/shader/nodes/node_shader_tex_image.cc source/blender/nodes/shader/nodes/node_shader_tex_image.c
M source/tools
===================================================================
diff --git a/release/datafiles/locale b/release/datafiles/locale
index 3d01b77226f..4833954c0ac 160000
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@ -1 +1 @@
-Subproject commit 3d01b77226fcd99024ffaa0c12a6c14f22914d9f
+Subproject commit 4833954c0ac85cc407e1d5a153aa11b1d1823ec0
diff --git a/release/scripts/addons b/release/scripts/addons
index 1f38515d87f..f86f25e6221 160000
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@ -1 +1 @@
-Subproject commit 1f38515d87fb78443f2ead17b4e95411f43dc1b2
+Subproject commit f86f25e62217264495d05f116ccb09d575fe9841
diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib
index 42da56aa737..5a82baad9f9 160000
--- a/release/scripts/addons_contrib
+++ b/release/scripts/addons_contrib
@@ -1 +1 @@
-Subproject commit 42da56aa73726710107031787af5eea186797984
+Subproject commit 5a82baad9f986722104280e8354a4427d8e9eab1
diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py
index 908a00ad9be..a9321a788f6 100644
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@ -635,7 +635,6 @@ geometry_node_categories = [
]),
GeometryNodeCategory("GEO_TEXTURE", "Texture", items=[
NodeItem("ShaderNodeTexNoise"),
- NodeItem("ShaderNodeTexImage"),
]),
GeometryNodeCategory("GEO_VECTOR", "Vector", items=[
NodeItem("ShaderNodeVectorCurve"),
diff --git a/source/blender/modifiers/intern/MOD_nodes_evaluator.cc b/source/blender/modifiers/intern/MOD_nodes_evaluator.cc
index c69096759ab..c5213dc304b 100644
--- a/source/blender/modifiers/intern/MOD_nodes_evaluator.cc
+++ b/source/blender/modifiers/intern/MOD_nodes_evaluator.cc
@@ -331,7 +331,6 @@ static void get_socket_value(const SocketRef &socket, void *r_value)
if (bsocket.type == SOCK_VECTOR) {
if (ELEM(bnode.type,
GEO_NODE_SET_POSITION,
- SH_NODE_TEX_IMAGE,
SH_NODE_TEX_NOISE,
GEO_NODE_MESH_TO_POINTS,
GEO_NODE_PROXIMITY)) {
diff --git a/source/blender/nodes/CMakeLists.txt b/source/blender/nodes/CMakeLists.txt
index 0a5804cfc96..88ae7bcfaf8 100644
--- a/source/blender/nodes/CMakeLists.txt
+++ b/source/blender/nodes/CMakeLists.txt
@@ -326,7 +326,7 @@ set(SRC
shader/nodes/node_shader_tex_coord.c
shader/nodes/node_shader_tex_environment.c
shader/nodes/node_shader_tex_gradient.cc
- shader/nodes/node_shader_tex_image.cc
+ shader/nodes/node_shader_tex_image.c
shader/nodes/node_shader_tex_magic.c
shader/nodes/node_shader_tex_musgrave.cc
shader/nodes/node_shader_tex_noise.cc
diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_image.cc b/source/blender/nodes/shader/nodes/node_shader_tex_image.c
similarity index 50%
rename from source/blender/nodes/shader/nodes/node_shader_tex_image.cc
rename to source/blender/nodes/shader/nodes/node_shader_tex_image.c
index 5a0dc59317d..09d06c35a5f 100644
--- a/source/blender/nodes/shader/nodes/node_shader_tex_image.cc
+++ b/source/blender/nodes/shader/nodes/node_shader_tex_image.c
@@ -19,26 +19,31 @@
#include "../node_shader_util.h"
-#include "BKE_image.h"
-#include "BLI_noise.hh"
-#include "IMB_imbuf.h"
-#include "IMB_imbuf_types.h"
+/* **************** OUTPUT ******************** */
-namespace blender::nodes {
-
-static void sh_node_tex_image_declare(NodeDeclarationBuilder &b)
-{
- b.is_function_node();
- b.add_input<decl::Vector>("Vector").implicit_field();
- b.add_output<decl::Color>("Color").no_muted_links();
- b.add_output<decl::Float>("Alpha").no_muted_links();
+static bNodeSocketTemplate sh_node_tex_image_in[] = {
+ {SOCK_VECTOR, N_("Vector"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE},
+ {-1, ""},
};
-}; // namespace blender::nodes
+static bNodeSocketTemplate sh_node_tex_image_out[] = {
+ {SOCK_RGBA, N_("Color"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_NO_INTERNAL_LINK},
+ {SOCK_FLOAT,
+ N_("Alpha"),
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 0.0f,
+ 1.0f,
+ PROP_NONE,
+ SOCK_NO_INTERNAL_LINK},
+ {-1, ""},
+};
static void node_shader_init_tex_image(bNodeTree *UNUSED(ntree), bNode *node)
{
- NodeTexImage *tex = (NodeTexImage *)MEM_callocN(sizeof(NodeTexImage), "NodeTexImage");
+ NodeTexImage *tex = MEM_callocN(sizeof(NodeTexImage), "NodeTexImage");
BKE_texture_mapping_default(&tex->base.tex_mapping, TEXMAP_TYPE_POINT);
BKE_texture_colormapping_default(&tex->base.color_mapping);
BKE_imageuser_default(&tex->iuser);
@@ -53,12 +58,12 @@ static int node_shader_gpu_tex_image(GPUMaterial *mat,
GPUNodeStack *out)
{
Image *ima = (Image *)node->id;
- NodeTexImage *tex = (NodeTexImage *)node->storage;
+ NodeTexImage *tex = node->storage;
/* We get the image user from the original node, since GPU image keeps
* a pointer to it and the dependency refreshes the original. */
bNode *node_original = node->original ? node->original : node;
- NodeTexImage *tex_original = (NodeTexImage *)node_original->storage;
+ NodeTexImage *tex_original = node_original->storage;
ImageUser *iuser = &tex_original->iuser;
if (!ima) {
@@ -73,7 +78,7 @@ static int node_shader_gpu_tex_image(GPUMaterial *mat,
node_shader_gpu_tex_mapping(mat, node, in, out);
- eGPUSamplerState sampler_state = GPU_SAMPLER_DEFAULT;
+ eGPUSamplerState sampler_state = 0;
switch (tex->extension) {
case SHD_IMAGE_EXTENSION_REPEAT:
@@ -89,7 +94,7 @@ static int node_shader_gpu_tex_image(GPUMaterial *mat,
if (tex->interpolation != SHD_INTERP_CLOSEST) {
sampler_state |= GPU_SAMPLER_ANISO | GPU_SAMPLER_FILTER;
/* TODO(fclem): For now assume mipmap is always enabled. */
- sampler_state |= GPU_SAMPLER_MIPMAP;
+ sampler_state |= true ? GPU_SAMPLER_MIPMAP : 0;
}
const bool use_cubic = ELEM(tex->interpolation, SHD_INTERP_CUBIC, SHD_INTERP_SMART);
@@ -178,234 +183,19 @@ static int node_shader_gpu_tex_image(GPUMaterial *mat,
return true;
}
-namespace blender::nodes {
-
-class ImageFunction : public fn::MultiFunction {
- private:
- int interpolation_;
- int projection_;
- float projection_blend_;
- int extension_;
- ImBuf *ibuf_;
-
- public:
- ImageFunction(
- int interpolation, int projection, float projection_blend, int extension, ImBuf *ibuf)
- : interpolation_(interpolation),
- projection_(projection),
- projection_blend_(projection_blend),
- extension_(extension),
- ibuf_(ibuf)
- {
- static fn::MFSignature signature = create_signature();
- this->set_signature(&signature);
- }
-
- static fn::MFSignature create_signature()
- {
- fn::MFSignatureBuilder signature{"ImageFunction"};
- signature.single_input<float3>("Vector");
- signature.single_output<ColorGeometry4f>("Color");
- signature.single_output<float>("Alpha");
- return signature.build();
- }
-
- /* Remap coordinate from 0..1 box to -1..-1 */
- static float3 texco_remap_square(float3 co)
- {
- return (co - float3(0.5f, 0.5f, 0.5f)) * 2.0f;
- }
-
- /* projections */
- static float2 map_to_tube(const float3 co)
- {
- float len, u, v;
- len = sqrtf(co.x * co.x + co.y * co.y);
- if (len > 0.0f) {
- u = (1.0f - (atan2f(co.x / len, co.y / len) / M_PI)) * 0.5f;
- v = (co.z + 1.0f) * 0.5f;
- }
- else {
- u = v = 0.0f;
- }
- return float2(u, v);
- }
-
- static float2 map_to_sphere(const float3 co)
- {
- float l = len_v3(co);
- float u, v;
- if (l > 0.0f) {
- if (UNLIKELY(co.x == 0.0f && co.y == 0.0f)) {
- u = 0.0f; /* Otherwise domain error. */
- }
- else {
- u = (1.0f - atan2f(co.x, co.y) / M_PI) / 2.0f;
- }
- v = 1.0f - safe_acosf(co.z / l) / M_PI;
- }
- else {
- u = v = 0.0f;
- }
- return float2(u, v);
- }
-
- static float2 map_to_box(const float3 co)
- {
- float x1, y1, z1, nor[3];
- int ret;
- float u, v;
-
- copy_v3_v3(nor, co);
-
- x1 = fabsf(nor[0]);
- y1 = fabsf(nor[1]);
- z1 = fabsf(nor[2]);
-
- if (z1 >= x1 && z1 >= y1) {
- u = (co.x + 1.0f) / 2.0f;
- v = (co.y + 1.0f) / 2.0f;
- ret = 0;
- }
- else if (y1 >= x1 && y1 >= z1) {
- u = (co.x + 1.0f) / 2.0f;
- v = (co.z + 1.0f) / 2.0f;
- }
- else {
- u = (co.y + 1.0f) / 2.0f;
- v = (co.z + 1.0f) / 2.0f;
- }
- return float2(u, v);
- }
-
- void call(IndexMask mask, fn::MFParams params, fn::MFContext UNUSED(context)) const override
- {
- const VArray<float3> &vector = params.readonly_single_input<float3>(0, "Vector");
- MutableSpan<ColorGeometry4f> r_color =
- params.uninitialized_single_output_if_required<ColorGeometry4f>(1, "Color");
- MutableSpan<float> r_alpha = params.uninitialized_single_output_if_required<float>(2, "Alpha");
-
- const bool compute_color = !r_color.is_empty();
- const bool compute_alpha = !r_alpha.is_empty();
-
- if (ibuf_) {
-
- /* Hacked together from old Tex nodes and texture.c and cycles!
- * texture_procedural.c
- * BKE_texture_get_value
- * multitex_nodes_intern
- */
-
- float xsize = ibuf_->x / 2;
- float ysize = ibuf_->y / 2;
-
- if ((!xsize) || (!ysize)) {
- return;
- }
-
- if (!ibuf_->rect_float) {
- BLI_thread_lock(LOCK_IMAGE);
- if (!ibuf_->rect_float) {
- IMB_float_from_rect(ibuf_);
- }
- BLI_thread_unlock(LOCK_IMAGE);
- }
-
- float xoff, yoff;
- int px, py;
-
- for (int64_t i : mask) {
- const float *result;
- float2 co;
-
- /* Remap */
- float3 p = texco_remap_square(vector[i]);
-
- /* Projection - are these needed for GN - most use cases would be things like height maps.
- */
- if (projection_ == SHD_PROJ_TUBE) {
- co = map_to_tube(p);
- }
- else if (projection_ == SHD_PROJ_SPHERE) {
- co = map_to_sphere(p);
- }
- else if (projection_ == SHD_PROJ_BOX) {
- co = map_to_box(p); // no blending or normal data
- }
- else { // SHD_PROJ_FLAT
-
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list