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:
Diffstat (limited to 'source/blender/nodes')
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_tex_environment.c9
-rw-r--r--source/blender/nodes/shader/nodes/node_shader_tex_image.c42
2 files changed, 36 insertions, 15 deletions
diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_environment.c b/source/blender/nodes/shader/nodes/node_shader_tex_environment.c
index fd4efb1b7ec..a62c2ee22b2 100644
--- a/source/blender/nodes/shader/nodes/node_shader_tex_environment.c
+++ b/source/blender/nodes/shader/nodes/node_shader_tex_environment.c
@@ -56,6 +56,7 @@ static int node_shader_gpu_tex_environment(GPUMaterial *mat,
bNode *node_original = node->original ? node->original : node;
NodeTexImage *tex_original = node_original->storage;
ImageUser *iuser = &tex_original->iuser;
+ eGPUSamplerState sampler_state = GPU_SAMPLER_MAX;
GPUNodeLink *outalpha;
@@ -78,7 +79,7 @@ static int node_shader_gpu_tex_environment(GPUMaterial *mat,
"node_tex_environment_equirectangular",
in[0].link,
GPU_constant(&clamp_size),
- GPU_image(mat, ima, iuser),
+ GPU_image(mat, ima, iuser, sampler_state),
&in[0].link);
}
else {
@@ -93,7 +94,7 @@ static int node_shader_gpu_tex_environment(GPUMaterial *mat,
GPU_link(mat,
"node_tex_image_linear_no_mip",
in[0].link,
- GPU_image(mat, ima, iuser),
+ GPU_image(mat, ima, iuser, sampler_state),
&out[0].link,
&outalpha);
break;
@@ -101,7 +102,7 @@ static int node_shader_gpu_tex_environment(GPUMaterial *mat,
GPU_link(mat,
"node_tex_image_nearest",
in[0].link,
- GPU_image(mat, ima, iuser),
+ GPU_image(mat, ima, iuser, sampler_state),
&out[0].link,
&outalpha);
break;
@@ -109,7 +110,7 @@ static int node_shader_gpu_tex_environment(GPUMaterial *mat,
GPU_link(mat,
"node_tex_image_cubic",
in[0].link,
- GPU_image(mat, ima, iuser),
+ GPU_image(mat, ima, iuser, sampler_state),
&out[0].link,
&outalpha);
break;
diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_image.c b/source/blender/nodes/shader/nodes/node_shader_tex_image.c
index bfef9341913..87114fe23b5 100644
--- a/source/blender/nodes/shader/nodes/node_shader_tex_image.c
+++ b/source/blender/nodes/shader/nodes/node_shader_tex_image.c
@@ -118,6 +118,8 @@ static int node_shader_gpu_tex_image(GPUMaterial *mat,
node_shader_gpu_tex_mapping(mat, node, in, out);
+ eGPUSamplerState sampler_state = GPU_SAMPLER_MAX;
+
if (ima->source == IMA_SRC_TILED) {
/* UDIM tiles needs a samper2DArray and sampler1DArray for tile mapping. */
GPU_stack_link(mat,
@@ -125,7 +127,7 @@ static int node_shader_gpu_tex_image(GPUMaterial *mat,
names_tiled[tex->interpolation],
in,
out,
- GPU_image_tiled(mat, ima, iuser),
+ GPU_image_tiled(mat, ima, iuser, sampler_state),
GPU_image_tiled_mapping(mat, ima, iuser));
}
else {
@@ -141,16 +143,18 @@ static int node_shader_gpu_tex_image(GPUMaterial *mat,
GPU_link(mat, "set_rgb", *texco, &input_coords);
}
if (do_texco_extend) {
- GPU_link(mat, "point_texco_clamp", *texco, GPU_image(mat, ima, iuser), texco);
+ GPU_link(
+ mat, "point_texco_clamp", *texco, GPU_image(mat, ima, iuser, sampler_state), texco);
}
- GPU_stack_link(mat, node, gpu_node_name, in, out, GPU_image(mat, ima, iuser));
+ GPU_stack_link(
+ mat, node, gpu_node_name, in, out, GPU_image(mat, ima, iuser, sampler_state));
break;
case SHD_PROJ_BOX:
vnor = GPU_builtin(GPU_WORLD_NORMAL);
ob_mat = GPU_builtin(GPU_OBJECT_MATRIX);
blend = GPU_uniform(&tex->projection_blend);
- gpu_image = GPU_image(mat, ima, iuser);
+ gpu_image = GPU_image(mat, ima, iuser, sampler_state);
/* equivalent to normal_world_to_object */
GPU_link(mat, "normal_transform_transposed_m4v3", vnor, ob_mat, &norm);
@@ -160,8 +164,14 @@ static int node_shader_gpu_tex_image(GPUMaterial *mat,
GPU_link(mat, "set_rgb", *texco, &input_coords);
in[0].link = input_coords;
}
- GPU_link(
- mat, gpu_node_name, *texco, norm, GPU_image(mat, ima, iuser), &col1, &col2, &col3);
+ GPU_link(mat,
+ gpu_node_name,
+ *texco,
+ norm,
+ GPU_image(mat, ima, iuser, sampler_state),
+ &col1,
+ &col2,
+ &col3);
GPU_stack_link(
mat, node, "node_tex_image_box", in, out, norm, col1, col2, col3, gpu_image, blend);
break;
@@ -175,9 +185,11 @@ static int node_shader_gpu_tex_image(GPUMaterial *mat,
GPU_link(mat, "set_rgb", *texco, &input_coords);
}
if (do_texco_extend) {
- GPU_link(mat, "point_texco_clamp", *texco, GPU_image(mat, ima, iuser), texco);
+ GPU_link(
+ mat, "point_texco_clamp", *texco, GPU_image(mat, ima, iuser, sampler_state), texco);
}
- GPU_stack_link(mat, node, gpu_node_name, in, out, GPU_image(mat, ima, iuser));
+ GPU_stack_link(
+ mat, node, gpu_node_name, in, out, GPU_image(mat, ima, iuser, sampler_state));
break;
case SHD_PROJ_TUBE:
@@ -189,9 +201,11 @@ static int node_shader_gpu_tex_image(GPUMaterial *mat,
GPU_link(mat, "set_rgb", *texco, &input_coords);
}
if (do_texco_extend) {
- GPU_link(mat, "point_texco_clamp", *texco, GPU_image(mat, ima, iuser), texco);
+ GPU_link(
+ mat, "point_texco_clamp", *texco, GPU_image(mat, ima, iuser, sampler_state), texco);
}
- GPU_stack_link(mat, node, gpu_node_name, in, out, GPU_image(mat, ima, iuser));
+ GPU_stack_link(
+ mat, node, gpu_node_name, in, out, GPU_image(mat, ima, iuser, sampler_state));
break;
}
@@ -199,7 +213,13 @@ static int node_shader_gpu_tex_image(GPUMaterial *mat,
if (do_texco_clip) {
gpu_node_name = names_clip[tex->interpolation];
in[0].link = input_coords;
- GPU_stack_link(mat, node, gpu_node_name, in, out, GPU_image(mat, ima, iuser), out[0].link);
+ GPU_stack_link(mat,
+ node,
+ gpu_node_name,
+ in,
+ out,
+ GPU_image(mat, ima, iuser, sampler_state),
+ out[0].link);
}
}
}