So, years ago I created a game engine for XNA 3.1 called Reactor. I’ve gone through the (painful) process about a year ago to convert it to XNA 4 (with the sinister plan to convert to monogame like everyone else) but I’ve hit a snag.
I compiled everything from source, created new projects, deleted projects, edited csproj files, etc but I can’t for the life of me get shaders compiling. My biggest hurdle is the embedded shaders my engine runs on. It was a constant source of hassle with Microsoft’s convoluted content pipeline. It’s a huge burden to manage lots of shaders for my engine.
Converting to monogame seems to be no different. I’m not interested at all in DirectX anymore and would like to utilize the OpenGL paths for everything. Unfortunately, the entire content pipeline is still rampant. I have to convert fx files to binary files, then to glsl assembly. It would be so much easier if I could just write glsl. I keep having the same errors trying to compile shaders at all…
Error 31 Building content threw DllNotFoundException: Unable to load DLL 'libmojoshader_64.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
at TwoMGFX.MojoShader.NativeMethods.MOJOSHADER_parse(String profile, Byte[] tokenbuf, Int32 bufsize, IntPtr swiz, Int32 swizcount, IntPtr smap, Int32 smapcount, IntPtr m, IntPtr f, IntPtr d)
at TwoMGFX.ShaderData.CreateGLSL(Byte[] byteCode, Boolean isVertexShader, List`1 cbuffers, Int32 sharedIndex, Dictionary`2 samplerStates, Boolean debug) in C:\Users\greiser\Documents\projects\MonoGame\Tools\2MGFX\ShaderData.mojo.cs:line 18
at TwoMGFX.EffectObject.CreateShader(ShaderInfo shaderInfo, String shaderFunction, String shaderProfile, Boolean isVertexShader, String& errorsAndWarnings) in C:\Users\greiser\Documents\projects\MonoGame\Tools\2MGFX\EffectObject.cs:line 827
at TwoMGFX.EffectObject.CompileEffect(ShaderInfo shaderInfo, String& errorsAndWarnings) in C:\Users\greiser\Documents\projects\MonoGame\Tools\2MGFX\EffectObject.cs:line 691
at MonoGameContentProcessors.Processors.MGEffectProcessor.Process(EffectContent input, ContentProcessorContext context) in C:\Users\greiser\Documents\projects\MonoGame\MonoGame.ContentPipeline\ContentProcessors\Processors\MGEffectProcessor.cs:line 52
at Microsoft.Xna.Framework.Content.Pipeline.ContentProcessor`2.Microsoft.Xna.Framework.Content.Pipeline.IContentProcessor.Process(Object input, ContentProcessorContext context)
at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.BuildAssetWorker(BuildItem item)
at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.BuildAsset(BuildItem item)
at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.RunTheBuild()
at Microsoft.Xna.Framework.Content.Pipeline.Tasks.BuildContent.RemoteProxy.RunTheBuild(BuildCoordinatorSettings settings, TimestampCache timestampCache, ITaskItem[] sourceAssets, String[]& outputContent, String[]& rebuiltContent, String[]& intermediates, Dictionary`2& dependencyTimestamps, KeyValuePair`2[]& warnings)
With no idea how to get shader content building at all… Please, someone help.