internal Engine_Camera()
        {
            #region //Get Instances
            m_d3d = Engine_Renderer.Instance;
            #endregion

            SViewConstantsBuffer cbView = new SViewConstantsBuffer();
            m_view = D3D11.Buffer.Create(m_d3d.m_device, D3D11.BindFlags.ConstantBuffer, ref cbView);

            RecreateViewConstants();
        }
Example #2
0
        internal Engine_Mesh(Engine_MeshInfo _obj)
        {
            #region //Get Instance of DirectX
            m_d3d = Engine_Renderer.Instance;
            #endregion

            #region //Set Variables
            m_vertexCount  = _obj.vertices.Count();
            m_vertexStride = SharpDX.Utilities.SizeOf <Engine_Vertex>();

            m_indexCount  = _obj.indices.Count();
            m_indexStride = sizeof(int);
            #endregion

            #region //Create VertexBuffer
            unsafe
            {
                fixed(Engine_Vertex *p = _obj.vertices.ToArray())  //Array
                {
                    IntPtr ptr = (IntPtr)p;

                    m_vertexBuffer = new D3D11.Buffer(
                        m_d3d.m_device,
                        ptr,
                        new D3D11.BufferDescription(
                            m_vertexCount * m_vertexStride, //ByteWidth
                            D3D11.BindFlags.VertexBuffer,
                            D3D11.ResourceUsage.Default));
                }
            }
            #endregion

            #region //Create IndexBuffer
            unsafe
            {
                fixed(ushort *p = _obj.indices.ToArray())
                {
                    IntPtr ptr = (IntPtr)p;

                    m_indexBuffer = new D3D11.Buffer(
                        m_d3d.m_device,
                        ptr,
                        new D3D11.BufferDescription(
                            m_indexCount * m_indexStride,
                            D3D11.BindFlags.IndexBuffer,
                            D3D11.ResourceUsage.Default));
                }
            }
            #endregion
        }
Example #3
0
        internal Engine_ImGui()
        {
            m_d3d = Engine_Renderer.Instance;
            var con = ImGui.CreateContext();

            ImGui.SetCurrentContext(con);
            var fonts = ImGui.GetIO().Fonts;

            ImGui.GetIO().Fonts.AddFontDefault();
            var io = ImGui.GetIO();

            io.DisplaySize             = m_d3d.m_swapChainPanel.ActualSize;
            io.DisplayFramebufferScale = Vector2.One;
            io.DeltaTime = (float)Engine_Time.m_watch.Elapsed.TotalSeconds;
            ImGui.StyleColorsDark();
            RecreateFontDeviceTexture();
        }
        internal Engine_Main(SwapChainPanel _swapChainPanel, TextBlock _textBlock)
        {
            m_render = new Engine_Renderer(_swapChainPanel);
            m_input  = new Engine_Input();
            m_time   = new Engine_Time();
            m_scene  = new Engine_Scene();
            m_gui    = new Engine_ImGui();

            m_scene.Awake();
            m_scene.Start();

            Windows.UI.Xaml.Media.CompositionTarget.Rendering += (s, e) =>
            {
                m_render.Clear();

                m_input.Update();

                m_scene.Update();
                m_scene.LateUpdate();

                m_input.LateUpdate();

                m_time.Update();

                m_render.SetSolid();
                m_scene.Render();
                m_render.SetWireframe();
                m_scene.Render();

                m_gui.Draw();

                m_render.Present();

                _textBlock.Text  = m_time.m_profile;
                _textBlock.Text += "\n\n" + m_render.m_profile;
                _textBlock.Text += "\n\n" + m_scene.m_profile;
            };
        }
        internal Engine_Material(string _shaderFileName, string _imageFileName, bool _includeGeometryShader = false)
        {
            #region //Get Instances
            m_d3d = Engine_Renderer.Instance;
            #endregion

            #region //Create InputLayout
            var inputElements = new D3D11.InputElement[] {
                new D3D11.InputElement("POSITION", 0, DXGI.Format.R32G32B32_Float, 0, 0),
                new D3D11.InputElement("TEXCOORD", 0, DXGI.Format.R32G32_Float, D3D11.InputElement.AppendAligned, 0),
                new D3D11.InputElement("NORMAL", 0, DXGI.Format.R32G32B32_Float, D3D11.InputElement.AppendAligned, 0)
            };
            #endregion

            #region //Create VertexShader
            CompilationResult vsResult;
            using (vsResult = ShaderBytecode.CompileFromFile(_shaderFileName, "VS", "vs_4_0", ShaderFlags.None))
            {
                m_vertexShader = new D3D11.VertexShader(m_d3d.m_device, vsResult.Bytecode.Data);
                m_inputLayout  = new D3D11.InputLayout(m_d3d.m_device, vsResult.Bytecode, inputElements);
            }
            #endregion

            #region //Create PixelShader
            using (var psResult = ShaderBytecode.CompileFromFile(_shaderFileName, "PS", "ps_4_0", ShaderFlags.None))
                m_pixelShader = new D3D11.PixelShader(m_d3d.m_device, psResult.Bytecode.Data);
            #endregion

            #region //Create GeometryShader
            if (_includeGeometryShader)
            {
                using (var psResult = ShaderBytecode.CompileFromFile(_shaderFileName, "GS", "gs_4_0", ShaderFlags.None))
                    m_geometryShader = new D3D11.GeometryShader(m_d3d.m_device, psResult.Bytecode.Data);
            }
            #endregion

            #region //Create ConstantBuffers for Model
            SPerModelConstantBuffer cbModel = new SPerModelConstantBuffer();

            D3D11.BufferDescription bufferDescription = new D3D11.BufferDescription
            {
                BindFlags      = D3D11.BindFlags.ConstantBuffer,
                CpuAccessFlags = D3D11.CpuAccessFlags.Write,
                Usage          = D3D11.ResourceUsage.Dynamic,
            };

            m_model = D3D11.Buffer.Create(m_d3d.m_device, D3D11.BindFlags.ConstantBuffer, ref cbModel);
            #endregion

            #region //Create Texture and Sampler
            var texture = Engine_ImgLoader.CreateTexture2DFromBitmap(m_d3d.m_device, Engine_ImgLoader.LoadBitmap(new SharpDX.WIC.ImagingFactory2(), _imageFileName));
            m_resourceView = new D3D11.ShaderResourceView(m_d3d.m_device, texture);

            D3D11.SamplerStateDescription samplerStateDescription = new D3D11.SamplerStateDescription
            {
                Filter             = D3D11.Filter.Anisotropic,
                AddressU           = D3D11.TextureAddressMode.Clamp,
                AddressV           = D3D11.TextureAddressMode.Clamp,
                AddressW           = D3D11.TextureAddressMode.Clamp,
                ComparisonFunction = D3D11.Comparison.Always,
                MaximumAnisotropy  = 16,
                MinimumLod         = 0,
                MaximumLod         = float.MaxValue,
            };

            m_sampler = new D3D11.SamplerState(m_d3d.m_device, samplerStateDescription);
            #endregion
        }