Add new Renderer architecture (far from complete)

Former-commit-id: 52226793d7a087dfe0523315d3303934daffee49 [formerly 9de1c04df6b371f861a2eee8bba38902ee5041cd] [formerly ecd3099df5498722f6390447f40bd3907b8e40c4 [formerly 3076df585565fc9759ab3e718270f2e5ef620840]]
Former-commit-id: 92d52f967d0b088d1271afef26069e08cacd6b0f [formerly 5fe27e2ead104278951c772c2121a7b677f88d4d]
Former-commit-id: fb6c2456d8edd3ec022d5d953f79fecdd4f2b8f4
This commit is contained in:
Lynix
2016-08-23 12:52:34 +02:00
parent d7a10031d7
commit bdedd05032
132 changed files with 6300 additions and 12587 deletions

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2015 Jérôme Leclercq
// Copyright (C) 2016 Jérôme Leclercq
// This file is part of the "Nazara Engine - Renderer module"
// For conditions of distribution and use, see copyright notice in Config.hpp
@@ -9,114 +9,29 @@
namespace Nz
{
enum AttachmentPoint
enum RenderAPI
{
AttachmentPoint_Color,
AttachmentPoint_Depth,
AttachmentPoint_DepthStencil,
AttachmentPoint_Stencil,
RenderAPI_Direct3D, ///< Microsoft Render API, only works on MS platforms
RenderAPI_Mantle, ///< AMD Render API, Vulkan predecessor, only works on AMD GPUs
RenderAPI_Metal, ///< Apple Render API, only works on OS X platforms
RenderAPI_OpenGL, ///< Khronos Render API, works on Web/Desktop/Mobile and some consoles
RenderAPI_Vulkan, ///< New Khronos Render API, made to replace OpenGL, works on desktop (Windows/Linux) and mobile (Android)
AttachmentPoint_Max = AttachmentPoint_Stencil
RenderAPI_Other, ///< RenderAPI not corresponding to an entry of the enum, or result of a failed query
RenderAPI_Max = RenderAPI_Other
};
enum GpuQueryCondition
enum RenderDeviceType
{
GpuQueryCondition_Region_NoWait,
GpuQueryCondition_Region_Wait,
GpuQueryCondition_NoWait,
GpuQueryCondition_Wait,
RenderDeviceType_Integrated, ///< Hardware-accelerated chipset integrated to a CPU (ex: Intel Graphics HD 4000)
RenderDeviceType_Dedicated, ///< Hardware-accelerated GPU (ex: AMD R9 390)
RenderDeviceType_Software, ///< Software-renderer
RenderDeviceType_Virtual, ///< Proxy renderer relaying instructions to another unknown device
GpuQueryCondition_Max = GpuQueryCondition_Wait
};
RenderDeviceType_Unknown, ///< Device type not corresponding to an entry of the enum, or result of a failed query
enum GpuQueryMode
{
GpuQueryMode_AnySamplesPassed,
GpuQueryMode_AnySamplesPassedConservative,
GpuQueryMode_PrimitiveGenerated,
GpuQueryMode_SamplesPassed,
GpuQueryMode_TimeElapsed,
GpuQueryMode_TransformFeedbackPrimitivesWritten,
GpuQueryMode_Max = GpuQueryMode_TransformFeedbackPrimitivesWritten
};
enum MatrixType
{
// Matrices de base
MatrixType_Projection,
MatrixType_View,
MatrixType_World,
// Matrices combinées
MatrixType_ViewProj,
MatrixType_WorldView,
MatrixType_WorldViewProj,
// Matrice inversées
MatrixType_InvProjection,
MatrixType_InvView,
MatrixType_InvViewProj,
MatrixType_InvWorld,
MatrixType_InvWorldView,
MatrixType_InvWorldViewProj,
MatrixType_Max = MatrixType_InvWorldViewProj
};
enum PixelBufferType
{
PixelBufferType_Pack,
PixelBufferType_Unpack,
PixelBufferType_Max = PixelBufferType_Unpack
};
enum RendererCap
{
RendererCap_AnisotropicFilter,
RendererCap_FP64,
RendererCap_Instancing,
RendererCap_Max = RendererCap_Instancing
};
enum RendererBufferFlags
{
RendererBuffer_Color = 0x1,
RendererBuffer_Depth = 0x2,
RendererBuffer_Stencil = 0x4,
RendererBuffer_Max = RendererBuffer_Stencil*2-1
};
enum ShaderUniform
{
ShaderUniform_InvProjMatrix,
ShaderUniform_InvTargetSize,
ShaderUniform_InvViewMatrix,
ShaderUniform_InvViewProjMatrix,
ShaderUniform_InvWorldMatrix,
ShaderUniform_InvWorldViewMatrix,
ShaderUniform_InvWorldViewProjMatrix,
ShaderUniform_ProjMatrix,
ShaderUniform_TargetSize,
ShaderUniform_ViewMatrix,
ShaderUniform_ViewProjMatrix,
ShaderUniform_WorldMatrix,
ShaderUniform_WorldViewMatrix,
ShaderUniform_WorldViewProjMatrix,
ShaderUniform_Max = ShaderUniform_WorldViewProjMatrix
};
enum ShaderStageType
{
ShaderStageType_Fragment,
ShaderStageType_Geometry,
ShaderStageType_Vertex,
ShaderStageType_Max = ShaderStageType_Vertex
RenderDeviceType_Max = RenderDeviceType_Unknown
};
}