22 switch (interpolation) {
25 return "compositor_sample_pixel_bicubic";
28 return "compositor_sample_pixel";
31 return "compositor_sample_pixel";
61 input.bind_as_texture(shader,
"input_tx");
62 output.bind_as_image(shader,
"output_img");
66 input.unbind_as_texture();
75 output.get_cpp_type().copy_assign(pixel, sampled_value);
88 return input.sample(coordinates, interpolation, extension_mode_x, extension_mode_y);
99 if (
input.is_single_value()) {
100 switch (
input.type()) {
102 return float4(
input.get_single_value<
float>(), 0.0f, 0.0f, 1.0f);
117 if (context.use_gpu()) {
119 context,
input, interpolation, extension_mode_x, extension_mode_y, coordinates);
#define BLI_assert_unreachable()
void GPU_compute_dispatch(blender::gpu::Shader *shader, uint groups_x_len, uint groups_y_len, uint groups_z_len, const blender::gpu::shader::SpecializationConstants *constants_state=nullptr)
void GPU_shader_bind(blender::gpu::Shader *shader, const blender::gpu::shader::SpecializationConstants *constants_state=nullptr)
void GPU_shader_uniform_2fv(blender::gpu::Shader *sh, const char *name, const float data[2])
@ GPU_BARRIER_TEXTURE_UPDATE
void GPU_memory_barrier(GPUBarrier barrier)
void GPU_texture_extend_mode_y(blender::gpu::Texture *texture, GPUSamplerExtendMode extend_mode)
void GPU_texture_extend_mode_x(blender::gpu::Texture *texture, GPUSamplerExtendMode extend_mode)
void GPU_texture_anisotropic_filter(blender::gpu::Texture *texture, bool use_aniso)
void GPU_texture_mipmap_mode(blender::gpu::Texture *texture, bool use_mipmap, bool use_filter)
void * GPU_texture_read(blender::gpu::Texture *texture, eGPUDataFormat data_format, int mip_level)
void GPU_texture_filter_mode(blender::gpu::Texture *texture, bool use_filter)
Read Guarded memory(de)allocation.
void MEM_freeN(void *vmemh)
float4 sample_pixel(Context &context, const Result &input, const Interpolation &interpolation, const ExtensionMode &extension_mode_x, const ExtensionMode &extension_mode_y, const float2 coordinates)
static char const * get_pixel_sampler_shader_name(const Interpolation &interpolation)
GPUSamplerExtendMode map_extension_mode_to_extend_mode(const ExtensionMode &mode)
static float4 sample_pixel_cpu(const Result &input, const Interpolation &interpolation, const ExtensionMode &extension_mode_x, const ExtensionMode &extension_mode_y, const float2 coordinates)
static float4 sample_pixel_gpu(Context &context, const Result &input, const Interpolation &interpolation, const ExtensionMode &extension_mode_x, const ExtensionMode &extension_mode_y, const float2 coordinates)
VecBase< float, 4 > float4
VecBase< int32_t, 2 > int2
VecBase< float, 2 > float2
VecBase< float, 3 > float3