[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