public void TestNoClean(out CompilerResults left, out CompilerResults right) { // Create and mount database file system var objDatabase = new ObjectDatabase("/data/db", "index", "/local/db"); using (var assetIndexMap = AssetIndexMap.Load()) { 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); } }
public void TestNoClean(out CompilerResults left, out CompilerResults right) { // Create and mount database file system var objDatabase = ObjectDatabase.CreateDefaultDatabase(); using (var assetIndexMap = ContentIndexMap.Load(VirtualFileSystem.ApplicationDatabaseIndexPath)) { var database = new DatabaseFileProvider(assetIndexMap, objDatabase); ContentManager.GetFileProvider = () => database; foreach (var shaderName in Directory.EnumerateFiles(@"..\..\sources\shaders", "*.xksl")) { CopyStream(database, shaderName); } foreach (var shaderName in Directory.EnumerateFiles(@"..\..\sources\engine\SiliconStudio.Xenko.Shaders.Tests\GameAssets\Compiler", "*.xksl")) { CopyStream(database, shaderName); } var compiler = new EffectCompiler(); compiler.SourceDirectories.Add("assets/shaders"); var compilerCache = new EffectCompilerCache(compiler); var compilerParameters = new CompilerParameters { EffectParameters = { Platform = GraphicsPlatform.Direct3D11 } }; left = compilerCache.Compile(new ShaderMixinGeneratorSource("SimpleEffect"), compilerParameters); right = compilerCache.Compile(new ShaderMixinGeneratorSource("SimpleEffect"), compilerParameters); } }
public 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(EffectSystem.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); } }
private static EffectCompilerBase GetOrCreateEffectCompiler(AssetCompilerContext context) { lock (context) { var compiler = context.Properties.Get(CompilerKey); if (compiler is null) { // Create compiler var effectCompiler = new EffectCompiler(MicrothreadLocalDatabases.DatabaseFileProvider); effectCompiler.SourceDirectories.Add(EffectCompilerBase.DefaultSourceShaderFolder); compiler = new EffectCompilerCache(effectCompiler, MicrothreadLocalDatabases.DatabaseFileProvider) { CurrentCache = EffectBytecodeCacheLoadSource.StartupCache }; 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 SDSL files. if (shaderLocations != null) { foreach (var shaderLocation in shaderLocations) { effectCompiler.UrlToFilePath[shaderLocation.Key] = shaderLocation.Value; } } } return(compiler); } }