随笔分类 - Shader
摘要:半影方案 之前用来生成lightMesh的端点扫描的方案并不适合生成ShadowMesh,主要原因是光源体积边缘的点和光源中心点的端点顺序可能不同。虽然端点排序很快,但也不可能每个半影区域都排一次,即使有优化方案,代码的复杂度也会很高。 使用Shader绘制阴影(包括半影)比较简单,而且效率很高。个
阅读全文
摘要:Mesh Decal 1. 获取与投影框相交的mesh 多种方法如:手动指定、遍历静态物体、碰撞检测、搜索等等。 2. 将Mesh的顶点、法线转换到投影框的模型坐标系内 主要是为裁剪做准备。 var mesh = meshFilter.sharedMesh; // 相交物体的 Mesh List<V
阅读全文
摘要:2D程序式火焰 火焰一般包括焰心、内焰、外焰,至少要有内焰、外焰的区分,另外有烟,火花,热扭曲之类的效果。 基本原理很简单,就是使用梯度值(一般是uv.y)截取不断上移的噪声值来形成火焰效果。 截取方法可以定值截取,也可以插值截取 1. 定值 参考博客 使用step区分内外焰,效果上类似卡通火焰(t
阅读全文
摘要:草对象 线性排列 (图片取自gpu gem1) 顶点最少、需要对应纹理、法线等贴图。效果不好。固定视角;远处;或者加上广告牌(billboard)效果(eg:游戏漫漫长夜,如果不绕着草转不一定能发现)可采用。 交叉多边形 顶点少、需要对应纹理、法线等贴图。 自定义模型 顶点多,更灵活,效果更好。 C
阅读全文
摘要:积雪判定 同一坐标系下法向量与雪的方向点乘,可以控制雪的方向 使用世界坐标系法线的g通道值,无法控制雪方向,省了点乘操作 雪颜色 纹理贴图:通过世界坐标的xz值采集,需要无缝贴图(seamless texture) 半兰伯特(half Lambert)+ 渐变纹理 雪厚度 将顶点依法线向外偏移(非后
阅读全文
摘要:反射、折射贴图 1. 使用GrabPass 2. 使用相机的Render Texture render texture的高宽比一般与相机viewport的高宽比相同。 扭曲 Distortion 扭曲的方法多种多样,一般原理都是使用时间错位(time offset)获取两次扭曲结果,然后将两者组合起
阅读全文
摘要:一般3D溶解 边缘溶解 使用噪声贴图或者程序噪声,通过范围0 1的float材质参数在片元着色器进行 clip 操作。 边缘颜色 使用hdr、渐变纹理(RampTexture)、bloom提高效果。 程序噪声参考 "link" 示例源码: Shader "DissolvePack/unlit/Dis
阅读全文

浙公网安备 33010602011771号