282 lines
No EOL
9.8 KiB
C++
282 lines
No EOL
9.8 KiB
C++
// Copyright 2020 Phyronnaz
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "VoxelNoiseNodesBase.h"
|
|
#include "VoxelNoiseNodesMacros.h"
|
|
#include "VoxelNoiseNodes.generated.h"
|
|
|
|
// 2D Value Noise
|
|
UCLASS(DisplayName = "2D Value Noise", Category = "Noise|Value Noise")
|
|
class VOXELGRAPH_API UVoxelNode_2DValueNoise : public UVoxelNode_NoiseNodeWithDerivative
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_DERIVATIVE_DIM2(GetValue)
|
|
};
|
|
|
|
// 2D Value Noise Fractal
|
|
UCLASS(DisplayName = "2D Value Noise Fractal", Category = "Noise|Value Noise")
|
|
class VOXELGRAPH_API UVoxelNode_2DValueNoiseFractal : public UVoxelNode_NoiseNodeWithDerivativeFractal
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_FRACTAL_DERIVATIVE_DIM2(GetValueFractal)
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// 2D Perlin Noise
|
|
UCLASS(DisplayName = "2D Perlin Noise", Category = "Noise|Perlin Noise")
|
|
class VOXELGRAPH_API UVoxelNode_2DPerlinNoise : public UVoxelNode_NoiseNodeWithDerivative
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_DERIVATIVE_DIM2(GetPerlin)
|
|
};
|
|
|
|
// 2D Perlin Noise Fractal
|
|
UCLASS(DisplayName = "2D Perlin Noise Fractal", Category = "Noise|Perlin Noise")
|
|
class VOXELGRAPH_API UVoxelNode_2DPerlinNoiseFractal : public UVoxelNode_NoiseNodeWithDerivativeFractal
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_FRACTAL_DERIVATIVE_DIM2(GetPerlinFractal)
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// 2D Simplex Noise
|
|
UCLASS(DisplayName = "2D Simplex Noise", Category = "Noise|Simplex Noise")
|
|
class VOXELGRAPH_API UVoxelNode_2DSimplexNoise : public UVoxelNode_NoiseNode
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_DIM2(GetSimplex)
|
|
};
|
|
|
|
// 2D Simplex Noise Fractal
|
|
UCLASS(DisplayName = "2D Simplex Noise Fractal", Category = "Noise|Simplex Noise")
|
|
class VOXELGRAPH_API UVoxelNode_2DSimplexNoiseFractal : public UVoxelNode_NoiseNodeFractal
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_FRACTAL_DIM2(GetSimplexFractal)
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// 2D Cubic Noise
|
|
UCLASS(DisplayName = "2D Cubic Noise", Category = "Noise|Cubic Noise")
|
|
class VOXELGRAPH_API UVoxelNode_2DCubicNoise : public UVoxelNode_NoiseNode
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_DIM2(GetCubic)
|
|
};
|
|
|
|
// 2D Cubic Noise Fractal
|
|
UCLASS(DisplayName = "2D Cubic Noise Fractal", Category = "Noise|Cubic Noise")
|
|
class VOXELGRAPH_API UVoxelNode_2DCubicNoiseFractal : public UVoxelNode_NoiseNodeFractal
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_FRACTAL_DIM2(GetCubicFractal)
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// 3D Value Noise
|
|
UCLASS(DisplayName = "3D Value Noise", Category = "Noise|Value Noise")
|
|
class VOXELGRAPH_API UVoxelNode_3DValueNoise : public UVoxelNode_NoiseNodeWithDerivative
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_DERIVATIVE_DIM3(GetValue)
|
|
};
|
|
|
|
// 3D Value Noise Fractal
|
|
UCLASS(DisplayName = "3D Value Noise Fractal", Category = "Noise|Value Noise")
|
|
class VOXELGRAPH_API UVoxelNode_3DValueNoiseFractal : public UVoxelNode_NoiseNodeWithDerivativeFractal
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_FRACTAL_DERIVATIVE_DIM3(GetValueFractal)
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// 3D Perlin Noise
|
|
UCLASS(DisplayName = "3D Perlin Noise", Category = "Noise|Perlin Noise")
|
|
class VOXELGRAPH_API UVoxelNode_3DPerlinNoise : public UVoxelNode_NoiseNodeWithDerivative
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_DERIVATIVE_DIM3(GetPerlin)
|
|
};
|
|
|
|
// 3D Perlin Noise Fractal
|
|
UCLASS(DisplayName = "3D Perlin Noise Fractal", Category = "Noise|Perlin Noise")
|
|
class VOXELGRAPH_API UVoxelNode_3DPerlinNoiseFractal : public UVoxelNode_NoiseNodeWithDerivativeFractal
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_FRACTAL_DERIVATIVE_DIM3(GetPerlinFractal)
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// 3D Simplex Noise
|
|
UCLASS(DisplayName = "3D Simplex Noise", Category = "Noise|Simplex Noise")
|
|
class VOXELGRAPH_API UVoxelNode_3DSimplexNoise : public UVoxelNode_NoiseNode
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_DIM3(GetSimplex)
|
|
};
|
|
|
|
// 3D Simplex Noise Fractal
|
|
UCLASS(DisplayName = "3D Simplex Noise Fractal", Category = "Noise|Simplex Noise")
|
|
class VOXELGRAPH_API UVoxelNode_3DSimplexNoiseFractal : public UVoxelNode_NoiseNodeFractal
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_FRACTAL_DIM3(GetSimplexFractal)
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// 3D Cubic Noise
|
|
UCLASS(DisplayName = "3D Cubic Noise", Category = "Noise|Cubic Noise")
|
|
class VOXELGRAPH_API UVoxelNode_3DCubicNoise : public UVoxelNode_NoiseNode
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_DIM3(GetCubic)
|
|
};
|
|
|
|
// 3D Cubic Noise Fractal
|
|
UCLASS(DisplayName = "3D Cubic Noise Fractal", Category = "Noise|Cubic Noise")
|
|
class VOXELGRAPH_API UVoxelNode_3DCubicNoiseFractal : public UVoxelNode_NoiseNodeFractal
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_FRACTAL_DIM3(GetCubicFractal)
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
UCLASS(Abstract)
|
|
class VOXELGRAPH_API UVoxelNode_CellularNoise : public UVoxelNode_NoiseNode
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
UPROPERTY(EditAnywhere, Category = "Cellular Noise settings")
|
|
EVoxelCellularDistanceFunction DistanceFunction;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "Cellular Noise settings")
|
|
EVoxelCellularReturnType ReturnType;
|
|
|
|
UPROPERTY(EditAnywhere, Category = "Cellular Noise settings", meta = (UIMin = 0, UIMax = 0.5))
|
|
float Jitter = 0.45;
|
|
};
|
|
|
|
|
|
// 2D Cellular Noise
|
|
UCLASS(DisplayName = "2D Cellular Noise", Category = "Noise|Cellular Noise")
|
|
class VOXELGRAPH_API UVoxelNode_2DCellularNoise : public UVoxelNode_CellularNoise
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_DIM_IMPL(2,,, GetCellular, FVoxelCellularNoiseComputeNode)
|
|
};
|
|
|
|
// 3D Cellular Noise
|
|
UCLASS(DisplayName = "3D Cellular Noise", Category = "Noise|Cellular Noise")
|
|
class VOXELGRAPH_API UVoxelNode_3DCellularNoise : public UVoxelNode_CellularNoise
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_DIM_IMPL(3,,, GetCellular, FVoxelCellularNoiseComputeNode)
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// 2D IQ Noise: uses the derivative to "smooth" the fractals.
|
|
// For more details:
|
|
// http://www.iquilezles.org/www/articles/morenoise/morenoise.htm
|
|
// http://www.decarpentier.nl/scape-procedural-basics
|
|
UCLASS(DisplayName = "2D IQ Noise", Category = "Noise|IQ Noise")
|
|
class VOXELGRAPH_API UVoxelNode_2DIQNoise : public UVoxelNode_2DIQNoiseBase
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_DIM_IMPL(2, _DERIV, _FRACTAL, IQNoise, FVoxel2DIQNoiseComputeNode)
|
|
};
|
|
|
|
// 3D IQ Noise: uses the derivative to "smooth" the fractals.
|
|
// For more details:
|
|
// http://www.iquilezles.org/www/articles/morenoise/morenoise.htm
|
|
// http://www.decarpentier.nl/scape-procedural-basics
|
|
UCLASS(DisplayName = "3D IQ Noise", Category = "Noise|IQ Noise")
|
|
class VOXELGRAPH_API UVoxelNode_3DIQNoise : public UVoxelNode_3DIQNoiseBase
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_DIM_IMPL(3, _DERIV, _FRACTAL, IQNoise, FVoxel3DIQNoiseComputeNode)
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
UCLASS(Abstract)
|
|
class VOXELGRAPH_API UVoxelNode_CraterNoise : public UVoxelNode_NoiseNode
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
UPROPERTY(EditAnywhere, Category = "Crater Noise settings", meta = (UIMin = 0, UIMax = 0.5))
|
|
float Jitter = 0.45;
|
|
|
|
// Higher value = flatter crater borders
|
|
// 0 to disable (much faster disabled)
|
|
UPROPERTY(EditAnywhere, Category = "Crater Noise settings")
|
|
float FalloffExponent = 0.f;
|
|
};
|
|
|
|
UCLASS(Abstract)
|
|
class VOXELGRAPH_API UVoxelNode_CraterNoiseFractal : public UVoxelNode_NoiseNodeFractal
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
UPROPERTY(EditAnywhere, Category = "Crater Noise settings", meta = (UIMin = 0, UIMax = 0.5))
|
|
float Jitter = 0.45;
|
|
|
|
// Higher value = flatter crater borders
|
|
// 0 to disable (much faster disabled)
|
|
UPROPERTY(EditAnywhere, Category = "Crater Noise settings")
|
|
float FalloffExponent = 0.f;
|
|
};
|
|
|
|
|
|
// 2D Crater Noise
|
|
UCLASS(DisplayName = "2D Crater Noise", Category = "Noise|Crater Noise")
|
|
class VOXELGRAPH_API UVoxelNode_2DCraterNoise : public UVoxelNode_CraterNoise
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_DIM_IMPL(2,,, GetCrater, FVoxelCraterNoiseComputeNode)
|
|
};
|
|
|
|
// 3D Crater Noise
|
|
UCLASS(DisplayName = "3D Crater Noise", Category = "Noise|Crater Noise")
|
|
class VOXELGRAPH_API UVoxelNode_3DCraterNoise : public UVoxelNode_CraterNoise
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_DIM_IMPL(3,,, GetCrater, FVoxelCraterNoiseComputeNode)
|
|
};
|
|
|
|
// 2D Crater Noise Fractal
|
|
UCLASS(DisplayName = "2D Crater Noise Fractal", Category = "Noise|Crater Noise")
|
|
class VOXELGRAPH_API UVoxelNode_2DCraterNoiseFractal : public UVoxelNode_CraterNoiseFractal
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_DIM_IMPL(2,, _FRACTAL, GetCraterFractal, FVoxelCraterNoiseFractalComputeNode)
|
|
};
|
|
|
|
// 3D Crater Noise Fractal
|
|
UCLASS(DisplayName = "3D Crater Noise Fractal", Category = "Noise|Crater Noise")
|
|
class VOXELGRAPH_API UVoxelNode_3DCraterNoiseFractal : public UVoxelNode_CraterNoiseFractal
|
|
{
|
|
GENERATED_BODY()
|
|
GENERATED_NOISENODE_BODY_DIM_IMPL(3,, _FRACTAL, GetCraterFractal, FVoxelCraterNoiseFractalComputeNode)
|
|
}; |