[Bf-blender-cvs] [d9f006631c5] temp-cycles-denoising: Merge remote-tracking branch 'origin/master' into temp-cycles-denoising
Lukas Stockner
noreply at git.blender.org
Wed Apr 19 20:47:00 CEST 2017
Commit: d9f006631c5e10cfba9708600077b83c9b2cf6b4
Author: Lukas Stockner
Date: Wed Apr 19 20:45:56 2017 +0200
Branches: temp-cycles-denoising
https://developer.blender.org/rBd9f006631c5e10cfba9708600077b83c9b2cf6b4
Merge remote-tracking branch 'origin/master' into temp-cycles-denoising
===================================================================
===================================================================
diff --cc intern/cycles/kernel/closure/bsdf_principled_diffuse.h
index 00000000000,8a116693bdb..215c32e1ffb
mode 000000,100644..100644
--- a/intern/cycles/kernel/closure/bsdf_principled_diffuse.h
+++ b/intern/cycles/kernel/closure/bsdf_principled_diffuse.h
@@@ -1,0 -1,120 +1,119 @@@
+ /*
+ * Copyright 2011-2017 Blender Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ #ifndef __BSDF_PRINCIPLED_DIFFUSE_H__
+ #define __BSDF_PRINCIPLED_DIFFUSE_H__
+
+ /* DISNEY PRINCIPLED DIFFUSE BRDF
+ *
+ * Shading model by Brent Burley (Disney): "Physically Based Shading at Disney" (2012)
+ */
+
+ CCL_NAMESPACE_BEGIN
+
+ typedef ccl_addr_space struct PrincipledDiffuseBsdf {
+ SHADER_CLOSURE_BASE;
+
+ float roughness;
- float3 N;
+ } PrincipledDiffuseBsdf;
+
+ ccl_device float3 calculate_principled_diffuse_brdf(const PrincipledDiffuseBsdf *bsdf,
+ float3 N, float3 V, float3 L, float3 H, float *pdf)
+ {
+ float NdotL = max(dot(N, L), 0.0f);
+ float NdotV = max(dot(N, V), 0.0f);
+
+ if(NdotL < 0 || NdotV < 0) {
+ *pdf = 0.0f;
+ return make_float3(0.0f, 0.0f, 0.0f);
+ }
+
+ float LdotH = dot(L, H);
+
+ float FL = schlick_fresnel(NdotL), FV = schlick_fresnel(NdotV);
+ const float Fd90 = 0.5f + 2.0f * LdotH*LdotH * bsdf->roughness;
+ float Fd = (1.0f * (1.0f - FL) + Fd90 * FL) * (1.0f * (1.0f - FV) + Fd90 * FV);
+
+ float value = M_1_PI_F * NdotL * Fd;
+
+ return make_float3(value, value, value);
+ }
+
+ ccl_device int bsdf_principled_diffuse_setup(PrincipledDiffuseBsdf *bsdf)
+ {
+ bsdf->type = CLOSURE_BSDF_PRINCIPLED_DIFFUSE_ID;
+ return SD_BSDF|SD_BSDF_HAS_EVAL;
+ }
+
+ ccl_device float3 bsdf_principled_diffuse_eval_reflect(const ShaderClosure *sc, const float3 I,
+ const float3 omega_in, float *pdf)
+ {
+ const PrincipledDiffuseBsdf *bsdf = (const PrincipledDiffuseBsdf *)sc;
+
+ float3 N = bsdf->N;
+ float3 V = I; // outgoing
+ float3 L = omega_in; // incoming
+ float3 H = normalize(L + V);
+
+ if(dot(N, omega_in) > 0.0f) {
+ *pdf = fmaxf(dot(N, omega_in), 0.0f) * M_1_PI_F;
+ return calculate_principled_diffuse_brdf(bsdf, N, V, L, H, pdf);
+ }
+ else {
+ *pdf = 0.0f;
+ return make_float3(0.0f, 0.0f, 0.0f);
+ }
+ }
+
+ ccl_device float3 bsdf_principled_diffuse_eval_transmit(const ShaderClosure *sc, const float3 I,
+ const float3 omega_in, float *pdf)
+ {
+ return make_float3(0.0f, 0.0f, 0.0f);
+ }
+
+ ccl_device int bsdf_principled_diffuse_sample(const ShaderClosure *sc,
+ float3 Ng, float3 I, float3 dIdx, float3 dIdy, float randu, float randv,
+ float3 *eval, float3 *omega_in, float3 *domega_in_dx,
+ float3 *domega_in_dy, float *pdf)
+ {
+ const PrincipledDiffuseBsdf *bsdf = (const PrincipledDiffuseBsdf *)sc;
+
+ float3 N = bsdf->N;
+
+ sample_cos_hemisphere(N, randu, randv, omega_in, pdf);
+
+ if(dot(Ng, *omega_in) > 0) {
+ float3 H = normalize(I + *omega_in);
+
+ *eval = calculate_principled_diffuse_brdf(bsdf, N, I, *omega_in, H, pdf);
+
+ #ifdef __RAY_DIFFERENTIALS__
+ // TODO: find a better approximation for the diffuse bounce
+ *domega_in_dx = -((2 * dot(N, dIdx)) * N - dIdx);
+ *domega_in_dy = -((2 * dot(N, dIdy)) * N - dIdy);
+ #endif
+ }
+ else {
+ *pdf = 0.0f;
+ }
+ return LABEL_REFLECT|LABEL_DIFFUSE;
+ }
+
+ CCL_NAMESPACE_END
+
+ #endif /* __BSDF_PRINCIPLED_DIFFUSE_H__ */
+
+
diff --cc intern/cycles/kernel/closure/bsdf_principled_sheen.h
index 00000000000,58df4f7ddbb..f4476bfecd0
mode 000000,100644..100644
--- a/intern/cycles/kernel/closure/bsdf_principled_sheen.h
+++ b/intern/cycles/kernel/closure/bsdf_principled_sheen.h
@@@ -1,0 -1,114 +1,113 @@@
+ /*
+ * Copyright 2011-2017 Blender Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ #ifndef __BSDF_PRINCIPLED_SHEEN_H__
+ #define __BSDF_PRINCIPLED_SHEEN_H__
+
+ /* DISNEY PRINCIPLED SHEEN BRDF
+ *
+ * Shading model by Brent Burley (Disney): "Physically Based Shading at Disney" (2012)
+ */
+
+ CCL_NAMESPACE_BEGIN
+
+ typedef ccl_addr_space struct PrincipledSheenBsdf {
+ SHADER_CLOSURE_BASE;
- float3 N;
+ } PrincipledSheenBsdf;
+
+ ccl_device float3 calculate_principled_sheen_brdf(const PrincipledSheenBsdf *bsdf,
+ float3 N, float3 V, float3 L, float3 H, float *pdf)
+ {
+ float NdotL = dot(N, L);
+ float NdotV = dot(N, V);
+
+ if(NdotL < 0 || NdotV < 0) {
+ *pdf = 0.0f;
+ return make_float3(0.0f, 0.0f, 0.0f);
+ }
+
+ float LdotH = dot(L, H);
+
+ float value = schlick_fresnel(LdotH) * NdotL;
+
+ return make_float3(value, value, value);
+ }
+
+ ccl_device int bsdf_principled_sheen_setup(PrincipledSheenBsdf *bsdf)
+ {
+ bsdf->type = CLOSURE_BSDF_PRINCIPLED_SHEEN_ID;
+ return SD_BSDF|SD_BSDF_HAS_EVAL;
+ }
+
+ ccl_device float3 bsdf_principled_sheen_eval_reflect(const ShaderClosure *sc, const float3 I,
+ const float3 omega_in, float *pdf)
+ {
+ const PrincipledSheenBsdf *bsdf = (const PrincipledSheenBsdf *)sc;
+
+ float3 N = bsdf->N;
+ float3 V = I; // outgoing
+ float3 L = omega_in; // incoming
+ float3 H = normalize(L + V);
+
+ if(dot(N, omega_in) > 0.0f) {
+ *pdf = fmaxf(dot(N, omega_in), 0.0f) * M_1_PI_F;
+ return calculate_principled_sheen_brdf(bsdf, N, V, L, H, pdf);
+ }
+ else {
+ *pdf = 0.0f;
+ return make_float3(0.0f, 0.0f, 0.0f);
+ }
+ }
+
+ ccl_device float3 bsdf_principled_sheen_eval_transmit(const ShaderClosure *sc, const float3 I,
+ const float3 omega_in, float *pdf)
+ {
+ return make_float3(0.0f, 0.0f, 0.0f);
+ }
+
+ ccl_device int bsdf_principled_sheen_sample(const ShaderClosure *sc,
+ float3 Ng, float3 I, float3 dIdx, float3 dIdy, float randu, float randv,
+ float3 *eval, float3 *omega_in, float3 *domega_in_dx,
+ float3 *domega_in_dy, float *pdf)
+ {
+ const PrincipledSheenBsdf *bsdf = (const PrincipledSheenBsdf *)sc;
+
+ float3 N = bsdf->N;
+
+ sample_cos_hemisphere(N, randu, randv, omega_in, pdf);
+
+ if(dot(Ng, *omega_in) > 0) {
+ float3 H = normalize(I + *omega_in);
+
+ *eval = calculate_principled_sheen_brdf(bsdf, N, I, *omega_in, H, pdf);
+
+ #ifdef __RAY_DIFFERENTIALS__
+ // TODO: find a better approximation for the diffuse bounce
+ *domega_in_dx = -((2 * dot(N, dIdx)) * N - dIdx);
+ *domega_in_dy = -((2 * dot(N, dIdy)) * N - dIdy);
+ #endif
+ }
+ else {
+ *pdf = 0.0f;
+ }
+ return LABEL_REFLECT|LABEL_DIFFUSE;
+ }
+
+ CCL_NAMESPACE_END
+
+ #endif /* __BSDF_PRINCIPLED_SHEEN_H__ */
+
+
diff --cc intern/cycles/kernel/closure/bssrdf.h
index 475a60c50b2,8363cef53c8..f354e47ce2a
--- a/intern/cycles/kernel/closure/bssrdf.h
+++ b/intern/cycles/kernel/closure/bssrdf.h
@@@ -27,6 -27,8 +27,7 @@@ typedef ccl_addr_space struct Bssrdf
float d;
float texture_blur;
float albedo;
+ float roughness;
- float3 N;
} Bssrdf;
/* Planar Truncated Gaussian
diff --cc intern/cycles/kernel/closure/bssrdf.h.orig
index 475a60c50b2,8363cef53c8..67435a23391
--- a/intern/cycles/kernel/closure/bssrdf.h.orig
+++ b/intern/cycles/kernel/closure/bssrdf.h.orig
@@@ -27,6 -27,8 +27,11 @@@ typedef ccl_addr_space struct Bssrdf
float d;
float texture_blur;
float albedo;
++<<<<<<< HEAD
++=======
+ float roughness;
+ float3 N;
++>>>>>>> origin/master
} Bssrdf;
/* Planar Truncated Gaussian
diff --cc intern/cycles/kernel/split/kernel_holdout_emission_blurring_pathtermination_ao.h
index 8f0fb294870,89adeb64c8a..13f8ea040fd
--- a/intern/cycles/kernel/split/kernel_holdout_emission_blurring_pathtermination_ao.h
+++ b/intern/cycles/kernel/split/kernel_holdout_emission_blurring_pathtermination_ao.h
@@@ -122,8 -122,8 +122,8 @@@ ccl_device void kernel_holdout_emission
#ifdef __SHADOW_TRICKS__
if((sd->object_flag & SD_OBJECT_SHADOW_CATCHER)) {
- if (state->flag & PATH_RAY_CAMERA) {
+ if(state->flag & PATH_RAY_CAMERA) {
- state->flag |= (PATH_RAY_SHADOW_CATCHER | PATH_RAY_SHADOW_CATCHER_ONLY);
+ state->flag |= (PATH_RAY_SHADOW_CATCHER | PATH_RAY_SHADOW_CATCHER_ONLY | PATH_RAY_STORE_SHADOW_INFO);
state->catcher_object = sd->object;
if(!kernel_data.background.transparent) {
PathRadiance *L = &kernel_split_state.path_radiance[ray_index];
diff --cc intern/cycles/kernel/split/kernel_holdout_emission_blurring_pathtermination_ao.h.orig
index 8f0fb294870,89adeb64c8a..3a70068f4d7
--- a/intern/cycles/kernel/split/kernel_holdout_emission_blurring_pathtermination_ao.h.orig
+++ b/intern/cycles/kernel/split/kernel_holdout_emission_blurring_pathtermination_ao.h.orig
@@@ -122,8 -122,8 +122,13 @@@ ccl_device void kernel_holdout_emission
#ifdef __SHADOW_TRICKS__
if((sd->object_flag & SD_OBJECT_SHADOW_CATCHER)) {
++<<<<<<< HEAD
+ if (state->flag & PATH_RAY_CAMERA) {
+ state->flag |= (PATH_RAY_SHADOW_CATCHER | PATH_RAY_SHADOW_CATCHER_ONLY | PATH_RAY_STORE_SHADOW_INFO);
++=======
+ if(state->flag & PATH_RAY_CAMERA) {
+ state->flag |= (PATH_RAY_SHADOW_CATCHER | PATH_RAY_SHADOW_CATCHER_ONLY);
++>>>>>>> origin/master
state->catcher_object = sd->object;
if(!kernel_data.background.transparent) {
PathRadiance *L = &kernel_split_state.path_radiance[ray_index];
diff --cc intern/cycles/kernel/svm/svm_types.h
index 6287e9b70a3,4a8cdb60952..be99777dfb5
--- a/intern/cycles/kernel/svm/svm_types.h
+++ b/int
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list