/// <summary>
 /// Computes a hash <see cref="ObjectId"/> for the specified mixin.
 /// </summary>
 /// <param name="mixin">The mixin.</param>
 /// <param name="mixinParameters">The mixin parameters.</param>
 /// <returns>EffectObjectIds.</returns>
 public static ObjectId Compute(ShaderMixinSource mixin, ShaderMixinParameters mixinParameters)
 {
     lock (generatorLock)
     {
         if (generator == null)
         {
             generator = new ShaderMixinObjectId();
         }
         return generator.ComputeInternal(mixin, mixinParameters);
     }
 }
 /// <summary>
 /// Computes a hash <see cref="ObjectId"/> for the specified effect and compiler parameters.
 /// </summary>
 /// <param name="effectName">Name of the effect.</param>
 /// <param name="compilerParameters">The compiler parameters.</param>
 /// <returns>
 /// EffectObjectIds.
 /// </returns>
 public static ObjectId Compute(string effectName, ShaderMixinParameters compilerParameters)
 {
     lock (generatorLock)
     {
         if (generator == null)
         {
             generator = new ShaderMixinObjectId();
         }
         return generator.ComputeInternal(effectName, compilerParameters);
     }
 }
Example #3
0
        private unsafe ObjectId ComputeInternal(ShaderMixinSource mixin, ShaderMixinParameters mixinParameters)
        {
            // Write to memory stream
            memStream.Position = 0;
            writer.Write(EffectBytecode.MagicHeader); // Write the effect bytecode magic header
            writer.Write(mixin);

            parameters.Clear();
            parameters.Set(CompilerParameters.GraphicsPlatformKey, mixinParameters.Get(CompilerParameters.GraphicsPlatformKey));
            parameters.Set(CompilerParameters.GraphicsProfileKey, mixinParameters.Get(CompilerParameters.GraphicsProfileKey));
            parameters.Set(CompilerParameters.DebugKey, mixinParameters.Get(CompilerParameters.DebugKey));
            writer.Write(parameters);

            // Compute hash
            objectIdBuilder.Reset();
            objectIdBuilder.Write((byte *)buffer, (int)memStream.Position);

            return(objectIdBuilder.ComputeHash());
        }
        private unsafe ObjectId ComputeInternal(ShaderMixinSource mixin, ShaderMixinParameters mixinParameters)
        {
            // Write to memory stream
            memStream.Position = 0;
            writer.Write(EffectBytecode.MagicHeader); // Write the effect bytecode magic header
            writer.Write(mixin);

            parameters.Clear();
            parameters.Set(CompilerParameters.GraphicsPlatformKey, mixinParameters.Get(CompilerParameters.GraphicsPlatformKey));
            parameters.Set(CompilerParameters.GraphicsProfileKey, mixinParameters.Get(CompilerParameters.GraphicsProfileKey));
            parameters.Set(CompilerParameters.DebugKey, mixinParameters.Get(CompilerParameters.DebugKey));
            writer.Write(parameters);

            // Compute hash
            objectIdBuilder.Reset();
            objectIdBuilder.Write((byte*)buffer, (int)memStream.Position);

            return objectIdBuilder.ComputeHash();
        }
        private unsafe ObjectId ComputeInternal(string effectName, ShaderMixinParameters compilerParameters)
        {
            // Write to memory stream
            memStream.Position = 0;
            writer.Write(EffectBytecode.MagicHeader); // Write the effect bytecode magic header
            writer.Write(effectName);

            writer.Write(compilerParameters);

            // Compute hash
            objectIdBuilder.Reset();
            objectIdBuilder.Write((byte*)buffer, (int)memStream.Position);

            return objectIdBuilder.ComputeHash();
        }