[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51094] trunk/blender/intern/cycles/kernel : Fix part of cycles/osl light pass rendering, transmission still not correct.

Brecht Van Lommel brechtvanlommel at pandora.be
Fri Oct 5 19:17:19 CEST 2012


Revision: 51094
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51094
Author:   blendix
Date:     2012-10-05 17:17:19 +0000 (Fri, 05 Oct 2012)
Log Message:
-----------
Fix part of cycles/osl light pass rendering, transmission still not correct.

Modified Paths:
--------------
    trunk/blender/intern/cycles/kernel/osl/osl_shader.cpp
    trunk/blender/intern/cycles/kernel/svm/svm_types.h

Modified: trunk/blender/intern/cycles/kernel/osl/osl_shader.cpp
===================================================================
--- trunk/blender/intern/cycles/kernel/osl/osl_shader.cpp	2012-10-05 17:07:02 UTC (rev 51093)
+++ trunk/blender/intern/cycles/kernel/osl/osl_shader.cpp	2012-10-05 17:17:19 UTC (rev 51094)
@@ -139,15 +139,27 @@
 					float sample_weight = fabsf(average(weight)) * albedo;
 
 					sc.sample_weight = sample_weight;
-					sc.type = CLOSURE_BSDF_ID;
 
 					/* scattering flags */
-					if (scattering == OSL::Labels::DIFFUSE)
+					if (scattering == OSL::Labels::DIFFUSE) {
 						sd->flag |= SD_BSDF | SD_BSDF_HAS_EVAL;
-					else if (scattering == OSL::Labels::GLOSSY)
+						sc.type = CLOSURE_BSDF_DIFFUSE_ID;
+					}
+					else if (scattering == OSL::Labels::GLOSSY) {
 						sd->flag |= SD_BSDF | SD_BSDF_HAS_EVAL | SD_BSDF_GLOSSY;
-					else
+						sc.type = CLOSURE_BSDF_GLOSSY_ID;
+					}
+					else if (scattering == OSL::Labels::STRAIGHT) {
 						sd->flag |= SD_BSDF;
+						sc.type = CLOSURE_BSDF_TRANSPARENT_ID;
+					}
+					else {
+						/* todo: we don't actually have a way to determine if
+						 * this closure will reflect/transmit. could add our own
+						 * own scattering flag that do give this info */
+						sd->flag |= SD_BSDF;
+						sc.type = CLOSURE_BSDF_GLOSSY_ID;
+					}
 
 					/* add */
 					sd->closure[sd->num_closure++] = sc;

Modified: trunk/blender/intern/cycles/kernel/svm/svm_types.h
===================================================================
--- trunk/blender/intern/cycles/kernel/svm/svm_types.h	2012-10-05 17:07:02 UTC (rev 51093)
+++ trunk/blender/intern/cycles/kernel/svm/svm_types.h	2012-10-05 17:17:19 UTC (rev 51094)
@@ -287,16 +287,18 @@
 	CLOSURE_BSDF_DIFFUSE_ID,
 	CLOSURE_BSDF_OREN_NAYAR_ID,
 
+	CLOSURE_BSDF_GLOSSY_ID,
 	CLOSURE_BSDF_REFLECTION_ID,
 	CLOSURE_BSDF_MICROFACET_GGX_ID,
 	CLOSURE_BSDF_MICROFACET_BECKMANN_ID,
 	CLOSURE_BSDF_WARD_ID,
+	CLOSURE_BSDF_ASHIKHMIN_VELVET_ID,
 	CLOSURE_BSDF_WESTIN_SHEEN_ID,
 
+	CLOSURE_BSDF_TRANSMISSION_ID,
 	CLOSURE_BSDF_TRANSLUCENT_ID,
 	CLOSURE_BSDF_REFRACTION_ID,
 	CLOSURE_BSDF_WESTIN_BACKSCATTER_ID,
-	CLOSURE_BSDF_ASHIKHMIN_VELVET_ID,
 	CLOSURE_BSDF_MICROFACET_BECKMANN_REFRACTION_ID,
 	CLOSURE_BSDF_MICROFACET_GGX_REFRACTION_ID,
 	CLOSURE_BSDF_GLASS_ID,
@@ -320,8 +322,8 @@
 /* watch this, being lazy with memory usage */
 #define CLOSURE_IS_BSDF(type) (type <= CLOSURE_BSDF_TRANSPARENT_ID)
 #define CLOSURE_IS_BSDF_DIFFUSE(type) (type >= CLOSURE_BSDF_DIFFUSE_ID && type <= CLOSURE_BSDF_OREN_NAYAR_ID)
-#define CLOSURE_IS_BSDF_GLOSSY(type) (type >= CLOSURE_BSDF_REFLECTION_ID && type <= CLOSURE_BSDF_WESTIN_SHEEN_ID)
-#define CLOSURE_IS_BSDF_TRANSMISSION(type) (type >= CLOSURE_BSDF_TRANSLUCENT_ID && type <= CLOSURE_BSDF_GLASS_ID)
+#define CLOSURE_IS_BSDF_GLOSSY(type) (type >= CLOSURE_BSDF_GLOSSY_ID && type <= CLOSURE_BSDF_WESTIN_SHEEN_ID)
+#define CLOSURE_IS_BSDF_TRANSMISSION(type) (type >= CLOSURE_BSDF_TRANSMISSION_ID && type <= CLOSURE_BSDF_GLASS_ID)
 #define CLOSURE_IS_VOLUME(type) (type >= CLOSURE_VOLUME_ID && type <= CLOSURE_VOLUME_ISOTROPIC_ID)
 #define CLOSURE_IS_EMISSION(type) (type == CLOSURE_EMISSION_ID)
 #define CLOSURE_IS_HOLDOUT(type) (type == CLOSURE_HOLDOUT_ID)




More information about the Bf-blender-cvs mailing list