Shader "Custom/Atmosphere Glow"
{Properties{//大气层的颜色_AtmoColor("Glow Color", Color) = (1,1,1,1)//大气层反射效果的强化量_InnterRingFactor("Glow Factor", Float) = 5//大气层相对于地表的偏移_Offset("Vertex Offset", Float) = 0}SubShader{Tags{"IgnoreProjector" = "True""Queue" = "Transparent""RenderType" = "Transparent"}Pass{Blend One OneAlphaTest Greater 0.1ColorMask RGBACull Back Lighting Off ZWrite Off Fog{ Color(0,0,0,0) }CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma glsl#pragma target 3.0uniform float _InnterRingFactor;uniform float4 _AtmoColor;uniform float _Offset;struct VertexInput{float4 vertex : POSITION;float3 normal : NORMAL;};struct VertexOutput{float4 pos : SV_POSITION;float4 posWorld : TEXCOORD0;float3 normalDir : TEXCOORD1;};VertexOutput vert(VertexInput v){VertexOutput o;//获得顶点的发现方向o.normalDir = normalize(mul(unity_ObjectToWorld,float4(v.normal, 0)).xyz);//对原来的顶点进行偏移v.vertex.xyz += (_Offset*v.normal);//在世界中的顶点信息o.posWorld = mul(unity_ObjectToWorld, v.vertex);//转换后得到偏移后的顶点信息o.pos = mul(UNITY_MATRIX_MVP, v.vertex);return o;}float4 frag(VertexOutput i) : COLOR{//视角方向float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);//项目里没有使用光源,shader中模拟(0,0,0)点为太阳光照(点光源)float3 lightDirection = normalize((0,0,0) - i.posWorld.xyz);float ndl = dot(i.normalDir, lightDirection);float ndv = dot(i.normalDir, viewDirection);//实现的效果为内侧描边//这里当ndv为正数时,指数越大,效果越小,ndv为负数时1-ndv为大于1的数,指数越大,效果越强float3 innerRing = saturate(_AtmoColor.xyz * pow(1 - ndv,_InnterRingFactor)) ;//光源方向参与到运算中float3 finalColor = saturate(pow(ndl + max(0.2, dot(-lightDirection, viewDirection)), 3)) * (innerRing * 2) ;return float4(finalColor, 1);}ENDCG}}
}

效果对比如下:

UnityShader太空中的大气层效果相关推荐

  1. 人造卫星为什么会绕着地球转而不是停在太空中或者越飞越远.掉进地球的卫星为什么烧不完....

    人造卫星为什么会绕着地球转而不是停在太空中或者越飞越远.掉进地球的卫星为什么烧不完. 卫星被火箭推到太空中之后失去火箭的推动不就停在太空中或者因为惯性越飞越远了吗,为什么会绕着地球在椭圆形的轨道上飞? ...

  2. 用计算机来控制飞船在太空中运行,神舟飞船在太空中靠什么动力运行

    与汽车和飞机都靠发动机的推力前进一样,神舟飞船在太空中运行也是靠发动机推动的.所不同的是汽车和飞机上的发动机是依靠油料与空气中的氧气混合燃烧,产生气体推力,因此,它们都离不开空气中的氧气.而飞船上的发 ...

  3. shadermaterial 实现大气层效果和辉光效果

    1.创建两个球体,一个一小,一个略大的作为他的辉光 2.作为辉光的球体从内到外片元透明度逐渐减小(线性减小或是指数减小都可以) 3.将覆盖原物体的部分丢弃 辉光效果 var vertexShader ...

  4. 使用threejs实现地球辉光和大气层效果

    使用threejs实现地球辉光和大气层效果 使用插件方式 在github上有glow的插件可以使用,效果不错. 地址:https://github.com/jeromeetienne/threex.g ...

  5. 人类登月的幕后英雄,又推出了太空中第一位AI暖男

    人类登月计划中的幕后英雄 也许有敏感的读者朋友已经察觉到,自从迈入2019年以来,有关登月和太空的话题明显增多. 原因其实很简单:距离1969年7月20日人类首次踏足月球,2019年正好是人类登月50 ...

  6. 气泡图在开源监控工具中的应用效果

    气泡图在开源监控工具中的应用 Bubble Chart(气泡图),使用气泡图便于在行.列两个方向同时进行比较.气泡图也清晰地告诉哪里大.哪里小.如图1~图5为你展示几款开源监控工具在使用气泡图时的应用 ...

  7. Android关于绘图中Shader 的效果(中级)

    Android关于绘图中Shader 的效果(中级) 关于绘图中Shader 的效果 本人对API中Shaser的参数理解不够深刻 所以只能测试来看 效果一下就看出来了 Shader mShade=n ...

  8. DevExpress中透明玻璃效果

    Aero玻璃效果 下图左是DevExpress无玻璃效果,图右是Windows自带玻璃效果. Windows Aero 是从 Windows Vista 开始使用的新型用户界面,透明玻璃感让用户一眼贯 ...

  9. 网络营销专员浅析如何判断网络营销中网站优化效果几何?

    对于新老站长来说在网站网络营销推广过程中时常都会针对行业内类似同行网站进行网站优化效果分析,并针对其他网站重点优势取长补短以此来提升自家网站优化水平,大大提升企业网站在搜索引擎中的网站排名和权重指数. ...

最新文章

  1. 一次授权测试引起的全域名沦陷
  2. No report created. Execute hbck_chore_run in hbase shell to generate a new sub-report.
  3. 内存泄漏以及常见的解决方法
  4. python筛选csv数据_pandas数据筛选和csv操作的实现方法
  5. IDEA 导入Weka的Maven依赖jar包
  6. Linux -chattr -隐藏权限(附加权限)
  7. 全面分析RHCE7(红帽认证工程师)考试题目之 ----NFS文件共享 篇
  8. HQL左外连接及排序
  9. Android开发之ProgressBar控件(实现加载动画与条形进度条)
  10. linux %s替换命令,linux vi 替换命令
  11. 经典教材《晶体管电路设计》
  12. excel删除无尽空白行_「EXCEL」大量空白行如何删除?看我发大招
  13. 农历及农历闰月的计算方法
  14. 6-ipv6基础知识之-有状态和无状态自动配置
  15. audio不能在苹果手机正常播放的坑,希望可以帮助大家跳过坑
  16. wifi发射功率查看和设置
  17. randn与rand的区别
  18. JavaScript的数组练习
  19. gtav登录请确认不是机器人_关于GTA5登录要接收R星验证码
  20. xenserver 安装新硬盘_xenserver 添加和卸载硬盘

热门文章

  1. 地下城与勇士自动搬砖之使用yolo做DNF游戏辅助
  2. 魔兽争霸3-游戏简单剖析 No.1 单位
  3. JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序)
  4. 软件质量测试的书pdf,软件质量检测.pdf
  5. 森海塞尔PXC 250主动降噪耳机静静地在努力!
  6. message:Error: 系统错误,错误码:80051,source size 3962KB exceed max limit 2MB [20220819 14:42:38][wx21e41af1
  7. 硬件基础知识---如何设计一个三极管放大电路
  8. 【赠书】工具用得好,头发掉的少!
  9. 世界经典名曲100首
  10. 【matlab初学】旋转曲面绘制