摘要: Unity包含了好几个文件,这些文件可以在你自己的shader 程序中使用,提供预定义的变量和功能函数。这个操作通过标准的指令 :#include来引入。 着色器包含文件在unity中以.cginc扩展名结尾,内置的为: HLSLSupport.cginc - (自动包含)用于跨平台着色程序编译的帮 阅读全文
posted @ 2018-02-21 16:50 gameDesigner 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 对于 CG/HLSL 顶点程序,模型网格顶点数据被作为输入传递给顶点着色器函数。每个输入都需要一个语义来详细指定。比如,POSITION输入是 顶点的位置,NORMAL是顶点的法线。 通常,顶点数据输入被声明成一个结构体,而不是一个个的罗列他们。几个常用的顶点结构体都被丁艳在UnityCG.cgin 阅读全文
posted @ 2018-02-21 16:26 gameDesigner 阅读(4028) 评论(0) 推荐(0) 编辑
摘要: 着色器在Properties代码块中声明 材质球的各种特性。如果你想要在着色器程序中使用这些特性,你需要在CG/HLSL中声明一个变量,这个变量需要与你要使用的特性拥有同样的名字和对的上号的类型。比如以下这些类型: 在CG/HLSL代码中,要使用他们,就需要声明如下变量: 属性的值如何提供给着色器 阅读全文
posted @ 2018-02-21 15:17 gameDesigner 阅读(566) 评论(0) 推荐(0) 编辑
摘要: 在书写HLSL shader程序时,输入和输出变量需要拥有他们 含义来表明语义。这在HLSL shader中是一个标准的做法。 Vertex shader 输入语义 主顶点着色器函数(被指令 #pragma vertex 标记)需要在所有的输入参数中加上语义。这些对应于单个网格数据元素,比如顶点位置 阅读全文
posted @ 2018-02-21 14:26 gameDesigner 阅读(2223) 评论(0) 推荐(1) 编辑
摘要: 在编写顶点着色器或者片段着色器时,需要用到CG或者HLSL语言,这里翻译unity官网的信息。 编译指令 #pragma vertex name - 编译函数名成vertex shader #pragma fragment name - 编译函数名成fragment shader #pragma g 阅读全文
posted @ 2018-02-21 10:22 gameDesigner 阅读(636) 评论(0) 推荐(0) 编辑
摘要: Unity新的shader叫做 基于物理渲染的shader,先介绍下新的shader具有的特性: 在表面上的各个点的光线渲染,都经过计算,以确保与从环境中接受到的光相等。粗糙表面受来自更为宽广区域的光线影响。 更平滑些的表面表现出更强、更小的高光区域。点A反射来源为摄像机正面的光线。点B接受来自天空 阅读全文
posted @ 2018-02-01 21:49 gameDesigner 阅读(207) 评论(0) 推荐(0) 编辑
摘要: GPU的绘图的几个阶段 1.裁剪阶段: 裁剪掉摄像机平截头体外的模型,由GPU自动完成。 我们把平截头体分别定义为 上、下、左、右、近、远,GPU裁剪的时候,就是要依次裁剪模型中,与这几个平面相反的平面。 2.光栅化阶段: 2.1背面消隐 2.2顶点插值 3.像素阶段: 顶点插值会被当做像素着色器的 阅读全文
posted @ 2018-01-29 23:01 gameDesigner 阅读(520) 评论(0) 推荐(0) 编辑
摘要: 什么是投影? 我们在搭建3D游戏场景的时候,所有的物体都是3D的,然而我们通过屏幕观察的时候, 屏幕却是2D的平面,想要在2D屏幕表达3D的物体,那么就需要将3D的物体投影到2D的屏幕。 平截头体 我们在将3D世界的物体投影到2D屏幕的时候,不可能将所有的东西都投影过去,我们需要定义 一个范围,只有 阅读全文
posted @ 2018-01-29 22:44 gameDesigner 阅读(525) 评论(3) 推荐(0) 编辑
摘要: 什么是索引呢?为什么需要索引呢? 在“顶点与顶点缓冲区”中,我们介绍了关于顶点的概念。GPU在拿到了顶点数据以后,需要将这些顶点绘制成为三角形, 但是,GPU却不知道要将这些顶点怎么样组合成为一个个的三角形,因为组合的可能有多种多样,并不唯一,因此我们 需要使用索引数据来告诉GPU,如何将这些顶点绘 阅读全文
posted @ 2018-01-29 21:45 gameDesigner 阅读(504) 评论(0) 推荐(0) 编辑
摘要: 在3D编程中,顶点不单单只是点的空间位置坐标,一般还包含多种属性,一般会对其进行封装: 顶点缓冲区,其实就是我们将一系列的顶点数据存放到一个容器中,这个容器就叫做顶点缓冲区。 我们要使用GPU处理顶点数据,就需要按照下面的步骤进行操作: 1.创建顶点缓冲区 2.上传顶点数据 阅读全文
posted @ 2018-01-28 23:17 gameDesigner 阅读(288) 评论(0) 推荐(0) 编辑