Exemple #1
0
        private void DrawMaterial(Material m)
        {
            eGUI.LabelBold(m.name);

            var shader = m.shader;

            if (shader == null)
            {
                return;
            }

            if (shader != _cachedShader)
            {
                _cachedShader     = shader;
                _cachedProperties = new ShaderPropertyInfo[ShaderUtil.GetPropertyCount(shader)];
                for (var i = 0; i < _cachedProperties.Length; i++)
                {
                    _cachedProperties[i] = new ShaderPropertyInfo {
                        name = ShaderUtil.GetPropertyName(shader, i), type = ShaderUtil.GetPropertyType(shader, i)
                    }
                }
                ;
            }

            eGUI.ComboEditor(ref _target.propertyName, "Property", _cachedProperties.Where(p => (byte)p.type == (byte)_target.propertyType).Select(p => p.name).ToArray());
        }
    }
Exemple #2
0
    // Caches the list of properties
    public static List <ShaderPropertyInfo> GetShaderProperties(Shader s)
    {
        if (shaderProps.ContainsKey(s.GetInstanceID()))
        {
            return(shaderProps[s.GetInstanceID()]);
        }

        var res = new List <ShaderPropertyInfo>();
        var pc  = ShaderUtil.GetPropertyCount(s);

        for (var i = 0; i < pc; i++)
        {
            var sp = new ShaderPropertyInfo();
            sp.property    = ShaderUtil.GetPropertyName(s, i);
            sp.type        = (ShaderPropertyType)ShaderUtil.GetPropertyType(s, i);
            sp.description = ShaderUtil.GetPropertyDescription(s, i);
            if (sp.type == ShaderPropertyType.Range)
            {
                sp.rangeMin = ShaderUtil.GetRangeLimits(s, i, 1);
                sp.rangeMax = ShaderUtil.GetRangeLimits(s, i, 2);
            }
            res.Add(sp);
        }
        return(shaderProps[s.GetInstanceID()] = res);
    }