Commit Graph

239 Commits

Author SHA1 Message Date
Jérôme Leclercq 9854ebe950 OpenGLRenderer: Disable push/pop group notifications 2021-07-09 13:59:06 +02:00
Jérôme Leclercq 9f410302d2 OpenGLRenderer/Context: Cleanup code 2021-07-09 12:36:24 +02:00
Jérôme Leclercq 681cf31b66 OpenGLRenderer: Disable notification messages 2021-07-09 12:36:00 +02:00
Jérôme Leclercq 56776c19c4 OpenGLRenderer: Fix device features not being correctly reported 2021-07-09 12:35:35 +02:00
Jérôme Leclercq 06b442ab58 OpenGLRenderer: Fix depth clamping not being reported as supported 2021-07-09 12:34:57 +02:00
Jérôme Leclercq 552dfbc01e Renderer: Add pipeline and texture sampler info validation 2021-07-09 12:34:38 +02:00
Jérôme Leclercq 8458301a64 Add support for depth clamping 2021-07-09 00:22:08 +02:00
Jérôme Leclercq 3a3279246f OpenGLRenderer: Enable GL_ARB_gl_spirv and GL_ARB_texture_filter_anisotropic with OpenGL 4.6 2021-07-09 00:01:33 +02:00
Jérôme Leclercq 309fd547e1 Fix compilation errors and warnings 2021-07-07 22:38:24 +02:00
Jérôme Leclercq f9af35b489 Shader: Attribute can now have expressions as values and struct fields can be conditionally supported 2021-07-07 22:38:24 +02:00
Jérôme Leclercq f14db3f5e9 Renderer: Expose RenderTarget and framebuffers indices 2021-07-03 13:52:29 +02:00
Jérôme Leclercq 930142b7a7 OpenGLRenderer: Fix double StackVector init 2021-07-03 13:35:59 +02:00
Jérôme Leclercq 343b0a6fd7 OpenGLRenderer/Context: Remove GL_AMD_debug_output support
It turns out callbacks are not compatibles between GL_AMD_debug_output and GL_ARB_debug_output (and GL_KHR_debug)
2021-07-03 13:01:41 +02:00
Jérôme Leclercq 9f76c84309 OpenGLRenderer/Context: Improve source readability 2021-07-03 12:59:06 +02:00
Jérôme Leclercq d88c4ecb5b Renderer/Framebuffer: Add GetType (and rework backend internals) 2021-06-22 17:30:08 +02:00
Jérôme Leclercq c188d0616a OpenGLRenderer: Implement AttachmentLoadOp::Discard using glInvalidateFramebuffer 2021-06-22 17:26:40 +02:00
Jérôme Leclercq b13c5c950a OpenGLRenderer: Implement face filling 2021-06-20 14:06:28 +02:00
Jérôme Leclercq 8625c0a7ac Fix compilation under Linux 2021-06-16 16:50:00 +02:00
Jérôme Leclercq 3cd9172f7a Graphics: Make use of shader binding sets 2021-06-16 16:50:00 +02:00
Jérôme Leclercq f22b501e25 Add initial support for shader binding sets (WIP) 2021-06-16 16:50:00 +02:00
Jérôme Leclercq 815a7b0c62 Replace const ShaderAst::StatementPtr& by ShaderAst::Statement& in input 2021-06-16 16:50:00 +02:00
Jérôme Leclercq 86097b331b Renderer: Add support for device-enabled features (anisotropic filtering) 2021-06-05 19:51:48 +02:00
Jérôme Leclercq 5bc3cd8d8c OpenGLRenderer: Add GL_EXT_texture_compression_s3tc check for DXT pixel formats 2021-06-03 17:15:12 +02:00
Jérôme Leclercq 6161bbec76 Renderer: Handle more depthstencil formats (as Depth24Stencil8 may not be supported everywhere) 2021-06-02 20:16:43 +02:00
Jérôme Leclercq 465837ff12 Renderer: Add support for cubemaps 2021-06-01 12:30:37 +02:00
Jérôme Leclercq a90844f0dd Remove X11 dependency properly (as it's handled by SDL and EGL) 2021-05-29 00:52:10 +02:00
Jérôme Leclercq 41baacd9ab Fix linux compilation 2021-05-29 00:34:09 +02:00
Jérôme Leclercq 109b2a156e OpenGLRenderer: Allow RenderPipeline without a fragment shader on OpenGL ES 2021-05-29 00:32:00 +02:00
Jérôme Leclercq c2b61b6732 A lot of fixes 2021-05-28 22:58:40 +02:00
Jérôme Leclercq ff505e9019 Renderer: Implement and fix front face (winding order) between Vulkan / OpenGL 2021-05-28 22:58:14 +02:00
Jérôme Leclercq 299585a7de Renderer: Implement renderpass attachments clear for OpenGL 2021-05-28 22:55:56 +02:00
Jérôme Leclercq 7fe60026be OpenGLRenderer: Minor fixes 2021-05-26 22:20:10 +02:00
Jérôme Leclercq 874fb3542e Convert all remaining enums to enum classes (!) 2021-05-25 10:40:07 +02:00
Jérôme Leclercq cce32a64d4 Upgrade Utility 2021-05-25 10:40:07 +02:00
Jérôme Leclercq 35060ab24e Fix minor stuff 2021-05-19 20:32:16 +02:00
Lynix 13feaf4aab Renderer: RenderWindow now requires a RenderDevice 2021-05-16 23:13:00 +02:00
Jérôme Leclercq 51c099b3ce Renderer: Allow UploadPool to handle very big (>= 2MB) blocks 2021-05-15 15:27:17 +02:00
Jérôme Leclercq f280cff0a2 Renderer: Add release queue to fix deletion while use 2021-05-14 02:04:47 +02:00
Jérôme Leclercq bbfe06c443 Renderer: Fix UploadPool allocations references 2021-05-14 01:56:32 +02:00
Jérôme Leclercq aeac3282e4 Renderer: Add RenderDevice::GetDeviceInfo() 2021-05-14 01:55:16 +02:00
Jérôme Leclercq adbf1e1da0 Renderer: Add proper support for blending 2021-05-14 01:50:46 +02:00
Jérôme Leclercq 61dbd91346 Lot of small fixes/improvements 2021-05-14 01:48:47 +02:00
Jérôme Leclercq 10aa7231b6 Renderer: Fix MRT support 2021-05-05 12:01:20 +02:00
Jérôme Leclercq 990193ebb4 Minor fixes 2021-05-02 13:58:56 +02:00
Jérôme Leclercq 55c2dd8485 Add FrameGraph (WIP) 2021-05-02 13:58:35 +02:00
Jérôme Leclercq 044195b209 Minor fixes 2021-04-20 18:18:27 +02:00
Jérôme Leclercq 87ce2edc6e Shader: Add initial support for options (WIP) 2021-04-20 18:18:27 +02:00
Jérôme Leclercq d335d44d6a Shader: Cleanup and rename AST files 2021-04-20 18:18:27 +02:00
Jérôme Leclercq 3499c1f92f Shader: Remove the need of layout(std140) in external block 2021-04-20 18:18:27 +02:00
Jérôme Leclercq e4aabf309e Renderer: Replace ShaderStage by ShaderModule (a module can handle multiple stages) 2021-04-20 18:18:27 +02:00
Jérôme Leclercq 311cfeaf3c OpenGLRenderer: Fix Y flipping for FBOs 2021-02-20 19:23:29 +01:00
Jérôme Leclercq fb3468854f Renderer: Implement Framebuffers 2021-02-20 19:22:08 +01:00
Jérôme Leclercq 3ef74d6e1d OpenGLRenderer: Use glTexStorage2D instead of glTexImage2D 2021-02-20 19:14:13 +01:00
Jérôme Leclercq f7442982a4 OpenGLRenderer: Implement debug region data 2021-02-20 19:10:32 +01:00
Jérôme Leclercq 8f9f943e2c OpenGLRenderer: Implement primitive mode 2021-02-20 18:56:54 +01:00
Jérôme Leclercq 080fd9c7eb Minor fixes 2021-02-15 18:17:30 +01:00
Jérôme Leclercq a6b5246633 OpenGLRenderer: Fix clear values 2021-02-15 18:17:10 +01:00
Jérôme Leclercq 2ef772cec7 Merge branch 'nazara-next' into graphics-next 2021-01-28 16:37:46 +01:00
Jérôme Leclercq 5eedd3c0bc Renderers: Fix UploadPool 2021-01-28 15:59:18 +01:00
Jérôme Leclercq a6ff64106e Minor stuff 2021-01-22 23:23:28 +01:00
Jérôme Leclercq d52be87fd5 OpenGLRenderer: Fix Draw[Indexed]Data states 2021-01-22 23:18:35 +01:00
Jérôme Leclercq dbcb4a61d0 OpenGLRenderer: Fix context not being shared on OpenGL ES 2021-01-22 23:17:55 +01:00
Jérôme Leclercq c76d6505b0 Renderer/ShaderBinder: Make Update take a pointer and size 2021-01-22 23:15:31 +01:00
Jérôme Leclercq 96d7b9424b Renderer: Handle null textures in shader binding 2021-01-14 22:03:01 +01:00
Jérôme Leclercq f327932738 Commit current work
Reworked conditions, added uber-shaders, comparison nodes, fixed Discard
2021-01-02 21:15:59 +01:00
Jérôme Leclercq 73e86407b3 Fix some warnings 2020-10-30 23:08:27 +01:00
Jérôme Leclercq 009e5a0466 Renderer: Rename ShaderStageImpl to ShaderStage 2020-10-30 23:06:15 +01:00
Jérôme Leclercq d243e7bcd2 OpenGLRenderer: Move error to string to Utils 2020-09-26 20:43:55 +02:00
Jérôme Leclercq 9291ef6299 Disable OpenGL overriding with MSVC / x86
Seems like a bug with MSVC when targetting 32bits targets
2020-09-26 11:50:37 +02:00
Jérôme Leclercq 65337c6a38 Fix a lot of warnings and some errors 2020-09-26 11:44:09 +02:00
Jérôme Leclercq 2b6a463a45 Remove Nz::String and Nz::StringStream 2020-09-25 19:31:01 +02:00
Jérôme Leclercq f15709c8a3 Renderer: Replace unique_ptr by shared_ptr 2020-09-20 15:56:58 +02:00
Jérôme Leclercq 7a7a67cd40 Update OpenGLVaoCache.cpp 2020-09-17 18:54:41 +02:00
Jérôme Leclercq f8dc5a5516 OpenGLRenderer: Default to WGL on Windows 2020-09-04 15:23:14 +02:00
Jérôme Leclercq ab0cc800e3 Remove VMA dependency from OpenGLRenderer 2020-09-04 15:22:05 +02:00
Jérôme Leclercq d98cddcfe0 Remove no longer used code 2020-09-04 14:19:11 +02:00
Jérôme Leclercq a8b9a8c56d Workaround MSVC bug 2020-09-04 14:18:57 +02:00
Jérôme Leclercq 3082620ef9 Remove useless code 2020-09-03 16:33:56 +02:00
Jérôme Leclercq 0255541b44 Replace EGL symbol loader 2020-09-03 16:33:37 +02:00
Jérôme Leclercq addcd52552 Try to get around MSVC bug 2020-09-03 15:47:43 +02:00
Jérôme Leclercq 58efffc51f Improve code a bit
Prevent converting back and forth the same function pointer
2020-09-03 13:58:45 +02:00
Jérôme Leclercq 0609a10c25 OpenGLRenderer: Get rid of std::function by using function indexes 2020-09-03 13:54:44 +02:00
Jérôme Leclercq 6848ff8b34 OpenGLRenderer: Add debug wrapper (which handle OpenGL errors) 2020-09-03 13:39:34 +02:00
Jérôme Leclercq df33262ab4 OpenGLRenderer: Fix context activation 2020-09-03 13:18:09 +02:00
Jérôme Leclercq d622a75d73 Add BufferUsage_Dynamic
Since OpenGL screams in performance warning because of a GL_STATIC_DRAW buffer being updated from another buffer
2020-09-02 17:19:52 +02:00
Jérôme Leclercq d05df45cb6 Fix EGL context sharing
It seems contexts must be part of the same display to be shared, and that using default display with window isn't an issue on Windows/X11
2020-09-02 15:40:57 +02:00
Jérôme Leclercq bc2f18c852 OpenGLRenderer: Try to fix EGLContext sharing with X11 2020-09-01 20:10:09 +02:00
Jérôme Leclercq f4186fdeac Fix context sharing 2020-09-01 20:01:36 +02:00
Jérôme Leclercq c4e63a582c OpenGLRenderer: initial support for X11 2020-09-01 19:49:50 +02:00
Jérôme Leclercq c7b0d103e1 OpenGLRenderer: remove opengl32 dependency on Linux 2020-09-01 19:28:10 +02:00
Jérôme Leclercq ae34533595 Minor fixes 2020-09-01 18:47:08 +02:00
Jérôme Leclercq ef737a8ecd Add basic EGL support 2020-09-01 18:46:35 +02:00
Jérôme Leclercq ea8f34c45e Rename WGL folder from Win32 to WGL 2020-08-28 15:52:31 +02:00
Jérôme Leclercq 8d873a8307 Fix a lot of small errors/warnings 2020-08-28 15:42:19 +02:00
Jérôme Leclercq 51ec9741df OpenGLRenderer: Handle resize/minimize 2020-08-27 18:32:22 +02:00
Jérôme Leclercq 7c9dcdfbe4 Allocate command buffers from pools 2020-08-27 18:31:26 +02:00
Jérôme Leclercq cbdac32f5f VulkanRenderer: Handle window resize 2020-08-27 16:16:33 +02:00
Jérôme Leclercq 608b80981d Fix OpenGL & Vulkan renderers 2020-08-11 00:13:00 +02:00
Jérôme Leclercq 1a12e18a36 Fix copyright dates and some defines 2020-08-11 00:01:49 +02:00
Jérôme Leclercq 0313f2d0a6 Enable GL_DEBUG_OUTPUT 2020-08-09 18:43:44 +02:00
Jérôme Leclercq d9b34b4ba8 OpenGLRenderer: Handle GL_DEBUG_SEVERITY_NOTIFICATION 2020-08-09 18:41:28 +02:00
Jérôme Leclercq d4f60c174e OpenGLRenderer: Flip screenspace 2020-08-09 18:40:59 +02:00
Jérôme Leclercq ac7b523bc7 OpenGLRenderer: Fix textures 2020-08-09 18:38:58 +02:00
Jérôme Leclercq 74fb01af28 Rename a few classes 2020-08-04 15:31:47 +02:00
Jérôme Leclercq 59add283cf Add shader type 2020-07-27 18:52:58 +02:00
Jérôme Leclercq 1d2fb88198 Renderer: Rename enums
ExpressionType => BasicType
ShaderAst::Type => ShaderExpressionType
2020-07-16 18:34:58 +02:00
Jérôme Leclercq cd01facd01 GlslWriter: Handle OpenGL ES precision qualifier 2020-07-08 22:52:33 +02:00
Jérôme Leclercq b076a517c6 Merge branch 'vulkan' into shader-nodes 2020-07-08 22:38:24 +02:00
Lynix 4f671873c1 Renderer: Add NazaraBinary shader "language" and handle it in OpenGLRenderer 2020-06-18 20:05:22 +02:00
Lynix 74acf440fc Minor fixes 2020-06-18 20:04:25 +02:00
Lynix a73251f2df OpenGLRenderer: Fix version parsing
OpenGL ES 3.0 implementations don't seem to follow the spec, use GL_MAJOR_VERSION and GL_MINOR_VERSION instead
2020-06-01 17:11:34 +02:00
Lynix 8f04412a3f OpenGLRenderer: Fix GLES context creation
core profile bit has not meaning to OpenGL ES
2020-06-01 16:17:04 +02:00
Lynix 960a5c2d05 OpenGLRenderer: Fix extension loading 2020-06-01 16:16:41 +02:00
Lynix e0e7435c55 Merge fixes 2020-05-27 20:03:46 +02:00
Lynix 8fa456bdf5 Renderer: Remake backend selection 2020-05-23 22:07:22 +02:00
Lynix 6a23d51147 OpenGL: Implement commands buffers 2020-05-11 14:12:13 +02:00
Lynix fe5b70ae1c OpenGL: Implement VAOs 2020-05-11 14:10:36 +02:00
Lynix 332278dded OpenGL: Random stuff I forgot 2020-05-11 14:05:40 +02:00
Lynix 2ea03fe05f OpenGL: Implement Framebuffers 2020-05-11 14:03:54 +02:00
Lynix 34804189d8 OpenGL: Set GL_TEXTURE_MAX_LEVEL 2020-05-11 14:01:57 +02:00
Lynix 51009cd745 OpenGL: Switch to SRGB formats 2020-05-11 14:01:45 +02:00
Lynix 3cf53c4d9a OpenGL: Implement RenderPipeline 2020-05-11 14:01:17 +02:00
Lynix 49c68e581a OpenGL: Fix TextureSampler mipmap issue 2020-05-11 13:58:12 +02:00
Lynix 6073d8f592 OpenGL: Implement UploadPool 2020-05-11 13:57:11 +02:00
Lynix b7a7c84a89 Minor fixes 2020-04-26 18:22:07 +02:00
Lynix 32157503e8 OpenGL: Implement RenderPipelineLayout 2020-04-26 18:21:38 +02:00
Lynix 0b05feb7e3 OpenGL: Implement buffers 2020-04-26 18:20:36 +02:00
Lynix e9f0b01e02 OpenGLRenderer: Implement TextureSampler (and texture units) 2020-04-26 16:29:31 +02:00
Lynix b4b15f826d OpenGL: Implement textures 2020-04-19 15:33:56 +02:00
Lynix 349e915e10 OpenGL: Link contexts to device 2020-04-19 15:33:36 +02:00
Lynix bd6924d66d OpenGL: Handle Spir-V 2020-04-19 15:31:48 +02:00
Lynix f63d045676 OpenGL: Better handling for activation/desactivation 2020-04-19 15:28:59 +02:00
Lynix d62e99091f OpenGL: Implement debug callback 2020-04-19 15:19:16 +02:00
Lynix a842e89881 Fix some missing files 2020-04-19 01:38:52 +02:00
Lynix 506099fcd7 OpenGL: Implement ShaderStage 2020-04-19 01:38:38 +02:00
Lynix 9dd208c3cf OpenGL: Fix contexts & loaders 2020-04-19 01:38:19 +02:00
Lynix 4dc8920a73 Implement some classes 2020-04-19 01:37:56 +02:00
Lynix 5c3eb31d4a OpenGL: Implement device 2020-04-19 01:36:44 +02:00
Lynix 68760209c1 Add OpenGLRenderer (WIP) 2020-04-15 19:38:11 +02:00