Shader-应用V&F实现透明材质
来源:互联网 发布:淘宝哪家羽绒服是正品 编辑:程序博客网 时间:2024/06/06 12:33
看到风宇冲实现的地球很帅。他写的这个程序很精妙,将地球和云的颜色做一个插值,作为此像素的颜色值,很妙。先膜拜一下大神嘛!
http://blog.sina.com.cn/s/blog_471132920101d6xb.html
不过,我今天写的shader也是实现相同的效果,咱的思路就很常规:地球作为不透明物体,先渲染。云层作为透明体后渲染。废话不多说开始!
Earth.shader
Shader "Custom/Earth" {Properties {_MainTex ("Texture", 2D) = "white" { }}SubShader {Tags{"Queue" = "Geometry" "RenderType"="Opaque"}Pass {CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"sampler2D _MainTex;struct v2f {float4 pos : SV_POSITION;float2 uv : TEXCOORD0;};float4 _MainTex_ST;v2f vert (appdata_base v){v2f o;// 视口上的位置o.pos = mul (UNITY_MATRIX_MVP, v.vertex);// 贴图纹理坐标o.uv = TRANSFORM_TEX (v.texcoord, _MainTex);return o;}half4 frag (v2f i) : COLOR{// 获得地球贴图的uv x即横向在动float u = i.uv.x + -0.1*_Time;float2 x=float2(u , i.uv.y);half4 texcol = tex2D (_MainTex, x);return texcol;}ENDCG}}}
Cloud.shader
Shader "Custom/Cloud" {Properties {_MainTex ("Texture", 2D) = "white" { }}SubShader {Tags{ "Queue"="Transparent" "RenderType"="Transparent" }Pass { Blend SrcAlpha OneMinusSrcAlpha CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"sampler2D _MainTex;struct v2f {float4 pos : SV_POSITION;float2 uv : TEXCOORD0;};float4 _MainTex_ST;v2f vert (appdata_base v){v2f o;// 视口上的位置o.pos = mul (UNITY_MATRIX_MVP, v.vertex);// 贴图纹理坐标o.uv = TRANSFORM_TEX (v.texcoord, _MainTex);return o;}half4 frag (v2f i) : COLOR{// 获得地球贴图的uv x即横向在动float u = i.uv.x + -0.2*_Time;float2 x = float2 (u, i.uv.y);half4 texcol = tex2D (_MainTex, x);texcol = float4(1, 1, 1, 0) * (texcol.x);if (texcol.x + texcol.y + texcol.z > 0.95){texcol = half4(texcol.xyz, 0.5);}return texcol;}ENDCG}}}
ok之所以,texcol这一步,是因为给的图是多彩的,像热成像图。经过了
texcol = float4(1, 1, 1, 0) * (texcol.x);转化成了黑白图,其中白色为云效果。
然后再判断一下,即可。
思路上是没问题的,可是当我写出大部分代码的时候,总是不出效果。
怎样在0没有云的地方透明。后来我加入了Blend SrcAlpha OneMinusSrcAlpha 就出了效果
ok。剩下的 就是百度他的作用了,这就不是我的工作了。哈哈
http://download.csdn.net/detail/lihuozhiling/8365965
0 0
- Shader-应用V&F实现透明材质
- Shader-应用surf实现透明材质
- Shader山下(五)使用表面着色器实现透明材质
- 【猫猫的Unity Shader之旅】之透明材质
- 材质动态加载贴图实现灰色效果 shader
- 【Unity3D学习笔记】unity5.x中的双面材质shader实现
- Shader实现法线映射、透明效果
- 外发光材质Shader
- 【UE4 shader】结冰材质
- 高密度光滑透明材质
- UE4成批处理透明材质
- 毛玻璃,磨砂玻璃材质,shader笔记
- unity3d设置材质的shader
- UnityShader实例:遮挡透明材质
- Unity透明材质&(内侧)描边
- 简单的透明shader
- 一个透明的shader
- 简单的透明shader
- c语言基础-分支语句和循环语句
- 九度 题目1205:N阶楼梯上楼问题
- 360ie7模式下的一个兼容
- JAVA学习路线
- 字符串判断子串存在性
- Shader-应用V&F实现透明材质
- hibernate连接据库的设置
- HTML网页布局方式
- HTTP错误500.19解决方案
- 理解---Android 向右滑动销毁(finish)Activity, 随着手势的滑动而滑动的效果(大神博客)
- Android 颜色选择器之ColorPickerDialog剖析
- 浅谈多线程编程
- 【linux教程】rpm包制作指南
- 终端下Vim使用VimIm插件时按<CTRL-^>和<CTRL-_>无反应或完全无法使用的解决方法