《UnityShadow》
《UnityShadow》
目录
UnityShader基础
UnityShader概述
材质 和 Unity Shader
材质和UnityShader关系:流程
- (1) 创建一个材质
- (2) 创建一个Unity Shader,并把它赋给上一步创建的材质(即材质有Shader属性)
- (3) 把材质复给要渲染的对象
- (4) 在材质面板中调整Unity Shader的属性,以得到满意的效果
材质和UnityShader的职责
- UnityShader:定义渲染需要
- 代码(如顶点着色器和片元着色器)
- 属性(如使用那些纹理)
- 指令(渲染和标签设置等)
- 材质:调节UnityShader所定义的属性
图解
图3.1 Unity Shader和材质。首先创建需要的Unity Shader和材质,然后把Unity Shader赋给材质,并在材质面板上调整属性(如使用的纹理、漫反射系数等)。最后,将材质赋给相应的模型来查看最终的渲染效果
![material_shader.png-125.8kB](1-03. UnityShader基础.assets/material_shader.png)
Unity中的 材质
图3.2 将材质直接拖曳到模型的Mesh Renderer组件中
![mesh_renderer.png-41kB](1-03. UnityShader基础.assets/mesh_renderer.png)
图3.3 材质提供了一种可视化的方式来调整着色器中使用的参数
![material_inspector.png-119.4kB](1-03. UnityShader基础.assets/material_inspector.png)
Unity中的 Shader
图3.4 Unity Shader的导入设置面板
![shader_import_settings.png-38kB](1-03. UnityShader基础.assets/shader_import_settings.png)
图3.5 Gompile and show code下拉列表
![shader_compile_code.png-35.9kB](1-03. UnityShader基础.assets/shader_compile_code.png)
图3.6 Unity Shader为控制渲染过程提供了一层抽象。如果没有使用Unity Shader(左图),开发者需要和很多文件和设置打交道,才能让画面呈现出想要的效果;而在Unity Shader的帮助下(右图),开发者只需要使用ShaderLab来编写Unity Shader文件就可以完成所有的工作
![shaderlab_abstract.png-63.4kB](1-03. UnityShader基础.assets/shaderlab_abstract.png)
图3.7 在Unity Shader的名称定义中利用 斜杠来组织在材质面板中的位置
![shader_name.png-55.5kB](1-03. UnityShader基础.assets/shader_name.png)
图3.8 不同属性类型在材质 面板中的显示结果
![shaderlab_properties.png-33.2kB](1-03. UnityShader基础.assets/shaderlab_properties.png)
图3.9 在Unity Shader的导入设置面板中可以通过Compile and show code按钮来查看Unity对CG片段编译后的代码。通过单击Compile and show code按钮右端的倒三角可以打开下拉菜单,在这个下拉菜单中可以选择编译的平台种类,如只为当前的显卡设备编译特定的汇编代码,或为所有的平台编译汇编代码,我们也可以自定义选择编译到哪些平台上
![shader_compile_code.png-35.9kB](1-03. UnityShader基础.assets/shader_compile_code.png)