[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56980] trunk/blender: Cycles / Toon BSDF:
Thomas Dinges
blender at dingto.org
Thu May 23 19:45:20 CEST 2013
Revision: 56980
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56980
Author: dingto
Date: 2013-05-23 17:45:20 +0000 (Thu, 23 May 2013)
Log Message:
-----------
Cycles / Toon BSDF:
* Added a toon bsdf node to Cycles. This was already available as OSL only closure, but is now available inside the SVM backed as well, for CPU and GPU rendering.
* There are 2 variations available, diffuse and glossy toon, selectable via a menu inside the node.
Documentation:
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/Shaders#Toon
Example render & blend file:
http://www.pasteall.org/pic/show.php?id=51970
http://www.pasteall.org/blend/21579
Modified Paths:
--------------
trunk/blender/intern/cycles/blender/blender_shader.cpp
trunk/blender/intern/cycles/kernel/closure/bsdf.h
trunk/blender/intern/cycles/kernel/closure/bsdf_toon.h
trunk/blender/intern/cycles/kernel/osl/CMakeLists.txt
trunk/blender/intern/cycles/kernel/osl/osl_closures.cpp
trunk/blender/intern/cycles/kernel/osl/osl_closures.h
trunk/blender/intern/cycles/kernel/shaders/CMakeLists.txt
trunk/blender/intern/cycles/kernel/shaders/stdosl.h
trunk/blender/intern/cycles/kernel/svm/svm_closure.h
trunk/blender/intern/cycles/kernel/svm/svm_types.h
trunk/blender/intern/cycles/render/nodes.cpp
trunk/blender/intern/cycles/render/nodes.h
trunk/blender/release/scripts/startup/nodeitems_builtins.py
trunk/blender/source/blender/blenkernel/BKE_node.h
trunk/blender/source/blender/blenkernel/intern/node.c
trunk/blender/source/blender/editors/space_node/drawnode.c
trunk/blender/source/blender/gpu/shaders/gpu_shader_material.glsl
trunk/blender/source/blender/makesdna/DNA_node_types.h
trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
trunk/blender/source/blender/nodes/CMakeLists.txt
trunk/blender/source/blender/nodes/NOD_shader.h
trunk/blender/source/blender/nodes/NOD_static_types.h
Added Paths:
-----------
trunk/blender/intern/cycles/kernel/shaders/node_toon_bsdf.osl
trunk/blender/source/blender/nodes/shader/nodes/node_shader_bsdf_toon.c
Removed Paths:
-------------
trunk/blender/intern/cycles/kernel/osl/bsdf_toon.cpp
trunk/blender/release/scripts/templates_osl/toon_closure.osl
Modified: trunk/blender/intern/cycles/blender/blender_shader.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_shader.cpp 2013-05-23 16:45:12 UTC (rev 56979)
+++ trunk/blender/intern/cycles/blender/blender_shader.cpp 2013-05-23 17:45:20 UTC (rev 56980)
@@ -354,6 +354,19 @@
}
node = refraction;
}
+ else if (b_node.is_a(&RNA_ShaderNodeBsdfToon)) {
+ BL::ShaderNodeBsdfToon b_toon_node(b_node);
+ ToonBsdfNode *toon = new ToonBsdfNode();
+ switch(b_toon_node.component()) {
+ case BL::ShaderNodeBsdfToon::component_DIFFUSE:
+ toon->component = ustring("Diffuse");
+ break;
+ case BL::ShaderNodeBsdfToon::component_GLOSSY:
+ toon->component = ustring("Glossy");
+ break;
+ }
+ node = toon;
+ }
else if (b_node.is_a(&RNA_ShaderNodeBsdfTranslucent)) {
node = new TranslucentBsdfNode();
}
Modified: trunk/blender/intern/cycles/kernel/closure/bsdf.h
===================================================================
--- trunk/blender/intern/cycles/kernel/closure/bsdf.h 2013-05-23 16:45:12 UTC (rev 56979)
+++ trunk/blender/intern/cycles/kernel/closure/bsdf.h 2013-05-23 17:45:20 UTC (rev 56980)
@@ -29,6 +29,7 @@
#include "../closure/bsdf_ward.h"
#endif
#include "../closure/bsdf_westin.h"
+#include "../closure/bsdf_toon.h"
#include "../closure/bssrdf.h"
CCL_NAMESPACE_BEGIN
@@ -96,6 +97,14 @@
label = bsdf_ashikhmin_velvet_sample(sc, sd->Ng, sd->I, sd->dI.dx, sd->dI.dy, randu, randv,
eval, omega_in, &domega_in->dx, &domega_in->dy, pdf);
break;
+ case CLOSURE_BSDF_DIFFUSE_TOON_ID:
+ label = bsdf_diffuse_toon_sample(sc, sd->Ng, sd->I, sd->dI.dx, sd->dI.dy, randu, randv,
+ eval, omega_in, &domega_in->dx, &domega_in->dy, pdf);
+ break;
+ case CLOSURE_BSDF_GLOSSY_TOON_ID:
+ label = bsdf_glossy_toon_sample(sc, sd->Ng, sd->I, sd->dI.dx, sd->dI.dy, randu, randv,
+ eval, omega_in, &domega_in->dx, &domega_in->dy, pdf);
+ break;
case CLOSURE_BSDF_WESTIN_BACKSCATTER_ID:
label = bsdf_westin_backscatter_sample(sc, sd->Ng, sd->I, sd->dI.dx, sd->dI.dy, randu, randv,
eval, omega_in, &domega_in->dx, &domega_in->dy, pdf);
@@ -165,6 +174,12 @@
case CLOSURE_BSDF_ASHIKHMIN_VELVET_ID:
eval = bsdf_ashikhmin_velvet_eval_reflect(sc, sd->I, omega_in, pdf);
break;
+ case CLOSURE_BSDF_DIFFUSE_TOON_ID:
+ eval = bsdf_diffuse_toon_eval_reflect(sc, sd->I, omega_in, pdf);
+ break;
+ case CLOSURE_BSDF_GLOSSY_TOON_ID:
+ eval = bsdf_glossy_toon_eval_reflect(sc, sd->I, omega_in, pdf);
+ break;
case CLOSURE_BSDF_WESTIN_BACKSCATTER_ID:
eval = bsdf_westin_backscatter_eval_reflect(sc, sd->I, omega_in, pdf);
break;
@@ -214,6 +229,12 @@
case CLOSURE_BSDF_ASHIKHMIN_VELVET_ID:
eval = bsdf_ashikhmin_velvet_eval_transmit(sc, sd->I, omega_in, pdf);
break;
+ case CLOSURE_BSDF_DIFFUSE_TOON_ID:
+ eval = bsdf_diffuse_toon_eval_transmit(sc, sd->I, omega_in, pdf);
+ break;
+ case CLOSURE_BSDF_GLOSSY_TOON_ID:
+ eval = bsdf_glossy_toon_eval_transmit(sc, sd->I, omega_in, pdf);
+ break;
case CLOSURE_BSDF_WESTIN_BACKSCATTER_ID:
eval = bsdf_westin_backscatter_eval_transmit(sc, sd->I, omega_in, pdf);
break;
@@ -281,6 +302,12 @@
case CLOSURE_BSDF_ASHIKHMIN_VELVET_ID:
bsdf_ashikhmin_velvet_blur(sc, roughness);
break;
+ case CLOSURE_BSDF_DIFFUSE_TOON_ID:
+ bsdf_diffuse_toon_blur(sc, roughness);
+ break;
+ case CLOSURE_BSDF_GLOSSY_TOON_ID:
+ bsdf_glossy_toon_blur(sc, roughness);
+ break;
case CLOSURE_BSDF_WESTIN_BACKSCATTER_ID:
bsdf_westin_backscatter_blur(sc, roughness);
break;
Modified: trunk/blender/intern/cycles/kernel/closure/bsdf_toon.h
===================================================================
--- trunk/blender/intern/cycles/kernel/closure/bsdf_toon.h 2013-05-23 16:45:12 UTC (rev 56979)
+++ trunk/blender/intern/cycles/kernel/closure/bsdf_toon.h 2013-05-23 17:45:20 UTC (rev 56980)
@@ -119,22 +119,22 @@
}
-/* SPECULAR TOON */
+/* GLOSSY TOON */
-__device int bsdf_specular_toon_setup(ShaderClosure *sc)
+__device int bsdf_glossy_toon_setup(ShaderClosure *sc)
{
- sc->type = CLOSURE_BSDF_SPECULAR_TOON_ID;
+ sc->type = CLOSURE_BSDF_GLOSSY_TOON_ID;
sc->data0 = clamp(sc->data0, 0.0f, 1.0f);
sc->data1 = clamp(sc->data1, 0.0f, 1.0f);
return SD_BSDF|SD_BSDF_HAS_EVAL;
}
-__device void bsdf_specular_toon_blur(ShaderClosure *sc, float roughness)
+__device void bsdf_glossy_toon_blur(ShaderClosure *sc, float roughness)
{
}
-__device float3 bsdf_specular_toon_eval_reflect(const ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf)
+__device float3 bsdf_glossy_toon_eval_reflect(const ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf)
{
float max_angle = sc->data0*M_PI_2_F;
float smooth = sc->data1*M_PI_2_F;
@@ -158,12 +158,12 @@
return make_float3(0.0f, 0.0f, 0.0f);
}
-__device float3 bsdf_specular_toon_eval_transmit(const ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf)
+__device float3 bsdf_glossy_toon_eval_transmit(const ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf)
{
return make_float3(0.0f, 0.0f, 0.0f);
}
-__device int bsdf_specular_toon_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)
+__device int bsdf_glossy_toon_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)
{
float max_angle = sc->data0*M_PI_2_F;
float smooth = sc->data1*M_PI_2_F;
Modified: trunk/blender/intern/cycles/kernel/osl/CMakeLists.txt
===================================================================
--- trunk/blender/intern/cycles/kernel/osl/CMakeLists.txt 2013-05-23 16:45:12 UTC (rev 56979)
+++ trunk/blender/intern/cycles/kernel/osl/CMakeLists.txt 2013-05-23 17:45:20 UTC (rev 56980)
@@ -16,7 +16,6 @@
background.cpp
bsdf_diffuse_ramp.cpp
bsdf_phong_ramp.cpp
- bsdf_toon.cpp
emissive.cpp
osl_bssrdf.cpp
osl_closures.cpp
Deleted: trunk/blender/intern/cycles/kernel/osl/bsdf_toon.cpp
===================================================================
--- trunk/blender/intern/cycles/kernel/osl/bsdf_toon.cpp 2013-05-23 16:45:12 UTC (rev 56979)
+++ trunk/blender/intern/cycles/kernel/osl/bsdf_toon.cpp 2013-05-23 17:45:20 UTC (rev 56980)
@@ -1,179 +0,0 @@
-/*
- * Adapted from Open Shading Language with this license:
- *
- * Copyright (c) 2009-2010 Sony Pictures Imageworks Inc., et al.
- * All Rights Reserved.
- *
- * Modifications Copyright 2011, Blender Foundation.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Sony Pictures Imageworks nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <OpenImageIO/fmath.h>
-
-#include <OSL/genclosure.h>
-
-#include "osl_closures.h"
-
-#include "kernel_types.h"
-#include "kernel_montecarlo.h"
-#include "closure/bsdf_toon.h"
-
-CCL_NAMESPACE_BEGIN
-
-using namespace OSL;
-
-/* DIFFUSE TOON */
-
-class DiffuseToonClosure : public CBSDFClosure {
-public:
- DiffuseToonClosure() : CBSDFClosure(LABEL_DIFFUSE) {}
-
- size_t memsize() const { return sizeof(*this); }
- const char *name() const { return "diffuse_toon"; }
-
- void setup()
- {
- sc.prim = this;
- m_shaderdata_flag = bsdf_diffuse_toon_setup(&sc);
- }
-
- bool mergeable(const ClosurePrimitive *other) const
- {
- return false;
- }
-
- void blur(float roughness)
- {
- bsdf_diffuse_toon_blur(&sc, roughness);
- }
-
- void print_on(std::ostream &out) const
- {
- out << name() << " ((" << sc.N[0] << ", " << sc.N[1] << ", " << sc.N[2] << "))";
- }
-
- float3 eval_reflect(const float3 &omega_out, const float3 &omega_in, float& pdf) const
- {
- return bsdf_diffuse_toon_eval_reflect(&sc, omega_out, omega_in, &pdf);
- }
-
- float3 eval_transmit(const float3 &omega_out, const float3 &omega_in, float& pdf) const
- {
- return bsdf_diffuse_toon_eval_transmit(&sc, omega_out, omega_in, &pdf);
- }
-
- int sample(const float3 &Ng,
- const float3 &omega_out, const float3 &domega_out_dx, const float3 &domega_out_dy,
- float randu, float randv,
- float3 &omega_in, float3 &domega_in_dx, float3 &domega_in_dy,
- float &pdf, float3 &eval) const
- {
- return bsdf_diffuse_toon_sample(&sc, Ng, omega_out, domega_out_dx, domega_out_dy,
- randu, randv, &eval, &omega_in, &domega_in_dx, &domega_in_dy, &pdf);
- }
-};
-
-ClosureParam *closure_bsdf_diffuse_toon_params()
-{
- static ClosureParam params[] = {
- CLOSURE_FLOAT3_PARAM(DiffuseToonClosure, sc.N),
- CLOSURE_FLOAT_PARAM(DiffuseToonClosure, sc.data0),
- CLOSURE_FLOAT_PARAM(DiffuseToonClosure, sc.data1),
- CLOSURE_STRING_KEYPARAM("label"),
- CLOSURE_FINISH_PARAM(DiffuseToonClosure)
- };
- return params;
-}
-
-CLOSURE_PREPARE(closure_bsdf_diffuse_toon_prepare, DiffuseToonClosure)
-
-/* SPECULAR TOON */
-
-class SpecularToonClosure : public CBSDFClosure {
-public:
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list