mirror of
https://github.com/Eragon-Brisingr/UShaderLab.git
synced 2026-09-15 23:04:37 +00:00
45 lines
3.6 KiB
C++
45 lines
3.6 KiB
C++
// Copyright UShaderLab. All Rights Reserved.
|
|
//
|
|
// Particle / sprite intrinsics. These only produce meaningful values on particle vertex factories;
|
|
// the instance enables the matching usage, so there is no base-level usage gate here.
|
|
|
|
#include "ShaderLabIntrinsics.h"
|
|
|
|
#include "Materials/MaterialExpressionParticleColor.h"
|
|
#include "Materials/MaterialExpressionParticleDirection.h"
|
|
#include "Materials/MaterialExpressionParticleMacroUV.h"
|
|
#include "Materials/MaterialExpressionParticleMotionBlurFade.h"
|
|
#include "Materials/MaterialExpressionParticlePositionWS.h"
|
|
#include "Materials/MaterialExpressionParticleRadius.h"
|
|
#include "Materials/MaterialExpressionParticleRandom.h"
|
|
#include "Materials/MaterialExpressionParticleRelativeTime.h"
|
|
#include "Materials/MaterialExpressionParticleSize.h"
|
|
#include "Materials/MaterialExpressionParticleSpeed.h"
|
|
#include "Materials/MaterialExpressionParticleSpriteRotation.h"
|
|
#include "Materials/MaterialExpressionParticleSubUVProperties.h"
|
|
#include "Materials/MaterialExpressionSphericalParticleOpacity.h"
|
|
|
|
void RegisterParticleIntrinsics(FShaderLabIntrinsicRegistry& Registry)
|
|
{
|
|
using namespace ShaderLabIntrinsic_Private;
|
|
using EFreq = EShaderLabIntrinsicFrequency;
|
|
|
|
AddSimple(Registry, TEXT("ParticleColor"), EFreq::Any, TEXT("float4"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionParticleColor>(M); });
|
|
AddSimple(Registry, TEXT("ParticlePositionWS"), EFreq::Any, TEXT("float3"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionParticlePositionWS>(M); });
|
|
AddSimple(Registry, TEXT("ParticleDirection"), EFreq::Any, TEXT("float3"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionParticleDirection>(M); });
|
|
AddSimple(Registry, TEXT("ParticleSpeed"), EFreq::Any, TEXT("float"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionParticleSpeed>(M); });
|
|
AddSimple(Registry, TEXT("ParticleRadius"), EFreq::Any, TEXT("float"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionParticleRadius>(M); });
|
|
AddSimple(Registry, TEXT("ParticleSize"), EFreq::Any, TEXT("float2"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionParticleSize>(M); });
|
|
AddSimple(Registry, TEXT("ParticleRelativeTime"), EFreq::Any, TEXT("float"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionParticleRelativeTime>(M); });
|
|
AddSimple(Registry, TEXT("ParticleMotionBlurFade"), EFreq::Any, TEXT("float"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionParticleMotionBlurFade>(M); });
|
|
AddSimple(Registry, TEXT("ParticleRandom"), EFreq::Any, TEXT("float"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionParticleRandom>(M); });
|
|
AddSimple(Registry, TEXT("ParticleSpriteRotation"), EFreq::Any, TEXT("float"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionParticleSpriteRotation>(M); });
|
|
AddSimple(Registry, TEXT("ParticleMacroUV"), EFreq::Any, TEXT("float2"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionParticleMacroUV>(M); });
|
|
AddSimple(Registry, TEXT("SphericalParticleOpacity"), EFreq::PixelOnly, TEXT("float"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionSphericalParticleOpacity>(M); });
|
|
|
|
// ParticleSubUVProperties is multi-output (TexCoord0, TexCoord1, Blend) — one intrinsic per pin.
|
|
AddSimple(Registry, TEXT("ParticleSubUVTexCoord0"), EFreq::Any, TEXT("float2"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionParticleSubUVProperties>(M); }, 0);
|
|
AddSimple(Registry, TEXT("ParticleSubUVTexCoord1"), EFreq::Any, TEXT("float2"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionParticleSubUVProperties>(M); }, 1);
|
|
AddSimple(Registry, TEXT("ParticleSubUVBlend"), EFreq::Any, TEXT("float"), [](UMaterial& M) { return MakeSimple<UMaterialExpressionParticleSubUVProperties>(M); }, 2);
|
|
}
|