public void TestNoClean(out CompilerResults left, out CompilerResults right) { // Create and mount database file system var objDatabase = ObjectDatabase.CreateDefaultDatabase(); using (var assetIndexMap = AssetIndexMap.Load(VirtualFileSystem.ApplicationDatabaseIndexPath)) { var database = new DatabaseFileProvider(assetIndexMap, objDatabase); AssetManager.GetFileProvider = () => database; foreach (var shaderName in Directory.EnumerateFiles(@"..\..\sources\shaders", "*.pdxsl")) CopyStream(database, shaderName); foreach (var shaderName in Directory.EnumerateFiles(@"..\..\sources\engine\SiliconStudio.Paradox.Shaders.Tests\GameAssets\Compiler", "*.pdxsl")) CopyStream(database, shaderName); var compiler = new EffectCompiler(); compiler.SourceDirectories.Add("assets/shaders"); var compilerCache = new EffectCompilerCache(compiler); var compilerParameters = new CompilerParameters {Platform = GraphicsPlatform.Direct3D11}; left = compilerCache.Compile(new ShaderMixinGeneratorSource("SimpleEffect"), compilerParameters); right = compilerCache.Compile(new ShaderMixinGeneratorSource("SimpleEffect"), compilerParameters); } }
private static EffectCompilerBase GetOrCreateEffectCompiler(AssetCompilerContext context) { lock (context) { var compiler = context.Properties.Get(CompilerKey); if (compiler == null) { // Create compiler var effectCompiler = new Shaders.Compiler.EffectCompiler(); effectCompiler.SourceDirectories.Add(EffectCompilerBase.DefaultSourceShaderFolder); compiler = new EffectCompilerCache(effectCompiler); context.Properties.Set(CompilerKey, compiler); var shaderLocations = context.Properties.Get(EffectShaderAssetCompiler.ShaderLocationsKey); // Temp copy URL to absolute file path to inform the compiler the absolute file location // of all pdxsl files. if (shaderLocations != null) { foreach (var shaderLocation in shaderLocations) { effectCompiler.UrlToFilePath[shaderLocation.Key] = shaderLocation.Value; } } } return compiler; } }