예제 #1
0
        private void CreateBackends(Options opts)
        {
            List <IBackend> backends = new List <IBackend>();

            try
            {
                ID3DCompiler fxc = m_Wrapper.CreateD3DCompiler(opts.D3DCompilerPath);
                backends.Add(new D3DCompilerBackend(fxc));
                try
                {
                    IAMDDriver driver = m_Wrapper.CreateAMDDriver(opts.DXXDriverPath);
                    backends.Add(new AMDDriverBackend(driver, fxc));
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            backends.Add(new CodeXLBackend(opts.CodeXLPath, opts.D3DCompilerPath, opts.TempPath));
            backends.Add(new GLSlangBackend(m_Wrapper));
            backends.Add(new GLSLOptimizerBackend(m_Wrapper));
            backends.Add(new PowerVRBackend(opts.PowerVRCompilerPath, opts.TempPath));
            backends.Add(new MaliSCBackend(opts.MaliSCRoot, opts.TempPath));
            m_Backends = backends;
        }
예제 #2
0
 public Device(ID3D11Device device, ID3D11RenderTargetView renderTarget, ID3D11DepthStencilView depthStencilView, ID3DCompiler compiler)
 {
     _device           = device ?? throw new ArgumentNullException(nameof(device));
     _renderTarget     = renderTarget ?? throw new ArgumentNullException(nameof(renderTarget));
     _depthStencilView = depthStencilView ?? throw new ArgumentNullException(nameof(depthStencilView));
     ImmediateContext  = new DeviceContext(device.Context, false);
     BackBuffer        = new RenderTarget(renderTarget);
     DepthStencil      = new DepthStencil(depthStencilView);
     TEMPORARYCompiler = compiler;
 }
예제 #3
0
        public bool Compile(ID3DCompiler compiler)
        {
            IDXShaderBlob blob;
            string        msg;

            HasError     = !compiler.Compile(this.Code, this.CompileOptions, out blob, out msg);
            WasCompiled  = true;
            Messages     = msg;
            CompiledBlob = blob;
            return(!HasError);
        }
예제 #4
0
        public AMDDriverBackend( IAMDDriver driver, ID3DCompiler fxc  )
        {
            m_FXC = fxc;
            m_Driver = driver;

            if (m_Driver != null)
            {
                foreach (IAMDAsic asic in m_Driver.Asics)
                {
                    m_SupportedAsics.Add(asic.Name);
                }
            }
        }
예제 #5
0
        public AMDDriverBackend(IAMDDriver driver, ID3DCompiler fxc)
        {
            m_FXC    = fxc;
            m_Driver = driver;

            if (m_Driver != null)
            {
                foreach (IAMDAsic asic in m_Driver.Asics)
                {
                    m_SupportedAsics.Add(asic.Name);
                }
            }
        }
예제 #6
0
        public RenderMeshPass(IDevice device, ID3DCompiler compiler)
        {
            using var vertexShaderBlob = new Blob(compiler.CompileShaderFromFile(@"F:\Git\GameDev\src\Titan.D3D11.Bindings\VertexShader.hlsl", "main", "vs_5_0"));
            using var pixelShaderBlob  = new Blob(compiler.CompileShaderFromFile(@"F:\Git\GameDev\src\Titan.D3D11.Bindings\PixelShader.hlsl", "main", "ps_5_0"));

            _vertexShader = device.CreateVertexShader(vertexShaderBlob);
            _pixelShader  = device.CreatePixelShader(pixelShaderBlob);

            _inputLayout             = device.CreateInputLayout(new VertexLayout(4).Append("Position", VertexLayoutTypes.Position3D).Append("Normal", VertexLayoutTypes.Position3D).Append("Texture", VertexLayoutTypes.Texture2D).Append("Color", VertexLayoutTypes.Float4Color), vertexShaderBlob);
            _perFrameConstantBuffer  = device.CreateConstantBuffer <PerFrameContantBuffer>(BufferUsage.Dynamic, BufferAccessFlags.Write);
            _lightsConstantBuffer    = device.CreateConstantBuffer <LightsConstantBuffer>(BufferUsage.Dynamic, BufferAccessFlags.Write);
            _perObjectConstantBuffer = device.CreateConstantBuffer <PerObjectContantBuffer>(BufferUsage.Dynamic, BufferAccessFlags.Write);
            _sampler = device.CreateSampler();
        }
예제 #7
0
        public RenderToBackbufferPass(IDevice device, ID3DCompiler compiler)
        {
            _backBuffer   = device.BackBuffer;
            _depthStencil = device.DepthStencil;

            _indexBuffer  = device.CreateIndexBuffer(new int[] { 0, 3, 1, 3, 2, 1 });
            _vertexBuffer = device.CreateVertexBuffer(CreateCube());

            using var pixelShaderBlob = new Blob(compiler.CompileShaderFromFile(@"F:\Git\GameDev\resources\shaders\BackBufferPixelShader.hlsl", "main", "ps_5_0"));
            _pixelShader = device.CreatePixelShader(pixelShaderBlob);
            using var vertexShaderBlob = new Blob(compiler.CompileShaderFromFile(@"F:\Git\GameDev\resources\shaders\BackBufferVertexShader.hlsl", "main", "vs_5_0"));
            _vertexShader = device.CreateVertexShader(vertexShaderBlob);
            _inputLayout  = device.CreateInputLayout(new VertexLayout(2).Append("POSITION", VertexLayoutTypes.Position2D).Append("TEXCOORD", VertexLayoutTypes.Position2D), vertexShaderBlob);
            _sampler      = device.CreateSampler();
        }
예제 #8
0
        public bool Compile(ID3DCompiler compiler, IDXILCompiler dxil)
        {
            if (CompileOptions.Target.ToString()[3] == '6')
            {
                if (dxil == null)
                {
                    return(false);
                }

                IDXILShaderBlob blob;
                string          msg;
                HasError     = !dxil.Compile(this.Code, this.CompileOptions, this.SourceFilePath, out blob, out msg);
                WasCompiled  = true;
                Messages     = msg;
                CompiledBlob = blob;
            }
            else
            {
                if (compiler == null)
                {
                    return(false);
                }

                IDXBCShaderBlob blob;
                string          msg;
                HasError     = !compiler.Compile(this.Code, this.CompileOptions, this.SourceFilePath, out blob, out msg);
                WasCompiled  = true;
                Messages     = msg;
                CompiledBlob = blob;
            }

            // check for embedded root signature and pull it out if there is one
            if (CompiledBlob != null)
            {
                IDXBlob rs = CompiledBlob.ExtractRootSignature();
                if (rs != null)
                {
                    RootSigWasCompiled = true;
                    RootSigHasError    = false;
                    CompiledRootSig    = rs;
                }
            }

            return(!HasError);
        }
예제 #9
0
파일: MainForm.cs 프로젝트: aiekick/Pyramid
        private void CreateBackends(Options opts)
        {
            List <IBackend> backends = new List <IBackend>();
            IIncludeHandler handler  = new IncludeHandler(opts.IncludePaths);

            try
            {
                ID3DCompiler  fxc  = m_Wrapper.CreateD3DCompiler(opts.D3DCompilerPath, handler);
                IDXILCompiler dxil = m_Wrapper.CreateDXILCompiler(opts.DXILCompilerPath, handler);

                backends.Add(new D3DCompilerBackend(fxc, dxil));
                try
                {
                    IAMDDriver driver = m_Wrapper.CreateAMDDriver(opts.DXXDriverPath);
                    backends.Add(new AMDDriverBackend(driver, fxc));
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            backends.Add(new CodeXLBackend(opts.CodeXLPath, opts.D3DCompilerPath, opts.TempPath));
            backends.Add(new GLSlangBackend(m_Wrapper, handler));
            backends.Add(new GLSLOptimizerBackend(m_Wrapper));
            backends.Add(new PowerVRBackend(opts.PowerVRCompilerPath, opts.TempPath));
            backends.Add(new MaliSCBackend(opts.MaliSCRoot, opts.TempPath));
            backends.Add(new RGABackend(opts.RGAPath, opts.TempPath, m_Wrapper, handler));

            if (File.Exists(opts.IntelShaderAnalyzerPath))
            {
                backends.Add(new IntelShaderAnalyzerBackend(opts));
            }

            m_Backends = backends;
        }
예제 #10
0
 public D3DCompilerBackend(ID3DCompiler comp)
 {
     m_Compiler = comp;
 }
예제 #11
0
 public D3DCompilerBackend( ID3DCompiler comp )
 {
     m_Compiler = comp;
 }
예제 #12
0
 public AMDDriverBackend( IAMDDriver driver, ID3DCompiler fxc  )
 {
     m_FXC = fxc;
     m_Driver = driver;
 }
예제 #13
0
 public bool Compile( ID3DCompiler compiler )
 {
     IDXShaderBlob blob;
     string msg;
     HasError = !compiler.Compile(this.Code, this.CompileOptions, out blob, out msg);
     WasCompiled = true;
     Messages = msg;
     CompiledBlob = blob;
     return !HasError;
 }
예제 #14
0
 public D3DCompilerBackend(ID3DCompiler comp, IDXILCompiler dxil)
 {
     m_Compiler = comp;
     m_DXIL     = dxil;
 }
예제 #15
0
 public DisplayFactory(IWindowCreator windowCreator, ID3D11DeviceFactory d3D11DeviceFactory, ID3DCompiler compiler)
 {
     _windowCreator      = windowCreator;
     _d3D11DeviceFactory = d3D11DeviceFactory;
     _compiler           = compiler;
 }