写在前面
看了许多Shader教程,也学到了一些常见的Shader效果,但还是有一些迷糊,不能灵活的运用。所以打算一步步从零开始,把Shader彻底搞明白。以此记录一下学习过程。
Shader效果
- 单个对象
- 正确渲染出对象
- 将对象设置成黄色(为啥是黄色,随便选的颜色:-))
思路
- 这里选择Quad作为渲染对象,顶点组成比较简单
- 要正确显示出Quad,需要将顶点位置告诉GPU
- 要正确显示黄色,则要告诉GPU一个黄色的色值
以下是具体细节实现的过程,我们一步步来:
先建一个新的项目
目录结构如下:
先从最简单的开始,后期可能会整理,Materials主要存放材质,Prefabs存放实验用的prefab,Textures主要是贴图资源,Loading是测试用的场景,Shaders里放实验用的Shader
新建测试对象
- 选择GameObject->3D Object->Quad,新建一个Quad对象
- 新建一个Material,替换掉默认的Material
- 新建一个Shader,替换掉默认的Shader
- 将Shader中自动生成的内容清空,然后一步步的添加需要的内容,清空后的Shader内容如下:
Shader "Unlit/first"{
}
这时的场景显示如下:
为什么会显示一个粉色呢?
选中Shader后,查看Inspector面板发现,原来有一个错误,Unity发现Shader是一个空的,所以不能编译,就给Quad对象一个默认的粉色来提醒(实际上是用了一个默认的Shader)
选中shader后在Inspector面板查看如下:
会出现一个Errors,提示没有subshaders或默认的fallbacks支持GPU,也没有生成编译后的Shader代码。
试试加上属性会是什么结果: