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