内置着色器包含文件

Unity包含了好几个文件,这些文件可以在你自己的shader 程序中使用,提供预定义的变量和功能函数。这个操作通过标准的指令 :#include来引入。

CGPROGRAM
// ...
#include "UnityCG.cginc"
// ...
ENDCG

着色器包含文件在unity中以.cginc扩展名结尾,内置的为:

  • HLSLSupport.cginc - (自动包含)用于跨平台着色程序编译的帮助宏和定义。
  • UnityShaderVariables.cginc - (自动包含)常用的全局变量。
  • UnityCG.cginc - 常用的功能函数。
  • AutoLight.cginc - 光照& 阴影功能,比如,表面着色器内部就使用这个文件。
  • Lighting.cginc - 标准的表面着色器 光照模型;当你使用表面着色器时,自动包含。
  • TerrainEngine.cginc -  地形& 植物 的功能函数。

这些文件在Unity应用中都可以找到,路径:{unity安装路径}/Data/CGIncludes/UnityCG.cginc on Windows, /Applications/Unity/Unity.app/Contents/CGIncludes/UnityCG.cginc on Mac

HLSLSupport.cginc

这个文件在你编写 CGPROGRAM shader的时候自动包含(但是在HLSLPROGRAM时不自动包含)。它声明了各种预处理器宏来帮助多平台着色器开发。

UnityShaderVariables.cginc

这个文件在你编写 CGPROGRAM shader的时候自动包含(但是在HLSLPROGRAM时不自动包含)。它声明多种多样的内置全局变量。

UnityCG.cginc

这个文件经常被包含到UnityShader中。它声明了许多内建的功能函数和数据结构:

Data structures in UnityCG.cginc

  • 结构 appdata_base: 顶点着色器 输入 位置、法线、一个贴图坐标
  • 结构 appdata_tan: 顶点着色器 输入 位置、法线、切线、一个贴图坐标
  • 结构 appdata_full: 顶点着色器 输入 位置 法线、他切线、顶点颜色和两个贴图坐标
  • 结构 apdata_img: 顶点着色器 输入 位置和一个贴图坐标

原文地址:https://www.cnblogs.com/leiGameDesigner/p/8456861.html

时间: 2024-09-29 19:33:39

内置着色器包含文件的相关文章

Unity 内置着色器(转)

Unity包括超过40种内置的shader. 标准着色器家族 Normal Shader Family 这些着色器都是Unity基本的着色器.适用于大多数的不透明物体,如果想要物体有透明.发光效果等,它们并不适用. Vertex Lit 顶点光照着色器 Assets needed 资源需要: One Base texture, no alpha channel required  一个基本纹理,无alpha通道 Diffuse 漫反射着色器 Assets needed 资源需要: One Bas

struts2内置拦截器和自定义拦截器详解(附源码)

一.Struts2内置拦截器 Struts2中内置类许多的拦截器,它们提供了许多Struts2的核心功能和可选的高级特 性.这些内置的拦截器在struts-default.xml中配置.只有配置了拦截器,拦截器才可以正常的工作和运行.Struts 2已经为您提供丰富多样的,功能齐全的拦截器实现.大家可以至struts2的jar包内的struts-default.xml查看关于默认的拦截器与 拦截器链的配置.内置拦截器虽然在struts2中都定义了,但是并不是都起作用的.因为并不是所有拦截器都被加

Struts2内置拦截器的简要介绍

标记有(*)要着重了解: (1)alias(别名拦截器):允许参数在跨越多个请求时使用不同别名,该拦截器可将多个Action采用不同名字链接起来,然后用于处理同一信息. (2)autowiring(自动装配拦截器):主要用于当Struts2和Spring整合时,Struts2可以使用自动装配的方式来访问Spring容器中的Bean. (3)(*)chain(链拦截器):构建一个Action链,使当前Action可以访问前一个Action的请求信息,一般和<result type="chai

Struts2内置校验器的实例

一.校验器的配置风格 1.字段校验器: <field name="被校验的字段"> <field-validator type="校验器名"> <!--此处需要为不同校验器指定数量不等的校验规则--> <param name="参数名">参数值</param> .................... <!--校验失败后的提示信息,其中key指定国际化信息的key--> &l

property内置装饰器函数和@name.setter、@name.deleter

# property # 内置装饰器函数 只在面向对象中使用 # 装饰后效果:将类的方法伪装成属性 # 被property装饰后的方法,不能带除了self外的任何参数 from math import pi class Circle: def __init__(self, r): self.r = r def perimeter(self): return 2 * pi * self.r def area(self): return pi * self.r**2 * pi c1 = Circle

【转】用 PHP 内置函数 file_put_contents 写入文件

PHP 内置函数 file_put_contents 用于写入文件. file_put_contents 函数最简单的写法,可以只用两个参数,一个是文件路径,一个是要写入的内容,语法如下: file_put_contents(filepath,data) 如果文件不存在,file_put_contents 函数会自动创建文件:如果文件已存在,原有文件被重写. 你可以利用 file_put_contents 函数创建并写入一个新文件,或者重写一个原有文件. 下面是一个使用 file_put_con

python基础--定义装饰器(内置装饰器)

装饰器的定义: 装饰器本质上就是一个python函数,它可以让其它函数在不需要做任何代码改动的前提下增加额外的功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景中,比如-- >插入日志.性能测试.事务处理.缓存.权限校验等场景.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同的代码并且可以重复使用. 装饰器的作用: 就是为已经存在的函数或者对象添加额外的功能 装饰器的写法: (无参装饰器) def wrapper(func): def inn

python内置装饰器@property

前言 今天来说一下@property装饰器,这是个python内置的装饰器,主要是作用是把类中的一个方法变为类中的一个属性,并且使定义属性和修改现有属性变的更容易 我们可以看一下@property源码中给的实例和解释 1 Decorators make defining new properties or modifying existing ones easy: 2 3 4 class C(object): 5 @property 6 def x(self): 7 "I am the 'x'

Python 内置装饰器

1 def deco(func): 2 def _deco(): 3 print("Before") 4 func() 5 print("End") 6 #return func 这里不需要返回 7 return _deco#这里不是_deco() 8 9 @deco 10 def myfunc(): 11 print("Clled") 12 13 myfunc() 带参数的 def deco(func): def _deco(a,b): pri