
Shader
目竞
起承转合
展开
-
Chango的数学Shader世界(二十三)漩涡Shader-复数分析(深渊)
目的:我的2D游戏,需要一个有特定感觉的“漩涡shader”。上一节里,我简单实现了这个:但转动有些乏味,它的转动动作是类似这样的:(网图)接下来想让它动起来更加深邃,恐怖。本文先搞了2种效果:(图3,扩散瞳孔)(图4,深渊)抽象分析:前篇的Shader效果之所以看起来乏味,是因为在旋转的时候,像素点的极长(以方块中心为原点极坐标系)并没有改变,只是越接近中心,点的旋转量越小而已。(旋转前后点都在同心圆上)如果我想要深渊有“吃人”的感觉,那么内部的原创 2020-05-10 16:51:09 · 678 阅读 · 0 评论 -
Chango的数学Shader世界(二十一)漩涡Shader
目的:瓦滴2D游戏需要一个深渊效果,想着就用漩涡效果先试试。在SDL+OpenGL的开发环境下,实现一个类似这样的漩涡效果。(图片来源于:https://www.cnblogs.com/joeshifu/p/5489761.html)简单的漩涡效果没什么难点,主要是记录一下OpenGL涉及Shader方面的基础知识。不过纯理论上可以深究的东西还是挺多的(类似之前的细线...原创 2020-03-15 21:46:07 · 542 阅读 · 0 评论 -
Chango的数学Shader世界(十二)流体模拟-丑陋的现实之平流,投影算子
目的:参考《GPU Gems》,尝试重现2D流体模拟。本节用UE4实现平流和投影算子部分。并对实际碰到的问题与论文的差距作分析。参考:《GPU Gems》观察:经过实践观察,我发现两个问题:1.速度场的复杂度决定了模拟的流动有多好看,但复杂又无散的速度场我不知道怎么搞。2.对染料浓度进行无散处理(上节的投影算子)没有任何意义,结果也很奇怪。但对速度场...原创 2019-08-01 14:56:03 · 838 阅读 · 0 评论 -
Chango的数学Shader世界(九)流体模拟-散度,梯度,二阶导与拉普拉斯
目的:参考《GPU Gems》,在UE4中尝试重现2D流体模拟。本节试图结合场论知识粗略理解Navier–Stokes equations。参考:《GPU Gems》观察:水中染料流体制作MV(《花样年华》 梁朝伟)《GPU Gems》中的Navier–Stokes equations描述了一个流体的4部分运动:平流项:烟随着速度场向上升压力项:烟碰...原创 2019-07-27 21:33:01 · 1367 阅读 · 0 评论 -
Chango的数学Shader世界(十)流体模拟-有限微分形式
目的:参考《GPU Gems》,在UE4中尝试重现2D流体模拟。本节解释连续函数下梯度,散度等各概念在离散情况下的形式。参考:《GPU Gems》观察:分析:1.梯度(数量场)连续:离散:不妨认为两个像素之间距离差为,以此在2D空间上构造x-y坐标系。并且在空间中的位置为推导:记得连续函数中,设函数P(x),求其在x...原创 2019-07-28 15:54:38 · 651 阅读 · 0 评论 -
UE4 究极难搞半透明顺序:双半透+双面+凹模型
问题描述:一个一面被挤入的凹体,嵌入了一个小正方体其材质是半透明双面的。如果什么都不做,那么依据ue4引擎的逻辑,半透明渲染顺序上出现了问题。其实说难搞也是我标题党,和一般的海面船的解决办法差不多。只不过由于小正方体也是双面透明,多了一下步骤。问题表现:更详细的视频链接。其实本质上就是引擎判断渲染先后顺序出了问题。该红面在前的没有在前,所以渲染出了草绿色;仅根据...原创 2019-08-31 17:05:40 · 12568 阅读 · 1 评论 -
【转载】Sobel算子的数学原理:城市距离,4方向插值
以前推导Laplace的时候大意了,以为Sobel算子的(1,2,1)(1,-2,1)也是二阶导。最近回看发现并不对,根本找不出Sobel的数学原理...找好久终于找到个似乎正确的:http://wap.sciencenet.cn/home.php?mod=space&mobile=1&do=blog&id=1139187&id=1139187#_motw_...转载 2019-09-14 15:43:44 · 675 阅读 · 0 评论 -
Chango的数学Shader世界(十四)细线间断,发光闪烁,TAA削弱处理
目的:减少游戏中的细线因屏幕分辨率不足和算法采样不足问题,导致的间断,以及相对的自发光闪烁。解决了此问题也附带解决了因TAA导致的细线自发光微弱的问题。对比视频:https://www.bilibili.com/video/av67438336参考:无,原创。外网UE4 AnswerHub有类似问题,但无正确的解决方案。观察:方块的边缘线条材质,是根据UV坐标判定的...原创 2019-09-15 13:30:39 · 2631 阅读 · 0 评论 -
Chango的数学Shader世界(十八)RayTrace三维分形(三)—— 完善,距离场软阴影
目的:移植Inigo Quilez的可视化三维Julia的算法到ue4。本篇注重完善造型后模型表面的光照,软阴影。参考:1.Inigo Quilez在ShaderToy上的Julia,网址后缀MsfGRr2.之前我讨论简单的Fresnel:Chango的数学Shader世界(七)观察:将上节的基本造型和Inigo Quilez的Julia对比(麦芽糖好想...原创 2019-09-23 15:23:39 · 702 阅读 · 0 评论 -
Chango的数学Shader世界(二十)RayMarch云层(二) —— 着色完善
目的:在ue4中RayMarch云层效果。本篇参考IQ的shader进行着色。参考:见上篇&&https://zhuanlan.zhihu.com/p/34836881观察:(电影《一一》)(知乎Grfxlf,基于Henyey-Greenstein模型的云)IQ的云大致看还行。但不能细看。有2个毛病:1.不基于物理...原创 2019-09-29 13:34:05 · 584 阅读 · 0 评论 -
Chango的数学Shader世界(十三)流体模拟-Laplace扩散,Nyquist定理
在知乎专栏Grfx.IO看到了他使用纯蓝图和材质蓝图实现的流体模拟,非常棒。思考后,我意识到我的不足在于1.物理基础不足没能充分理解泊松压力方程2.参考文章老旧虽然是同一篇文章,但我的版本老旧,差别还比较大3.畏难心理从一开始就没有引入鼠标互动,导致最后也很难改成鼠标互动,显得很鸡肋————————————————————————目的:在前篇Shader基础...原创 2019-08-04 14:21:46 · 968 阅读 · 3 评论 -
Chango的数学Shader世界(十一)流体模拟-Helmholtz分解,边界,场性质
目的:参考《GPU Gems》,尝试重现2D流体模拟。本节解释文中对上上节Navier–Stokes equations的变形,及需要变形的原因,导出最终算法的结构。参考:《GPU Gems》观察:Why so serious分析:1.边界归于实际,我们的这些场是要应用在一个有限的2D区域上的,不妨称此区域为D。一般来说,只有在其边界上处处可微...原创 2019-07-29 14:23:01 · 2429 阅读 · 1 评论 -
Chango的数学Shader世界(七)水波模拟-透明水面,菲涅尔(Fresnel)效应
目的:解析,改进,批评一个国外免费透明水面Shader,进一步了解Shader背后的物理原理。参考:菲涅尔反射分析:我将原水面Shader一再简化,从中抽取最主要的部分,忽略细枝末节,并改掉缺陷,指出不足。简化版:1.造型其中,顶点偏移,也就是波的造型,是用贴图制造的,一目了然:就是一张高度图经过4方向扰动,乘以波高度。然后它再乘上顶点法线在世界坐标...原创 2019-07-16 16:04:10 · 2663 阅读 · 0 评论 -
ShaderToy解析:Minimal ray tracer 光线追踪
原地址:https://www.shadertoy.com/view/XsSSWW这次号称"最小"的ray tracer,但整体不如上篇。代码没有上篇易读。但仍有一些新东西值得我这个初学者学习。1.AAbox怎么Ray。再利用一下线代知识,普通box应该也可以ray。2.反射系数,Schlick approximation。3.Tone mapping。简单来说由于各种原因y=...原创 2019-02-20 18:35:38 · 532 阅读 · 0 评论 -
UE4 一些Shader汇总
1.常用1.Sobel描边//sobelfloat core[3][3];float4 ori=SceneTextureLookup(UV ,14, false); int i,j;for (i=0;i<3;i++){ for (j=0;j<3;j++){float4 tem=SceneTextureLookup(UV + float2(-1.0f / sW,...原创 2019-05-22 14:51:27 · 6948 阅读 · 0 评论 -
Chango的数学Shader世界(五)水波模拟-那平静又汹涌的海面:叠加,Gerstner波
目的:根据前篇的水波Shader,优化成一个不透明的,适合广阔海域的Shader,以解决前篇Shader的一些缺陷。参考:《GPU Gems》引言:对于我们之前的初步可用品Shader,可以从不同方面进行改造,适用于不同需求下的水面。接下来几篇着重于造型上的改造,适用于不透明水面,如深邃广阔的大海。思路:回想起前篇结尾我们谈论到的当前Shader的不足之处:...原创 2019-07-13 10:49:45 · 1770 阅读 · 0 评论 -
Chango的数学Shader世界(一)开篇
目的:我打算写一系列教程,关于数学和Shader。先用UE4实现,其他引擎如有读者需要再考虑。目录:Chango的数学Shader世界(二)水波模拟Chango的数学Shader世界(三)水波模拟,法线,切线空间Chango的数学Shader世界(四)水波模拟,优化,初步可用品Chango的数学Shader世界(五)水波模拟-那平静又汹涌的海面:叠加,Gerstner波...原创 2019-07-10 13:28:57 · 692 阅读 · 0 评论 -
Chango的数学Shader世界(二)水波模拟
目的:推导出一个水波Shader,先造型,再考虑表面材质。本篇考虑造型。参考:《GPU Gems》引言:我该怎样看待数学与Shader的关系呢?我有一个答案,那就是把数学看作你的朋友/工具,了解它的每一部分,在特效需求的每一步中你都能敏感地发现它的影子。比如,我怎么用拼图拼成一个房子呢?从那个尖角的特征中,你立刻想到了你的好朋友三角形,然后你发现正方形+三角形,...原创 2019-07-10 16:40:43 · 1512 阅读 · 0 评论 -
Chango的数学Shader世界(三)水波模拟,法线,切线空间
目的:推导出一个水波Shader。本篇考虑造型后的法线修正。参考:《GPU Gems》引言:上一篇我们已经实现了水波Shader的造型,但法线其实有问题。乍看起来还好,因为自身模型产生的阴影,给出了比较好的立体感。(你应该知道常规游戏引擎渲染中,光照和阴影是分开生成的)。但是,当我把模型自身产生的阴影关掉对比旁边平面的反光,我意识到模型的法线在每个顶点处都是和平...原创 2019-07-10 20:10:34 · 1022 阅读 · 1 评论 -
Chango的数学Shader世界(六)水波模拟-不透明海面终版:力所不能及
目的:基于前篇的海面Shader,试图解决Gestner波目前波长固定问题。然后研究一下表面材质以及光照,添加细节。对于当前Shader未做到的事情,进行总结。参考:《GPU Gems》,UE4水面教材工程思路与步骤:1.Gestner波长固定我尝试了很多种方法,最终勉强能看,但还是不够自然,这里就不放出方案了,主要反思。问题出在哪?1.未精确定位问题2.未...原创 2019-07-15 14:48:24 · 788 阅读 · 0 评论 -
Chango的数学Shader世界(八)光盘模拟-各向异性,光栅衍射
目的:参考《GPU Gems》,在UE4中尝试以重现光盘Shader,并对书中的方法进行解析,改进,批评。参考:《GPU Gems》观察:我越来越意识到观察现实的重要性。相机和肉眼看到的衍射图案有差别,会多出一些彩虹,很可能是光盘衍射出来的光在相机上发生了类似衍射的现象。大致的X型图案有些角度形成的收缩圆弧和放射圆弧图案分析:显然与实际效...原创 2019-07-18 11:21:42 · 1934 阅读 · 0 评论 -
Chango的数学Shader世界(四)水波模拟,优化,初步可用品
目的:推导出一个水波Shader。本篇基于前篇Shader,进行部分优化,成为初步可用品。(仅参考复制玻璃表面材质,之后博文再分析。本篇仅考虑造型函数上的优化)参考:《GPU Gems》引言:我们之前已经完成了简单水波的造型和法线计算。这一节我们让它动起来,并暴露出一些常用变量,比如水波方向,水波速度等。并要求当我们随意移动和旋转模型时,整体表现还能正常。最后简单参考复制玻...原创 2019-07-11 20:50:05 · 537 阅读 · 2 评论 -
Shadertoy解析:Ray tracer with volumetric light 光线追踪+体积光
原地址https://www.shadertoy.com/view/4dsGRn这个"反向光线追踪"+体积光的代码简单清晰,加注释总共也就300+行。本人也是初学者,除了1行不是完全理解,其他都完全搞懂了。在此与分享。其实最基本的光线追踪和体积光并不难。不过,首先了解一下本代码中的光线追踪和体积光的基本算法。"反向光线追踪":把屏幕空间的每一个像素转化到三维空间,并沿着视线方向发射大量...原创 2019-02-18 18:33:51 · 1326 阅读 · 0 评论