[Bf-blender-cvs] [34e28c29b66] upstream_cycles_texture_cache: Cycles: added blurrier texture lookups for indirect diffuse paths
Stefan Werner
noreply at git.blender.org
Wed Jun 27 14:04:52 CEST 2018
Commit: 34e28c29b66ccb413965c7d21216bdd4c61c819b
Author: Stefan Werner
Date: Mon Jun 5 18:38:51 2017 +0200
Branches: upstream_cycles_texture_cache
https://developer.blender.org/rB34e28c29b66ccb413965c7d21216bdd4c61c819b
Cycles: added blurrier texture lookups for indirect diffuse paths
===================================================================
M intern/cycles/kernel/kernel_light.h
M intern/cycles/kernel/svm/svm_image.h
===================================================================
diff --git a/intern/cycles/kernel/kernel_light.h b/intern/cycles/kernel/kernel_light.h
index c1233844c59..3c7bef4b8be 100644
--- a/intern/cycles/kernel/kernel_light.h
+++ b/intern/cycles/kernel/kernel_light.h
@@ -792,7 +792,7 @@ ccl_device void lamp_light_dPdudv(KernelGlobals *kg, int lamp, float u, float v,
case LIGHT_DISTANT:
case LIGHT_SPOT:
default:
- // todo
+ // TODO (Stefan)
*dPdu = make_float3(0.0f, 0.0f, 0.0f);
*dPdv = make_float3(0.0f, 0.0f, 0.0f);
break;
diff --git a/intern/cycles/kernel/svm/svm_image.h b/intern/cycles/kernel/svm/svm_image.h
index e1d97ef8312..888f45f9449 100644
--- a/intern/cycles/kernel/svm/svm_image.h
+++ b/intern/cycles/kernel/svm/svm_image.h
@@ -16,11 +16,13 @@
#ifdef __OIIO__
# include "kernel/kernel_oiio_globals.h"
+# define NEAREST_LOOKUP_PATHS (PATH_RAY_DIFFUSE | PATH_RAY_SHADOW | PATH_RAY_DIFFUSE_ANCESTOR | PATH_RAY_VOLUME_SCATTER | PATH_RAY_GLOSSY)
+# define BLUR_LOOKUP_PATHS (PATH_RAY_DIFFUSE | PATH_RAY_DIFFUSE_ANCESTOR)
#endif
CCL_NAMESPACE_BEGIN
-ccl_device float4 svm_image_texture(KernelGlobals *kg, int id, float x, float y, differential ds, differential dt, uint srgb, uint use_alpha, bool fast_lookup)
+ccl_device float4 svm_image_texture(KernelGlobals *kg, int id, float x, float y, differential ds, differential dt, uint srgb, uint use_alpha, int path_flag)
{
float4 r;
# ifdef __OIIO__
@@ -28,12 +30,12 @@ ccl_device float4 svm_image_texture(KernelGlobals *kg, int id, float x, float y,
OIIO::TextureOpt options;
options.swrap = options.twrap = kg->oiio->textures[id].extension;
options.anisotropic = 8;
-
- if(fast_lookup) {
+
+ if(path_flag & NEAREST_LOOKUP_PATHS) {
options.interpmode = OIIO::TextureOpt::InterpClosest;
options.mipmode = OIIO::TextureOpt::MipModeOneLevel;
- //if(path_flag & (PATH_RAY_DIFFUSE | PATH_RAY_DIFFUSE_ANCESTOR))
- // options.sblur = options.tblur = 1.f/64.f;
+ if(path_flag & BLUR_LOOKUP_PATHS)
+ options.sblur = options.tblur = 1.f/64.f;
}
else {
options.interpmode = kg->oiio->textures[id].interpolation;
@@ -101,8 +103,6 @@ ccl_device void svm_node_tex_image(KernelGlobals *kg, ShaderData *sd, int path_f
tex_co = make_float2(co.x, co.y);
}
- bool fast_lookup = path_flag & (PATH_RAY_DIFFUSE | PATH_RAY_SHADOW | PATH_RAY_DIFFUSE_ANCESTOR | PATH_RAY_VOLUME_SCATTER | PATH_RAY_GLOSSY);
-
differential ds, dt;
#ifdef __KERNEL_CPU__
if(stack_valid(dx_offset) && stack_valid(dy_offset)) {
@@ -136,7 +136,7 @@ ccl_device void svm_node_tex_image(KernelGlobals *kg, ShaderData *sd, int path_f
ds = differential_zero();
dt = differential_zero();
}
- float4 f = svm_image_texture(kg, id, tex_co.x, tex_co.y, ds, dt, srgb, use_alpha, fast_lookup);
+ float4 f = svm_image_texture(kg, id, tex_co.x, tex_co.y, ds, dt, srgb, use_alpha, path_flag);
if(stack_valid(out_offset))
stack_store_float3(stack, out_offset, make_float3(f.x, f.y, f.z));
@@ -262,7 +262,6 @@ ccl_device void svm_node_tex_environment(KernelGlobals *kg, ShaderData *sd, int
float2 uv;
co = safe_normalize(co);
- bool fast_lookup = path_flag & (PATH_RAY_DIFFUSE | PATH_RAY_SHADOW | PATH_RAY_DIFFUSE_ANCESTOR | PATH_RAY_VOLUME_SCATTER | PATH_RAY_GLOSSY);
#ifdef __OIIO__
float3 dRdx, dRdy;
if(stack_valid(dx_offset) && stack_valid(dy_offset)) {
@@ -279,11 +278,11 @@ ccl_device void svm_node_tex_environment(KernelGlobals *kg, ShaderData *sd, int
options.swrap = options.twrap = kg->oiio->textures[id].extension;
options.anisotropic = 8;
- if(fast_lookup) {
+ if(path_flag & NEAREST_LOOKUP_PATHS) {
options.interpmode = OIIO::TextureOpt::InterpClosest;
options.mipmode = OIIO::TextureOpt::MipModeOneLevel;
- // if(path_flag & (PATH_RAY_DIFFUSE | PATH_RAY_DIFFUSE_ANCESTOR))
- // options.sblur = options.tblur = 1.f/64.f;
+ if(path_flag & BLUR_LOOKUP_PATHS)
+ options.sblur = options.tblur = 1.f/64.f;
}
else {
options.interpmode = kg->oiio->textures[id].interpolation;
@@ -305,9 +304,7 @@ ccl_device void svm_node_tex_environment(KernelGlobals *kg, ShaderData *sd, int
else
uv = direction_to_mirrorball(co);
- bool fast_lookup = path_flag & (PATH_RAY_DIFFUSE | PATH_RAY_SHADOW | PATH_RAY_DIFFUSE_ANCESTOR | PATH_RAY_VOLUME_SCATTER);
- uint use_alpha = stack_valid(alpha_offset);
- f = svm_image_texture(kg, id, uv.x, uv.y, differential_zero(), differential_zero(), srgb, use_alpha, fast_lookup);
+ f = svm_image_texture(kg, id, uv.x, uv.y, differential_zero(), differential_zero(), srgb, use_alpha, path_flag);
#ifdef __OIIO__
}
#endif
More information about the Bf-blender-cvs
mailing list