[Add] All in one shader
This commit is contained in:
@@ -0,0 +1,168 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user