Unity Shader - Built-in shader helper functions 内置shader辅助函数

目录:Unity Shader - 知识点目录(先占位,后续持续更新)
原文:Built-in shader helper functions
版本:2019.1

Built-in shader helper functions

(这里的说明做个总览,详细了解最好还是看Unity对应的.cginc文件)

内置shader辅助函数

Unity有许多的内置工具函数,目的让编写shader时更简单方便。

Functions declared in UnityCG.cginc

定义在UnityCG.cginc的函数

查看 Built-in shader include files 可总览Unity提供的shader头文件。

Vertex transformation functions in UnityCG.cginc

在UnityCG.cginc中的顶点转换函数

函数描述
float4 UnityObjectToClipPos(float3 pos)将一个坐标从对象空间转换到相机裁剪空间的齐次坐标。等价于 mul(UNITY_MATRIX_MVP, float4(pos, 1.0)),应该使用这个宏来代替这种写法。
float3 UnityObjectToViewPos(float4 pos)将一个坐标从对象空间转换到视角空间下的坐标。等价于 mul(UNITY_MATRIX_MV, float4(pos, 1.0)).xyz,应该使用这个宏来代替这种写法。

Generic helper functions in UnityCG.cgin

在UnityCG.cginc的其他辅助函数

函数描述
float3 WorldSpaceViewDir(float4 v)给定对象空间顶点坐标返回的世界空间下朝向相机的方向(没有归一化)。
float4 ObjSpaceViewDir(float4 v)给定对象空间顶点坐标返回的对象空间下朝向相机的方向(没有归一化)。
float2 ParallaxOffset(half h, half height, half3 viewDir)计算视差凹凸贴图的UV偏移量。
fixed Luminance(fixed3 c)将颜色转换为亮度图(灰度图)。
fixed3 DecodeLightmap(fixed4 color)对Unity lightmap解码返回颜色(RGBM或是dLDR的压缩或编码格式,依赖不同平台而定。)
float4 EncodeFloatRGBA(float v)用于使用低精度存储渲染目标颜色的,将0~1的float编码到RGBA颜色(每个通道8位)。
float DecodeFloatRGBA(float4 enc)将RGBA颜色解码成一个float数值。
float2 EncodeFloatRG(float v)将一个0~1范围的float编码到一个float2。
float DecodeFloatRG(float2 enc)将之前编码的RG解码成一个float。
float2 EncodeViewNormalStereo(float3 n)将视角空间下的法线编码成两个0~1范围的float数值。
float3 DecodeViewNormalStereo(float4 enc)将一个float4的前两个分量.xy解码成一个float3的视角空间下的法线。

Forward rendering helper functions in UnityCG.cginc

在UnityCG.cginc中的正向渲染辅助函数

这些函数仅在使用正弦渲染(ForwardBase或是ForwardAdd类型的pass)中有用。

函数描述
float3 WorldSpaceLightDir(float4 v)给定对象空间下的顶点坐标,计算转换为世界空间下朝向光源方向的向量(无归一化)。
float3 ObjSpaceLightDir(float4 v)给定对象矿建下的顶点坐标,计算出对象空间下朝向光源方向的向量(无归一化)。
float3 Shade4PointLights(…)通过4个点光源的数据紧紧打包在向量中,来计算出光亮度。正向渲染使用这个来计算逐顶点光照。

Screen-space helper functions in UnityCG.cginc

在UnityCG.cginc中的屏幕空间下的辅助函数

下面的函数用于辅助计算用来采样屏幕空间纹理的坐标。它们返回 float4坐标,该坐标是最终用于采样纹理的坐标,可以通过透视除法得到(如:xy/w) 。

这些函数在计算渲染纹理坐标时也会处理相对不同平台的差异(platform differences)。

函数描述
float4 ComputeScreenPos(float4 clipPos)输入裁剪空间下的坐标。计算出可用于采样屏幕空间纹理的坐标。
float4 ComputeGrabScreenPos(float4 clipOs)输入裁剪空间下的坐标。计算出可用于采样 GrabPass 出来的纹理的坐标。

Vertex-lit helper functions in UnityCG.cginc

在UnityCG.cginc中的顶点光照辅助函数

这些函数仅仅在使用逐顶点光照的shader中有用("Vertex"类型的pass)。

函数描述
float3 ShadeVertexLights(float4 vertex, float3 normal)给定对象空间下的坐标和法线,然后再从逐顶点的光源信息和环境光信息计算出光照值。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值