Esempio n. 1
0
        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);
            }
            else
            {
                if (m_defaultId == -1)
                {
                    m_defaultId = Shader.PropertyToID("_Default");
                }

                PreviewMaterial.SetInt(m_defaultId, 0);

                if (m_typeId == -1)
                {
                    m_typeId = Shader.PropertyToID("_Type");
                }

                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);
                }
            }
        }
 public override void SetPreviewInputs()
 {
     base.SetPreviewInputs();
     PreviewMaterial.SetVector(m_maskId, m_maskValue);
 }
        void UpdateFromId()
        {
            if (m_shaderProperties != null)
            {
                if (m_shaderProperties.Count == 0)
                {
                    for (int i = 0; i < 4; i++)
                    {
                        m_containerGraph.DeleteConnection(false, UniqueId, i, false, true);
                    }

                    m_headerColor            = UIUtils.GetColorFromCategory("Default");
                    m_content.text           = "None";
                    m_additionalContent.text = string.Empty;
                    m_previewMaterialPassId  = 1;
                    PreviewMaterial.SetFloat(FloatPropertyId, 0);
                    m_showPreview         = false;
                    m_drawPreviewExpander = false;
                    m_outputPorts[0].ChangeProperties("None", WirePortDataType.FLOAT, false);
                    ConfigurePorts();
                    return;
                }

                m_drawPreviewExpander = true;
                bool areCompatible = TemplateHelperFunctions.CheckIfCompatibles(m_outputPorts[0].DataType, m_shaderProperties[m_currentPropertyIdx].PropertyDataType);
                switch (m_shaderProperties[m_currentPropertyIdx].PropertyDataType)
                {
                case WirePortDataType.SAMPLER1D:
                case WirePortDataType.SAMPLER2D:
                case WirePortDataType.SAMPLER3D:
                case WirePortDataType.SAMPLERCUBE:
                    m_outputPorts[0].ChangeProperties("Tex", m_shaderProperties[m_currentPropertyIdx].PropertyDataType, false);
                    m_headerColor = UIUtils.GetColorFromCategory("Textures");
                    break;

                case WirePortDataType.INT:
                case WirePortDataType.FLOAT:
                    m_outputPorts[0].ChangeProperties(Constants.EmptyPortValue, m_shaderProperties[m_currentPropertyIdx].PropertyDataType, false);
                    m_headerColor = UIUtils.GetColorFromCategory("Constants And Properties");
                    break;

                case WirePortDataType.FLOAT4:
                    m_outputPorts[0].ChangeProperties("XYZW", m_shaderProperties[m_currentPropertyIdx].PropertyDataType, false);
                    m_headerColor = UIUtils.GetColorFromCategory("Constants And Properties");
                    break;

                case WirePortDataType.COLOR:
                    m_outputPorts[0].ChangeProperties("RGBA", m_shaderProperties[m_currentPropertyIdx].PropertyDataType, false);
                    m_headerColor = UIUtils.GetColorFromCategory("Constants And Properties");
                    break;

                default:
                case WirePortDataType.OBJECT:
                case WirePortDataType.FLOAT3x3:
                case WirePortDataType.FLOAT4x4:
                    m_outputPorts[0].ChangeProperties("Out", m_shaderProperties[m_currentPropertyIdx].PropertyDataType, false);
                    m_headerColor = UIUtils.GetColorFromCategory("Constants And Properties");
                    break;
                }

                if (!areCompatible)
                {
                    for (int i = 0; i < 4; i++)
                    {
                        m_containerGraph.DeleteConnection(false, UniqueId, i, false, true);
                    }
                }

                ConfigurePorts();

                m_propertyName   = m_shaderProperties[m_currentPropertyIdx].PropertyName;
                m_content.text   = m_shaderProperties[m_currentPropertyIdx].PropertyInspectorName;
                m_propertyNameId = Shader.PropertyToID(m_propertyName);
                m_typeName       = TypeLabelStr + m_shaderProperties[m_currentPropertyIdx].PropertyType.ToString();
                if (m_shaderProperties[m_currentPropertyIdx].PropertyType != PropertyType.Global)
                {
                    m_propertyNameLabel = PropertyNameStr + m_shaderProperties[m_currentPropertyIdx].PropertyName;
                }

                m_sizeIsDirty = true;
                Material currMat = m_containerGraph.CurrentMaterial;
                if (currMat != null)
                {
                    if (m_shaderProperties[m_currentPropertyIdx].PropertyType == PropertyType.Global)
                    {
                        m_previewMaterialPassId = 0;
                        if (!m_showErrorMessage && m_showPreview)
                        {
                            ShowTab(NodeMessageType.Info, WarningStr);
                        }
                    }
                    else
                    {
                        if (m_showErrorMessage && m_errorMessageTypeIsError != NodeMessageType.Error)
                        {
                            HideTab();
                        }
                        switch (m_shaderProperties[m_currentPropertyIdx].PropertyDataType)
                        {
                        case WirePortDataType.INT: m_previewMaterialPassId = 0; break;

                        case WirePortDataType.FLOAT: m_previewMaterialPassId = 1; break;

                        case WirePortDataType.FLOAT4:
                        case WirePortDataType.COLOR: m_previewMaterialPassId = 2; break;

                        case WirePortDataType.SAMPLER2D: m_previewMaterialPassId = 3; break;

                        case WirePortDataType.SAMPLER3D: m_previewMaterialPassId = 4; break;

                        case WirePortDataType.SAMPLERCUBE: m_previewMaterialPassId = 5; break;

                        default: PreviewMaterial.SetPass(0); break;
                        }
                    }
                }

                CheckWarningState();
            }
        }
        public override void SetPreviewInputs()
        {
            if (m_containerGraph.CurrentCanvasMode != NodeAvailability.TemplateShader)
            {
                return;
            }

            if (m_shaderProperties == null || m_currentPropertyIdx >= m_shaderProperties.Count)
            {
                return;
            }

            if (m_shaderProperties[m_currentPropertyIdx].PropertyType == PropertyType.Global)
            {
                m_additionalContent.text = string.Empty;
                PreviewMaterial.SetInt(IntPropertyId, 0);
                return;
            }

            Material currMat = m_containerGraph.CurrentMaterial;

            if (currMat != null && currMat.HasProperty(m_propertyNameId))
            {
                switch (m_shaderProperties[m_currentPropertyIdx].PropertyDataType)
                {
                case WirePortDataType.INT:
                {
                    int value = currMat.GetInt(m_propertyNameId);
                    SetAdditonalTitleText(string.Format(Constants.SubTitleValueFormatStr, GenerateTitle(value)));
                    PreviewMaterial.SetInt(IntPropertyId, value);
                }
                break;

                case WirePortDataType.FLOAT:
                {
                    float value = currMat.GetFloat(m_propertyNameId);
                    SetAdditonalTitleText(string.Format(Constants.SubTitleValueFormatStr, GenerateTitle(value)));
                    PreviewMaterial.SetFloat(FloatPropertyId, value);
                }
                break;

                case WirePortDataType.FLOAT4:
                {
                    Vector4 value = currMat.GetVector(m_propertyNameId);
                    SetAdditonalTitleText(string.Format(Constants.SubTitleValueFormatStr, GenerateTitle(value.x, value.y, value.z, value.w)));
                    PreviewMaterial.SetVector(VectorPropertyId, value);
                }
                break;

                case WirePortDataType.COLOR:
                {
                    Color value = currMat.GetColor(m_propertyNameId);
                    SetAdditonalTitleText(string.Format(Constants.SubTitleValueFormatStr, GenerateTitle(value.r, value.g, value.b, value.a)));
                    PreviewMaterial.SetColor(VectorPropertyId, value);
                }
                break;

                case WirePortDataType.SAMPLER2D:
                {
                    Texture value = currMat.GetTexture(m_propertyNameId);
                    if (value)
                    {
                        SetAdditonalTitleText(string.Format(Constants.SubTitleValueFormatStr, value.name));
                    }
                    else
                    {
                        SetAdditonalTitleText(string.Empty);
                    }
                    PreviewMaterial.SetTexture(Sampler2DPropertyId, value);
                }
                break;

                case WirePortDataType.SAMPLER3D:
                {
                    Texture value = currMat.GetTexture(m_propertyNameId);
                    if (value)
                    {
                        SetAdditonalTitleText(string.Format(Constants.SubTitleValueFormatStr, value.name));
                    }
                    else
                    {
                        SetAdditonalTitleText(string.Empty);
                    }
                    PreviewMaterial.SetTexture(Sampler3DPropertyId, value);
                }
                break;

                case WirePortDataType.SAMPLERCUBE:
                {
                    Texture value = currMat.GetTexture(m_propertyNameId);
                    if (value)
                    {
                        SetAdditonalTitleText(string.Format(Constants.SubTitleValueFormatStr, value.name));
                    }
                    else
                    {
                        SetAdditonalTitleText(string.Empty);
                    }
                    PreviewMaterial.SetTexture(SamplerCubePropertyId, value);
                }
                break;
                }
            }
            else
            {
                SetAdditonalTitleText(string.Empty);
            }
        }
Esempio n. 5
0
        public override void SetPreviewInputs()
        {
            base.SetPreviewInputs();

            if (m_cachedTypeId == -1)
            {
                m_cachedTypeId = Shader.PropertyToID("_GType");
            }

            if (m_cachedTimeId == -1)
            {
                m_cachedTimeId = Shader.PropertyToID("_GTime");
            }

            if (m_cachedColorNumId == -1)
            {
                m_cachedColorNumId = Shader.PropertyToID("_GColorNum");
            }

            if (m_cachedAlphaNumId == -1)
            {
                m_cachedAlphaNumId = Shader.PropertyToID("_GAlphaNum");
            }

            PreviewMaterial.SetTexture(m_cachedTimeId, m_inputPorts[1].InputPreviewTexture(ContainerGraph));

            Gradient curGrad = m_blankGrandient;

            if (m_gradientNode != null)
            {
                curGrad = m_gradientNode.Gradient;
            }

            PreviewMaterial.SetInt(m_cachedTypeId, (int)curGrad.mode);
            PreviewMaterial.SetInt(m_cachedColorNumId, curGrad.colorKeys.Length);
            PreviewMaterial.SetInt(m_cachedAlphaNumId, curGrad.alphaKeys.Length);

            for (int i = 0; i < 8; i++)
            {
                if (i < curGrad.colorKeys.Length)
                {
                    m_auxVec4.x = curGrad.colorKeys[i].color.r;
                    m_auxVec4.y = curGrad.colorKeys[i].color.g;
                    m_auxVec4.z = curGrad.colorKeys[i].color.b;
                    m_auxVec4.w = curGrad.colorKeys[i].time;
                    PreviewMaterial.SetVector("_Col" + i, m_auxVec4);
                }
                else
                {
                    PreviewMaterial.SetVector("_Col" + i, Vector4.zero);
                }
            }

            for (int i = 0; i < 8; i++)
            {
                if (i < curGrad.alphaKeys.Length)
                {
                    m_auxVec4.x = curGrad.alphaKeys[i].alpha;
                    m_auxVec4.y = curGrad.alphaKeys[i].time;
                    PreviewMaterial.SetVector("_Alp" + i, m_auxVec4);
                }
                else
                {
                    PreviewMaterial.SetVector("_Alp" + i, Vector4.zero);
                }
            }
        }
Esempio n. 6
0
 public override void SetPreviewInputs()
 {
     base.SetPreviewInputs();
     PreviewMaterial.SetInt(m_planeId, (int)m_selectedType);
 }
        public override void SetPreviewInputs()
        {
            if (Fnode == null)
            {
                m_ignoreConnection = false;
                CheckSpherePreview();
            }
            else
            {
                var input = Fnode.GetInput(this);
                if (input != null && (!InputPorts[0].IsConnected || input.IsConnected))
                {
                    m_ignoreConnection = true;
                    InputPorts[0].PreparePortCacheID();
                    Fnode.SetPreviewInput(input);
                    if (input.ExternalReferences.Count > 0)
                    {
                        SpherePreview = Fnode.ContainerGraph.GetNode(input.ExternalReferences[0].NodeId).SpherePreview;
                    }
                    else
                    {
                        SpherePreview = false;
                    }
                    PreviewMaterial.SetTexture(InputPorts[0].CachedPropertyId, input.InputPreviewTexture(Fnode.ContainerGraph));
                }
                else
                {
                    m_ignoreConnection = false;
                    CheckSpherePreview();
                }
            }

            if (!m_ignoreConnection)
            {
                base.SetPreviewInputs();
            }

            for (int i = 0; i < OutputPorts[0].ExternalReferences.Count; i++)
            {
                ContainerGraph.GetNode(OutputPorts[0].ExternalReferences[i].NodeId).OnNodeChange();
            }

            if (m_typeId == -1)
            {
                m_typeId = Shader.PropertyToID("_Type");
            }

            if (m_inputPorts[0].DataType == WirePortDataType.FLOAT || m_inputPorts[0].DataType == WirePortDataType.INT)
            {
                PreviewMaterial.SetInt(m_typeId, 1);
            }
            else if (m_inputPorts[0].DataType == WirePortDataType.FLOAT2)
            {
                PreviewMaterial.SetInt(m_typeId, 2);
            }
            else if (m_inputPorts[0].DataType == WirePortDataType.FLOAT3)
            {
                PreviewMaterial.SetInt(m_typeId, 3);
            }
            else
            {
                PreviewMaterial.SetInt(m_typeId, 0);
            }
        }