在unity中,标准的shader语言是HLSL,一般的HLSL数据类型都是支持的。然而,Unity有一些额外的HLSL类型,对移动平台有更好的支持。 基础数据类型 在shader中,主要的计算数据类型是 浮点数据(在普通的变成语言中,比如C#中等于float)。几种浮点类型的变种是: float、 ...
分类:
其他好文 时间:
2018-02-23 19:05:58
阅读次数:
231
无论编写 表面着色器还是其他常规着色器程序时,HLSL资源可以别编译为不同的“着色器模型”。更高的着色器编译器目标允许使用更多现代GPU功能,但是可能造成在老的GPU或者平台上不能正常工作。 编译器目标通过指令 #pragma target 来指定,比如: 默认的编译器目标 默认情况下,unity将 ...
分类:
其他好文 时间:
2018-02-22 19:41:16
阅读次数:
1900
对于 CG/HLSL 顶点程序,模型网格顶点数据被作为输入传递给顶点着色器函数。每个输入都需要一个语义来详细指定。比如,POSITION输入是 顶点的位置,NORMAL是顶点的法线。 通常,顶点数据输入被声明成一个结构体,而不是一个个的罗列他们。几个常用的顶点结构体都被丁艳在UnityCG.cgin ...
分类:
其他好文 时间:
2018-02-21 17:07:28
阅读次数:
264
着色器在Properties代码块中声明 材质球的各种特性。如果你想要在着色器程序中使用这些特性,你需要在CG/HLSL中声明一个变量,这个变量需要与你要使用的特性拥有同样的名字和对的上号的类型。比如以下这些类型: 在CG/HLSL代码中,要使用他们,就需要声明如下变量: 属性的值如何提供给着色器 ...
分类:
其他好文 时间:
2018-02-21 15:48:35
阅读次数:
126
在书写HLSL shader程序时,输入和输出变量需要拥有他们 含义来表明语义。这在HLSL shader中是一个标准的做法。 Vertex shader 输入语义 主顶点着色器函数(被指令 #pragma vertex 标记)需要在所有的输入参数中加上语义。这些对应于单个网格数据元素,比如顶点位置 ...
分类:
其他好文 时间:
2018-02-21 15:01:42
阅读次数:
307
在编写顶点着色器或者片段着色器时,需要用到CG或者HLSL语言,这里翻译unity官网的信息。 编译指令 #pragma vertex name - 编译函数名成vertex shader #pragma fragment name - 编译函数名成fragment shader #pragma g ...
分类:
其他好文 时间:
2018-02-21 11:40:19
阅读次数:
268
HLSL 交叉编译器 这个库将 高级着色语言 (HLSL) 着色器源代码编译成高级中间表示法,执行独立于设备的优化,并生成 OpenGL 着色语言 (GLSL) 兼容源代码。这个库在很大程度上基于 Mesa 的 GLSL 编译器。前端已进行大量重新编写,以解析 HLSL 并根据 HLSL 抽象语法树 ...
分类:
其他好文 时间:
2017-12-25 19:39:07
阅读次数:
221
ShaderLab 是Unity3d自己封装的一个调用CG/HLSL/GLSL的接口。 Shader相关文件(扩展名): shader - 着色器的主要文件 cg/cginc - 着色器的公用文件,可以在cg/shader/cginc文件中被"include"(包含),一般用来写全局方法和全局变量, ...
分类:
编程语言 时间:
2017-10-28 18:54:41
阅读次数:
209
Intrinsic Functions (DirectX HLSL) The following table lists the intrinsic functions available in HLSL. Each function has a brief description, and a l ...
分类:
编程语言 时间:
2017-09-26 17:49:27
阅读次数:
339
本系列的博文是笔者读《Unity Shader入门精要》的读书笔记,这本书的章节框架是: 第一章:着手准备。 第二章:GPU流水线。 第三章:Shader基本语法。 第四章:Shader数学基础。 第五章:利用简单的顶点/片元着色器来实现辅助技巧。 第六章:基本光照模型。 第七章:法线纹理、遮罩纹理 ...
分类:
编程语言 时间:
2017-08-01 15:39:53
阅读次数:
246