Voronoi Noise 原理
生活随笔
收集整理的這篇文章主要介紹了
Voronoi Noise 原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、隨機數當作偏移量
o = frac(sin § *43758.5453);
2、切割小圓圈
0~1重復的數字變為0-1-0的圓圈
完整代碼:
// Made with Amplify Shader Editor // Available at the Unity Asset Store - http://u3d.as/y3X Shader "TestS" {Properties{_Size("Size", Float) = 36.6[HideInInspector] _texcoord( "", 2D ) = "white" {}[HideInInspector] __dirty( "", Int ) = 1}SubShader{Tags{ "RenderType" = "Opaque" "Queue" = "Geometry+0" }Cull BackCGPROGRAM#pragma target 3.0#pragma surface surf Standard keepalpha addshadow fullforwardshadows struct Input{float2 uv_texcoord;};uniform float _Size;float2 voronoihash1( float2 p ){p = float2( dot( p, float2( 127.1, 311.7 ) ), dot( p, float2( 269.5, 183.3 ) ) );return frac( sin( p ) *43758.5453);}float voronoi1( float2 v, float time, inout float2 id, float smoothness ){float2 n = floor( v );float2 f = frac( v );float F1 = 8.0;float F2 = 8.0; float2 mr = 0; float2 mg = 0;for ( int j = -1; j <= 1; j++ ){for ( int i = -1; i <= 1; i++ ){float2 g = float2( i, j );float2 o = voronoihash1( n + g );o = ( sin( time + o * 6.2831 ) * 0.5 + 0.5 ); float2 r = g - f + o;float d = 0.5 * dot( r, r );if( d<F1 ) {F2 = F1;F1 = d; mg = g; mr = r; id = o;} else if( d<F2 ) {F2 = d;}}}return F1;}void surf( Input i , inout SurfaceOutputStandard o ){float time1 = 0.0;float2 coords1 = ( i.uv_texcoord * _Size ) * 1.0;float2 id1 = 0;float voroi1 = voronoi1( coords1, time1,id1, 0 );float3 temp_cast_0 = (voroi1).xxx;o.Albedo = temp_cast_0;o.Alpha = 1;}ENDCG}Fallback "Diffuse"CustomEditor "ASEMaterialInspector" }效果:
總結
以上是生活随笔為你收集整理的Voronoi Noise 原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中兴V889DRoot后可删和不可删
- 下一篇: 推荐三个可以裁剪视频的软件给你