您当前的位置: 首页 >  unity

Jave.Lin

暂无认证

  • 2浏览

    0关注

    704博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

Jave.Lin 发布时间:2019-06-22 17:10:05 ,浏览量:2

目录: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)给定对象空间下的坐标和法线,然后再从逐顶点的光源信息和环境光信息计算出光照值。
关注
打赏
1664331872
查看更多评论
立即登录/注册

微信扫码登录

0.0388s