码迷,mamicode.com
首页 > 其他好文 > 详细

[简单教程]在blender里编写自己的着色器

时间:2017-05-14 18:51:06      阅读:797      评论:0      收藏:0      [点我收藏+]

标签:考试   org   mat   blog   程序   size   规范   切换   实践   

我的个人网站:www.bladesero.win

 

配置环境:win 10+blender 2.77a

博主最近学了一些shader编程,现在想到blender里面简单实践一下

技术分享
 
首先我们进入文本编辑器,新建一个empty shader的模板
技术分享
 
一个基本的OSL程序可以分为3块:输入变量,输出变量和程序主体的代码块
 
 技术分享
另外,OSL支持3个shader语言所特有的变量:normal,color,matrix
 
好了,对OSL大致的描述到此为止
 
接下来,我想做一个有漫反射和高光的表面表面着色器,所以要用到以下两个函数
:diffuse()和phong_ramp()
技术分享
要注意一下的是,blender里所能使用的函数和OSL语言规范里的有些不同,最好是以blender的Wiki为准:https://docs.blender.org/manual/en/dev/render/cycles/nodes/introduction.html#open-shading-language
 
懒得码字了。。下面我就直接放出代码了
 
 
 1 shader test(float Kd=1,
 2 float Exponent = 10.0,
 3 color Col=1,
 4 color Color1 = color(0.8, 0.0, 0.0),
 5     color Color2 = color(0.0, 0.8, 0.0),
 6     color Color3 = color(0.0, 0.0, 0.8),
 7     color Color4 = 0.1,
 8     color Color5 = 0.2,
 9     color Color6 = 0.3,
10     color Color7 = 0.4,
11     color Color8 = 0.5,
12 normal Normal=N,
13 output closure color Phong = 0,//冯氏光照模型
14 output closure color Diffuse=0//漫反射光照模型)
15 {
16   color Color[8] = {Color1, Color2, Color3, Color4, Color5, Color6, Color7, Color8};
17   Diffuse = Kd*Col*diffuse(Normal);
18   Phong=phong_ramp(Normal,Exponent,Color);
19 }

 

 
博主最近要考试,下次我再讲讲光照模型的原理和算法
 
然后我们使用cycles渲染,再切换到节点编辑器,添加->脚本
技术分享
我调整了一下颜色,你也可以试试各种配色,看看有什么不同的效果
最后我们勾上OSL选项,渲染一帧看看
技术分享
这是我的渲染效果,你呢?(笑)
技术分享

[简单教程]在blender里编写自己的着色器

标签:考试   org   mat   blog   程序   size   规范   切换   实践   

原文地址:http://www.cnblogs.com/nightdreammoon/p/6853120.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!