内置的材质包含文件 .cginc
Unity中包含几个文件,可以用于你的Shader程序,里面包含了预定义的变量和辅助函数。使用它需要用 #include指令
CGPROGRAM
// ...
#include "UnityCG.cginc"
// ...
ENDCG
Shader包含的文件在Unity中后缀为.cginc,内置的文件为:
- HLSLSupport.cginc - (自动包含) 为跨平台的着色器编译宏和定义提供帮助。
- UnityShaderVariables.cginc - (自动包含)常用的全局变量。
- UnityCG.cginc - 常用的辅助函数
- AutoLight.cginc - 照明&阴影功能,如表面着色器在内部使用这个文件
- Light.cginc - 标准表面着色器照明模式,当你写surface shaders时自动包含。
- TerrainEngine.cginc - 对地形和植被着色器的辅助函数
这些文件在Unity文件夹({unity install path}/Data/CGIncludes/UnityCG.cginc on Windows, /Applications/Unity/Unity.app/Contents/CGIncludes/UnityCG.cginc on Mac),如果你想看看究竟是什么样的辅助代码。
HLSLSupport.cginc
在编译Shader时自动包含。它声明了各种预处理器宏在多平台材质发展辅助。
UnityShaderVariables.cginc
在编译Shader时自动包含。它宣称各种内置的着色器中常用的全局变量。
UnityCG.cginc
这个文件经常在Unity Shader中包含,带来许多辅助方法。
Data结构在UnityCG.cginc
- appdata_base:顶点着色器输入与位置,法线,纹理坐标
- appdata_tan:顶点着色器输入与位置,法线,切线,一个纹理坐标
- appdata_full:顶点着色器输入与位置,法线,切线,顶点颜色和两个纹理坐标
- appdata_img:顶点着色器输入与坐标和一个纹理坐标
泛型的方法在UnityCG.cginc
- float3 WorldSpaceViewDir(float4 v) - 返回世界空间向量(没有进行归一化的)从给定对象空间顶点位置对着镜头
- float3 ObjSpaceViewDir(float4 v) - 返回对象空间向量(没有进行归一化的)从给定对象空间顶点位置对着镜头
- float2 Parallaxoffset(half h, half height, half3 viewDir) - 为正常视差映射计算UV偏移
- fixed Luminance(fixed3 c) - 将颜色转换为亮度(灰度)
- fixed3 DecodeLightmap(fixed4 color) - 从Unity的光照映射中解析颜色(RGBM或dLDR取决于平台)
- float4 EncodeFloatRGBA(float4 v) - 编码[0 . . 1)浮动范围为RGBA颜色,用于存储在低精度渲染目标
- float DecodeFloatRGBA(float4 enc) - 解码RGBA颜色到一个浮点数
- float2 EncodeFloatRG(float v) 和 float DecodeFloatRG(float2 enc)使用两个颜色通道
- float2 EncodeViewNormalStereo(float3 n) - 将视图空间发现编码为0~1范围内
- float3 DecodeViewNormalStereo(float4 enc4) - 从enc.xy中解码为视图空间法线
正向渲染方法在UnityCG.cginc
这些方法只有在使用正向渲染(forward rendering)时才有用(ForwardBase或ForwardAdd通过类型)。
- float3 WorldSpaceLightDir (float4 v) - 计算世界空间向量(没有归一化的)的光,给定对象空间顶点位置。
- float3 ObjSpaceLightDir(float4 v) - 计算物体空间向量(没有归一化的)的光,给定对象空间顶点位置。
- float3 Shade4PointLights(....) - 计算照明从四个点光源,光数据紧密到向量,正向渲染使用这个去计算per-vertex(每个顶点)的灯光
顶点照亮方法在UnityCG.cginc
这些方法只有在使用pre-vertex lit
- float3 ShadeVertexLights(float4 vertex, float3 normal) - 计算照明从四个per-vertex 光照和环境从给予的物体空间坐标和法线
内置的材质包含文件 .cginc的更多相关文章
- 使用input:file控件在微信内置浏览器上传文件返回未显示选择的文件
使用input:file控件在微信内置浏览器上传文件返回未显示选择的文件 原来的写法: <input type="file" accept="image/x-png ...
- python内置函数,lambda表达式,文件读写
Lambda表达式: lambda是个匿名函数,自动加return返回 a={ 6:2,8:0, 1:4,-5:6,99:11,4:22} print(sorted(a.items()))#按key排 ...
- python基础-4 函数参数引用、lambda 匿名函数、内置函数、处理文件
上节课总结 1.三元运算 name=“name1”if 条件 else “name2” 2.深浅拷贝 数字.字符串 深浅,都一样 2.其他 浅拷贝:只拷贝第一层 深拷贝:不拷贝最后一层 3.set集合 ...
- 【转】用 PHP 内置函数 file_put_contents 写入文件
PHP 内置函数 file_put_contents 用于写入文件. file_put_contents 函数最简单的写法,可以只用两个参数,一个是文件路径,一个是要写入的内容,语法如下: file_ ...
- Android 操作手机内置存储卡中的文件
场景:需要读取指定文件的内容,此文件是手动存储到手机内置存储卡中的,且手机上不存在SD卡. 对于android通过activity提供的openFileOutput和openFileInput可以直接 ...
- python中的内置函数,递归,递归文件显示(二),二分法
1.部分内置函数 repr()显示出字符串的官方表示形式,返回一个对象的string形式 # repr 就是原封不动的输出, 引号和转义字符都不起作用 print(repr('大家好,\n \t我叫周 ...
- PHP 内置函数fgets读取文件
php fgets()函数从文件指针中读取一行 语法: fgets(file,length) 参数 描述 file 必需.规定尧要读取的文件 length 可选 .规定尧都区的字节数.默认是102字 ...
- python day5 lambda,内置函数,文件操作,冒泡排序以及装饰器
目录 python day 5 1. 匿名函数lambda 2. python的内置函数 3. python文件操作 4. 递归函数 5. 冒泡排序 6. 装饰器 python day 5 2019/ ...
- Python文件操作函数os.open、io.open、内置函数open之间的关系
Python提供了多种文件操作方式,这里简单介绍os.open.io.open.内置函数open之间的关系: 一.内置函数open和io.open实际上是同一个函数,后者是前者的别名: 二.os.op ...
随机推荐
- C语言入门(6)——C语言常用数学函数
在编码过程中会经遇到数学运算,幸运的是C语言提供了非常丰富的数学函数库. 在数学中使用函数有时候书写可以省略括号,而C语言要求一定要加上括号,例如sin(pi/2)这种形式.在C语言的术语中,pi/2 ...
- linux重新编译内核
一.linux内核 1.查看linux内核版本 uname -r 2.下载对应的linux内核 https://www.kernel.org/pub/linux/kernel/ 将内核文件夹解压到/u ...
- Android中进行流量统计
// ---------------------流量统计-------------------------------- try { PackageManager pm = getPackageMan ...
- Spring MVC 简单介绍
Spring MVC 是典型的mvc架构,适合web开发. controler 输入输出的控制器,也是对外view提供数据的接口,调用service层. model 数据,由bean组成(相应表),关 ...
- opacity在IE6~8下无效果,解决的办法
opacity在IE6~8下无效果,解决的办法 问题出现时rgba()在ie6下不出效果,最后查到是opacity的问题. opacity是css3时出现的,目前主流浏览器都支持.but老IE是个麻烦 ...
- 日期选择器——java
转载:http://zgdeng.iteye.com/blog/1405650 代码如下: import java.awt.BasicStroke; import java.awt.BorderLay ...
- Samba在CentOS下的图形化界面的安装
第一步:构建yum仓库(在此用的是北交大的yum仓库) 打开目录/etc/yum.repos.d下的CentOS-Base.repo文件,此处是我自己建的yum仓库,修改里面的链接地址为北交大的镜像的 ...
- 【攻防实战】SQL注入演练!
这篇文章目的是让初学者利用SQL注入技术来解决他们面临的问题, 成功的使用它们,并在这种攻击中保护自己. 1.0 介绍 当一台机器只打开了80端口, 你最依赖的漏洞扫描器也不能返回任何有用的内容, 并 ...
- Object-c的一些基本概念
自学了一个多月的IOS,对Object-C也有了初步的认识,也有很多观点不知道是否正确,所以整理了一下,和小伙伴们分享分享 1.OC中使用的消息机制代替调用方法 区别:使用消息结构的语言,其运行时缩引 ...
- JavaSE复习日记 : java包机制
这里是第一个文件,命名为JavaSE_01.java,我在这个文件里面声明了一个m1()方法,通过包机制,我将在另外一个文件夹里访问这个文件里的东西,确切的说是访问这个文件生成的一个class文件; ...