Bob Blog

If you want knowledge,you must toil for it.

四叉树和八叉树

结构和原理

二叉空间分割树BSP 四叉树Quad Tree 八叉树Octree 参考资料: Binary_space_partitioning Quadtree QuadTree-Implementation QuadTree-Collision-Detection quadtree

新手引导

挖洞、点击穿透、毛玻璃

新手引导需要处理的几种效果 shader处理挖洞 挖矩形洞 挖圆形洞 Shader "Unlit/MaskShader" { Properties { _CropColor("CropColor",Color) = (0,0,0,0) _Fade("Fade",float) = 2 //crop circle (centerx,cente...

CG标准库函数

Cg Standard Library Functions

数学函数 Mathematical Functions 函数 功能描述 abs(x) 返回输入参数的绝对值 acos(x) 反余切函数,输入参数x范围为[-1,1], 返回[0,π]区间的角度值 all(x) ...

崩三角色浅析

解析卡通渲染

解读崩三角色卡通渲染制作方式 渲染组成 描边 角色描边不是简单的沿着法线扩展绘制,而是通过摄像机fov夹角处理描边粗细变化,顶点z和近裁面距离来处理线的透明度。 Shader "Avatar" { Properties { _MainTex("Texture", 2D) = "white" {} _OutlineWidth("Outline Width", ...

摄像机公式推导

Perspective&Ortho

正交投影 观察坐标为右手坐标系,NDC使用左手坐标系。定义屏幕左右边界为left和right 屏幕上下边界为top和bottom,近的裁剪面距离为n,远的裁剪面距离为f。 观察空间的x_eye、y_eye与z_eye分量都线性映射到NDC。我们只需将长方体缩放为正方体,然后移动它到原点。让我们使用线性关系推导所有元素。 投影矩阵:一个缩放和平移矩阵结合。 Unity源码实...

渲染管线

Per-Sample Processing

渲染管线 Scissor Test 在OpengGl中通过如下方法设置裁剪 //设置裁剪矩形的位置和大小 void glScissor (GLint x, GLint y, GLsizei width, GLsizei height); Alpha Test 使用fragment程序时ShaderLab Alpha Test命令无效,用cg clip函数来处理。 Shad...

设计模式

C++设计模式

GoF(“四人帮”,指Gamma, Helm, Johnson & Vlissides, Addison-Wesley四人)提出的23种设计模式。 通过分解和抽象来管理变化,提高复用。 八大原则: 依赖倒置原则 DIP(Dependency Inversion Principle):一个方法应该遵从”依赖于抽象而不是一个实例”。 开放封闭原则...

C#数据结构

数据结构比较

早先在CSDN发表的《C#数据结构》文章重新整理一下 System.Array Array提供一些方法,用于创建、处理、搜索数组并对数组进行排序,从而充当公共语言运行时中所有数组的基类。 Array具有固定的容量,必须在声明时指定长度。 若要增加容量,你必须创建一个新Array对象所需的容量、 复制元素从旧Array到新对象,并删除旧Array。 数组存储在连续的内存上,数组...

C#回调

回调比较

早先在CSDN发表的《delegate,event, lambda,Func,Action》文章重新整理一下 delegate delegate标示了函数回调的规范,能够拥有一个签名(signature),并且它只能持有与它的签名相匹配的方法的引用。它所实现的功能与C/C++中的函数指针十分相似。 using System; namespace TestCSharp { ...

酷炫的头发渲染着色器

解析头发渲染

解读头发渲染 本人才疏学浅,翻译难免有误,请不惜指教。 头发渲染 大多数人头上都有头发,它是一个很重要的可视化效果。头发渲染做起来很难: 1、人头发依种族和发色的不同,数量也略有差异。黄种人有10万根,金发色头发的白种人头发较细,有12万根, 红色头发略粗,有8-9万根。 2、人有大量不同类型的发式。 3、要渲染效果精致、看起来很有神韵,要花费整个人体渲染时间超25%的占...