摘要:1、至多有且仅有一个唯一的实例,不一定就一定要将构造函数的访问权限定为private,我们可以通过各种各样的方法来实现它的构造函数只能成功地执行一次。但是,将构造函数定为private直观省事。 2、既然我们将构造函数定为private,外部是无法构建它的实例。因此,我们就需要一个不需要它的实例也能 阅读全文
posted @ 2015-05-07 00:11 及拉 阅读 (346) 评论 (0) 编辑
摘要:1、物理渲染中重要的一项高光反射因子,菲涅尔效果 1)Schlick菲涅尔近似等式,F0是反射系数,用于控制菲涅尔反射强度,v是视角方向,n代表表面法线 2)Empricial菲涅尔近似等式,bias、scale、power等都是控制项 2、现在的GPU允许间其渲染结果输出到中间缓冲--渲染目标纹理 阅读全文
posted @ 2020-04-03 23:05 及拉 阅读 (4) 评论 (0) 编辑
摘要:1、Unity使用的是Shadow Map(阴影贴图),将视点设置在光源处后向四周发射光线生成相对于光源的深度贴图,渲染物体时对相对于光源的深度进行比较判断出是否处于阴影之中。如果只是为了得到阴影贴图正常地渲染一遍场景有点浪费,所以Unity提供了LightMode为ShadowCaster的模式来 阅读全文
posted @ 2020-04-02 18:38 及拉 阅读 (2) 评论 (0) 编辑
摘要:1、渲染路径,就是Tags中指定的渲染模式,是为了然Unity为内置变量进行必要初始化赋值的提示 2、Unity前向渲染有3中处理光照的方式:逐顶点、逐像素、球谐函数(Spherical Harmonics) 1)场景中最亮的平行光按逐像素处理 2)光照下面的Render Mode 被设置为Not 阅读全文
posted @ 2020-03-27 09:57 及拉 阅读 (7) 评论 (0) 编辑
摘要:1、Unity实现透明效果有两种方法:使用透明测试(Alpha Test),这种方法无法得到真正的半透明效果;使用透明混合(Alpha Blend) 1)透明测试:给定一个透明通道的阈值,在一定条件下(如大于这个阈值)时抛弃这个片元,一刀切得意思 2)混合:根据指定的混合公式使用源信息与目标信息进行 阅读全文
posted @ 2020-03-26 12:10 及拉 阅读 (8) 评论 (0) 编辑
摘要:1、半兰伯特模型:入射光线与法线与入射光下夹角余玄值缩放a后加上一个b的偏移(a、b通常取值0.5,将[-1.0, 1.0]映射到[0.0, 1.0]),用于解决背光面明暗相同的缺点。 2、比较直观的各种计算可以分为逐顶点与逐像素两种,前者为每个顶点计算信息后在片元间进行插值得到信息,一般情况下计算 阅读全文
posted @ 2020-03-24 11:34 及拉 阅读 (9) 评论 (0) 编辑
摘要:1、Unity Shader 的基本结构 ShaderLab指定顶点、片元等着色器的方式比较有意思,第一次看的时候都懵逼了orz,这里说的着色器看起来像是一个函数 #pragram shaderType func_name//shaderType 有vertex、fragment、surface、g 阅读全文
posted @ 2020-03-23 21:09 及拉 阅读 (7) 评论 (0) 编辑
摘要:1、左手右手坐标系 2、Unity 的模型空间与世界空间使用的是左手坐标系,Camera使用的是右手坐标系 3、一定要理解的两个矢量运算,他们是图形算法的必备良药,这里的理解不仅仅计算公式,是几何意义上的理解 1)点积(内积):从数学上想来,很容易联想到它能够计算余玄(cos),结果是一个标量,那么 阅读全文
posted @ 2020-03-19 16:20 及拉 阅读 (8) 评论 (0) 编辑
摘要:1、给shader取名字,为了方便管理可以在名字中插入‘/’分隔符来进行分层与MenuItem一个意思。 Shader "NewMenu/colorMaterialShader" {} 2、属性(Properties) 是材质与shader通信的媒介,这是可选属性 Properties { Name 阅读全文
posted @ 2020-03-17 21:47 及拉 阅读 (10) 评论 (0) 编辑
摘要:1、OpenGL的窗口坐标原点位于左下角,DirectX的窗口坐标原点位于左上角。 2、常见的着色器语言HLSL(High Level Shading Language)是微软在DirectX基础上提供的,着色器的编译器完全由微软提供,因此只要微软系统支持的硬件,使用相同的编译器编译出来的结果是一样 阅读全文
posted @ 2020-03-16 17:49 及拉 阅读 (9) 评论 (0) 编辑
摘要:1、计算着色器,一种能够灵活运用GPU高速运算处理非图形任务的着色器,它能够使用大部分着色器的功能当然要出去非常专一性的如EmitVertex这样的方法。 2、计算着色器的调用有全局工作组的概念,全局工作组又包含局部工作组(本地工作组),局部工作组包含执行单元 3、局部工作组的大小在shader中由 阅读全文
posted @ 2020-03-14 22:22 及拉 阅读 (21) 评论 (0) 编辑
摘要:1、OpenGL提供了许多图像类型来表达未编码的图像数据,它们与纹理相比:(1)表达的是单一层级的纹理不带有mipmap;(2)不支持滤波等采样操作、深度比较。 layout (binding = 4, rgba32f) uniform image2D imageIns;//rgba32f为imag 阅读全文
posted @ 2020-03-12 15:54 及拉 阅读 (23) 评论 (0) 编辑
摘要:1、使用glDrawArraysInstanced与glDrawElementsInstanced这类的函数使用gl_InstanceID进行不同变化的实例化,实质上是使用一批顶点数据执行多次整个渲染管线,如果启用细分可能给GPU增加潜在(为啥是潜在?不是直接的吗,还有啥东东没有get到)负担。几何 阅读全文
posted @ 2020-03-09 12:04 及拉 阅读 (9) 评论 (0) 编辑
摘要:1、几何着色器(geometry shader)负责处理一个完成图元的顶点数据,重点在于一个完整的图元,经过它的处理后能够改变图元的图元类型、数目。 void EmitVertex();//完成了一个顶点的处理 void EndPrimitive();//标志完成了一个图元的顶点处理,生成一个图元 阅读全文
posted @ 2020-03-08 14:27 及拉 阅读 (24) 评论 (0) 编辑
摘要:1、细分着色器(Tessellation shader)有两个阶段来生成几何图元的模型网格。 1)在顶点着色阶段,需要设置所有线段、三角形构成处理的网格,使用有序顶点列表生成新的目标图元,。 2)将新生成的图元顶点放置到指定的位置上后进入下一阶段。 2、tessellation shader 处理一 阅读全文
posted @ 2020-03-06 16:44 及拉 阅读 (16) 评论 (0) 编辑
摘要:1、纹理着色器:生成图像或者照片的shader。它有如下特点: 1)生成的纹理内存占用小,因为使用算法生成的纹理易于压缩,差距在指数级别上。 2)生成的纹理没有固定的分辨率。 3)易于实现多种多样的处理效果,相较于预存纹理便利许多。 4)使用程序纹理计算体积而不是表面,在体积的剖面表现更加真实。 5 阅读全文
posted @ 2020-03-03 22:15 及拉 阅读 (9) 评论 (0) 编辑