摘要: 讨论完漫反射之后,接下来肯定就是镜面反射了在开始镜面反射shader的coding之前,要扩充一下前面提到的知识,加深理解镜面反射与漫反射的区别。注:这篇文章实现的镜面反射是逐顶点着色(per-vertex lighting),最后效果图可以看到高亮区域并不光滑,更光滑的着色方式请看系列10逐像素着 阅读全文
posted @ 2017-06-01 20:03 decode126 阅读(1244) 评论(0) 推荐(0) 编辑
摘要: 前文中完成最简单的漫反射shader只是单个光源下的漫反射,而往往场景中不仅仅只有一个光源,那么多个光源的情况下我们的物体表面的漫反射强度如何叠加在一起呢?前文打的tag "LightMode"="ForwardBase"又是什么意思呢?Unity内置的DiffuseShader,也就是我们创建一个 阅读全文
posted @ 2017-06-01 20:02 decode126 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 1.不透明度当我们要将两个半透的纹理贴图到一个材质球上的时候就遇到混合的问题,由于前面的知识我们已经知道了片段着色器以及后面的环节的主要工作是输出颜色与深度到帧缓存中,所以两个纹理在每个像素上的颜色到底以怎样的形式混合在一起最后输出到帧缓存中是我们现在首要讨论的内容。 1.混合(blending) 阅读全文
posted @ 2017-06-01 20:01 decode126 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 如果前面几个系列文章的内容过于冗长缺乏趣味着实见谅,由于时间原因前面的混合部分还没有写完,等以后再补充,现在开始关于反射的内容了。折射与反射在物理世界中,光的反射与折射往往是同时存在的,光源由真空或者空气中射入一种材料,光在进入这种材料的同时就发生了折射,折射的程度与各个介质的折射率有关,使光的传播 阅读全文
posted @ 2017-06-01 20:01 decode126 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 上篇文章中我们掌握了表面剔除和剪裁模式这篇文章将利用这些知识实现一个简单的,但是又很常用的例子:把一张图片做成圆角矩形 例3:圆角矩形Shader好吧我承认在做这个例子的时候走了不少弯路,由于本人对矩阵的知识掌握已经悉数还给老师,所以一开始用了一些笨办法计算圆角矩形区域。我们知道TEXTCOORD0 阅读全文
posted @ 2017-06-01 20:00 decode126 阅读(608) 评论(0) 推荐(0) 编辑
摘要: 经过前面的系列文章中的三个例子,尽管代码简单,但是我想应该还有些地方没有100%弄明白,我们现在得回过头来补充一些必备的数学、图形学知识 1、图形管道第一个例子中我有提到顶点着色和片段着色在整个图形绘制过程中属于一个环节,整个过程叫做管道,这个管道的所有环节包括: 在整个管道中,只有顶点着色与片段着 阅读全文
posted @ 2017-06-01 20:00 decode126 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 在上一个例子中,我们得到了由mesh组件传递的信息经过数学转换至合适的颜色区间以颜色的形式着色到物体上。这篇文章将要在此基础上研究片段的擦除(discarding fragments)和前面剪裁、后面剪裁(front face culling and back face culling)来达到透明效 阅读全文
posted @ 2017-06-01 19:59 decode126 阅读(1020) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章的例子中我们可以看到顶点着色器的输出参数可以说是直接作为了片段着色器的形参传递过来,那么不由得一个问题浮现出来,顶点着色器的形参是从何处传递过来的? 顶点着色器的形参是gameObject 的meshRenderer组件将所有的mesh数据按每一帧一次传递给OpenGL。 这中间的过程常常 阅读全文
posted @ 2017-06-01 19:58 decode126 阅读(439) 评论(0) 推荐(0) 编辑
摘要: CG=C for Graphics 用于计算机图形编程的C语言超集 前提知识点: 1.CG代码必须用 CGPROGRAM 。。。 ENDCG括起来 2.顶点着色器与片段着色器的主函数名称可随意,但需要再#pragma vert 与#pragma fragment中声明并且与主函数名完全匹配,shad 阅读全文
posted @ 2017-06-01 19:57 decode126 阅读(589) 评论(0) 推荐(0) 编辑
摘要: U-n-i-t-y 提供了 [Compute Shader][link1] 来使得我们可以将大量的复杂重复的计算交给并行的 GPU 来处理,正是由于并行原因,这样就可以大大加快计算的速度,相比在 CPU 的线程中有着巨大的优势。类似 OpenglES 3.0 的 [Transform Feedbac 阅读全文
posted @ 2017-06-01 19:55 decode126 阅读(9759) 评论(0) 推荐(0) 编辑
摘要: Unity在5.6之前的版本中并未提供很直接的方式来查找Draw Call未被批处理的原因,但Unity 5.6在Frame Debugger中新增了一项功能,帮助开发者查找相关信息。今天这篇文章就为大家分享,在Unity 5.6中如何查看Draw Call未被批处理的原因。相信大家都知道,Unit 阅读全文
posted @ 2017-06-01 19:47 decode126 阅读(237) 评论(0) 推荐(0) 编辑