168 lines
6.1 KiB
C#
168 lines
6.1 KiB
C#
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace AllIn13DShader
|
|
{
|
|
public class TextureBlendingEffectDrawer : AbstractEffectDrawer
|
|
{
|
|
private int mainTexPropertyIndex;
|
|
private EffectProperty mainNormalEffectProperty;
|
|
|
|
private EffectProperty effectPropBlendingSource;
|
|
|
|
private EffectProperty effectPropTexBlendingMask;
|
|
private EffectProperty effectPropBlendingMaskCutoffG;
|
|
private EffectProperty effectPropBlendingMaskSmoothnessG;
|
|
private EffectProperty effectPropBlendingMaskCutoffB;
|
|
private EffectProperty effectPropBlendingMaskSmoothnessB;
|
|
|
|
private EffectProperty effectPropBlendingMaskCutoffWhite;
|
|
private EffectProperty effectPropBlendingMaskSmoothnessWhite;
|
|
|
|
private EffectProperty effectPropBlendingMode;
|
|
|
|
private EffectProperty effectPropBlendingTextureG;
|
|
private EffectProperty effectPropBlendingTextureB;
|
|
private EffectProperty effectPropBlendingTextureWhite;
|
|
|
|
private EffectProperty effectPropBlendingNormalMapG;
|
|
private EffectProperty effectPropBlendingNormalMapB;
|
|
private EffectProperty effectPropBlendingNormalMapWhite;
|
|
|
|
public TextureBlendingEffectDrawer(EffectProperty mainNormalMapEffectProperty, AllIn13DShaderInspectorReferences references,
|
|
PropertiesConfig propertiesConfig) : base(references, propertiesConfig)
|
|
{
|
|
this.drawerID = Constants.TEXTURE_BLENDING_EFFECT_DRAWER_ID;
|
|
|
|
mainTexPropertyIndex = FindPropertyIndex("_MainTex");
|
|
this.mainNormalEffectProperty = mainNormalMapEffectProperty;
|
|
|
|
this.effectConfig = propertiesConfig.FindEffectConfigByID("TEXTURE_BLENDING");
|
|
|
|
this.effectPropBlendingSource = effectConfig.FindEffectPropertyByName("_TextureBlendingSource");
|
|
|
|
this.effectPropTexBlendingMask = effectConfig.FindEffectPropertyByName("_TexBlendingMask");
|
|
this.effectPropBlendingMaskCutoffG = effectConfig.FindEffectPropertyByName("_BlendingMaskCutoffG");
|
|
this.effectPropBlendingMaskSmoothnessG = effectConfig.FindEffectPropertyByName("_BlendingMaskSmoothnessG");
|
|
this.effectPropBlendingMaskCutoffB = effectConfig.FindEffectPropertyByName("_BlendingMaskCutoffB");
|
|
this.effectPropBlendingMaskSmoothnessB = effectConfig.FindEffectPropertyByName("_BlendingMaskSmoothnessB");
|
|
|
|
this.effectPropBlendingMaskCutoffWhite = effectConfig.FindEffectPropertyByName("_BlendingMaskCutoffWhite");
|
|
this.effectPropBlendingMaskSmoothnessWhite = effectConfig.FindEffectPropertyByName("_BlendingMaskSmoothnessWhite");
|
|
|
|
this.effectPropBlendingMode = effectConfig.FindEffectPropertyByName("_TextureBlendingMode");
|
|
|
|
this.effectPropBlendingTextureG = effectConfig.FindEffectPropertyByName("_BlendingTextureG");
|
|
this.effectPropBlendingTextureB = effectConfig.FindEffectPropertyByName("_BlendingTextureB");
|
|
this.effectPropBlendingTextureWhite = effectConfig.FindEffectPropertyByName("_BlendingTextureWhite");
|
|
|
|
this.effectPropBlendingNormalMapG = effectConfig.FindEffectPropertyByName("_BlendingNormalMapG");
|
|
this.effectPropBlendingNormalMapB = effectConfig.FindEffectPropertyByName("_BlendingNormalMapB");
|
|
this.effectPropBlendingNormalMapWhite = effectConfig.FindEffectPropertyByName("_BlendingNormalMapWhite");
|
|
}
|
|
|
|
protected override void DrawProperties()
|
|
{
|
|
bool isRGBMode = references.IsKeywordEnabled("_TEXTUREBLENDINGMODE_RGB");
|
|
bool isBlendingSourceTexture = references.IsKeywordEnabled("_TEXTUREBLENDINGSOURCE_TEXTURE");
|
|
bool isNormalEnabled = references.IsKeywordEnabled("_NORMAL_MAP_ON");
|
|
|
|
DrawProperty(effectPropBlendingSource);
|
|
if(IsEffectPropertyVisible(effectPropTexBlendingMask, references.targetMatInfos))
|
|
{
|
|
DrawProperty(effectPropTexBlendingMask);
|
|
}
|
|
|
|
|
|
DrawProperty(effectPropBlendingMode);
|
|
|
|
GUILayout.Space(20f);
|
|
|
|
MaterialProperty matPropertyMainNormalMap = references.matProperties[mainNormalEffectProperty.propertyIndex];
|
|
if (isRGBMode)
|
|
{
|
|
EffectPropertyDrawer.DrawProperty(
|
|
materialProperty: references.matProperties[mainTexPropertyIndex],
|
|
labelPrefix: string.Empty,
|
|
displayName: $"{references.matProperties[mainTexPropertyIndex].displayName} (R)",
|
|
customValue: string.Empty,
|
|
allowReset: true,
|
|
isKeywordProperty: false,
|
|
propertyType: EffectProperty.PropertyType.BASIC,
|
|
references: references);
|
|
|
|
if (isNormalEnabled)
|
|
{
|
|
EffectPropertyDrawer.DrawProperty(
|
|
materialProperty: matPropertyMainNormalMap,
|
|
labelPrefix: string.Empty,
|
|
displayName: $"{matPropertyMainNormalMap.displayName} (R)",
|
|
customValue: string.Empty,
|
|
allowReset: true,
|
|
isKeywordProperty: false,
|
|
propertyType: EffectProperty.PropertyType.BASIC,
|
|
references: references);
|
|
}
|
|
|
|
GUILayout.Space(20f);
|
|
|
|
DrawProperty(effectPropBlendingTextureG);
|
|
if (isNormalEnabled)
|
|
{
|
|
DrawProperty(effectPropBlendingNormalMapG);
|
|
}
|
|
|
|
DrawProperty(effectPropBlendingMaskCutoffG);
|
|
DrawProperty(effectPropBlendingMaskSmoothnessG);
|
|
GUILayout.Space(20f);
|
|
|
|
DrawProperty(effectPropBlendingTextureB);
|
|
if (isNormalEnabled)
|
|
{
|
|
DrawProperty(effectPropBlendingNormalMapB);
|
|
}
|
|
|
|
DrawProperty(effectPropBlendingMaskCutoffB);
|
|
DrawProperty(effectPropBlendingMaskSmoothnessB);
|
|
GUILayout.Space(20f);
|
|
}
|
|
else
|
|
{
|
|
EffectPropertyDrawer.DrawProperty(
|
|
materialProperty: references.matProperties[mainTexPropertyIndex],
|
|
labelPrefix: string.Empty,
|
|
displayName: $"{references.matProperties[mainTexPropertyIndex].displayName} (Black)",
|
|
customValue: string.Empty,
|
|
allowReset: true,
|
|
isKeywordProperty: false,
|
|
propertyType: EffectProperty.PropertyType.BASIC,
|
|
references: references);
|
|
|
|
if (isNormalEnabled)
|
|
{
|
|
EffectPropertyDrawer.DrawProperty(
|
|
materialProperty: matPropertyMainNormalMap,
|
|
labelPrefix: string.Empty,
|
|
displayName: $"{matPropertyMainNormalMap.displayName} (R)",
|
|
customValue: string.Empty,
|
|
allowReset: true,
|
|
isKeywordProperty: false,
|
|
propertyType: EffectProperty.PropertyType.BASIC,
|
|
references: references);
|
|
}
|
|
|
|
DrawProperty(effectPropBlendingTextureWhite);
|
|
if (isNormalEnabled)
|
|
{
|
|
DrawProperty(effectPropBlendingNormalMapWhite);
|
|
}
|
|
|
|
if (isBlendingSourceTexture)
|
|
{
|
|
DrawProperty(effectPropBlendingMaskCutoffWhite);
|
|
DrawProperty(effectPropBlendingMaskSmoothnessWhite);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |