Esempio n. 1
0
        public static void GetGradientPropertiesForPreview(PropertyCollector properties, string name, Gradient value)
        {
            properties.AddShaderProperty(new Vector1ShaderProperty()
            {
                overrideReferenceName = $"{name}_Type",
                value = (int)value.mode,
                generatePropertyBlock = false
            });

            properties.AddShaderProperty(new Vector1ShaderProperty()
            {
                overrideReferenceName = $"{name}_ColorsLength",
                value = value.colorKeys.Length,
                generatePropertyBlock = false
            });

            properties.AddShaderProperty(new Vector1ShaderProperty()
            {
                overrideReferenceName = $"{name}_AlphasLength",
                value = value.alphaKeys.Length,
                generatePropertyBlock = false
            });

            for (int i = 0; i < 8; i++)
            {
                properties.AddShaderProperty(new Vector4ShaderProperty()
                {
                    overrideReferenceName = $"{name}_ColorKey{i}",
                    value = i < value.colorKeys.Length ? GradientUtil.ColorKeyToVector(value.colorKeys[i]) : Vector4.zero,
                    generatePropertyBlock = false
                });
            }

            for (int i = 0; i < 8; i++)
            {
                properties.AddShaderProperty(new Vector2ShaderProperty()
                {
                    overrideReferenceName = $"{name}_AlphaKey{i}",
                    value = i < value.alphaKeys.Length ? GradientUtil.AlphaKeyToVector(value.alphaKeys[i]) : Vector2.zero,
                    generatePropertyBlock = false
                });
            }
        }
Esempio n. 2
0
 public void SetMaterialPropertyBlockValue(Material mat)
 {
     if ((propType == PropertyType.Texture2D || propType == PropertyType.Texture2DArray || propType == PropertyType.Texture3D) && textureValue != null)
     {
         mat.SetTexture(name, m_ClassData.textureValue);
     }
     else if (propType == PropertyType.Cubemap && cubemapValue != null)
     {
         mat.SetTexture(name, m_ClassData.cubemapValue);
     }
     else if (propType == PropertyType.Color)
     {
         mat.SetColor(name, m_StructData.colorValue);
     }
     else if (propType == PropertyType.Vector2 || propType == PropertyType.Vector3 || propType == PropertyType.Vector4)
     {
         mat.SetVector(name, m_StructData.vector4Value);
     }
     else if (propType == PropertyType.Vector1)
     {
         mat.SetFloat(name, m_StructData.floatValue);
     }
     else if (propType == PropertyType.Boolean)
     {
         mat.SetFloat(name, m_StructData.booleanValue ? 1 : 0);
     }
     else if (propType == PropertyType.Matrix2 || propType == PropertyType.Matrix3 || propType == PropertyType.Matrix4)
     {
         mat.SetMatrix(name, m_StructData.matrixValue);
     }
     else if (propType == PropertyType.Gradient)
     {
         mat.SetFloat(string.Format("{0}_Type", name), (int)m_ClassData.gradientValue.mode);
         mat.SetFloat(string.Format("{0}_ColorsLength", name), m_ClassData.gradientValue.colorKeys.Length);
         mat.SetFloat(string.Format("{0}_AlphasLength", name), m_ClassData.gradientValue.alphaKeys.Length);
         for (int i = 0; i < 8; i++)
         {
             mat.SetVector(string.Format("{0}_ColorKey{1}", name, i), i < m_ClassData.gradientValue.colorKeys.Length ? GradientUtil.ColorKeyToVector(m_ClassData.gradientValue.colorKeys[i]) : Vector4.zero);
         }
         for (int i = 0; i < 8; i++)
         {
             mat.SetVector(string.Format("{0}_AlphaKey{1}", name, i), i < m_ClassData.gradientValue.alphaKeys.Length ? GradientUtil.AlphaKeyToVector(m_ClassData.gradientValue.alphaKeys[i]) : Vector2.zero);
         }
     }
 }
Esempio n. 3
0
 public void SetValueOnMaterialPropertyBlock(MaterialPropertyBlock mat)
 {
     if ((propType == PropertyType.Texture2D || propType == PropertyType.Texture2DArray || propType == PropertyType.Texture3D))
     {
         if (m_ClassData.textureValue == null)
         {
             // there's no way to set the texture back to NULL
             // and no way to delete the property either
             // so instead we set the value to what we know the default will be
             // (all textures in ShaderGraph default to white)
             mat.SetTexture(name, Texture2D.whiteTexture);
         }
         else
         {
             mat.SetTexture(name, m_ClassData.textureValue);
         }
     }
     else if (propType == PropertyType.Cubemap)
     {
         if (m_ClassData.cubemapValue == null)
         {
             // there's no way to set the texture back to NULL
             // and no way to delete the property either
             // so instead we set the value to what we know the default will be
             // (all textures in ShaderGraph default to white)
             // there's no Cubemap.whiteTexture, but this seems to work
             mat.SetTexture(name, Texture2D.whiteTexture);
         }
         else
         {
             mat.SetTexture(name, m_ClassData.cubemapValue);
         }
     }
     else if (propType == PropertyType.Color)
     {
         mat.SetColor(name, m_StructData.colorValue);
     }
     else if (propType == PropertyType.Vector2 || propType == PropertyType.Vector3 || propType == PropertyType.Vector4)
     {
         mat.SetVector(name, m_StructData.vector4Value);
     }
     else if (propType == PropertyType.Vector1)
     {
         mat.SetFloat(name, m_StructData.floatValue);
     }
     else if (propType == PropertyType.Boolean)
     {
         mat.SetFloat(name, m_StructData.booleanValue ? 1 : 0);
     }
     else if (propType == PropertyType.Matrix2 || propType == PropertyType.Matrix3 || propType == PropertyType.Matrix4)
     {
         mat.SetMatrix(name, m_StructData.matrixValue);
     }
     else if (propType == PropertyType.Gradient)
     {
         mat.SetFloat(string.Format("{0}_Type", name), (int)m_ClassData.gradientValue.mode);
         mat.SetFloat(string.Format("{0}_ColorsLength", name), m_ClassData.gradientValue.colorKeys.Length);
         mat.SetFloat(string.Format("{0}_AlphasLength", name), m_ClassData.gradientValue.alphaKeys.Length);
         for (int i = 0; i < 8; i++)
         {
             mat.SetVector(string.Format("{0}_ColorKey{1}", name, i), i < m_ClassData.gradientValue.colorKeys.Length ? GradientUtil.ColorKeyToVector(m_ClassData.gradientValue.colorKeys[i]) : Vector4.zero);
         }
         for (int i = 0; i < 8; i++)
         {
             mat.SetVector(string.Format("{0}_AlphaKey{1}", name, i), i < m_ClassData.gradientValue.alphaKeys.Length ? GradientUtil.AlphaKeyToVector(m_ClassData.gradientValue.alphaKeys[i]) : Vector2.zero);
         }
     }
     else if (propType == PropertyType.VirtualTexture)
     {
         // virtual texture assignments are not supported via the material property block, we must assign them to the materials
     }
 }