Esempio n. 1
0
    // END OF TERRAIN BLENDING IN THE GAME Universe
    // ******************************************

    /*
     * make the terrain look more natural
     * e.g. by applying blending of the textures where needed
     */
    public void MakeTerrainLookReal()
    {
        // go through the quads
        for (int z = 0; z < Universe.chunkSize; z++)
        {
            for (int x = 0; x < Universe.chunkSize; x++)
            {
                // Blend the tectures where needed
                TextureBlending.GradientBlend(chunkData, x, z);
            }
        }
    }
Esempio n. 2
0
        private WidgetMaterial(Blending blending, ShaderId shader, int numTextures, TextureBlending textureBlending, bool premulAlpha)
        {
            PremulAlpha = premulAlpha || blending == Blending.Burn || blending == Blending.Darken;
            var options = PremulAlpha ? ShaderOptions.PremultiplyAlpha : ShaderOptions.None;

            if (textureBlending == TextureBlending.CutOut)
            {
                options |= ShaderOptions.CutOutTextureBlending;
            }
            ShaderProgram = ShaderPrograms.Instance.GetShaderProgram(shader, numTextures, options);
            Blending      = blending;
            PassCount     = Blending == Blending.Glow || Blending == Blending.Darken ? 2 : 1;
        }
Esempio n. 3
0
        private static int GetInstanceKey(Blending blending, ShaderId shader, int numTextures, TextureBlending textureBlending, bool premulAlpha)
        {
            var premulAlphaFlag = premulAlpha ? 1 : 0;

            return((int)blending | ((int)shader << 8) | (numTextures << 16) | (premulAlphaFlag << 24) | ((int)textureBlending << 25));
        }
Esempio n. 4
0
 public static WidgetMaterial GetInstance(Blending blending, ShaderId shader, int numTextures, TextureBlending textureBlending = TextureBlending.Multiply, bool premulAlpha = false)
 {
     lock (instanceCache) {
         var            instanceKey = GetInstanceKey(blending, shader, numTextures, textureBlending, premulAlpha);
         WidgetMaterial instance;
         if (!instanceCache.TryGetValue(instanceKey, out instance))
         {
             instance = new WidgetMaterial(blending, shader, numTextures, textureBlending, premulAlpha);
             instanceCache.Add(instanceKey, instance);
         }
         return(instance);
     }
 }