摘要: 无论编写 表面着色器还是其他常规着色器程序时,HLSL资源可以别编译为不同的“着色器模型”。更高的着色器编译器目标允许使用更多现代GPU功能,但是可能造成在老的GPU或者平台上不能正常工作。 编译器目标通过指令 #pragma target 来指定,比如: 默认的编译器目标 默认情况下,unity将 阅读全文
posted @ 2018-02-22 16:25 gameDesigner 阅读(1619) 评论(0) 推荐(0) 编辑
摘要: 在unity中,着色器编程使用了一列列的HLSL语言变种(也叫作Cg,但是大部分实际上两者都是一样的)。 目前,为了在不同平台下保持最好的跨平台性, 取样贴图时,最好使用DX9风格 的HLSL。 着色器编译器 在内部,不同的着色器编译器用来编译shader: Windows & Microsoft 阅读全文
posted @ 2018-02-22 15:37 gameDesigner 阅读(1212) 评论(0) 推荐(0) 编辑
摘要: 除了使用Cg/HSL 着色器程序以外, OpenGL 着色器语言(GLSL)着色器可以直接书写shader。 然而,使用原生的GLSL只推荐作为测试使用,或者你清晰的知道你的目标平台是 Mac OS X,OpenGL ES移动设备,或者是Linux。在所有常见情况下,Unity会将 Cg/HLSL语 阅读全文
posted @ 2018-02-22 15:23 gameDesigner 阅读(2003) 评论(0) 推荐(0) 编辑
摘要: 通常,保留大部分的着色代码是很方便的,但也允许产生稍微不同的着色“变体”。这通常被称为“mega shaders”或“uber shaders”,并通过为每个案例编译不同的预处理程序指令来编译shader代码。 在Unity中,可以使用指令 #pragma multi_compile 或者 #pra 阅读全文
posted @ 2018-02-22 14:45 gameDesigner 阅读(1508) 评论(0) 推荐(0) 编辑
摘要: unity有一系列的内置功能函数,这些函数非常实用,能够帮助用户更加简单的编写shader。 UnityCG.cginc中的函数 顶点变换函数 将一个点从物体空间转化到摄像机裁剪空间的坐标。这个函数等价于 mul(UNITY_MATRIX_MVP,float(pos,1.0)),应该应用在它的位置上 阅读全文
posted @ 2018-02-22 13:36 gameDesigner 阅读(729) 评论(0) 推荐(0) 编辑
摘要: 目标平台 宏 SHADER_API_MOBILE 定义为所有的移动平台。 此外, SHADER_TARGET_GLSL 定义为所有使用GLSL语言的平台。(对使用OpenGL/GLES 始终为真) 着色器目标模型 SHADER_TARGET 定义了一个数值来匹配着色器目标编译模型(也就是说,与指令 阅读全文
posted @ 2018-02-22 12:57 gameDesigner 阅读(2294) 评论(0) 推荐(0) 编辑