Unity Shader
2021-04-11 14:02:35 2 举报
AI智能生成
unity shader
作者其他创作
大纲/内容
分类
Unity shader
语言ShaderLab编写
1,表面着色器 Surface Shader
2,顶点/片元着色器 Vertex/Fragment Shader
3,固定函数着色器 Fixed Function Shader
Properties
属性类型
_Color("Color",Color)=(1,1,1,1)
_Vector("Vector",Vector)=(1,2,3,4)<br>
_Int("Int",Int)= 34234<br>
_Float("Float",Float) = 4.5
_Range("Range",Range(1,11))=6
_2D("Texture",2D) = "red"{}
_Cube("Cube",Cube) = "white"{}
_3D("Texure",3D) = "black"{}
SubShader<br>
属性类型
float
定义
32位单精度浮点数
分类
float
float2
float3
float4
half
定义
16位(-6万~+6万)<br>
分类
half
half2
half3
half4
fixed<br>
定义
11位(-2~+2)
分类
fiexd
fixed2
fixed3
fixed4
unitycg.cginc中常用函数<br>
摄像机方向(视角)<br>
float3 WorldSpaceViewDir(float4 v)<br>
根据模型空间中的顶点坐标得到(世界空间坐标)从这个点到摄像机的观察方向
floar3 UnityWorldSpaceViewDir(float4 v)
世界空间中顶点坐标==》世界空间从这个点到摄像机的观察方向
float3 ObjSpaceViewDir(float4 v)
模型空间中的顶点坐标==》模型空间从这个点到摄像机的观察方向
光源方向<br>
float3 WorldSpaceLightDir(float4 v)<br>
模型空间中的顶点坐标==》世界空间中从这个点到光源的方向
float3 UnityWorldSpaceLightDir(float4 v)
世界空间中的顶点坐标==》世界空间中从这个点到光源的方向
float3 ObjSpaceLightDir(float4 v)
模型空间中的顶点坐标==》模型空间中从这个点到光源的方向
方向转换
float3 UnityObjectToWorldNormal(float3 norm)
把法线方向模型空间==》世界空间
float3 UnityObjectToWorldDir(float3 norm)
把方向 模型空间==》世界空间
float3 UnityObjectToObjectDir(float3 norm)
把方向 世界空间==》模型空间
常用
normalize();
将一个向量单位化,保持方向不变
max();
取得其中的一个最大值
dot();
取得两个向量的点积
mul();
两个矩阵相乘
语义
从应用程序传递到顶点函数的语义有哪些a2v
POSITION 顶点坐标(模型空间下的)
NORMAL 法线( 模型空间下)
TANGENT 切线(模型空间)
TEXCOORD0 ~n 纹理坐标
COLOR 顶点颜色
从顶点函数传递给片元函数的时候可以使用的语义
SV_POSITION 剪裁空间中的顶点坐标(一般是系统直接使用)
COLOR0 可以传递一组值 4个
COLOR1 可以传递一组值 4个
TEXCOORD0~7 传递纹理坐标
片元函数传递给系统
SV_Target 颜色值,显示到屏幕上的颜色
光照模型
定义
就是一个公式来计算关照效果
分类
兰伯特光照模型(标准光照模型)
光分类
自发光
高光反射-Specular<br>
直射光 * pow( max(cosθ,0),10) θ:是反射光方向和视野方向的夹角<br>
漫反射-Diffuse<br>
直射光颜色*max(0,cos夹角(光合法线的夹角))
环境光-ambient
<br>半兰伯特光照模型
光分类
自发光
高光反射-Specular
漫反射-Diffuse<br>
直射光颜色*(cos夹角(光合法线的夹角)*0.5+0.5)<br>
环境光-ambient
Blinn光照模型
光分类
自发光
高光反射-Specular
直射光 * pow( max(cosθ,0),10) θ:是反射光方向和视野方向的夹角
漫反射-Diffuse<br>
环境光-ambient
Blinn-Phong光照模型
光分类
自发光
高光反射-Specular
Specular=直射光 * pow( max(cosθ,0),10) θ:是法线和x的夹角 x 是平行光和视野方向的平分线
漫反射-Diffuse<br>
环境光-ambient
准则
两个颜色融合就是相乘,两个颜色叠加就是相加<br>
组件
Mesh Filter<br>
存储一个Mesh(网格,模型的网格,就是模型的由哪些三角面组成,组成一个什么样子的模型,三角面的一些顶点信息)<br>
Mesh Renderer<br>
用来渲染一个模型的外观,就是样子, 按照 mesh给它皮肤,给它颜色,通过Material(材质)控制模型渲染的样子
Material
贴图(可以没有,是一个单纯的颜色)
shader
书籍
unity shader 入门精要(乐乐程序猿)<br>
unity 3d shaderlab开发实战详解(第二版)
unity 5.x shaders and effects cookbook(中文版 unity着色器和屏幕特效开发秘籍)
网站
CG语言教程官网
数学函数在线演示
其他
shadertoy
csdn
图形应用编程接口
OpenGL
DirectX<br>
语言
SLSL Shader(只适用于OpenGL)
HLSL Shader(只适用于DirectX)<br>
英伟达CG(OpenGl和DirectX两者都适用)
0 条评论
下一页