UnityCG.cginc 中的通用 helper 函数: UnityCG.cginc 中的前向渲染 helper 函数: 仅当使用前向渲染(ForwardBase 或 ForwardAdd 通道类型)时,这些函数才有用。 UnityCG.cginc 中的屏幕空间 helper 函数: 以下helper 函数可计算用于采样屏幕空间纹理的坐标。它们返回 float4,其中用于纹理采样的最终坐标可以通过透视除...
Unity shader 使用最多的内置文件就是UnityCG.cginc,其中声明了很多辅助函数和数据结构体。 1.顶点着色器输入结构体 找到UnityCG.cginc,查找包含的内置结构体: //appdata基础结构体 //顶点坐标,顶点法线和UV0坐标 struct appdata_base { float4 vertex : POSITION; float3 normal : NORMAL; float4texcoord: TEX...
structappdata_base{float4vertex:POSITION;float3normal:NORMAL;float4texcoord:TEXCOORD0;UNITY_VERTEX_INPUT_INSTANCE_ID};structappdata_tan{float4vertex:POSITION;float4tangent:TANGENT;float3normal:NORMAL;float4texcoord:TEXCOORD0;UNITY_VERTEX_INPUT_INSTANCE_ID};structappdata_full{float4vertex:POSITION;float4...
2、GammaToLinearSpaceExact(float value) 把一个颜色值精确地从伽马颜色空间变换到线性空间。 3、GammaToLinearSpace(half3 sRGB) 把颜色值近似地从伽马颜色空间变换到线性空间。 4、LinearToGammaSpaceExact(float value) 把一个颜色值精确地从线性空间变换到伽马颜色空间。 5、LinearToGammaSpace(half3 linRGB) ...
unity封装了很多方法可以直接调用,省去了很多复杂的矩阵计算,其中最基本的文件是UnityCG.cginc。在pass中通过#include "UnityCG.cginc"添加引用,然后就可以引入里面定义的代码块、方法以及变量。相关文件放置在安装目录下相关位置,如Unity\Editor\Data\CGIncludes。
同理我们可以声明一个顶点着色器的输入结构体,包含以上所有信息,然后将这个结构体作为形参传递给顶点着色器的入口函数。 Unity内建的预定义输入结构体: 只要引用UnityCg.cginc头文件(目录Unity > Editor > Data > CGIncludes下)就可以使用预先设定好的结构体直接使用,他们分别有appdata_base appdata_tan和appdata_...
#include "UnityCG.cginc" struct vertexOutput { float4 pos : SV_POSITION; //由顶点着色器输出mesh信息中的纹理坐标,这个坐标是以对象为坐标系的 float4 posInObjectCoords : TEXCOORD0; }; vertexOutput vert(appdata_full input) { vertexOutput output; ...
然后,把文件后缀改为.cginc。当然,操作系统一般会给你一些警示信息,说这个文件将变得不可用,但相信我,我们这个是可用的。 将新的.cginc文件导入到我们的Unity项目中(注意,在我的项目里,它的位置在一个新的名为CgIncludes的文件夹下)。等编译完成后,我们可以看到Unity把该文件当成一个CgInclude文件编译好了。像下...
并且,无灯光着色器中使用了一些UnityCG.cginc头文件中内置的宏,比如说TRANSFORM_TEX、UNITY_TRANSFER_FOG、UNITY_APPLY_FOG。接下来分别把这三个宏简单解释一下。 2.2.1 TRANSFORM_TEX宏 TRANSFORM_TEX宏的定义为: #define TRANSFORM_TEX(tex,name) (tex.xy *name##_ST.xy + name##_ST.zw) ...
#include "UnityCG.cginc" struct v2f { float4 pos:POSITION; float4 color:COLOR; }; sampler2D _MainTex; float _Outline; fixed4 _Color; v2f vert(appdata_base v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); float3 norm = mul((float3x3)UNITY_MATRIX_IT_MV, v.normal); ...