shader的内置矩阵和一些变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shader的内置矩阵和一些变量相关的知识,希望对你有一定的参考价值。
参考技术A https://blog.csdn.net/qq826364410/article/details/815393211、uint CreateShader(enum type) : 创建空的shader object;
type: VERTEX_SHADER,
2、void ShaderSource(uint shader, sizeicount, const **string, const int *length):加载shader源码进shader object;可能多个字符串
3、void CompileShader(uint shader):编译shader object;
shader object有状态 表示编译结果
4、void DeleteShader( uint shader ):删除 shader object;
5、void ShaderBinary( sizei count, const uint *shaders,
enum binaryformat, const void *binary, sizei length ): 加载预编译过的shader 二进制串;
6、uint CreateProgram( void ):创建空的program object, programe object组织多个shader object,成为executable;
7、void AttachShader( uint program, uint shader ):关联shader object和program object;
8、void DetachShader( uint program, uint shader ):解除关联;
9、void LinkProgram( uint program ):program object准备执行,其关联的shader object必须编译正确且符合限制条件;
10、void UseProgram( uint program ):执行program object;
11、void ProgramParameteri( uint program, enum pname,
int value ): 设置program object的参数;
12、void DeleteProgram( uint program ):删除program object;
13、shader 变量的qualifier:
14、shader变量的精度:
15、shader内置变量:
16、shader内置常量:
17、shader内置函数:
Unity3D -- shader光照常用函数和变量
上一篇记录了shader常用函数和变量,这篇记录一些光照计算时常用函数和变量
1、内置的光照变量
_LightColor0 float4 //该Pass处理的逐像素光源的颜色
_WorldSpaceLightPos0 float4 //_WorldSpaceLightPos0.xyz是该Pass处理的逐像素光源的位置。如果该光源是平行光,那么_WorldSpaceLightPos0.w是0,其他光源类型是1
_LightMatrix0 float4x4 //从世界空间到光源空间的变换矩阵,可以用于采样cookie和光强衰减纹理
unity_4LightPosX0,unity_4LightPosY0,unity_4LightPosZ0 float4 //仅用于Base Pass,前4个非重要的点光源在世界空间中的位置
unity_4LightAtten() float4 //仅用于Base Pass, 存储了前4个非重要的点光源的衰减因子
unity_LightColor half4[4] //仅用于Base Pass,存储了前4个非重要的点光源的颜色
2 、LightMode标签支持的渲染路径设置选项
Always //不管使用哪种渲染路径,该Pass总会被渲染,但是不会计算任何光照
ForwardBase //用于前向渲染,该Pass会计算环境光,最重要的的平行光,逐顶点/SH光源和Lightmaps
ForwardAdd //用于前向渲染,该Pass会计算额外的逐像素光源,每个Pass对应一个光源
Deferred //用于延迟渲染,该Pass会渲染G缓冲(G_buffer)
ShadowCaster //把物体的深度信息渲染到阴影映射纹理或一张深度纹理中
PrepassBase //用于遗留延迟渲染,该Pass会渲染法线和高光反射的指数部分
PrepassFinal //用于遗留延迟渲染,该Pass通过合并纹理、光照、自发光来渲染得到的最后的颜色
Vertex,VertexLMRGBM和VertexLM //用于遗留的顶点照明渲染
3、顶点照明渲染路径中可以使用的内置变量
unity_LightColor half4[8] //光源颜色
unity_LightPosition float4[8] //xyz分量是视角空间中的光源位置,如果光源是平行光,那么z分量值为0,其他光源类型z分量值为1
unity_LightAtten half4[8] //光源衰减因子,如果光源是聚光灯,x分量是cos(spotAngle/2),y分量是1/cos(spotAngle/4);如果是其他光源,x分量是-1,y分量是1,z分量是衰减的平分,w分量是光源范围开根号的结果
unity_SpotDirection float4[8] //如果光源是聚光灯的话,值为视角空间的聚光灯的位置,如果是其他类型的光源,值为(0,0,1,0)
4、顶点照明渲染路径中可以使用的内置函数
float3 ShadeVertexLights(float4 vertex,float normal) //输入模型空间中的顶点位置和法线,计算四个顶点光源的光照以及环境光
float3 ShadeVertexLightsFull(float4 vertex, float3 normal, int lightCount, bool spotLig
以上是关于shader的内置矩阵和一些变量的主要内容,如果未能解决你的问题,请参考以下文章
WebGL-Shader入门(5.着色器语言GLSL ES 内置变量和内置函数)
[Unity Shader] 坐标变换与法线变换及Unity5新增加的内置函数