Bob Blog

If you want knowledge,you must toil for it.

崩三角色浅析

解析卡通渲染

解读崩三角色卡通渲染制作方式 渲染组成 描边 角色描边不是简单的沿着法线扩展绘制,而是通过摄像机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%的占...

C++集锦

C++百问百答

版本 C++98(1.0) C++03(TR1,Technical Report1) C++11(2.0) C++14 C++17 C++20 编译器及工具 C++ Compilers Wiki : 1.GNU Compiler Collection 2.Clang 3.Visual Studio 4.MinGW 5.Cygwin 6.Cmake 7.Scons...

PBR浅析

physically-based rendering

What You See Is What You Get 基于物理渲染 这不是照片,而是来自SubStance物理渲染效果。 BRDF模型 来自度娘的定义:双向反射分布函数(Bidirectional Reflectance Distribution Function,BRDF)用来定义给定入射方向上的辐射照度(irradiance)如何影响给定出射方向上的辐射率(rad...

平面投影

简单推导投影

平面投影(Planar Projected Shadows)可以简单理解为点在一个面上交点,注意这个面是没有高度起伏变化的,是平面。观察手游《王者荣耀》为了简化计算也是采用的平面投影,整个战斗场景地面其实在一个平面上。 向量定义 v向量 = d长度 * v方向 = $ d \frac{\vec v}{\vert \vec v \vert} $ 向量方程 向量方程r描述经...