天才的大三暑假修行之旅.初学Shader

来源:互联网 发布:剑网三青妆人软件设置 编辑:程序博客网 时间:2024/04/30 10:48

天才的大三暑假修行之旅

本人是华北电力大学大三信息安全专业的程序猿,放假前的最后一个月参加了完美世界的游戏制作人直通车和Unity实习的面试,当然向我那么优秀的人都都没过,应该其他人应该也很难过。但是这不是重点,重点是没被选中。

面试的具体问题我不记得了,也不想说,主要是想吐槽一下自己的能力不够。在面试Unity实习的时候,虽然能根据笔试题目知道自己能力不够,首先题目是c++的,很难,而且50%的东西都不懂。但是还是继续参加了面试。这就是所谓的自信,虽然结果还是被刷了。

这也不是写这篇文章的重点。重点是我的能力不够,也成了我开始写博客的动力。之前很讨厌跟别人讨论知识。当然现在也不喜欢。我为什么要跟你们这种凡人说这些东西呢,我可是天才,哈哈哈哈哈哈!!!开玩笑的。

其实我写的博客主要是作为我这个暑假学习的笔记,怕自己忘了什么,还是记录一些东西吧。

备注:我写的东西,我都不保证好不好。我只是把我知道的东西,按照我的思路来记录下来,可能有精华也可能有糟粕。就像有一些东西你不懂,不能吸收,如同婴儿没长牙齿所以要人帮他咀嚼食物,我帮大家咀嚼知识,中间参杂着我的口水。是好是坏,还是要考自己实践跟学习才能分辨出来的吧。

初学Shader

昨天我看了浅墨写的Shader学习知识要点,写的很好。好吧,也学是我这方面学的少,所以感觉什么都是大神。

主要介绍了Unity支持的3种着色器:固定功能着色器、表面着色器、顶点着色器和片段着色器。明明是4种,为什么说是3种呢,因为浅墨是这么分类的,我也是这么学的。他把后两种顶点着色器和片段着色器归为一类。

后面两种我也还没学懂,其实我都没看。我就只是简单的学了一下固定功能着色器。因为这个最简单吧。

那么我来按照我的理解来说说固定功能着色器。它就好像什么呢?就如同你透过很多层玻璃去看一个物体。

左边那个是眼睛,那个苹果是原本的物体,中间的方块是玻璃。

物体就是你原来的东西,而这些不同的玻璃就是你加的不同的效果。
最后你在Unity运行的效果就是透过这些玻璃看到效果。那么问题来了,Q:挖掘技术哪家强?不是这个。是怎么写出这些玻璃效果?

固定着色器其实是一个玻璃加工厂,你往玻璃的原料里面添加不同的金属离子物质,玻璃就会出现不同的颜色。Unity做了很多,它连加入金属离子的工序都做好了,你只要设置加不加,加多少,就能出来想要的效果。

现在通过讲解一个Shader来理解是怎么回事。

Shader "Custom/Sec" {    Properties {        _MainColor("Main Color",Color)=(1,0.1,0.5,1)        _SpecColor("Spec Color",Color)=(1,1,1,1)        _Emission("Emission Color",Color)=(0,0,0,0)        _Shininess("Shiness Range",Range(0.01,1))=0.7    }    SubShader {        Pass        {            Material            {                Diffuse[_MainColor]                Ambient[_MainColor]                Shininess[_Shininess]                Specular[_SpecColor]                Emission[_Emission]            }            lighting on            SeparateSpecular on        }    }     FallBack "Diffuse"}

出来的效果是

没啥感觉

看上去也不怎么样。差不多,凑合看吧。代码中只有一个Pass,就是只用了一个玻璃来看东西。Diffuse[_MainColor]、Ambient[_MainColor]、Shininess[_Shininess]、Specular[_SpecColor]、Emission[_Emission]这些都是说玻璃里面的各个元素怎么配置。具体明细可以参考官方文档。大家肯定会说:

Q:怎么那么不负责任。
A:其实我就那么不负责任。

官方文档:http://docs.unity3d.com/Manual/
也可以看看浅墨原来的文章写的很好,起码是中文的:http://www.unitymanual.com/thread-34528-1-1.html

有人也许看过这个系列的文章会说:

Q:用多个SetTexture来加入同一个“金属元素”也会产生不同的效果。
A:嗯,分析的很有道理,但是玻璃的比喻依旧是成立的,因为玻璃是可以镀膜的,膜也会互相影响。那么既然讲到SetTexture这个方法的话,就来讲讲固定着色器的内部方法使用。

在Properties里先定义的变量可以在后面直接使用,但是有的方法必须传入一个参数,比如使用SetTexture的格式是:SetTexture[你定义的2D变量]。

Q:没了?
A:嗯,没了,就讲这么多。
Q:那这不是废话么?
A:起始我写的博客大多是吐槽。就当看看废话,娱乐一下吧。哈哈哈哈哈哈!!!!!!!!!

0 0
原创粉丝点击