摘要: 矩阵的几何意义: 矩阵的变换:在三维渲染中,矩阵是可视化的,结果就是变换,在游戏世界中这些变换包括:旋转,平移,缩放。那么变换是什么呢?它指的是我们把数据,点,方向矢量,颜色,通过某种方式进行转换的过程,我们常常使用的是线性变换,线性变换指的是那些可以保留矢量加 和 标量乘的变换。数学公式 f(x) 阅读全文
posted @ 2021-08-26 23:00 任葳 阅读(98) 评论(0) 推荐(0)
摘要: shader的数学基础涉及计算机图形学,而计算机图形学之所以深奥难懂在于其在虚拟世界上建立的数学模型,例如光照模型(GGX ,BRDF,Lambert,Phong)而在shader制作中,我们需要经常使用的便是向量和矩阵,也便是线性代数。首先是复习笛卡尔坐标系,二维笛卡尔坐标系包含两部分信息:1.原 阅读全文
posted @ 2021-08-23 21:38 任葳 阅读(260) 评论(0) 推荐(0)
摘要: 光是一切的基础,如果没有光,那么将没有色彩和景深,更不可能知道物体在接触下是什么材质,科学的讲,光是一种电磁波,根据爱因斯坦的理论我们 将光简化为一种能量的放射,光的传播方式有多种,我们可以认为光是光束的集合体,光有多种传播方向,线性和平行光也是最容易理解的,太阳光是常见的线性光源,尽管太阳离我们很 阅读全文
posted @ 2021-08-17 16:33 任葳 阅读(1074) 评论(0) 推荐(0)
摘要: Unity Shader 并不等同真正的Shader,Unity Shader 可以在同一个文件里同时包含需要的顶点/片元着色器代码,通过自定义指令设置开启混合,深度测试,不需要开发者自行编码传给着色器,Unity Shader 提供了直接访问的方法,对于模型自带的数据(顶点位置,纹理坐标,法线), 阅读全文
posted @ 2021-08-14 22:53 任葳 阅读(184) 评论(0) 推荐(0)
摘要: Unity Shader 的形式: Shader "MyShader" Properties{ //真正意义上的 Shader 代码会出现在这里 //表面着色器(Surface Shader)或者 //顶点/片元着色器(Vertex/Fragment Shader)或者 //固定函数着色器(Fixe 阅读全文
posted @ 2021-08-12 22:57 任葳 阅读(81) 评论(0) 推荐(0)
摘要: 在Unity中Shader需配合材质使用(Material)一个常见的流程是:1.创建一个材质;2.创建一个Unity Shader,并把它赋值给创建的材质3.把材质赋给要渲染的对象4.在材质面板中调整Unity Shader的属性,得到最终满意的效果. Shader lab :Unity专门为Sh 阅读全文
posted @ 2021-08-11 22:19 任葳 阅读(117) 评论(0) 推荐(0)
摘要: Draw Call:CPU调用图像编程接口,如OpenGl中的glDrawElements命令或DX中的DrawIndexedPrimitive命令,以命令GPU进行渲染的操作。 CPU和GPU是如何实现并行工作的? 解决方法:使用一个命令缓冲区来避免CPU等到GPU完成上一个渲染任务才能再次发送命 阅读全文
posted @ 2021-08-10 13:47 任葳 阅读(88) 评论(0) 推荐(0)
摘要: CPU和GPU之间的通信 渲染流水线的起点是CPU(应用阶段)应用阶段可分为:1.把数据加载到显存中。2.设置渲染状态。3.调用Draw Call 1.把数据加载到显存中 所有的渲染所需的数据来自硬盘,然后加载到系统内存中,之后网格和纹理等数据又被加载到显存中,显卡对于显存的访问速度更快,大多数显卡 阅读全文
posted @ 2021-08-10 13:08 任葳 阅读(72) 评论(0) 推荐(0)
摘要: shader只是渲染流水线的一个环节,真正要写shader绕不开堆渲染流水线的整个了解.首先渲染流水线是类似工场流水线的形式提高效率,使多个物体和场景的顶点,纹理,转换成屏幕图像,由CPU和GPU共同处理。《Real_Time Readering,Third Editor》将渲染流程分为三个阶段:1 阅读全文
posted @ 2021-08-10 13:07 任葳 阅读(140) 评论(0) 推荐(0)