Bob Blog

If you want knowledge,you must toil for it.

数据结构与算法

二分查找、二叉排序树

以下题目均来自leetcode、poj 二分查找 首先,假设表中元素是按升序排列(也可是降序),将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 /...

投影

Shadow Maps & Shadow Volume

Shadow Mapping(阴影映射) 来自CgTutorial的Shadow Mapping实现的基本流程 : 1、首先将整个场景的深度值预先渲染到以光源位置为原点、光线发射方向为观察方向的投影坐标系中,形成深度纹理。 2、再次渲染场景的过程中,将每个片断(像素)变换到前述眼坐标系(观察空间)中,并缩放到[0,1]的范围内以便查询纹理。绘制每个片元时,根据深度纹理距离(ZA)和片元距光...

公告板

公告板Shader

公告板,英文名Billboarding,是一项让着色四边形根据视角方向来旋转的技术,这样看起来似乎物体总是面向观察者。 unity shader 内置变量 name Value UNITY_MATRIX_MVP   从object space转到 projection space(投影)...

水的几种制作方式

ShaderGraph制作UV动画水 需要配置Lightweight Render Pipeline,使用ShaderGraph制作 水效果: 属性: 节点图如下: 节点函数用途: // Shared Graph Node Functions void Unity_FresnelEffect_float(float3 Normal, float3 Vie...

四叉树和八叉树

结构和原理

二叉空间分割树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...