Konstantin Koch 8287c54432 Included the Visual Studio extension and made the necessary changes to make it run.
Replaced the old VS templates with ones that offer more flexiblity.
Started replacing the Content Project for the samples with our custom project type.
Inlcuded a basic not yet working AssimpImporter.
2015-04-08 14:50:03 +02:00

90 lines
2.9 KiB
C#

#region Using Statements
using System;
using System.ComponentModel;
using System.Linq;
using ANX.Framework.Content.Pipeline.Graphics;
using ANX.Framework.Content.Pipeline.Helpers.GL3;
#endregion
// This file is part of the ANX.Framework created by the
// "ANX.Framework developer group" and released under the Ms-PL license.
// For details see: http://anxframework.codeplex.com/license
namespace ANX.Framework.Content.Pipeline.Processors
{
[ContentProcessor(DisplayName = "EffectProcessor - ANX Framework")]
public class EffectProcessor : ContentProcessor<EffectContent, CompiledEffectContent>
{
HLSLCompilerFactory hlslCompilerFactory = new HLSLCompilerFactory();
private string targetProfile = "fx_4_0";
[DefaultValue(EffectProcessorDebugMode.Auto)]
public virtual EffectProcessorDebugMode DebugMode
{
get;
set;
}
[DefaultValue(null)]
public virtual string Defines
{
get;
set;
}
[DefaultValue("fx_4_0")]
public virtual string TargetProfile
{
get
{
return targetProfile;
}
set
{
targetProfile = value;
}
}
public EffectProcessor()
{
DebugMode = EffectProcessorDebugMode.Auto;
Defines = null;
}
public override CompiledEffectContent Process(EffectContent input, ContentProcessorContext context)
{
byte[] effectCompiledCode = null;
switch (input.SourceLanguage)
{
case NonXNA.EffectSourceLanguage.HLSL_FX:
HLSLCompiler compiler = hlslCompilerFactory.Compilers.Last<HLSLCompiler>();
effectCompiledCode = compiler.Compile(input.EffectCode, DebugMode, TargetProfile);
break;
case NonXNA.EffectSourceLanguage.GLSL_FX:
//TODO: parse and split the effect code and save two effect globs
// if we do it this way, we don't need to parse the glsl source at runtime when loading it.
effectCompiledCode = ShaderHelper.SaveShaderCode(input.EffectCode);
break;
default:
throw new InvalidContentException("EffectProcessor is unable to process content with format '" + input.SourceLanguage.ToString() + "'");
}
var result = new CompiledEffectContent(effectCompiledCode)
{
Identity = input.Identity,
Name = input.Name,
SourceLanguage = input.SourceLanguage,
};
result.OpaqueData.AddRange(input.OpaqueData);
return result;
}
}
}