|
|
|
|
|
|
EditorGUI.indentLevel++; |
|
|
|
m_MaterialEditor.TexturePropertySingleLine(Styles.detailMapNormalText, detailMap[layerIndex]); |
|
|
|
|
|
|
|
// When Planar or Triplanar is enable the UVDetail use the same mode, so we disable the choice on UVDetail
|
|
|
|
if (uvBaseMapping == UVBaseMapping.Planar) |
|
|
|
if (material.GetTexture(isLayeredLit ? kDetailMap + layerIndex : kDetailMap)) |
|
|
|
EditorGUILayout.LabelField(Styles.UVDetailMappingText.text + ": Planar"); |
|
|
|
} |
|
|
|
else if (uvBaseMapping == UVBaseMapping.Triplanar) |
|
|
|
{ |
|
|
|
EditorGUILayout.LabelField(Styles.UVDetailMappingText.text + ": Triplanar"); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
m_MaterialEditor.ShaderProperty(UVDetail[layerIndex], Styles.UVDetailMappingText); |
|
|
|
} |
|
|
|
EditorGUI.indentLevel++; |
|
|
|
|
|
|
|
// When Planar or Triplanar is enable the UVDetail use the same mode, so we disable the choice on UVDetail
|
|
|
|
if (uvBaseMapping == UVBaseMapping.Planar) |
|
|
|
{ |
|
|
|
EditorGUILayout.LabelField(Styles.UVDetailMappingText.text + ": Planar"); |
|
|
|
} |
|
|
|
else if (uvBaseMapping == UVBaseMapping.Triplanar) |
|
|
|
{ |
|
|
|
EditorGUILayout.LabelField(Styles.UVDetailMappingText.text + ": Triplanar"); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
m_MaterialEditor.ShaderProperty(UVDetail[layerIndex], Styles.UVDetailMappingText); |
|
|
|
} |
|
|
|
|
|
|
|
// Setup the UVSet for detail, if planar/triplanar is use for base, it will override the mapping of detail (See shader code)
|
|
|
|
X = ((UVDetailMapping)UVDetail[layerIndex].floatValue == UVDetailMapping.UV0) ? 1.0f : 0.0f; |
|
|
|
Y = ((UVDetailMapping)UVDetail[layerIndex].floatValue == UVDetailMapping.UV1) ? 1.0f : 0.0f; |
|
|
|
Z = ((UVDetailMapping)UVDetail[layerIndex].floatValue == UVDetailMapping.UV2) ? 1.0f : 0.0f; |
|
|
|
W = ((UVDetailMapping)UVDetail[layerIndex].floatValue == UVDetailMapping.UV3) ? 1.0f : 0.0f; |
|
|
|
UVDetailsMappingMask[layerIndex].colorValue = new Color(X, Y, Z, W); |
|
|
|
// Setup the UVSet for detail, if planar/triplanar is use for base, it will override the mapping of detail (See shader code)
|
|
|
|
X = ((UVDetailMapping)UVDetail[layerIndex].floatValue == UVDetailMapping.UV0) ? 1.0f : 0.0f; |
|
|
|
Y = ((UVDetailMapping)UVDetail[layerIndex].floatValue == UVDetailMapping.UV1) ? 1.0f : 0.0f; |
|
|
|
Z = ((UVDetailMapping)UVDetail[layerIndex].floatValue == UVDetailMapping.UV2) ? 1.0f : 0.0f; |
|
|
|
W = ((UVDetailMapping)UVDetail[layerIndex].floatValue == UVDetailMapping.UV3) ? 1.0f : 0.0f; |
|
|
|
UVDetailsMappingMask[layerIndex].colorValue = new Color(X, Y, Z, W); |
|
|
|
EditorGUI.indentLevel++; |
|
|
|
m_MaterialEditor.ShaderProperty(linkDetailsWithBase[layerIndex], Styles.linkDetailsWithBaseText); |
|
|
|
EditorGUI.indentLevel--; |
|
|
|
EditorGUI.indentLevel++; |
|
|
|
m_MaterialEditor.ShaderProperty(linkDetailsWithBase[layerIndex], Styles.linkDetailsWithBaseText); |
|
|
|
EditorGUI.indentLevel--; |
|
|
|
m_MaterialEditor.TextureScaleOffsetProperty(detailMap[layerIndex]); |
|
|
|
if ((DisplacementMode)displacementMode.floatValue == DisplacementMode.Pixel && (UVDetail[layerIndex].floatValue != UVBase[layerIndex].floatValue)) |
|
|
|
{ |
|
|
|
if (material.GetTexture(kDetailMap + m_PropertySuffixes[layerIndex])) |
|
|
|
EditorGUILayout.HelpBox(Styles.perPixelDisplacementDetailsWarning.text, MessageType.Warning); |
|
|
|
m_MaterialEditor.TextureScaleOffsetProperty(detailMap[layerIndex]); |
|
|
|
if ((DisplacementMode)displacementMode.floatValue == DisplacementMode.Pixel && (UVDetail[layerIndex].floatValue != UVBase[layerIndex].floatValue)) |
|
|
|
{ |
|
|
|
if (material.GetTexture(kDetailMap + m_PropertySuffixes[layerIndex])) |
|
|
|
EditorGUILayout.HelpBox(Styles.perPixelDisplacementDetailsWarning.text, MessageType.Warning); |
|
|
|
} |
|
|
|
m_MaterialEditor.ShaderProperty(detailAlbedoScale[layerIndex], Styles.detailAlbedoScaleText); |
|
|
|
m_MaterialEditor.ShaderProperty(detailNormalScale[layerIndex], Styles.detailNormalScaleText); |
|
|
|
m_MaterialEditor.ShaderProperty(detailSmoothnessScale[layerIndex], Styles.detailSmoothnessScaleText); |
|
|
|
EditorGUI.indentLevel--; |
|
|
|
m_MaterialEditor.ShaderProperty(detailAlbedoScale[layerIndex], Styles.detailAlbedoScaleText); |
|
|
|
m_MaterialEditor.ShaderProperty(detailNormalScale[layerIndex], Styles.detailNormalScaleText); |
|
|
|
m_MaterialEditor.ShaderProperty(detailSmoothnessScale[layerIndex], Styles.detailSmoothnessScaleText); |
|
|
|
|
|
|
|
EditorGUI.indentLevel--; |
|
|
|
|
|
|
|
var surfaceTypeValue = (SurfaceType)surfaceType.floatValue; |
|
|
|
|
|
|
} |
|
|
|
m_MaterialEditor.TexturePropertySingleLine(Styles.emissiveText, emissiveColorMap, emissiveColor); |
|
|
|
|
|
|
|
m_MaterialEditor.ShaderProperty(UVEmissive, Styles.UVBaseMappingText); |
|
|
|
UVBaseMapping uvEmissiveMapping = (UVBaseMapping)UVEmissive.floatValue; |
|
|
|
if (material.GetTexture(kEmissiveColorMap)) |
|
|
|
{ |
|
|
|
EditorGUI.indentLevel++; |
|
|
|
m_MaterialEditor.ShaderProperty(UVEmissive, Styles.UVBaseMappingText); |
|
|
|
UVBaseMapping uvEmissiveMapping = (UVBaseMapping)UVEmissive.floatValue; |
|
|
|
float X, Y, Z, W; |
|
|
|
X = (uvEmissiveMapping == UVBaseMapping.UV0) ? 1.0f : 0.0f; |
|
|
|
Y = (uvEmissiveMapping == UVBaseMapping.UV1) ? 1.0f : 0.0f; |
|
|
|
Z = (uvEmissiveMapping == UVBaseMapping.UV2) ? 1.0f : 0.0f; |
|
|
|
W = (uvEmissiveMapping == UVBaseMapping.UV3) ? 1.0f : 0.0f; |
|
|
|
float X, Y, Z, W; |
|
|
|
X = (uvEmissiveMapping == UVBaseMapping.UV0) ? 1.0f : 0.0f; |
|
|
|
Y = (uvEmissiveMapping == UVBaseMapping.UV1) ? 1.0f : 0.0f; |
|
|
|
Z = (uvEmissiveMapping == UVBaseMapping.UV2) ? 1.0f : 0.0f; |
|
|
|
W = (uvEmissiveMapping == UVBaseMapping.UV3) ? 1.0f : 0.0f; |
|
|
|
|
|
|
|
UVMappingMaskEmissive.colorValue = new Color(X, Y, Z, W); |
|
|
|
UVMappingMaskEmissive.colorValue = new Color(X, Y, Z, W); |
|
|
|
if ((uvEmissiveMapping == UVBaseMapping.Planar) || (uvEmissiveMapping == UVBaseMapping.Triplanar)) |
|
|
|
{ |
|
|
|
m_MaterialEditor.ShaderProperty(TexWorldScaleEmissive, Styles.texWorldScaleText); |
|
|
|
} |
|
|
|
if ((uvEmissiveMapping == UVBaseMapping.Planar) || (uvEmissiveMapping == UVBaseMapping.Triplanar)) |
|
|
|
{ |
|
|
|
m_MaterialEditor.ShaderProperty(TexWorldScaleEmissive, Styles.texWorldScaleText); |
|
|
|
m_MaterialEditor.TextureScaleOffsetProperty(emissiveColorMap); |
|
|
|
EditorGUI.indentLevel--; |
|
|
|
|
|
|
|
m_MaterialEditor.TextureScaleOffsetProperty(emissiveColorMap); |
|
|
|
|
|
|
|
m_MaterialEditor.ShaderProperty(emissiveIntensity, Styles.emissiveIntensityText); |
|
|
|
m_MaterialEditor.ShaderProperty(albedoAffectEmissive, Styles.albedoAffectEmissiveText); |
|
|
|