Unity Shader 實現雨天的水面漣漪效果
Unity Shader 實現雨天的水面漣漪效果
Shader "Custom/Ripple" {Properties {
_Color ( "Color", Color) = ( 1, 1, 1, 1)
_MainTex ( "Albedo (RGB)", 2D) = "white" {}
_Glossiness ( "Smoothness", Range( 0, 1)) = 0.5
_Metallic ( "Metallic", Range( 0, 1)) = 0.0
_RippleTex( "RippleTex", 2D) = "white" {}
_RippleScale( "RippleScale",Range( 1, 10)) = 1
}
SubShader {
Tags { "RenderType"= "Opaque" }
LOD 200
CGPROGRAM
// Physically based Standard lighting model, and enable shadows on all light types
# pragma surface surf Standard fullforwardshadows
# pragma target 3.0
# define PI 3.141592653
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
half2 texcoord;
};
half _Glossiness;
half _Metallic;
fixed4 _Color;
sampler2D _RippleTex;
float _RippleScale;
UNITY_INSTANCING_BUFFER_START(Props)
UNITY_INSTANCING_BUFFER_END(Props)
//計算波紋的主函式
float3 ComputeRipple( float2 uv, float t)
{
//波紋貼圖取樣,並把取樣的高度值擴充套件到-1到1。
float4 ripple = tex2D(_RippleTex, uv);
ripple.yz = ripple.yz * 2.0 - 1.0;
//獲取波紋的時間,從A通道獲取不同的波紋時間,
float dropFrac = frac(ripple.a + t);
//把時間限制在R通道內
float timeFrac = dropFrac - 1.0 + ripple.x;
//做淡出處理
float dropFactor = 1-saturate( dropFrac);
//計算最終的高度,用一個sin計算出隨時間的振幅,修改一下值就知道什麼效果了
float final = dropFactor* sin(clamp(timeFrac * 9.0, 0.0, 4.0) * PI);
return float3(ripple.yz * final, 1.0);
}
void surf ( Input IN, inout SurfaceOutputStandard o) {
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb;
//呼叫方法,獲取高度。這裡我懶得用一個新uv,索性直接用的主貼圖UV
float3 ripple = ComputeRipple(IN.uv_MainTex / _RippleScale, _Time.y);
// Metallic and smoothness come from slider variables
o.Metallic = _Metallic;
o.Smoothness = _Glossiness;
//賦值到法線上
o.Normal = ripple;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70019421/viewspace-2906020/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 漪漣波紋效果 css3 animationCSSS3
- Unity Shader 00 - 梳理 Unity Shader 的基本結構Unity
- Unity Shader基於視差對映的雲海效果Unity
- Unity Shader之磨砂玻璃與水霧玻璃效果Unity
- 用Unity實現彈反效果Unity
- IAS:漣漪效應——消費者對內容質量的看法
- Unity Shader- UV動畫原理及簡易實現Unity動畫
- 工業革命的秋之漣漪(二):從飛槳,走向深度學習產業實踐深度學習產業
- Unity實現“籠中窺夢”的渲染效果Unity
- RSAC 2020 | “Human Element”新風向標帶來的安全行業漣漪行業
- 工業革命的秋之漣漪(一):百度飛槳&AI引擎AI
- Unity——ShaderLab實現玻璃和鏡子效果Unity
- 工業革命的秋之漣漪(三):飛槳,划行在智慧經濟之海
- unity 實現輪盤方式的按鈕滾動效果Unity
- Unity使用DOTween實現金幣飛入效果Unity
- Unity 的 Surface Shader有關記錄Unity
- unity 統一替換shaderUnity
- unity shader 溶解,上下左右,cutoffUnity
- 《Unity Shader入門精要》自學筆記(五)第八章 透明效果Unity筆記
- Unity5 PBR如何實現天氣系統的雪景效果Unity
- Unity 高清渲染管線 ShaderGraph 實現簡單的表面水流效果Unity
- Unity3D學習筆記3——Unity Shader的初步使用Unity3D筆記
- 使用Unity著色器實現精靈(Sprite)塗鴉效果Unity
- javascript js WebGL WebGL2 後期處理特效之點選水波紋漣漪例子JavaScriptJSWeb特效
- Unity&Shader常用函式的使用方法Unity函式
- Unity Shader 入門精要 筆記(1)Unity筆記
- Unity3D 透明物體ShaderUnity3D
- 【unity小技巧】實現FPS武器的瞄準放大效果(UGUI實現反向遮罩,全屏遮擋,區域性鏤空效果)UnityUGUI遮罩
- Shader從入門到跑路:實作螢幕扭曲效果
- BRDF理論及shader實現(下)
- Unity Shader-後處理:Bloom全屏泛光UnityOOM
- Unity Shader 基於光照圖的簡易晝夜變化Unity
- Unity Shader之雙面材質和多Pass渲染Unity
- Unity中實現人形角色的攀爬Unity
- Unity實現簡單的物件池Unity物件
- 實現聚焦效果
- canvas實現 漂亮的下雨效果Canvas
- Elasticsearch實現Mysql的Like效果ElasticsearchMySql