热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

热浪扭曲效果

热浪扭曲•每个人都对自然界中的这种大气效果很熟悉•光线在穿过不同密度的介质时会弯曲热微光•热空气密度比冷空气小•密度影响介
   热浪扭曲         每个人都对自然界中的这种大气效果很熟悉         光线在穿过不同密度的介质时会弯曲 热微光         热空气密度比冷空气小         密度影响介质的折射率         热空气上升的同时会被冷空气替代, 这会改变光射入眼睛的路线          渲染场景到RGBA离屏缓存(可渲染的纹理)         颜色写入RGB值         扭曲度写入Alpha通道         绘制全屏长方形到后备缓冲区         对离屏缓冲采样以获得扭曲度         用扰动贴图来确定扰动向量, 用扭曲度放缩后偏移原始纹理坐标         基于扰动纹理坐标的可增长泊松分布(根据扭曲度来进行偏移) 扭曲度         逐像素判断当前像素被扭曲的程度         当光线穿过更多的气体时, 折射程度也相应增加         扭曲随场景深度增加    开始时把渲染目标的Alpha通道清为1.0,表示最大深度    Pixel shader把每个像素的深度写入alpha通道          深度提供了一个很好的全局扭曲方案, 但是你的美工们希望局部控制         热浪几何体可以用来定义扭曲范围, 如热空气出口和喷气发动机尾         热浪纹理可以使热浪几何本上的扭曲动起来 热度几何体 & 热度纹理         像素扭曲度来源来热度纹理         扭曲度被深度放大         用高度进一步放大 (纹理坐标) 并且 N.V 来避免生硬的边缘         扭曲度被写入Alpha通道 全屏矩形          全屏矩形用离屏缓存(可渲染的纹理)来绘制并且用扰动贴图作为纹理 扰动贴图         一个2D向量储存在红色和绿色通道内         在全屏矩形两个方向上卷动贴图并采样两次         平均两次采样并把值变换到 [-1.0, 1.0] 的范围内         用扭曲度放缩向量         结果就是扭曲向量扭曲向量         扭曲向量用于偏移原始纹理坐标         向量的大小取决于扭曲度         这个新的扰动纹理用于读入离屏缓存 可增长泊松分布         模糊中心在扰动纹理坐标的中间         偏移基于扭曲度 扭曲 Shader
float4 main (PsInput i) :COLOR{   // fetch from perturbation map with scrolling texture coords   float3 vPerturb0 =tex2D (tPerturbationMap, i.texCoord1);   float3 vPerturb1 =tex2D (tPerturbationMap, i.texCoord2);               // scale and bias: (color - 0.5f)*2.0f   vPerturb0 = SiConvertColorToVector(vPerturb0);   vPerturb1 = SiConvertColorToVector(vPerturb1);    // average perturbation vectors   float2 offset = (vPerturb0.xy + vPerturb1.xy) * 0.5f;    // get distortion weight from renderable texture (stored in alpha)   float4 cDistWeight =tex2D (tRBFullRes, i.texCoord0);    // square distortion weight   cDistWeight.a *= cDistWeight.a;    // compute distorted texture coords   offset.xy = ((offset.xy * cDistWeight.a) * fPerturbScale) + i.texCoord0;    // fetch the distorted color   float4 o;   o.rgb = SiPoissonDisc13RGB(tRBFullRes, offset, 1.0f/screenRes.xy, cDistWeight.a);   o.a = 1.0f;   return o;}
 可增长泊松分布 Shader
float3 SiGrowablePoissonDisc13FilterRGB(sampler tSource,float2 texCoord,float2 pixelSize,float discRadius){   float3 cOut;   float2 poisson[12] = {float2(-0.326212f, -0.40581f),                         float2(-0.840144f, -0.07358f),                         float2(-0.695914f, 0.457137f),                         float2(-0.203345f, 0.620716f),                         float2(0.96234f, -0.194983f),                         float2(0.473434f, -0.480026f),                         float2(0.519456f, 0.767022f),                         float2(0.185461f, -0.893124f),                         float2(0.507431f, 0.064425f),                         float2(0.89642f, 0.412458f),                         float2(-0.32194f, -0.932615f),                         float2(-0.791559f, -0.59771f)};   // Center tap   cOut = tex2D (tSource, texCoord);   for (int tap = 0; tap <12; tap++)   {      float2 coord = texCoord.xy + (pixelSize * poisson[tap] * discRadius);       // Sample pixel      cOut += tex2D (tSource, coord);   }   return (cOut / 13.0f);} 
  

推荐阅读
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 110. Balanced Binary Tree [Easy] 平衡树/递归
    本文介绍了一道关于平衡树的题目,通过递归和辅助函数来判断一个二叉树是否平衡。辅助函数返回根结点的深度,如果左子树或右子树不是平衡树,则返回-1。主函数根据辅助函数的返回值判断二叉树是否平衡。 ... [详细]
  • 词袋模型的通俗介绍
    词,袋, ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 在2022年,随着信息化时代的发展,手机市场上出现了越来越多的机型选择。如何挑选一部适合自己的手机成为了许多人的困扰。本文提供了一些配置及性价比较高的手机推荐,并总结了选择手机时需要考虑的因素,如性能、屏幕素质、拍照水平、充电续航、颜值质感等。不同人的需求不同,因此在预算范围内找到适合自己的手机才是最重要的。通过本文的指南和技巧,希望能够帮助读者节省选购手机的时间。 ... [详细]
  • 从高级程序员到CTO的4次能力跃迁!如何选择适合的技术负责人?
    本文讲解了从高级程序员到CTO的4次能力跃迁,以及如何选择适合的技术负责人。在初创期、发展期、成熟期的每个阶段,创业公司需要不同级别的技术负责人来实现复杂功能、解决技术难题、提高交付效率和质量。高级程序员的职责是实现复杂功能、编写核心代码、处理线上bug、解决技术难题。而技术经理则需要提高交付效率和质量。 ... [详细]
  • Learning to Paint with Model-based Deep Reinforcement Learning
    本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 北京景点排行榜 北京最好玩的旅游景点
    2019北京最好玩的旅游景点有哪些?下文为大家整理了2019北京景点排行榜,希望可以帮到您哦!  2019北京景点排行榜:  1、故宫  帝都必打卡的地点之一。  北京故宫是中国明 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • SEEBURGER SAP GTS解决方案:数字化助力企业实现海关流程数字化
    SEEBURGER作为SAP的合作伙伴,在2019 SAP GTS信息交流会上分享了SEEBURGER SAP GTS解决方案的应用案例,介绍了如何利用数字化助力企业实现海关流程数字化。SEEBURGER的集成技术和解决方案支持SAP GTS产品和服务的推广及应用,通过数据通讯和报文格式转换满足与海关当局的电子数据交换需求。该解决方案能够帮助企业管理全球贸易,保证贸易规范,优化跨境供应链,提升企业合规性。 ... [详细]
author-avatar
朗月清风的海角
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有