69 lines
1.7 KiB
HLSL
69 lines
1.7 KiB
HLSL
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
#include "/Engine/Public/Platform.ush"
|
|
|
|
#define NOISE_SIMPLEX 0
|
|
#define NOISE_PERLIN 1
|
|
#define NOISE_WORLEY1 2
|
|
#define NOISE_WORLEY2 3
|
|
#define NOISE_WORLEY3 4
|
|
|
|
#include "/Engine/Public/Platform.ush"
|
|
#include "/Plugin/TextureGraph/TileInfo.ush"
|
|
|
|
#ifndef NOISE_TYPE
|
|
#define NOISE_TYPE NOISE_SIMPLEX
|
|
#endif
|
|
|
|
#if NOISE_TYPE == NOISE_SIMPLEX
|
|
#include "/Plugin/TextureGraph/Noise/Noise_Simplex.ush"
|
|
#elif NOISE_TYPE == NOISE_PERLIN
|
|
#include "/Plugin/TextureGraph/Noise/Noise_Perlin.ush"
|
|
#else
|
|
#include "/Plugin/TextureGraph/Noise/Noise_Voronoise.ush"
|
|
#endif
|
|
|
|
int NoiseType;
|
|
|
|
float Seed;
|
|
float Amplitude;
|
|
float Frequency;
|
|
int Octaves;
|
|
float Lacunarity;
|
|
float Persistance;
|
|
float Invert;
|
|
|
|
float4 FSH_NoiseMask(float2 uv : TEXCOORD0) : SV_Target0
|
|
{
|
|
float2 layer_uv = TileInfo_fromCurrentTileToLayer(uv);
|
|
|
|
layer_uv.y = 1.0 - layer_uv.y; /// TODO: Check the need for mirrored vertically
|
|
|
|
|
|
FBMDesc fbm;
|
|
fbm.Seed = Seed;
|
|
fbm.Amplitude = Amplitude;
|
|
fbm.Frequency = Frequency;
|
|
fbm.Octaves = Octaves;
|
|
fbm.Lacunarity = Lacunarity;
|
|
fbm.Persistance = Persistance;
|
|
|
|
float maskVal =
|
|
#if NOISE_TYPE == NOISE_SIMPLEX
|
|
FBM_Simplex4D(layer_uv, fbm);
|
|
#elif NOISE_TYPE == NOISE_PERLIN
|
|
FBM_Perlin4D(layer_uv, fbm);
|
|
#elif NOISE_TYPE == NOISE_WORLEY1
|
|
FBM_Voronoise4D_F1_F0_Squared(layer_uv, fbm);
|
|
#elif NOISE_TYPE == NOISE_WORLEY2
|
|
FBM_Voronoise4D_F0_Squared(layer_uv, fbm);
|
|
#elif NOISE_TYPE == NOISE_WORLEY3
|
|
FBM_Voronoise4D_F1_Squared(layer_uv, fbm);
|
|
#endif
|
|
|
|
maskVal += 0.5; // we offset the midpoint of noise to 0.5 for all types of noises
|
|
|
|
maskVal = lerp(maskVal, 1 - maskVal, Invert); // Apply invert eventually
|
|
|
|
return float4(maskVal, maskVal, maskVal, 1.0);
|
|
}
|