diff options
Diffstat (limited to 'Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/Textures/TexturePropertyNode.cs')
-rw-r--r-- | Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/Textures/TexturePropertyNode.cs | 1175 |
1 files changed, 0 insertions, 1175 deletions
diff --git a/Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/Textures/TexturePropertyNode.cs b/Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/Textures/TexturePropertyNode.cs deleted file mode 100644 index 6f3e1016..00000000 --- a/Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/Textures/TexturePropertyNode.cs +++ /dev/null @@ -1,1175 +0,0 @@ -// Amplify Shader Editor - Visual Shader Editing Tool -// Copyright (c) Amplify Creations, Lda <info@amplify.pt> - -using UnityEngine; -using UnityEditor; -using System; - -namespace AmplifyShaderEditor -{ - public enum TexturePropertyValues - { - white, - black, - gray, - bump - } - - public enum TextureType - { - Texture1D, - Texture2D, - Texture3D, - Cube, - Texture2DArray, - ProceduralTexture - } - - public enum AutoCastType - { - Auto = 0, - LockedToTexture1D, - LockedToTexture2D, - LockedToTexture3D, - LockedToCube, - LockedToTexture2DArray - } - - - [Serializable] - [NodeAttributes( "Texture Object", "Textures", "Represents a Texture Asset. Can be used in samplers <b>Tex</b> inputs or shader function inputs to reuse the same texture multiple times.", SortOrderPriority = 1 )] - public class TexturePropertyNode : PropertyNode - { - private const string ObjectSelectorCmdStr = "ObjectSelectorClosed"; - - protected readonly string[] AvailablePropertyTypeLabels = { PropertyType.Property.ToString(), PropertyType.Global.ToString() }; - protected readonly int[] AvailablePropertyTypeValues = { (int)PropertyType.Property, (int)PropertyType.Global }; - - protected const int OriginalFontSizeUpper = 9; - protected const int OriginalFontSizeLower = 9; - - protected const string DefaultTextureStr = "Default Texture"; - protected const string AutoCastModeStr = "Auto-Cast Mode"; - - protected const string AutoUnpackNormalsStr = "Normal"; - - [SerializeField] - protected Texture m_defaultValue; - - [SerializeField] - protected Texture m_materialValue; - - [SerializeField] - protected TexturePropertyValues m_defaultTextureValue; - - [SerializeField] - protected bool m_isNormalMap; - - [SerializeField] - protected System.Type m_textureType = typeof( Texture2D ); - - [SerializeField] - protected int m_useSamplerArrayIdx = -1; - - //[SerializeField] - //protected bool m_isTextureFetched; - - //[SerializeField] - //protected string m_textureFetchedValue; - - [SerializeField] - protected TextureType m_currentType = TextureType.Texture2D; - - [SerializeField] - protected AutoCastType m_autocastMode = AutoCastType.Auto; - - protected int PreviewSizeX = 128; - protected int PreviewSizeY = 128; - - protected bool m_linearTexture; - - protected TexturePropertyNode m_textureProperty = null; - - protected bool m_drawPicker; - - protected bool m_drawAutocast = true; - - protected int m_cachedSamplerId = -1; - protected int m_cachedSamplerIdArray = -1; - protected int m_cachedSamplerIdCube = -1; - protected int m_cachedSamplerId3D = -1; - protected int m_defaultId = -1; - protected int m_typeId = -1; - - private TextureType m_previousType = TextureType.Texture2D; - private string m_labelText = "None (Texture2D)"; - - protected bool m_isEditingPicker; - - public TexturePropertyNode() : base() { } - public TexturePropertyNode( int uniqueId, float x, float y, float width, float height ) : base( uniqueId, x, y, width, height ) { } - protected override void CommonInit( int uniqueId ) - { - base.CommonInit( uniqueId ); - GlobalTypeWarningText = string.Format( GlobalTypeWarningText, "Texture" ); - m_defaultTextureValue = TexturePropertyValues.white; - m_insideSize.Set( PreviewSizeX, PreviewSizeY + 5 ); - AddOutputPort( WirePortDataType.SAMPLER2D, "Tex" ); - m_outputPorts[ 0 ].CreatePortRestrictions( WirePortDataType.SAMPLER1D, WirePortDataType.SAMPLER2D, WirePortDataType.SAMPLER3D, WirePortDataType.SAMPLERCUBE, WirePortDataType.OBJECT ); - m_currentParameterType = PropertyType.Property; - m_customPrefix = "Texture "; - m_drawPrecisionUI = false; - m_showVariableMode = true; - m_freeType = false; - m_drawPicker = true; - m_hasLeftDropdown = true; - m_textLabelWidth = 115; - m_longNameSize = 225; - m_availableAttribs.Add( new PropertyAttributes( "No Scale Offset", "[NoScaleOffset]" ) ); - m_availableAttribs.Add( new PropertyAttributes( "Normal", "[Normal]" ) ); - m_availableAttribs.Add( new PropertyAttributes( "Single Line Texture", "[SingleLineTexture]" ) ); - m_showPreview = true; - m_drawPreviewExpander = false; - m_drawPreview = false; - m_drawPreviewMaskButtons = false; - m_previewShaderGUID = "e53988745ec6e034694ee2640cd3d372"; - } - - public override void AfterCommonInit() - { - base.AfterCommonInit(); - m_hasLeftDropdown = true; - } - - protected void SetPreviewTexture( Texture newValue ) - { - if( newValue is Cubemap ) - { - PreviewMaterial.SetInt( m_typeId, 3 ); - - if( m_cachedSamplerIdCube == -1 ) - m_cachedSamplerIdCube = Shader.PropertyToID( "_Cube" ); - - PreviewMaterial.SetTexture( m_cachedSamplerIdCube, newValue as Cubemap ); - } - else if( newValue is Texture2DArray ) - { - PreviewMaterial.SetInt( m_typeId, 4 ); - - if( m_cachedSamplerIdArray == -1 ) - m_cachedSamplerIdArray = Shader.PropertyToID( "_Array" ); - - PreviewMaterial.SetTexture( m_cachedSamplerIdArray, newValue as Texture2DArray ); - } - else if( newValue is Texture3D ) - { - PreviewMaterial.SetInt( m_typeId, 2 ); - - if( m_cachedSamplerId3D == -1 ) - m_cachedSamplerId3D = Shader.PropertyToID( "_Sampler3D" ); - - PreviewMaterial.SetTexture( m_cachedSamplerId3D, newValue as Texture3D ); - } - else - { - PreviewMaterial.SetInt( m_typeId, 1 ); - - if( m_cachedSamplerId == -1 ) - m_cachedSamplerId = Shader.PropertyToID( "_Sampler" ); - - PreviewMaterial.SetTexture( m_cachedSamplerId, newValue ); - } - } - - public override void SetPreviewInputs() - { - base.SetPreviewInputs(); - - if( Value == null ) - { - if( m_defaultId == -1 ) - m_defaultId = Shader.PropertyToID( "_Default" ); - - PreviewMaterial.SetInt( m_defaultId, ( (int)m_defaultTextureValue ) + 1 ); - m_previewMaterialPassId = 0; - } - else - { - if( m_defaultId == -1 ) - m_defaultId = Shader.PropertyToID( "_Default" ); - - PreviewMaterial.SetInt( m_defaultId, 0 ); - - if( m_typeId == -1 ) - m_typeId = Shader.PropertyToID( "_Type" ); - - m_previewMaterialPassId = 1; - SetPreviewTexture( Value ); - //if( Value is Cubemap ) - //{ - // PreviewMaterial.SetInt( m_typeId, 3 ); - - // if( m_cachedSamplerIdCube == -1 ) - // m_cachedSamplerIdCube = Shader.PropertyToID( "_Cube" ); - - // PreviewMaterial.SetTexture( m_cachedSamplerIdCube, Value as Cubemap ); - //} - //else if( Value is Texture2DArray ) - //{ - // PreviewMaterial.SetInt( m_typeId, 4 ); - - // if( m_cachedSamplerIdArray == -1 ) - // m_cachedSamplerIdArray = Shader.PropertyToID( "_Array" ); - - // PreviewMaterial.SetTexture( m_cachedSamplerIdArray, Value as Texture2DArray ); - //} - //else if( Value is Texture3D ) - //{ - // PreviewMaterial.SetInt( m_typeId, 2 ); - - // if( m_cachedSamplerId3D == -1 ) - // m_cachedSamplerId3D = Shader.PropertyToID( "_Sampler3D" ); - - // PreviewMaterial.SetTexture( m_cachedSamplerId3D, Value as Texture3D ); - //} - //else - //{ - // PreviewMaterial.SetInt( m_typeId, 1 ); - - // if( m_cachedSamplerId == -1 ) - // m_cachedSamplerId = Shader.PropertyToID( "_Sampler" ); - - // PreviewMaterial.SetTexture( m_cachedSamplerId, Value ); - //} - } - } - - protected override void OnUniqueIDAssigned() - { - base.OnUniqueIDAssigned(); - m_textureProperty = this; - UIUtils.RegisterPropertyNode( this ); - UIUtils.RegisterTexturePropertyNode( this ); - } - - protected void ConfigTextureData( TextureType type ) - { - switch( m_autocastMode ) - { - case AutoCastType.Auto: - { - m_currentType = type; - } - break; - case AutoCastType.LockedToTexture1D: - { - m_currentType = TextureType.Texture1D; - } - break; - case AutoCastType.LockedToTexture2DArray: - { - m_currentType = TextureType.Texture2DArray; - } - break; - case AutoCastType.LockedToTexture2D: - { - m_currentType = TextureType.Texture2D; - } - break; - case AutoCastType.LockedToTexture3D: - { - m_currentType = TextureType.Texture3D; - } - break; - case AutoCastType.LockedToCube: - { - m_currentType = TextureType.Cube; - } - break; - } - - ConfigTextureType(); - } - - protected void ConfigTextureType() - { - switch( m_currentType ) - { - case TextureType.Texture1D: - { - m_textureType = typeof( Texture ); - } - break; - case TextureType.Texture2DArray: - { - m_textureType = typeof( Texture2DArray ); - } - break; - case TextureType.Texture2D: - { - m_textureType = typeof( Texture2D ); - } - break; - case TextureType.Texture3D: - { - m_textureType = typeof( Texture3D ); - } - break; - case TextureType.Cube: - { - m_textureType = typeof( Cubemap ); - } - break; -#if !UNITY_2018_1_OR_NEWER - // Disabling Substance Deprecated warning -#pragma warning disable 0618 - case TextureType.ProceduralTexture: - { - m_textureType = typeof( ProceduralTexture ); - } - break; -#pragma warning restore 0618 -#endif - - } - } - - protected void DrawTexturePropertyType() - { - PropertyType parameterType = (PropertyType)EditorGUILayoutIntPopup( ParameterTypeStr, (int)m_currentParameterType, AvailablePropertyTypeLabels, AvailablePropertyTypeValues ); - if( parameterType != m_currentParameterType ) - { - ChangeParameterType( parameterType ); - } - } - - // Texture1D - public string GetTexture1DPropertyValue() - { - return PropertyName + "(\"" + m_propertyInspectorName + "\", 2D) = \"" + m_defaultTextureValue + "\" {}"; - } - - public string GetTexture1DUniformValue() - { - return "uniform sampler1D " + PropertyName + ";"; - } - - // Texture2D - public string GetTexture2DPropertyValue() - { - return PropertyName + "(\"" + m_propertyInspectorName + "\", 2D) = \"" + m_defaultTextureValue + "\" {}"; - } - - public string GetTexture2DUniformValue() - { - ParentGraph outsideGraph = UIUtils.CurrentWindow.OutsideGraph; - if( outsideGraph.SamplingThroughMacros ) - { - if( outsideGraph.IsSRP ) - { - if( m_useSamplerArrayIdx == 0 ) - return string.Format( Constants.TexDeclarationSRPMacros[ TextureType.Texture2D ], PropertyName ); - else - return string.Format( Constants.TexDeclarationNoSamplerSRPMacros[ TextureType.Texture2D ], PropertyName ); - } - else - { - if( m_useSamplerArrayIdx == 0 ) - return string.Format( Constants.TexDeclarationStandardMacros[ TextureType.Texture2D ], PropertyName ); - else - return string.Format( Constants.TexDeclarationNoSamplerStandardMacros[ TextureType.Texture2D ], PropertyName ); - } - - } - - if( PropertyName == "_CameraDepthTexture" ) - return Constants.CameraDepthTextureValue; - else - return "uniform sampler2D " + PropertyName + ";"; - } - - //Texture3D - public string GetTexture3DPropertyValue() - { - return PropertyName + "(\"" + m_propertyInspectorName + "\", 3D) = \"" + m_defaultTextureValue + "\" {}"; - } - - public string GetTexture3DUniformValue() - { - ParentGraph outsideGraph = UIUtils.CurrentWindow.OutsideGraph; - if( outsideGraph.SamplingThroughMacros ) - { - if( outsideGraph.IsSRP ) - { - if( m_useSamplerArrayIdx == 0 ) - return string.Format( Constants.TexDeclarationSRPMacros[ TextureType.Texture3D ], PropertyName ); - else - return string.Format( Constants.TexDeclarationNoSamplerSRPMacros[ TextureType.Texture3D ], PropertyName ); - } - else - { - if( m_useSamplerArrayIdx == 0 ) - return string.Format( Constants.TexDeclarationStandardMacros[ TextureType.Texture3D ], PropertyName ); - else - return string.Format( Constants.TexDeclarationNoSamplerStandardMacros[ TextureType.Texture3D ], PropertyName ); - } - } - return "uniform sampler3D " + PropertyName + ";"; - } - - // Cube - public string GetCubePropertyValue() - { - return PropertyName + "(\"" + m_propertyInspectorName + "\", CUBE) = \"" + m_defaultTextureValue + "\" {}"; - } - - public string GetCubeUniformValue() - { - ParentGraph outsideGraph = UIUtils.CurrentWindow.OutsideGraph; - if( outsideGraph.SamplingThroughMacros ) - { - if( outsideGraph.IsSRP ) - { - if( m_useSamplerArrayIdx == 0 ) - return string.Format( Constants.TexDeclarationSRPMacros[ TextureType.Cube ], PropertyName ); - else - return string.Format( Constants.TexDeclarationNoSamplerSRPMacros[ TextureType.Cube ], PropertyName ); - } - else - { - if( m_useSamplerArrayIdx == 0 ) - return string.Format( Constants.TexDeclarationStandardMacros[ TextureType.Cube ], PropertyName ); - else - return string.Format( Constants.TexDeclarationNoSamplerStandardMacros[ TextureType.Cube ], PropertyName ); - } - } - - return "uniform samplerCUBE " + PropertyName + ";"; - } - - // Texture2DArray - public string GetTexture2DArrayPropertyValue() - { - return PropertyName + "(\"" + m_propertyInspectorName + "\", 2DArray) = \"" + m_defaultTextureValue + "\" {}"; - } - - public string GetTexture2DArrayUniformValue() - { - ParentGraph outsideGraph = UIUtils.CurrentWindow.OutsideGraph; - if( outsideGraph.SamplingThroughMacros ) - { - if( outsideGraph.IsSRP ) - { - if( m_useSamplerArrayIdx == 0 ) - return string.Format( Constants.TexDeclarationSRPMacros[ TextureType.Texture2DArray ], PropertyName ); - else - return string.Format( Constants.TexDeclarationNoSamplerSRPMacros[ TextureType.Texture2DArray ], PropertyName ); - } - else - { - if( m_useSamplerArrayIdx == 0 ) - return string.Format( Constants.TexDeclarationStandardMacros[ TextureType.Texture2DArray ], PropertyName ); - else - return string.Format( Constants.TexDeclarationNoSamplerStandardMacros[ TextureType.Texture2DArray ], PropertyName ); - } - } - - return "uniform TEXTURE2D_ARRAY( " + PropertyName + " );" + "\nuniform SAMPLER( sampler" + PropertyName + " );"; - } - - public override void DrawMainPropertyBlock() - { - DrawTexturePropertyType(); - base.DrawMainPropertyBlock(); - } - - public override void DrawSubProperties() - { - ShowDefaults(); - - - EditorGUI.BeginChangeCheck(); - Type currType = ( m_autocastMode == AutoCastType.Auto ) ? typeof( Texture ) : m_textureType; - m_defaultValue = EditorGUILayoutObjectField( Constants.DefaultValueLabel, m_defaultValue, currType, false ) as Texture; - if( EditorGUI.EndChangeCheck() ) - { - CheckTextureImporter( true ); - SetAdditonalTitleText( string.Format( Constants.PropertyValueLabel, GetPropertyValStr() ) ); - } - } - - public override void DrawMaterialProperties() - { - ShowDefaults(); - - EditorGUI.BeginChangeCheck(); - Type currType = ( m_autocastMode == AutoCastType.Auto ) ? typeof( Texture ) : m_textureType; - m_materialValue = EditorGUILayoutObjectField( Constants.MaterialValueLabel, m_materialValue, currType, false ) as Texture; - if( EditorGUI.EndChangeCheck() ) - { - CheckTextureImporter( true ); - SetAdditonalTitleText( string.Format( Constants.PropertyValueLabel, GetPropertyValStr() ) ); - } - } - - new void ShowDefaults() - { - m_defaultTextureValue = (TexturePropertyValues)EditorGUILayoutEnumPopup( DefaultTextureStr, m_defaultTextureValue ); - - if( !m_drawAutocast ) - return; - - AutoCastType newAutoCast = (AutoCastType)EditorGUILayoutEnumPopup( AutoCastModeStr, m_autocastMode ); - if( newAutoCast != m_autocastMode ) - { - m_autocastMode = newAutoCast; - if( m_autocastMode != AutoCastType.Auto ) - { - ConfigTextureData( m_currentType ); - ConfigureInputPorts(); - ConfigureOutputPorts(); - } - } - } - - private void ConfigurePortsFromReference() - { - m_sizeIsDirty = true; - } - - public virtual void ConfigureOutputPorts() - { - switch( m_currentType ) - { - case TextureType.Texture1D: - m_outputPorts[ 0 ].ChangeType( WirePortDataType.SAMPLER1D, false ); - break; - case TextureType.ProceduralTexture: - case TextureType.Texture2D: - m_outputPorts[ 0 ].ChangeType( WirePortDataType.SAMPLER2D, false ); - break; - case TextureType.Texture3D: - m_outputPorts[ 0 ].ChangeType( WirePortDataType.SAMPLER3D, false ); - break; - case TextureType.Cube: - m_outputPorts[ 0 ].ChangeType( WirePortDataType.SAMPLERCUBE, false ); - break; - case TextureType.Texture2DArray: - m_outputPorts[ 0 ].ChangeType( WirePortDataType.SAMPLER2D, false ); - break; - } - - m_sizeIsDirty = true; - } - - public virtual void ConfigureInputPorts() - { - } - - public virtual void AdditionalCheck() - { - } - - public virtual void CheckTextureImporter( bool additionalCheck, bool writeDefault = true ) - { - m_requireMaterialUpdate = true; - Texture texture = m_materialMode ? m_materialValue : m_defaultValue; - TextureImporter importer = AssetImporter.GetAtPath( AssetDatabase.GetAssetPath( texture ) ) as TextureImporter; - if( importer != null ) - { - -#if UNITY_5_5_OR_NEWER - m_isNormalMap = importer.textureType == TextureImporterType.NormalMap; -#else - m_isNormalMap = importer.normalmap; -#endif - if( writeDefault && !UIUtils.IsLoading ) - { - if( m_defaultTextureValue == TexturePropertyValues.bump && !m_isNormalMap ) - m_defaultTextureValue = TexturePropertyValues.white; - else if( m_isNormalMap ) - m_defaultTextureValue = TexturePropertyValues.bump; - } - - if( additionalCheck ) - AdditionalCheck(); - m_linearTexture = !importer.sRGBTexture; - } - - if( ( texture as Texture2DArray ) != null ) - { - ConfigTextureData( TextureType.Texture2DArray ); - } - else if( ( texture as Texture2D ) != null ) - { - ConfigTextureData( TextureType.Texture2D ); - } - else if( ( texture as Texture3D ) != null ) - { - ConfigTextureData( TextureType.Texture3D ); - } - else if( ( texture as Cubemap ) != null ) - { - ConfigTextureData( TextureType.Cube ); - } -#if !UNITY_2018_1_OR_NEWER - // Disabling Substance Deprecated warning -#pragma warning disable 0618 - else if( ( texture as ProceduralTexture ) != null ) - { - ConfigTextureData( TextureType.ProceduralTexture ); - } -#pragma warning restore 0618 -#endif - - ConfigureInputPorts(); - ConfigureOutputPorts(); - } - - public override void OnObjectDropped( UnityEngine.Object obj ) - { - base.OnObjectDropped( obj ); - ConfigFromObject( obj ); - } - - public override void SetupFromCastObject( UnityEngine.Object obj ) - { - base.SetupFromCastObject( obj ); - ConfigFromObject( obj ); - } - - protected void ConfigFromObject( UnityEngine.Object obj, bool writeDefault = true, bool additionalCheck = true ) - { - Texture texture = obj as Texture; - if( texture ) - { - m_materialValue = texture; - m_defaultValue = texture; - CheckTextureImporter( additionalCheck, writeDefault ); - } - } - - - - public override void DrawGUIControls( DrawInfo drawInfo ) - { - base.DrawGUIControls( drawInfo ); - - if( !( drawInfo.CurrentEventType == EventType.MouseDown || drawInfo.CurrentEventType == EventType.MouseUp || drawInfo.CurrentEventType == EventType.ExecuteCommand || drawInfo.CurrentEventType == EventType.DragPerform ) ) - return; - - bool insideBox = m_previewRect.Contains( drawInfo.MousePosition ); - - bool closePicker = false; - if( insideBox ) - { - m_isEditingPicker = true; - } - else if( m_isEditingPicker && !insideBox && drawInfo.CurrentEventType != EventType.ExecuteCommand ) - { - closePicker = true; - } - - if( m_isEditingPicker && drawInfo.CurrentEventType == EventType.ExecuteCommand && - Event.current.commandName.Equals( ObjectSelectorCmdStr ) ) - { - closePicker = true; - } - - if( closePicker ) - { - GUI.FocusControl( null ); - m_isEditingPicker = false; - } - - } - - public override void OnNodeLayout( DrawInfo drawInfo ) - { - base.OnNodeLayout( drawInfo ); - ConfigTextureType(); - } - - public override void Draw( DrawInfo drawInfo ) - { - base.Draw( drawInfo ); - if( m_dropdownEditing ) - { - PropertyType parameterType = (PropertyType)EditorGUIIntPopup( m_dropdownRect, (int)m_currentParameterType, AvailablePropertyTypeLabels, AvailablePropertyTypeValues, UIUtils.PropertyPopUp ); - if( parameterType != m_currentParameterType ) - { - ChangeParameterType( parameterType ); - DropdownEditing = false; - } - } - - if( m_isEditingPicker && m_drawPicker && m_currentParameterType != PropertyType.Global ) - { - Rect hitRect = m_previewRect; - hitRect.height = 14 * drawInfo.InvertedZoom; - hitRect.y = m_previewRect.yMax - hitRect.height; - hitRect.width = 4 * 14 * drawInfo.InvertedZoom; - - bool restoreMouse = false; - if( Event.current.type == EventType.MouseDown && hitRect.Contains( drawInfo.MousePosition ) ) - { - restoreMouse = true; - Event.current.type = EventType.Ignore; - } - - EditorGUI.BeginChangeCheck(); - m_colorBuffer = GUI.color; - GUI.color = Color.clear; - Type currType = ( m_autocastMode == AutoCastType.Auto ) ? typeof( Texture ) : m_textureType; - if( m_materialMode ) - { - m_materialValue = EditorGUIObjectField( m_previewRect, m_materialValue, currType, false ) as Texture; - } - else - { - m_defaultValue = EditorGUIObjectField( m_previewRect, m_defaultValue, currType, false ) as Texture; - } - GUI.color = m_colorBuffer; - - if( EditorGUI.EndChangeCheck() ) - { - CheckTextureImporter( true ); - SetTitleText( m_propertyInspectorName ); - SetAdditonalTitleText( string.Format( Constants.PropertyValueLabel, GetPropertyValStr() ) ); - ConfigureInputPorts(); - ConfigureOutputPorts(); - BeginDelayedDirtyProperty(); - PreviewIsDirty = true; - } - //else if( drawInfo.CurrentEventType == EventType.ExecuteCommand ) - //{ - // GUI.FocusControl( null ); - // m_isEditingPicker = false; - //} - - if( restoreMouse ) - { - Event.current.type = EventType.MouseDown; - } - - if( ( drawInfo.CurrentEventType == EventType.MouseDown || drawInfo.CurrentEventType == EventType.MouseUp ) ) - DrawPreviewMaskButtonsLayout( drawInfo, m_previewRect ); - } - - if( !m_drawPicker ) - return; - - if( drawInfo.CurrentEventType == EventType.Repaint ) - { - DrawTexturePicker( drawInfo ); - } - } - - - - protected void DrawTexturePicker( DrawInfo drawInfo ) - { - Rect newRect = m_previewRect; - Texture currentValue = m_materialMode ? m_materialValue : m_defaultValue; - - //??? - //m_showPreview = true; - bool showButtons = m_currentParameterType != PropertyType.Global; - - if( currentValue == null ) - GUI.Label( newRect, string.Empty, UIUtils.ObjectFieldThumb ); - else - DrawPreview( drawInfo, m_previewRect ); - - if( ContainerGraph.LodLevel <= ParentGraph.NodeLOD.LOD2 ) - { - Rect butRect = m_previewRect; - butRect.y -= 1; - butRect.x += 1; - - Rect smallButton = newRect; - smallButton.height = 14 * drawInfo.InvertedZoom; - smallButton.y = newRect.yMax - smallButton.height - 2; - smallButton.width = 40 * drawInfo.InvertedZoom; - smallButton.x = newRect.xMax - smallButton.width - 2; - if( currentValue == null ) - { - if( m_previousType != m_currentType ) - { - m_previousType = m_currentType; - m_labelText = "None (" + m_currentType.ToString() + ")"; - } - - GUI.Label( newRect, m_labelText, UIUtils.ObjectFieldThumbOverlay ); - } - else if( showButtons ) - { - DrawPreviewMaskButtonsRepaint( drawInfo, butRect ); - } - - if( showButtons ) - GUI.Label( smallButton, "Select", UIUtils.GetCustomStyle( CustomStyle.SamplerButton ) ); - } - - GUI.Label( newRect, string.Empty, UIUtils.GetCustomStyle( CustomStyle.SamplerFrame ) ); - } - - public string BaseGenerateShaderForOutput( int outputId, ref MasterNodeDataCollector dataCollector, bool ignoreLocalVar ) - { - base.GenerateShaderForOutput( outputId, ref dataCollector, ignoreLocalVar ); - return PropertyName; - } - - public override string GenerateShaderForOutput( int outputId, ref MasterNodeDataCollector dataCollector, bool ignoreLocalVar ) - { - return BaseGenerateShaderForOutput( outputId, ref dataCollector, ignoreLocalVar ); - } - - public override void UpdateMaterial( Material mat ) - { - base.UpdateMaterial( mat ); - if( UIUtils.IsProperty( m_currentParameterType ) && !InsideShaderFunction ) - { - OnPropertyNameChanged(); - if( mat.HasProperty( PropertyName ) ) - { - mat.SetTexture( PropertyName, m_materialValue ); - } - } - } - - public override void SetMaterialMode( Material mat, bool fetchMaterialValues ) - { - base.SetMaterialMode( mat, fetchMaterialValues ); - if( fetchMaterialValues && m_materialMode && UIUtils.IsProperty( m_currentParameterType ) ) - { - if( mat.HasProperty( PropertyName ) ) - { - m_materialValue = mat.GetTexture( PropertyName ); - CheckTextureImporter( false, false ); - } - } - } - - public override void ForceUpdateFromMaterial( Material material ) - { - if( UIUtils.IsProperty( m_currentParameterType ) && material.HasProperty( PropertyName ) ) - { - m_materialValue = material.GetTexture( PropertyName ); - CheckTextureImporter( false, false ); - PreviewIsDirty = true; - } - } - - public override bool UpdateShaderDefaults( ref Shader shader, ref TextureDefaultsDataColector defaultCol/* ref string metaStr */) - { - if( m_defaultValue != null ) - { - defaultCol.AddValue( PropertyName, m_defaultValue ); - } - - return true; - } - - public override void ReadFromString( ref string[] nodeParams ) - { - base.ReadFromString( ref nodeParams ); - ReadAdditionalData( ref nodeParams ); - if( UIUtils.CurrentShaderVersion() > 17101 ) - { - m_useSamplerArrayIdx = Convert.ToInt32( GetCurrentParam( ref nodeParams ) ); - } - } - - public virtual void ReadAdditionalData( ref string[] nodeParams ) - { - string defaultTextureGUID = GetCurrentParam( ref nodeParams ); - //m_defaultValue = AssetDatabase.LoadAssetAtPath<Texture>( textureName ); - if( UIUtils.CurrentShaderVersion() > 14101 ) - { - m_defaultValue = AssetDatabase.LoadAssetAtPath<Texture>( AssetDatabase.GUIDToAssetPath( defaultTextureGUID ) ); - string materialTextureGUID = GetCurrentParam( ref nodeParams ); - m_materialValue = AssetDatabase.LoadAssetAtPath<Texture>( AssetDatabase.GUIDToAssetPath( materialTextureGUID ) ); - } - else - { - m_defaultValue = AssetDatabase.LoadAssetAtPath<Texture>( defaultTextureGUID ); - } - - m_isNormalMap = Convert.ToBoolean( GetCurrentParam( ref nodeParams ) ); - m_defaultTextureValue = (TexturePropertyValues)Enum.Parse( typeof( TexturePropertyValues ), GetCurrentParam( ref nodeParams ) ); - m_autocastMode = (AutoCastType)Enum.Parse( typeof( AutoCastType ), GetCurrentParam( ref nodeParams ) ); - if( UIUtils.CurrentShaderVersion() > 15306 ) - { - m_currentType = (TextureType)Enum.Parse( typeof( TextureType ), GetCurrentParam( ref nodeParams ) ); - } - else - { - m_currentType = TextureType.Texture2D; - } - - ConfigTextureData( m_currentType ); - - //ConfigFromObject( m_defaultValue ); - if( m_materialValue == null ) - { - ConfigFromObject( m_defaultValue ); - } - else - { - CheckTextureImporter( true, true ); - } - ConfigureInputPorts(); - ConfigureOutputPorts(); - } - - public override void ReadAdditionalClipboardData( ref string[] nodeParams ) - { - base.ReadAdditionalClipboardData( ref nodeParams ); - string textureName = GetCurrentParam( ref nodeParams ); - m_materialValue = AssetDatabase.LoadAssetAtPath<Texture>( textureName ); - } - - public override void WriteToString( ref string nodeInfo, ref string connectionsInfo ) - { - base.WriteToString( ref nodeInfo, ref connectionsInfo ); - WriteAdditionalToString( ref nodeInfo, ref connectionsInfo ); - if( m_useSamplerArrayIdx > 0 ) - { - TexturePropertyNode samplerNode = UIUtils.GetTexturePropertyNode( m_useSamplerArrayIdx - 1 ); - IOUtils.AddFieldValueToString( ref nodeInfo, ( samplerNode != null ? samplerNode.UniqueId : -1 ) ); - } - else - { - IOUtils.AddFieldValueToString( ref nodeInfo, -1 ); - } - } - - public virtual void WriteAdditionalToString( ref string nodeInfo, ref string connectionsInfo ) - { - //IOUtils.AddFieldValueToString( ref nodeInfo, ( m_defaultValue != null ) ? AssetDatabase.GetAssetPath( m_defaultValue ) : Constants.NoStringValue ); - IOUtils.AddFieldValueToString( ref nodeInfo, ( m_defaultValue != null ) ? AssetDatabase.AssetPathToGUID( AssetDatabase.GetAssetPath( m_defaultValue ) ) : Constants.NoStringValue ); - IOUtils.AddFieldValueToString( ref nodeInfo, ( m_materialValue != null ) ? AssetDatabase.AssetPathToGUID( AssetDatabase.GetAssetPath( m_materialValue ) ) : Constants.NoStringValue ); - IOUtils.AddFieldValueToString( ref nodeInfo, m_isNormalMap.ToString() ); - IOUtils.AddFieldValueToString( ref nodeInfo, m_defaultTextureValue ); - IOUtils.AddFieldValueToString( ref nodeInfo, m_autocastMode ); - IOUtils.AddFieldValueToString( ref nodeInfo, m_currentType ); - } - - public override void WriteAdditionalClipboardData( ref string nodeInfo ) - { - base.WriteAdditionalClipboardData( ref nodeInfo ); - IOUtils.AddFieldValueToString( ref nodeInfo, ( m_materialValue != null ) ? AssetDatabase.GetAssetPath( m_materialValue ) : Constants.NoStringValue ); - } - - public override void Destroy() - { - base.Destroy(); - m_defaultValue = null; - m_materialValue = null; - m_textureProperty = null; - UIUtils.UnregisterPropertyNode( this ); - UIUtils.UnregisterTexturePropertyNode( this ); - } - - public override string GetPropertyValStr() - { - return m_materialMode ? ( m_materialValue != null ? m_materialValue.name : IOUtils.NO_TEXTURES ) : ( m_defaultValue != null ? m_defaultValue.name : IOUtils.NO_TEXTURES ); - } - - public override string GetPropertyValue() - { - switch( m_currentType ) - { - case TextureType.Texture1D: - { - return PropertyAttributes + GetTexture1DPropertyValue(); - } - case TextureType.ProceduralTexture: - case TextureType.Texture2D: - { - return PropertyAttributes + GetTexture2DPropertyValue(); - } - case TextureType.Texture3D: - { - return PropertyAttributes + GetTexture3DPropertyValue(); - } - case TextureType.Cube: - { - return PropertyAttributes + GetCubePropertyValue(); - } - case TextureType.Texture2DArray: - { - return PropertyAttributes + GetTexture2DArrayPropertyValue(); - } - } - return string.Empty; - } - - public override string GetUniformValue() - { - switch( m_currentType ) - { - case TextureType.Texture1D: - { - return GetTexture1DUniformValue(); - } - case TextureType.ProceduralTexture: - case TextureType.Texture2D: - { - return GetTexture2DUniformValue(); - } - case TextureType.Texture3D: - { - return GetTexture3DUniformValue(); - } - case TextureType.Cube: - { - return GetCubeUniformValue(); - } - case TextureType.Texture2DArray: - { - return GetTexture2DArrayUniformValue(); - } - } - - return string.Empty; - } - - public override bool GetUniformData( out string dataType, out string dataName, ref bool fullValue ) - { - m_excludeUniform = false; - ParentGraph outsideGraph = UIUtils.CurrentWindow.OutsideGraph; - if( outsideGraph.SamplingThroughMacros ) - { - if( outsideGraph.IsSRP ) - { - if( Constants.TexDeclarationSRPMacros.ContainsKey( m_currentType ) ) - { - if( m_useSamplerArrayIdx == 0 ) - dataName = string.Format( Constants.TexDeclarationSRPMacros[ m_currentType ], PropertyName ); - else - dataName = string.Format( Constants.TexDeclarationNoSamplerSRPMacros[ m_currentType ], PropertyName ); - dataType = string.Empty; - fullValue = true; - return true; - } - } - else if( Constants.TexDeclarationStandardMacros.ContainsKey( m_currentType ) ) - { - if( m_useSamplerArrayIdx == 0 ) - dataName = string.Format( Constants.TexDeclarationStandardMacros[ m_currentType ], PropertyName ); - else - dataName = string.Format( Constants.TexDeclarationNoSamplerStandardMacros[ m_currentType ], PropertyName ); - dataType = string.Empty; - fullValue = true; - return true; - } - } - - if( PropertyName == "_CameraDepthTexture" ) - { - m_excludeUniform = true; - dataType = "UNITY_DECLARE_DEPTH_TEXTURE("; - dataName = m_propertyName + " )"; - return true; - } - - if( m_currentType == TextureType.Texture2DArray ) - { - MasterNode masterNode = UIUtils.CurrentWindow.OutsideGraph.CurrentMasterNode; - if( masterNode.CurrentDataCollector.IsTemplate && masterNode.CurrentDataCollector.IsSRP ) - { - dataType = "TEXTURE2D_ARRAY( " + PropertyName + ""; - dataName = ");\nuniform SAMPLER( sampler" + PropertyName + " )"; - return true; - } - dataType = "UNITY_DECLARE_TEX2DARRAY("; - dataName = m_propertyName + " )"; - return true; - } - - - dataType = UIUtils.TextureTypeToCgType( m_currentType ); - dataName = m_propertyName; - return true; - } - - public virtual string CurrentPropertyReference - { - get - { - string propertyName = string.Empty; - propertyName = PropertyName; - return propertyName; - } - } - - public Texture Value - { - get { return m_materialMode ? m_materialValue : m_defaultValue; } - set - { - if( m_materialMode ) - m_materialValue = value; - else - m_defaultValue = value; - } - } - - public Texture MaterialValue - { - get { return m_materialValue; } - set { m_materialValue = value; } - } - - public Texture DefaultValue - { - get { return m_defaultValue; } - set { m_defaultValue = value; } - } - - public void SetInspectorName( string newName ) - { - m_propertyInspectorName = newName; - } - - public void SetPropertyName( string newName ) - { - m_propertyName = newName; - } - - public bool IsValid { get { return m_materialMode ? ( m_materialValue != null ) : ( m_defaultValue != null ); } } - - public virtual bool IsNormalMap { get { return m_isNormalMap; } } - public bool IsLinearTexture { get { return m_linearTexture; } } - - public override void OnPropertyNameChanged() - { - base.OnPropertyNameChanged(); - UIUtils.UpdateTexturePropertyDataNode( UniqueId, PropertyName ); - } - - public override void SetGlobalValue() { Shader.SetGlobalTexture( m_propertyName, m_defaultValue ); } - public override void FetchGlobalValue() { m_materialValue = Shader.GetGlobalTexture( m_propertyName ); } - public override string DataToArray { get { return PropertyName; } } - public TextureType CurrentType { get { return m_currentType; } } - - public bool DrawAutocast - { - get { return m_drawAutocast; } - set { m_drawAutocast = value; } - } - - public TexturePropertyValues DefaultTextureValue - { - get { return m_defaultTextureValue; } - set { m_defaultTextureValue = value; } - } - - public AutoCastType AutocastMode - { - get { return m_autocastMode; } - } - } -} |