UnityEditor.ShaderUtil.GetDependency C# (CSharp) Method

GetDependency() private method

private GetDependency ( Shader s, string name ) : string
s UnityEngine.Shader
name string
return string
        internal static extern string GetDependency(Shader s, string name);
        [MethodImpl(MethodImplOptions.InternalCall)]

Usage Example

        public static Texture2D Render(GameObject prefab)
        {
            if (prefab == null)
            {
                return(null);
            }
            if (prefab.GetComponent <Renderer>() == null)
            {
                return(null);
            }
            EditorUtility.SetTemporarilyAllowIndieRenderTexture(true);
            Texture2D texture2D = new Texture2D(64, 64);

            texture2D.hideFlags = HideFlags.HideAndDontSave;
            texture2D.name      = "Preview Texture";
            RenderTexture temporary  = RenderTexture.GetTemporary(texture2D.width, texture2D.height);
            GameObject    gameObject = new GameObject("Preview");

            gameObject.hideFlags = HideFlags.HideAndDontSave;
            Camera camera = gameObject.AddComponent(typeof(Camera)) as Camera;

            camera.clearFlags      = CameraClearFlags.Color;
            camera.backgroundColor = new Color(0.5f, 0.5f, 0.5f, 0f);
            camera.cullingMask     = 0;
            camera.enabled         = false;
            camera.targetTexture   = temporary;
            Light light = gameObject.AddComponent(typeof(Light)) as Light;

            light.type = LightType.Directional;
            Bounds  bounds = RenderThumbnailUtility.CalculateVisibleBounds(prefab);
            Vector3 vector = new Vector3(0.7f, 0.3f, 0.7f);
            float   num    = bounds.extents.magnitude * 1.6f;

            gameObject.transform.position = bounds.center + vector.normalized * num;
            gameObject.transform.LookAt(bounds.center);
            camera.nearClipPlane = num * 0.1f;
            camera.farClipPlane  = num * 2.2f;
            Camera current = Camera.current;

            camera.RenderDontRestore();
            Light[] lights = new Light[]
            {
                light
            };
            Graphics.SetupVertexLights(lights);
            Component[] componentsInChildren = prefab.GetComponentsInChildren(typeof(Renderer));
            Component[] array = componentsInChildren;
            for (int i = 0; i < array.Length; i++)
            {
                Renderer renderer = (Renderer)array[i];
                if (renderer.enabled)
                {
                    Material[] sharedMaterials = renderer.sharedMaterials;
                    for (int j = 0; j < sharedMaterials.Length; j++)
                    {
                        if (!(sharedMaterials[j] == null))
                        {
                            Material material   = sharedMaterials[j];
                            string   dependency = ShaderUtil.GetDependency(material.shader, "BillboardShader");
                            if (dependency != null && dependency != string.Empty)
                            {
                                material           = UnityEngine.Object.Instantiate <Material>(material);
                                material.shader    = Shader.Find(dependency);
                                material.hideFlags = HideFlags.HideAndDontSave;
                            }
                            for (int k = 0; k < material.passCount; k++)
                            {
                                if (material.SetPass(k))
                                {
                                    renderer.RenderNow(j);
                                }
                            }
                            if (material != sharedMaterials[j])
                            {
                                UnityEngine.Object.DestroyImmediate(material);
                            }
                        }
                    }
                }
            }
            texture2D.ReadPixels(new Rect(0f, 0f, (float)texture2D.width, (float)texture2D.height), 0, 0);
            RenderTexture.ReleaseTemporary(temporary);
            UnityEngine.Object.DestroyImmediate(gameObject);
            Camera.SetupCurrent(current);
            EditorUtility.SetTemporarilyAllowIndieRenderTexture(false);
            return(texture2D);
        }
All Usage Examples Of UnityEditor.ShaderUtil::GetDependency