您的位置:首页 > 移动开发 > Unity3D

【Unity】Shader编程 基础总结

2016-11-17 00:29 176 查看
Shader编程一直是一个比较难入门难上手的主题,本篇对Unity Shader编程的一些基础和要点进行了总结。

包括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

三、Shader核心结构体
(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

(2)表面着色器输出结构体

SurfaceOutput

half3

Abedo

反射光

half3

Normal

法线

half3

Emission

自发光

half

Specular

高光

half

Alpha

透明度

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity Shader编程