213 lines
5.0 KiB
HLSL
213 lines
5.0 KiB
HLSL
|
// #ifndef UNITY_TERRAIN_TOOL_NOISE_INC
|
||
|
// #define UNITY_TERRAIN_TOOL_NOISE_INC
|
||
|
|
||
|
// /**************************************************************************
|
||
|
|
||
|
// Includes
|
||
|
|
||
|
// **************************************************************************/
|
||
|
|
||
|
// #include "NoiseCommon.hlsl"
|
||
|
// #include "NoiseImpl.hlsl"
|
||
|
|
||
|
// /**************************************************************************
|
||
|
|
||
|
// Fractal Functions
|
||
|
|
||
|
// **************************************************************************/
|
||
|
|
||
|
// float fbm( float p, FractalParams f )
|
||
|
// {
|
||
|
// float n = 0;
|
||
|
|
||
|
// for( float i = 0; i < f.octaves; ++i )
|
||
|
// {
|
||
|
// n += f.amplitude * noise_impl( p * f.frequency );
|
||
|
// f.frequency *= f.lacunarity;
|
||
|
// f.amplitude *= f.persistence;
|
||
|
// }
|
||
|
|
||
|
// return n;
|
||
|
// }
|
||
|
|
||
|
// float fbm( float2 p, FractalParams f )
|
||
|
// {
|
||
|
// float n = 0;
|
||
|
|
||
|
// for( float i = 0; i < f.octaves; ++i )
|
||
|
// {
|
||
|
// n += f.amplitude * noise_impl( p * f.frequency );
|
||
|
// f.frequency *= f.lacunarity;
|
||
|
// f.amplitude *= f.persistence;
|
||
|
// }
|
||
|
|
||
|
// return n;
|
||
|
// }
|
||
|
|
||
|
// float fbm( float3 p, FractalParams f )
|
||
|
// {
|
||
|
// float n = 0;
|
||
|
|
||
|
// for( float i = 0; i < f.octaves; ++i )
|
||
|
// {
|
||
|
// n += f.amplitude * noise_impl( p * f.frequency );
|
||
|
// f.frequency *= f.lacunarity;
|
||
|
// f.amplitude *= f.persistence;
|
||
|
// }
|
||
|
|
||
|
// return n;
|
||
|
// }
|
||
|
|
||
|
// float fbm( float4 p, FractalParams f )
|
||
|
// {
|
||
|
// float n = 0;
|
||
|
|
||
|
// for( float i = 0; i < f.octaves; ++i )
|
||
|
// {
|
||
|
// n += f.amplitude * noise_impl( p * f.frequency );
|
||
|
// f.frequency *= f.lacunarity;
|
||
|
// f.amplitude *= f.persistence;
|
||
|
// }
|
||
|
|
||
|
// return n;
|
||
|
// }
|
||
|
|
||
|
// float fbm( float p )
|
||
|
// {
|
||
|
// return fbm( p, GetFractalParams() );
|
||
|
// }
|
||
|
|
||
|
// float fbm( float2 p )
|
||
|
// {
|
||
|
// return fbm( p, GetFractalParams() );
|
||
|
// }
|
||
|
|
||
|
// float fbm( float3 p )
|
||
|
// {
|
||
|
// return fbm( p, GetFractalParams() );
|
||
|
// }
|
||
|
|
||
|
// float fbm( float4 p )
|
||
|
// {
|
||
|
// return fbm( p, GetFractalParams() );
|
||
|
// }
|
||
|
|
||
|
// /**************************************************************************
|
||
|
|
||
|
// Noise Functions
|
||
|
// - Call these from your shader
|
||
|
|
||
|
// **************************************************************************/
|
||
|
|
||
|
// /**************************************************************************
|
||
|
// Noise Functions - Fractal, Non-Warped
|
||
|
// **************************************************************************/
|
||
|
|
||
|
// float noise( float1 pos, FractalParams fractal )
|
||
|
// {
|
||
|
// return fbm( pos, fractal );
|
||
|
// }
|
||
|
|
||
|
// float noise( float2 pos, FractalParams fractal )
|
||
|
// {
|
||
|
// return fbm( pos, fractal );
|
||
|
// }
|
||
|
|
||
|
// float noise( float3 pos, FractalParams fractal )
|
||
|
// {
|
||
|
// return fbm( pos, fractal );
|
||
|
// }
|
||
|
|
||
|
// float noise( float4 pos, FractalParams fractal )
|
||
|
// {
|
||
|
// return fbm( pos, fractal );
|
||
|
// }
|
||
|
|
||
|
// /**************************************************************************
|
||
|
// Noise Functions - Fractal, Warped
|
||
|
// **************************************************************************/
|
||
|
|
||
|
// float noise( float pos, FractalParams fractal, WarpParams warp )
|
||
|
// {
|
||
|
// // do warping
|
||
|
// for ( float i = 0; i < warp.iterations; ++i )
|
||
|
// {
|
||
|
// float q = fbm( pos + warp.offset.x );
|
||
|
// pos = pos + warp.strength * q;
|
||
|
// }
|
||
|
|
||
|
// float f = fbm( pos, fractal );
|
||
|
|
||
|
// return f;
|
||
|
// }
|
||
|
|
||
|
// float noise( float2 pos, FractalParams fractal, WarpParams warp )
|
||
|
// {
|
||
|
// // do warping
|
||
|
// for ( float i = 0; i < warp.iterations; ++i )
|
||
|
// {
|
||
|
// float2 q = float2( fbm( pos ), fbm( pos + warp.offset.xy ) );
|
||
|
// pos = pos + warp.strength * q;
|
||
|
// }
|
||
|
|
||
|
// float f = fbm( pos, fractal );
|
||
|
|
||
|
// return f;
|
||
|
// }
|
||
|
|
||
|
// float noise( float3 pos, FractalParams fractal, WarpParams warp )
|
||
|
// {
|
||
|
// float q;
|
||
|
// // do warping
|
||
|
// for ( float i = 0; i < warp.iterations; ++i )
|
||
|
// {
|
||
|
// q = float3( fbm( pos.xyz ),
|
||
|
// fbm( pos.xyz + warp.offset.xyz ),
|
||
|
// fbm( pos.xyz + float3( warp.offset.x, warp.offset.y, 0 ) ) );
|
||
|
// pos = pos + warp.strength * q;
|
||
|
// }
|
||
|
|
||
|
// float f = fbm( pos, fractal );
|
||
|
|
||
|
// return f;
|
||
|
// }
|
||
|
|
||
|
// float noise( float4 pos, FractalParams fractal, WarpParams warp )
|
||
|
// {
|
||
|
// // do warping
|
||
|
// // for ( float i = 0; i < warp.iterations; ++i )
|
||
|
// // {
|
||
|
// // float4 q = float4( fbm( pos ), fbm( pos + warp.offset.xyzw ) );
|
||
|
// // pos = pos + warp.strength * q;
|
||
|
// // }
|
||
|
|
||
|
// float f = fbm( pos, fractal );
|
||
|
|
||
|
// return f;
|
||
|
// }
|
||
|
|
||
|
// /**************************************************************************
|
||
|
// Noise Functions - Non-Fractal, Non-Warped
|
||
|
// **************************************************************************/
|
||
|
|
||
|
// float noise( float pos )
|
||
|
// {
|
||
|
// return noise_impl( pos );
|
||
|
// }
|
||
|
|
||
|
// float noise( float2 pos )
|
||
|
// {
|
||
|
// return noise_impl( pos );
|
||
|
// }
|
||
|
|
||
|
// float noise( float3 pos )
|
||
|
// {
|
||
|
// return noise_impl( pos );
|
||
|
// }
|
||
|
|
||
|
// float noise( float4 pos )
|
||
|
// {
|
||
|
// return noise_impl( pos );
|
||
|
// }
|
||
|
|
||
|
// #endif // UNITY_TERRAIN_TOOL_NOISE_INC
|