Beispiel #1
0
 private extern int GetFirstPropertyNameIdByAttribute(ShaderPropertyFlags attributeFlag);
 [NativeName("GetFirstPropertyNameIdByAttributeFromScript")] extern private int GetFirstPropertyNameIdByAttribute(ShaderPropertyFlags attributeFlag);
        public ShaderPropertyInfo(Shader shader, int propertyIndex)
        {
            m_Name        = shader.GetPropertyName(propertyIndex);
            m_Id          = Shader.PropertyToID(m_Name);
            m_DisplayName = shader.GetPropertyDescription(propertyIndex);
            m_Type        = shader.GetPropertyType(propertyIndex);
            m_Flags       = shader.GetPropertyFlags(propertyIndex);

            m_Range = default;
            if (m_Type == ShaderPropertyType.Range)
            {
                m_Range = shader.GetPropertyRangeLimits(propertyIndex);
            }

            m_TextureDimension   = TextureDimension.None;
            m_DefaultFloatValue  = 0;
            m_DefaultVectorValue = default;
            m_DefaultTexureName  = string.Empty;
            m_DefaultTexureValue = null;
            switch (shader.GetPropertyType(propertyIndex))
            {
            case ShaderPropertyType.Color:
            case ShaderPropertyType.Vector:
                m_DefaultVectorValue = shader.GetPropertyDefaultVectorValue(propertyIndex);
                break;

            case ShaderPropertyType.Float:
            case ShaderPropertyType.Range:
                m_DefaultFloatValue = shader.GetPropertyDefaultFloatValue(propertyIndex);
                break;

            case ShaderPropertyType.Texture:
                m_TextureDimension  = shader.GetPropertyTextureDimension(propertyIndex);
                m_DefaultTexureName = shader.GetPropertyTextureDefaultName(propertyIndex);
                switch (m_TextureDimension)
                {
                case TextureDimension.Tex2D:
                    switch (m_DefaultTexureName)
                    {
                    case "white": m_DefaultTexureValue = Texture2D.whiteTexture; break;

                    case "black": m_DefaultTexureValue = Texture2D.blackTexture; break;

                    case "gray":  m_DefaultTexureValue = Texture2D.grayTexture; break;

                    case "bump":  m_DefaultTexureValue = Texture2D.normalTexture; break;
                    }
                    break;

                case TextureDimension.Tex3D:
                    m_DefaultTexureValue = CoreUtils.blackVolumeTexture;
                    break;

                case TextureDimension.Cube:
                    m_DefaultTexureValue = CoreUtils.blackCubeTexture;
                    break;

                case TextureDimension.CubeArray:
                    m_DefaultTexureValue = CoreUtils.magentaCubeTextureArray;
                    break;
                }
                break;
            }
        }