/// <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); } }
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(); }