2021-12-15 16:29:44 +03:00

198 lines
21 KiB
C#

//////////////////////////////////////////////////////
// MK Toon Properties //
// //
// Created by Michael Kremmel //
// www.michaelkremmel.de //
// Copyright © 2021 All rights reserved. //
//////////////////////////////////////////////////////
namespace MK.Toon
{
public static class Properties
{
internal static readonly string shaderComponentOutlineName = "Outline";
internal static readonly string shaderComponentRefractionName = "Refraction";
internal static readonly string shaderVariantPBSName = "Physically Based";
internal static readonly string shaderVariantSimpleName = "Simple";
internal static readonly string shaderVariantUnlitName = "Unlit";
/////////////////
// Options //
/////////////////
public static readonly EnumProperty<Workflow> workflow = new EnumProperty<Workflow>(Uniforms.workflow, Keywords.workflow);
public static readonly EnumProperty<RenderFace> renderFace = new EnumProperty<RenderFace>(Uniforms.renderFace);
public static readonly SurfaceProperty surface = new SurfaceProperty(Uniforms.surface, Keywords.surface);
public static readonly EnumProperty<ZWrite> zWrite = new EnumProperty<ZWrite>(Uniforms.zWrite);
public static readonly EnumProperty<ZTest> zTest = new EnumProperty<ZTest>(Uniforms.zTest);
public static readonly EnumProperty<BlendFactor> blendSrc = new EnumProperty<BlendFactor>(Uniforms.blendSrc);
public static readonly EnumProperty<BlendFactor> blendDst = new EnumProperty<BlendFactor>(Uniforms.blendDst);
public static readonly BlendProperty blend = new BlendProperty(Uniforms.blend, Keywords.blend);
public static readonly BoolProperty alphaClipping = new BoolProperty(Uniforms.alphaClipping, Keywords.alphaClipping);
/////////////////
// Input //
/////////////////
public static readonly ColorProperty albedoColor = new ColorProperty(Uniforms.albedoColor);
public static readonly RangeProperty alphaCutoff = new RangeProperty(Uniforms.alphaCutoff, 0, 1);
public static readonly TextureProperty albedoMap = new TextureProperty(Uniforms.albedoMap, Keywords.albedoMap);
public static readonly TilingProperty mainTiling = new TilingProperty(Uniforms.albedoMap);
public static readonly OffsetProperty mainOffset = new OffsetProperty(Uniforms.albedoMap);
public static readonly ColorProperty specularColor = new ColorProperty(Uniforms.specularColor);
public static readonly RangeProperty metallic = new RangeProperty(Uniforms.metallic, 0, 1);
public static readonly RangeProperty smoothness = new RangeProperty(Uniforms.smoothness, 0, 1);
public static readonly RangeProperty roughness = new RangeProperty(Uniforms.roughness, 0, 1);
public static readonly TextureProperty specularMap = new TextureProperty(Uniforms.specularMap, Keywords.pbsMap0);
public static readonly TextureProperty roughnessMap = new TextureProperty(Uniforms.roughnessMap, Keywords.pbsMap1);
public static readonly TextureProperty metallicMap = new TextureProperty(Uniforms.metallicMap, Keywords.pbsMap0);
public static readonly FloatProperty normalMapIntensity = new FloatProperty(Uniforms.normalMapIntensity);
public static readonly TextureProperty normalMap = new TextureProperty(Uniforms.normalMap, Keywords.normalMap);
public static readonly RangeProperty parallax = new RangeProperty(Uniforms.parallax, Keywords.parallax, 0, 0.1f);
public static readonly TextureProperty heightMap = new TextureProperty(Uniforms.heightMap, Keywords.heightMap);
public static readonly EnumProperty<LightTransmission> lightTransmission = new EnumProperty<LightTransmission>(Uniforms.lightTransmission);
public static readonly RangeProperty lightTransmissionDistortion = new RangeProperty(Uniforms.lightTransmissionDistortion, 0, 1);
public static readonly ColorProperty lightTransmissionColor = new ColorProperty(Uniforms.lightTransmissionColor);
public static readonly TextureProperty thicknessMap = new TextureProperty(Uniforms.thicknessMap, Keywords.thicknessMap);
public static readonly RangeProperty occlusionMapIntensity = new RangeProperty(Uniforms.occlusionMapIntensity, 0, 1);
public static readonly TextureProperty occlusionMap = new TextureProperty(Uniforms.occlusionMap, Keywords.occlusionMap);
public static readonly ColorProperty emissionColor = new ColorProperty(Uniforms.emissionColor, Keywords.emission);
public static readonly TextureProperty emissionMap = new TextureProperty(Uniforms.emissionMap, Keywords.emissionMap);
/////////////////
// Detail //
/////////////////
public static readonly EnumProperty<DetailBlend> detailBlend = new EnumProperty<DetailBlend>(Uniforms.detailBlend, Keywords.detailBlend);
public static readonly ColorProperty detailColor = new ColorProperty(Uniforms.detailColor);
public static readonly RangeProperty detailMix = new RangeProperty(Uniforms.detailMix, 0, 1);
public static readonly TextureProperty detailMap = new TextureProperty(Uniforms.detailMap);
public static readonly TilingProperty detailTiling = new TilingProperty(Uniforms.detailMap);
public static readonly OffsetProperty detailOffset = new OffsetProperty(Uniforms.detailMap);
public static readonly FloatProperty detailNormalMapIntensity = new FloatProperty(Uniforms.detailNormalMapIntensity);
public static readonly TextureProperty detailNormalMap = new TextureProperty(Uniforms.detailNormalMap);
/////////////////
// Stylize //
/////////////////
public static readonly BoolProperty receiveShadows = new BoolProperty(Uniforms.receiveShadows, Keywords.receiveShadows);
public static readonly BoolProperty wrappedLighting = new BoolProperty(Uniforms.wrappedLighting, Keywords.wrappedLighting);
public static readonly RangeProperty diffuseSmoothness = new RangeProperty(Uniforms.diffuseSmoothness, 0, 1);
public static readonly RangeProperty diffuseThresholdOffset = new RangeProperty(Uniforms.diffuseThresholdOffset, 0, 1);
public static readonly RangeProperty specularSmoothness = new RangeProperty(Uniforms.specularSmoothness, 0, 1);
public static readonly RangeProperty specularThresholdOffset = new RangeProperty(Uniforms.specularThresholdOffset, 0, 1);
public static readonly RangeProperty rimSmoothness = new RangeProperty(Uniforms.rimSmoothness, 0, 1);
public static readonly RangeProperty rimThresholdOffset = new RangeProperty(Uniforms.rimThresholdOffset, 0, 1);
public static readonly RangeProperty lightTransmissionSmoothness = new RangeProperty(Uniforms.lightTransmissionSmoothness, 0, 1);
public static readonly RangeProperty lightTransmissionThresholdOffset = new RangeProperty(Uniforms.lightTransmissionThresholdOffset, 0, 1);
public static readonly EnumProperty<Light> light = new EnumProperty<Light>(Uniforms.light, Keywords.light);
public static readonly TextureProperty diffuseRamp = new TextureProperty(Uniforms.diffuseRamp);
public static readonly TextureProperty specularRamp = new TextureProperty(Uniforms.specularRamp);
public static readonly TextureProperty rimRamp = new TextureProperty(Uniforms.rimRamp);
public static readonly TextureProperty lightTransmissionRamp = new TextureProperty(Uniforms.lightTransmissionRamp);
public static readonly StepProperty lightBands = new StepProperty(Uniforms.lightBands, 2, 6);
public static readonly RangeProperty lightBandsScale = new RangeProperty(Uniforms.lightBandsScale, 0, 1);
public static readonly RangeProperty lightThreshold = new RangeProperty(Uniforms.lightThreshold, 0, 1);
public static readonly TextureProperty thresholdMap = new TextureProperty(Uniforms.thresholdMap, Keywords.thresholdMap);
public static readonly FloatProperty thresholdMapScale = new FloatProperty(Uniforms.thresholdMapScale);
public static readonly RangeProperty goochRampIntensity = new RangeProperty(Uniforms.goochRampIntensity, 0, 1);
public static readonly TextureProperty goochRamp = new TextureProperty(Uniforms.goochRamp, Keywords.goochRamp);
public static readonly ColorProperty goochBrightColor = new ColorProperty(Uniforms.goochBrightColor);
public static readonly TextureProperty goochBrightMap = new TextureProperty(Uniforms.goochBrightMap, Keywords.goochBrightMap);
public static readonly ColorProperty goochDarkColor = new ColorProperty(Uniforms.goochDarkColor);
public static readonly TextureProperty goochDarkMap = new TextureProperty(Uniforms.goochDarkMap, Keywords.goochDarkMap);
public static readonly EnumProperty<ColorGrading> colorGrading = new EnumProperty<ColorGrading>(Uniforms.colorGrading, Keywords.colorGrading);
public static readonly FloatProperty contrast = new FloatProperty(Uniforms.contrast);
public static readonly RangeProperty saturation = new RangeProperty(Uniforms.saturation, 0);
public static readonly RangeProperty brightness = new RangeProperty(Uniforms.brightness, 0);
public static readonly EnumProperty<Iridescence> iridescence = new EnumProperty<Iridescence>(Uniforms.iridescence, Keywords.iridescence);
public static readonly TextureProperty iridescenceRamp = new TextureProperty(Uniforms.iridescenceRamp);
public static readonly RangeProperty iridescenceSize = new RangeProperty(Uniforms.iridescenceSize, 0, 5);
public static readonly RangeProperty iridescenceThresholdOffset = new RangeProperty(Uniforms.iridescenceThresholdOffset, 0, 1);
public static readonly RangeProperty iridescenceSmoothness = new RangeProperty(Uniforms.iridescenceSmoothness, 0, 1);
public static readonly ColorProperty iridescenceColor = new ColorProperty(Uniforms.iridescenceColor);
public static readonly EnumProperty<Rim> rim = new EnumProperty<Rim>(Uniforms.rim, Keywords.rim);
public static readonly ColorProperty rimColor = new ColorProperty(Uniforms.rimColor);
public static readonly ColorProperty rimBrightColor = new ColorProperty(Uniforms.rimBrightColor);
public static readonly ColorProperty rimDarkColor = new ColorProperty(Uniforms.rimDarkColor);
public static readonly RangeProperty rimSize = new RangeProperty(Uniforms.rimSize, 0, 1);
public static readonly EnumProperty<VertexAnimation> vertexAnimation = new EnumProperty<VertexAnimation>(Uniforms.vertexAnimation, Keywords.vertexAnimation);
public static readonly BoolProperty vertexAnimationStutter = new BoolProperty(Uniforms.vertexAnimationStutter, Keywords.vertexAnimationStutter);
public static readonly TextureProperty vertexAnimationMap = new TextureProperty(Uniforms.vertexAnimationMap, Keywords.vertexAnimationMap);
public static readonly RangeProperty vertexAnimationIntensity = new RangeProperty(Uniforms.vertexAnimationIntensity, 0, 1);
public static readonly Vector3Property vertexAnimationFrequency = new Vector3Property(Uniforms.vertexAnimationFrequency);
public static readonly EnumProperty<Dissolve> dissolve = new EnumProperty<Dissolve>(Uniforms.dissolve, Keywords.dissolve);
public static readonly TextureProperty dissolveMap = new TextureProperty(Uniforms.dissolveMap);
public static readonly FloatProperty dissolveMapScale = new FloatProperty(Uniforms.dissolveMapScale);
public static readonly RangeProperty dissolveAmount = new RangeProperty(Uniforms.dissolveAmount, 0, 1);
public static readonly RangeProperty dissolveBorderSize = new RangeProperty(Uniforms.dissolveBorderSize, 0, 1);
public static readonly TextureProperty dissolveBorderRamp = new TextureProperty(Uniforms.dissolveBorderRamp);
public static readonly ColorProperty dissolveBorderColor = new ColorProperty(Uniforms.dissolveBorderColor);
public static readonly EnumProperty<Artistic> artistic = new EnumProperty<Artistic>(Uniforms.artistic, Keywords.artistic);
public static readonly EnumProperty<ArtisticProjection> artisticProjection = new EnumProperty<ArtisticProjection>(Uniforms.artisticProjection, Keywords.artisticProjection);
public static readonly RangeProperty artisticFrequency = new RangeProperty(Uniforms.artisticFrequency, Keywords.artisticAnimation, 1.0f, 1, 10);
public static readonly FloatProperty drawnMapScale = new FloatProperty(Uniforms.drawnMapScale);
public static readonly TextureProperty drawnMap = new TextureProperty(Uniforms.drawnMap);
public static readonly FloatProperty hatchingMapScale = new FloatProperty(Uniforms.hatchingMapScale);
public static readonly TextureProperty hatchingBrightMap = new TextureProperty(Uniforms.hatchingBrightMap);
public static readonly TextureProperty hatchingDarkMap = new TextureProperty(Uniforms.hatchingDarkMap);
public static readonly RangeProperty drawnClampMin = new RangeProperty(Uniforms.drawnClampMin, 0, 1);
public static readonly RangeProperty drawnClampMax = new RangeProperty(Uniforms.drawnClampMax, 0, 1);
public static readonly FloatProperty sketchMapScale = new FloatProperty(Uniforms.sketchMapScale);
public static readonly TextureProperty sketchMap = new TextureProperty(Uniforms.sketchMap);
/////////////////
// Advanced //
/////////////////
public static readonly EnumProperty<Diffuse> diffuse = new EnumProperty<Diffuse>(Uniforms.diffuse, Keywords.diffuse);
public static readonly SpecularProperty specular = new SpecularProperty(Uniforms.specular, Keywords.specular);
public static readonly RangeProperty specularIntensity = new RangeProperty(Uniforms.specularIntensity, 0);
public static readonly RangeProperty anisotropy = new RangeProperty(Uniforms.anisotropy, -1, 1);
public static readonly RangeProperty lightTransmissionIntensity = new RangeProperty(Uniforms.lightTransmissionIntensity, 0);
public static readonly EnvironmentReflectionProperty environmentReflections = new EnvironmentReflectionProperty(Uniforms.environmentReflections, Keywords.environmentReflections);
public static readonly BoolProperty fresnelHighlights = new BoolProperty(Uniforms.fresnelHighlights, Keywords.fresnelHighlights);
public static readonly RenderPriorityProperty renderPriority = new RenderPriorityProperty(Uniforms.renderPriority);
//Stencil
public static readonly StencilModeProperty stencil = new StencilModeProperty(Uniforms.stencil);
public static readonly StepProperty stencilRef = new StepProperty(Uniforms.stencilRef, 0, 255);
public static readonly StepProperty stencilReadMask = new StepProperty(Uniforms.stencilReadMask, 0, 255);
public static readonly StepProperty stencilWriteMask = new StepProperty(Uniforms.stencilWriteMask, 0, 255);
public static readonly EnumProperty<StencilComparison> stencilComp = new EnumProperty<StencilComparison>(Uniforms.stencilComp);
public static readonly EnumProperty<StencilOperation> stencilPass = new EnumProperty<StencilOperation>(Uniforms.stencilPass);
public static readonly EnumProperty<StencilOperation> stencilFail = new EnumProperty<StencilOperation>(Uniforms.stencilFail);
public static readonly EnumProperty<StencilOperation> stencilZFail = new EnumProperty<StencilOperation>(Uniforms.stencilZFail);
/////////////////
// Outline //
/////////////////
public static readonly EnumProperty<Outline> outline = new EnumProperty<Outline>(Uniforms.outline, Keywords.outline);
public static readonly EnumProperty<OutlineData> outlineData = new EnumProperty<OutlineData>(Uniforms.outlineData, Keywords.outlineData);
public static readonly TextureProperty outlineMap = new TextureProperty(Uniforms.outlineMap, Keywords.outlineMap);
public static readonly RangeProperty outlineSize = new RangeProperty(Uniforms.outlineSize, 0);
public static readonly ColorProperty outlineColor = new ColorProperty(Uniforms.outlineColor);
#if MK_TOON_OUTLINE_FADE
public static readonly FloatProperty outlineFadeMin = new FloatProperty(Uniforms.outlineFadeMin);
public static readonly FloatProperty outlineFadeMax = new FloatProperty(Uniforms.outlineFadeMax);
#endif
public static readonly RangeProperty outlineNoise = new RangeProperty(Uniforms.outlineNoise, Keywords.outlineNoise, -1, 1);
/////////////////
// Refraction //
/////////////////
public static readonly FloatProperty refractionDistortionMapScale = new FloatProperty(Uniforms.refractionDistortionMapScale);
public static readonly TextureProperty refractionDistortionMap = new TextureProperty(Uniforms.refractionDistortionMap, Keywords.refractionDistortionMap);
public static readonly FloatProperty refractionDistortion = new FloatProperty(Uniforms.refractionDistortion);
public static readonly RangeProperty refractionDistortionFade = new RangeProperty(Uniforms.refractionDistortionFade, 0, 1);
public static readonly RangeProperty indexOfRefraction = new RangeProperty(Uniforms.indexOfRefraction, Keywords.indexOfRefraction, 0, 0.5f);
/////////////////
// Particles //
/////////////////
public static readonly BoolProperty flipbook = new BoolProperty(Uniforms.flipbook, Keywords.flipbook);
public static readonly BoolProperty softFade = new BoolProperty(Uniforms.softFade, Keywords.softFade);
public static readonly FloatProperty softFadeNearDistance = new FloatProperty(Uniforms.softFadeNearDistance);
public static readonly FloatProperty softFadeFarDistance = new FloatProperty(Uniforms.softFadeFarDistance);
public static readonly BoolProperty cameraFade = new BoolProperty(Uniforms.cameraFade, Keywords.cameraFade);
public static readonly FloatProperty cameraFadeNearDistance = new FloatProperty(Uniforms.cameraFadeNearDistance);
public static readonly FloatProperty cameraFadeFarDistance = new FloatProperty(Uniforms.cameraFadeFarDistance);
public static readonly EnumProperty<ColorBlend> colorBlend = new EnumProperty<ColorBlend>(Uniforms.colorBlend, Keywords.colorBlend);
}
}