internal static void LoadTextures(MyMaterialProxy proxy, MyMaterialDescription desc)
 {
     {
         proxy.SetTexture("ColorMetalTexture",
                          MyTextureManager.GetColorMetalTexture(desc.TextureColorMetalPath).ShaderView);
         proxy.SetTexture("NormalGlossTexture",
                          MyTextureManager.GetNormalGlossTexture(desc.TextureNormalGlossPath).ShaderView);
         proxy.SetTexture("AmbientOcclusionTexture",
                          MyTextureManager.GetExtensionsTexture(desc.TextureAmbientOcclusionPath).ShaderView);
         if (desc.TextureAlphamaskPath != null)
         {
             proxy.SetTexture("AlphamaskTexture",
                              MyTextureManager.GetAlphamaskTexture(desc.TextureAlphamaskPath).ShaderView);
         }
     }
     proxy.RecalcTexturesHash();
 }
 internal static void LoadTextures(MyMaterialProxy proxy, MyMaterialDescription desc)
 {
     {
         proxy.SetTexture("ColorMetalTexture",
             MyTextureManager.GetColorMetalTexture(desc.TextureColorMetalPath).ShaderView);
         proxy.SetTexture("NormalGlossTexture",
             MyTextureManager.GetNormalGlossTexture(desc.TextureNormalGlossPath).ShaderView);
         proxy.SetTexture("AmbientOcclusionTexture",
             MyTextureManager.GetExtensionsTexture(desc.TextureAmbientOcclusionPath).ShaderView);
         if (desc.TextureAlphamaskPath != null)
         {
             proxy.SetTexture("AlphamaskTexture",
                 MyTextureManager.GetAlphamaskTexture(desc.TextureAlphamaskPath).ShaderView);
         }
     }
     proxy.RecalcTexturesHash();
 }
        internal static MyMaterialProxy Create(MyMaterialDescription ? desc, string materialTag)
        {
            int key = desc.HasValue ? desc.Value.CalculateKey() : 0;
            key = MyHashHelper.Combine(key, materialTag.GetHashCode());

            var proxy = m_proxies.SetDefault(key, null);
            if (proxy != null)
                return proxy;

            proxy = MyShaderMaterialReflection.CreateBindings(materialTag);

            if(desc == null)
            {
                // TODO: change later
                desc = MyAssetMesh.GetDebugMaterialDescriptor();
            }

            LoadTextures(proxy, desc.Value);

            proxy.RecalcConstantsHash();

            m_proxies[key] = proxy;
            m_descriptors[key] = desc.Value;

            m_reverseMapping[proxy] = desc.Value;

            return proxy;
        }