Dissolve效果代码理解
Shader "ShaderBook/15/Dissolve"{Properties{//表示消融程度_BurnAmount("Burn Amount",Range(0.0,1.0)) = 0.0//消融效果时的线宽_LineWidth("Burn Line Width",Range(0.0,0.2)) = 0.1_MainTex("Base (RGB)",2D) = "white" {}_BumpMap("Bump Map",2D) = "bump" {}//火焰边缘颜色//两种颜色,可以用渐变纹使颜色更丰富_BurnFirstColor("Burn First Color", Color) = (1, 0, 0, 1)_BurnSecondColor("Burn Second Color", Color) = (1, 0, 0, 1)//噪声纹理_BurnMap("Burn Map", 2D) = "white"{}//渐变纹理_RampTex("Ramp Tex",2D) = "white"{}}SubShader{Tags { "RenderType"="Opaque" "Queue"="Geometry"}Pass {Tags { "LightMode"="ForwardBase" }Cull OffCGPROGRAM#include "Lighting.cginc"#include "AutoLight.cginc"#pragma multi_compile_fwdbase#pragma vertex vert#pragma fragment fragfixed _BurnAmount;fixed _LineWidth;sampler2D _MainTex;sampler2D _BumpMap;fixed4 _BurnFirstColor;fixed4 _BurnSecondColor;sampler2D _BurnMap;sampler2D _RampTex;float4 _MainTex_ST;float4 _BumpMap_ST;float4 _BurnMap_ST;struct v2f {float4 pos :SV_POSITION;float2 uvMainTex :TEXCOORD0;float2 uvBumpMap :TEXCOORD1;float2 uvBurnMap :TEXCOORD2;float3 lightDir :TEXCOORD3;float3 worldPos : TEXCOORD4;SHADOW_COORDS(5)};v2f vert(appdata_tan v){v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.uvMainTex = TRANSFORM_TEX(v.texcoord, _MainTex);o.uvBumpMap = TRANSFORM_TEX(v.texcoord, _BumpMap);o.uvBurnMap = TRANSFORM_TEX(v.texcoord, _BurnMap);TANGENT_SPACE_ROTATION;//计算局部光照,并将其转化到切线空间//我们也可以不改变光照,而改变法线,将发现变换到世界空间o.lightDir = mul(rotation,ObjSpaceLightDir(v.vertex));o.worldPos = mul(unity_ObjectToWorld,v.vertex).xyz;TRANSFER_SHADOW(o);return o;}fixed4 frag(v2f i):SV_TARGET{//采样噪声纹理fixed3 burn = tex2D(_BurnMap, i.uvBurnMap).rgb;clip(burn.r - _BurnAmount);//参数小于0时候,像素被清除,AlphaTestfloat3 tangentLightDir = normalize(i.lightDir);fixed3 tangentNormal = UnpackNormal(tex2D(_BumpMap, i.uvBumpMap));//获取切线空间法线fixed3 albedo = tex2D(_MainTex, i.uvMainTex).rgb;fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz * albedo;fixed3 diffuse = _LightColor0.rgb * albedo * max(0, dot(tangentNormal, tangentLightDir));//_LineWidth宽度范围模拟渐变。t为0是正常颜色,为1时位于消融的边界fixed t = 1 - smoothstep(0.0, _LineWidth, burn.r - _BurnAmount); //fixed3 burnColor = lerp(_BurnFirstColor, _BurnSecondColor, t);fixed3 burnColor = tex2D(_RampTex,float2(1-t,0));//加强颜色模拟烧焦痕迹burnColor = pow(burnColor, 2);UNITY_LIGHT_ATTENUATION(atten, i, i.worldPos); //小于0.001时候为0,其余为1,为了完全消除燃烧痕迹//混合烧焦的颜色和原本的颜色fixed3 finalColor = lerp(ambient + diffuse * atten, burnColor, t * step(0.0001, _BurnAmount));return fixed4(finalColor,1);}ENDCG}}//绘制阴影的shader,如果需要显示cutoff的阴影//需要我们手写shadowCasterFallback "Diffuse"
}
找了一天也没有找到可以运行的demo,不过原理我大概懂了,明天尝试手写出来!!!
燃烧效果.我想要白到发光的瞬间燃烧,所以没有让他更加真实(其实懒得用ps).
我仔细一看发现火焰燃烧的太整齐了,可以加一点噪声(白噪声?)使火焰更自然一点?
Dissolve效果代码理解相关推荐
- 产品图片无缝水平滚动效果代码
产品图片无缝水平滚动效果代码: 在众多的网站都有这样的效果,那就是产品图片可以不间断的无缝滚动,效果挺美观的,也给静态的页面增加了几分动感,也便利了浏览者查看产品,算是比较好的效果吧,下面就介绍一下如 ...
- php表格列宽拖拽,JavaScript_JQuery拖动表头边框线调整表格列宽效果代码,类似于桌面程序中的表格拖动 - phpStudy...
JQuery拖动表头边框线调整表格列宽效果代码 类似于桌面程序中的表格拖动表头的效果,当鼠标停留在表头边框线上时,鼠标会变成表示左右拖动的形状,接着拖动鼠标,会在表格中出现一条随鼠标移动的竖线,最后放 ...
- Reverse Attention的代码理解
目录 前言 1. REA模块的代码实现 2. REA模块在CFF模块中的调用 3. CFF模块在OSFormer中的调用 4.疑问分析 4. 下一步计划 参考 前言 通过溯源Reverse Atten ...
- ie8浏览器html圆角问题,IE7,IE8浏览器CSS实现正圆角效果代码
圆角效果以前用的是图片实现现在我们来用css实现了,下面来看一篇非常详细的关于IE7,IE8浏览器CSS实现正圆角效果代码吧,希望文章能够帮助到各位朋友. 一.关于IE7, IE8不支持CSS3 bo ...
- 【图形学】30 前向渲染多光照场景代码理解
来源:<UNITY SHADER入门精要> 文章目录 1.代码理解 1.代码理解 我们现在要注意光源的 5 个属性:位置.方向.颜色.强度.衰减. 在理解代码之前,我们依然需要熟悉 ...
- MTCNN算法与代码理解—人脸检测和人脸对齐联合学习
MTCNN算法与代码理解-人脸检测和人脸对齐联合学习 写在前面 主页:https://kpzhang93.github.io/MTCNN_face_detection_alignment/index. ...
- 【Pytorch深度学习实践】B站up刘二大人之BasicCNN Advanced CNN -代码理解与实现(9/9)
这是刘二大人系列课程笔记的 最后一个笔记了,介绍的是 BasicCNN 和 AdvancedCNN ,我做图像,所以后面的RNN我可能暂时不会花时间去了解了: 写在前面: 本节把基础个高级CNN放在一 ...
- 竖直菜单 html,jQuery实现的网页竖向菜单效果代码
本文实例讲述了jQuery实现的网页竖向菜单效果代码.分享给大家供大家参考.具体如下: 这是一款基于jQuery实现竖向的网页菜单代码,可折叠展开的二级网页菜单,修改一下可用在后台管理中,显示在左侧的 ...
- php轮播代码生成器,最简单的Banner轮播左右切换效果代码及实现思路(附带源码)...
Banner轮播左右切换效果代码及实现思路,支持左右切换图片,支持点击选择对应的图片.实现思路通过定时器去自动选图和点击触发事件去选择图片.而图片的选择是通过计算对应图片的宽度和第几张图的距离进行动画 ...
最新文章
- 使用Poi读取xlsx类型的Excel
- TensorFlow接口升级汇总
- vs插件ZunKoIDE
- ibm笔记本电脑电池_笔记本电池怎么充电 笔记本电脑电池充电方法【详解】
- mysql - 一键安装方式- 课堂版
- expect实现交互式输入
- bluez 设置绑定pin码_「RT-Thread笔记」IO设备模型及PIN设备
- 二十三种设计模式之:适配器模式
- asp.net 下拉框绑定值
- 软件测试面试题(含答案)
- 自动驾驶之多传感器融合实践(1)------激光雷达点云数据处理
- 用VS2019编译librdkafka库
- java矩阵连乘动态规划_动态规划之矩阵连乘
- 全国三级城市联动 js版
- 计算机windows用户名密码怎么查,如何查看Windows和Office的密码、序列号
- 小狗钱钱中学会的法则
- linux ll 命令的含义
- Optical Flow:Horn-Schunck算法与Lucas-Kanade(LK)算法
- Java_控制流程(if、switch、while、for、continue、break、结束外部循环)
- QLabel设置背景颜色或字体失效显示“无效样式表”解决办法
热门文章
- 有关基于细分曲面造型系统的探讨
- QT界面简单的图形移动和鼠标绘图
- 关于WIN7共享权限问题*****共享之后只能复制不能粘贴*****解决方法
- html css javascript实现弹弹球
- 区块链之java(五) eth
- 深度学习可解释性-可视化技术
- spark面试题总结(大数据面试)
- 跨专业读研的心态:风雨过后,方见彩虹
- 研究生计算机网络与信息安全,王海泉:计算机网络与信息安全课件1(研究生).ppt...
- Android官网培训课:用ViewPager做屏幕幻灯片