02 2018 档案
摘要:耦合的材质和取样器 大多数情况下,在shader中采样贴图时,贴图采样声明应该来自贴图设置-本质上,贴图和采样器是被绑在一起的。在用DX9风格 shader 语法时,这是一个默认行为: 使用 sampler2D,sampler3D,samplerCUBE HLSL关键字同时声明贴图和取样器。 大多数
阅读全文
摘要:在unity中,标准的shader语言是HLSL,一般的HLSL数据类型都是支持的。然而,Unity有一些额外的HLSL类型,对移动平台有更好的支持。 基础数据类型 在shader中,主要的计算数据类型是 浮点数据(在普通的变成语言中,比如C#中等于float)。几种浮点类型的变种是: float、
阅读全文
摘要:无论编写 表面着色器还是其他常规着色器程序时,HLSL资源可以别编译为不同的“着色器模型”。更高的着色器编译器目标允许使用更多现代GPU功能,但是可能造成在老的GPU或者平台上不能正常工作。 编译器目标通过指令 #pragma target 来指定,比如: 默认的编译器目标 默认情况下,unity将
阅读全文
摘要:在unity中,着色器编程使用了一列列的HLSL语言变种(也叫作Cg,但是大部分实际上两者都是一样的)。 目前,为了在不同平台下保持最好的跨平台性, 取样贴图时,最好使用DX9风格 的HLSL。 着色器编译器 在内部,不同的着色器编译器用来编译shader: Windows & Microsoft
阅读全文
摘要:除了使用Cg/HSL 着色器程序以外, OpenGL 着色器语言(GLSL)着色器可以直接书写shader。 然而,使用原生的GLSL只推荐作为测试使用,或者你清晰的知道你的目标平台是 Mac OS X,OpenGL ES移动设备,或者是Linux。在所有常见情况下,Unity会将 Cg/HLSL语
阅读全文
摘要:通常,保留大部分的着色代码是很方便的,但也允许产生稍微不同的着色“变体”。这通常被称为“mega shaders”或“uber shaders”,并通过为每个案例编译不同的预处理程序指令来编译shader代码。 在Unity中,可以使用指令 #pragma multi_compile 或者 #pra
阅读全文
摘要:unity有一系列的内置功能函数,这些函数非常实用,能够帮助用户更加简单的编写shader。 UnityCG.cginc中的函数 顶点变换函数 将一个点从物体空间转化到摄像机裁剪空间的坐标。这个函数等价于 mul(UNITY_MATRIX_MVP,float(pos,1.0)),应该应用在它的位置上
阅读全文
摘要:目标平台 宏 SHADER_API_MOBILE 定义为所有的移动平台。 此外, SHADER_TARGET_GLSL 定义为所有使用GLSL语言的平台。(对使用OpenGL/GLES 始终为真) 着色器目标模型 SHADER_TARGET 定义了一个数值来匹配着色器目标编译模型(也就是说,与指令
阅读全文
摘要:Unity包含了好几个文件,这些文件可以在你自己的shader 程序中使用,提供预定义的变量和功能函数。这个操作通过标准的指令 :#include来引入。 着色器包含文件在unity中以.cginc扩展名结尾,内置的为: HLSLSupport.cginc - (自动包含)用于跨平台着色程序编译的帮
阅读全文
摘要:对于 CG/HLSL 顶点程序,模型网格顶点数据被作为输入传递给顶点着色器函数。每个输入都需要一个语义来详细指定。比如,POSITION输入是 顶点的位置,NORMAL是顶点的法线。 通常,顶点数据输入被声明成一个结构体,而不是一个个的罗列他们。几个常用的顶点结构体都被丁艳在UnityCG.cgin
阅读全文
摘要:着色器在Properties代码块中声明 材质球的各种特性。如果你想要在着色器程序中使用这些特性,你需要在CG/HLSL中声明一个变量,这个变量需要与你要使用的特性拥有同样的名字和对的上号的类型。比如以下这些类型: 在CG/HLSL代码中,要使用他们,就需要声明如下变量: 属性的值如何提供给着色器
阅读全文
摘要:在书写HLSL shader程序时,输入和输出变量需要拥有他们 含义来表明语义。这在HLSL shader中是一个标准的做法。 Vertex shader 输入语义 主顶点着色器函数(被指令 #pragma vertex 标记)需要在所有的输入参数中加上语义。这些对应于单个网格数据元素,比如顶点位置
阅读全文
摘要:在编写顶点着色器或者片段着色器时,需要用到CG或者HLSL语言,这里翻译unity官网的信息。 编译指令 #pragma vertex name - 编译函数名成vertex shader #pragma fragment name - 编译函数名成fragment shader #pragma g
阅读全文
摘要:Unity新的shader叫做 基于物理渲染的shader,先介绍下新的shader具有的特性: 在表面上的各个点的光线渲染,都经过计算,以确保与从环境中接受到的光相等。粗糙表面受来自更为宽广区域的光线影响。 更平滑些的表面表现出更强、更小的高光区域。点A反射来源为摄像机正面的光线。点B接受来自天空
阅读全文

浙公网安备 33010602011771号