【Unity】Shader编程 基础总结
2016-11-17 00:29
176 查看
Shader编程一直是一个比较难入门难上手的主题,本篇对Unity Shader编程的一些基础和要点进行了总结。
包括Shader编程相关知识图谱、Shader编程相关数据类型、Shader核心结构体等(后续继续补充)。
每个部分相互独立,可以单独参考,亦可作为一个整体参考。
一、Shader编程知识图谱
个人对Shader编程的理解凝在四个字:色即是光。
无论是要手写Shader程序,还是利用各类Shader制作插件(如ShaderForge)制作Shader,关于“光”的知识是一定要有的。
二、Shader编程数据类型
Shader编程中比较麻烦的一点是,同一个变量在不同的语法阶段表示的方式不同,常用变量类型对照如下:
三、Shader核心结构体
(1)顶点着色器输入结构体
(2)表面着色器输出结构体
包括Shader编程相关知识图谱、Shader编程相关数据类型、Shader核心结构体等(后续继续补充)。
每个部分相互独立,可以单独参考,亦可作为一个整体参考。
一、Shader编程知识图谱
个人对Shader编程的理解凝在四个字:色即是光。
无论是要手写Shader程序,还是利用各类Shader制作插件(如ShaderForge)制作Shader,关于“光”的知识是一定要有的。
二、Shader编程数据类型
Shader编程中比较麻烦的一点是,同一个变量在不同的语法阶段表示的方式不同,常用变量类型对照如下:
硬件平台 | CPU | (接口:Inspector面板设置) | GPU |
变量类型 | C#脚本语言 | ShaderLab 属性 | Cg语言 |
纹理贴图 | Texture | 2D | sampler2D |
颜色 | Color | Color | fixed4 / half4 |
3D贴图 | Cubemap | Cube | sampleCUBE |
4元素向量 | Vector4 | Vector | float4 |
浮点数 | float | Float | float |
浮点范围 | float | Range | float |
矩形纹理 | Texture | Rect | sampleRect |
(1)顶点着色器输入结构体
成员类型 | 成员名 | ?? 结构体也可以自定义,但是必须有位置信息 | appdata_base | appdata_tan | appdata_full | appdata_img |
float4 | vertex | 位置 | 1 | 1 | 1 | 1 |
float3 | normal | 法线 | 1 | 1 | 1 | |
float4 | tangent | 切线 | 1 | 1 | ||
fixed4 | color | 顶点颜色 | 1 | |||
float4 | texcoord | 纹理坐标0 | 1 | 1 | 1 | 1 |
fixed4 | texcoord1 | 纹理坐标1 | 1 |
SurfaceOutput | ||
half3 | Abedo | 反射光 |
half3 | Normal | 法线 |
half3 | Emission | 自发光 |
half | Specular | 高光 |
half | Alpha | 透明度 |
相关文章推荐
- 【Unity】Shader编程 基础总结
- 【Unity】Shader编程 基础总结
- 【Unity】Shader编程 基础总结
- HLSL Shader编程基础总结
- 编程基础知识总结
- C#泛型编程基础知识总结
- 自学.NET之路-C#编程之基础总结
- 今天看了网络编程的基础孙鑫写的稍微给自己理解到得东西做了下总结!
- 自学.NET之路-C#编程之基础总结
- 网页编程基础第一章知识点总结——Web基础知识
- Java多线程编程总结笔记——一多线程基础知识
- C#泛型编程基础知识总结[转]
- 网页编程基础第四章知识点总结——表格
- 脚本编程基础知识点总结 推荐
- 脚本编程基础知识点总结
- 套接字编程基础--Unix网络编程第3章总结
- C#泛型编程基础知识总结
- 移动项目开发笔记(C#泛型编程基础知识总结)
- Linux 套接字编程-基础总结
- 安卓航班Android开发经典教程大总结2----游戏基础入门及高级编程