]> git.tdb.fi Git - libs/gl.git/log
libs/gl.git
2 years agoSet debug names for pipeline and descriptor set layouts on Vulkan
Mikko Rasa [Wed, 16 Mar 2022 16:28:27 +0000 (18:28 +0200)]
Set debug names for pipeline and descriptor set layouts on Vulkan

2 years agoAdd a missing function import
Mikko Rasa [Wed, 16 Mar 2022 16:27:38 +0000 (18:27 +0200)]
Add a missing function import

2 years agoDon't try to draw world properties if there's no world
Mikko Rasa [Wed, 16 Mar 2022 16:27:23 +0000 (18:27 +0200)]
Don't try to draw world properties if there's no world

2 years agoExport instances created through geometry nodes
Mikko Rasa [Wed, 16 Mar 2022 16:26:47 +0000 (18:26 +0200)]
Export instances created through geometry nodes

2 years agoRefactor object prototype discovery in the blender exporter
Mikko Rasa [Wed, 16 Mar 2022 16:26:12 +0000 (18:26 +0200)]
Refactor object prototype discovery in the blender exporter

2 years agoFix handling of descriptor set bindings when shader stages change
Mikko Rasa [Wed, 16 Mar 2022 15:56:30 +0000 (17:56 +0200)]
Fix handling of descriptor set bindings when shader stages change

Also set only the present stages for descriptor set layouts.

2 years agoFix binding of descriptor sets of the new pipeline has more than the last
Mikko Rasa [Wed, 16 Mar 2022 15:54:05 +0000 (17:54 +0200)]
Fix binding of descriptor sets of the new pipeline has more than the last

2 years agoInitialize pipeline handle
Mikko Rasa [Wed, 16 Mar 2022 11:34:37 +0000 (13:34 +0200)]
Initialize pipeline handle

2 years agoSkip binding of low-numbered descriptor sets if they haven't changed
Mikko Rasa [Wed, 16 Mar 2022 11:29:09 +0000 (13:29 +0200)]
Skip binding of low-numbered descriptor sets if they haven't changed

2 years agoAnnotate uniforms with descriptor set layout qualifiers
Mikko Rasa [Wed, 16 Mar 2022 11:27:47 +0000 (13:27 +0200)]
Annotate uniforms with descriptor set layout qualifiers

Higher numbered sets are used for data which is expected to change
more often.

2 years agoMask out the descriptor set part of bind point when creating layouts
Mikko Rasa [Wed, 16 Mar 2022 11:20:59 +0000 (13:20 +0200)]
Mask out the descriptor set part of bind point when creating layouts

2 years agoRemove set layout qualifiers on OpenGL
Mikko Rasa [Wed, 16 Mar 2022 11:17:25 +0000 (13:17 +0200)]
Remove set layout qualifiers on OpenGL

But only if a binding qualifier is not present.  This allows using
multiple descriptor sets on Vulkan without breaking OpenGL.

2 years agoReplace some local pointers with references in VulkanCommands
Mikko Rasa [Wed, 16 Mar 2022 09:28:11 +0000 (11:28 +0200)]
Replace some local pointers with references in VulkanCommands

2 years agoOnly mark Result as checked if that specific value was checked
Mikko Rasa [Wed, 16 Mar 2022 09:23:31 +0000 (11:23 +0200)]
Only mark Result as checked if that specific value was checked

2 years agoRewrite descriptor set management
Mikko Rasa [Wed, 16 Mar 2022 08:44:06 +0000 (10:44 +0200)]
Rewrite descriptor set management

Descriptor sets have been moved from PipelineCache to a dedicated class.
PipelineState refers to descriptor sets using slot indices, allowing the
descriptor pool to be recreated if more space is needed.

Dynamic uniform buffers are no longer used.  Instead multiple copies of
the descriptor set are created if it contains dynamic uniform blocks.

2 years agoMake use of the sorted nature of PipelineState resource arrays
Mikko Rasa [Tue, 15 Mar 2022 19:25:18 +0000 (21:25 +0200)]
Make use of the sorted nature of PipelineState resource arrays

Since descriptor set is in the high bits, lower_bound can be used to
find its first resource and then go through elements until the next set
is reached.

2 years agoSome tweaks to vector component handling
Mikko Rasa [Mon, 14 Mar 2022 07:16:52 +0000 (09:16 +0200)]
Some tweaks to vector component handling

2 years agoUse default member initializers for ZSortedScene::SortedRenderable
Mikko Rasa [Mon, 14 Mar 2022 07:13:37 +0000 (09:13 +0200)]
Use default member initializers for ZSortedScene::SortedRenderable

2 years agoUse a per-camera cache in ZSortedScene
Mikko Rasa [Mon, 14 Mar 2022 07:10:12 +0000 (09:10 +0200)]
Use a per-camera cache in ZSortedScene

It's very common to have multiple cameras in a scene due to effects like
shadow and environment maps.  Using a single cache for all of them is
detrimental since the order will be different for each.

2 years agoUse is_ortographic in Camera instead of checking fov directly
Mikko Rasa [Mon, 14 Mar 2022 07:07:49 +0000 (09:07 +0200)]
Use is_ortographic in Camera instead of checking fov directly

2 years agoAdapt to changes in mspmath
Mikko Rasa [Mon, 14 Mar 2022 07:07:09 +0000 (09:07 +0200)]
Adapt to changes in mspmath

2 years agoMove frustum culling from Scene to Camera
Mikko Rasa [Sun, 13 Mar 2022 09:42:53 +0000 (11:42 +0200)]
Move frustum culling from Scene to Camera

Also refactor it so that the camera's object matrix is accounted for
when computing the frustum planes.

2 years agoMake it possible to disable Vulkan validation
Mikko Rasa [Sun, 13 Mar 2022 08:02:06 +0000 (10:02 +0200)]
Make it possible to disable Vulkan validation

This can be useful when profiling an optimized debug build.

2 years agoUse persistent tags for the model matrix uniforms in Renderer
Mikko Rasa [Sun, 13 Mar 2022 08:00:56 +0000 (10:00 +0200)]
Use persistent tags for the model matrix uniforms in Renderer

Re-hashing the names every time takes enough time to show up in a
profile.

2 years agoTreat standard and camera shader data specially in Renderer
Mikko Rasa [Sun, 13 Mar 2022 07:34:18 +0000 (09:34 +0200)]
Treat standard and camera shader data specially in Renderer

Don't add them to the generic shdata stack.  Some effects apply their own
camera, which led to two overlapping ProgramData objects on the stack.
Although the results were correct, this caused PipelineState to flag the
uniform blocks as dirty every frame and do unnecessary work.

2 years agoSet debug names for shader modules on Vulkan
Mikko Rasa [Fri, 11 Mar 2022 22:31:27 +0000 (00:31 +0200)]
Set debug names for shader modules on Vulkan

2 years agoRemove unused stages from shader programs
Mikko Rasa [Fri, 11 Mar 2022 22:11:49 +0000 (00:11 +0200)]
Remove unused stages from shader programs

A stage is deemed unused if it has no main function after optimization,
or if a SPIR-V entry point's interface variables all become unused during
specialization.

2 years agoFlip normal if a surface faces away from the camera
Mikko Rasa [Fri, 11 Mar 2022 21:48:17 +0000 (23:48 +0200)]
Flip normal if a surface faces away from the camera

This gives correct two-sided lighting for non-closed meshes, which may
be used for tree leaves and such.

2 years agoUse mesh as the task object when exporting it
Mikko Rasa [Fri, 11 Mar 2022 21:43:54 +0000 (23:43 +0200)]
Use mesh as the task object when exporting it

2 years agoUse R8 format when extracting a single channel from an image
Mikko Rasa [Fri, 11 Mar 2022 21:42:57 +0000 (23:42 +0200)]
Use R8 format when extracting a single channel from an image

2 years agoRefactor face cull settings in Blender
Mikko Rasa [Fri, 11 Mar 2022 21:37:05 +0000 (23:37 +0200)]
Refactor face cull settings in Blender

Meshes no longer have a winding test toggle.  Instead mesh winding is
always set and material's backface culling flag is exported.  The default
in RenderMethod has been changed to NO_CULL.

2 years agoChange front face logic on Vulkan to match the OpenGL backend
Mikko Rasa [Fri, 11 Mar 2022 12:53:32 +0000 (14:53 +0200)]
Change front face logic on Vulkan to match the OpenGL backend

Front face is always set, not only when face cull is enabled.  Since we
pretend that NDC has the same orientation as on OpenGL, face winding gets
inverted.

This will probably produce incorrect results if anything rendering to a
swapchain image relies on winding.

2 years agoDetect and export alpha cutoff in Blender
Mikko Rasa [Fri, 11 Mar 2022 10:14:55 +0000 (12:14 +0200)]
Detect and export alpha cutoff in Blender

2 years agoFix the recognition of additive blending in the Blender exporter
Mikko Rasa [Fri, 11 Mar 2022 10:13:53 +0000 (12:13 +0200)]
Fix the recognition of additive blending in the Blender exporter

2 years agoImplement alpha cutoff for materials
Mikko Rasa [Fri, 11 Mar 2022 09:55:49 +0000 (11:55 +0200)]
Implement alpha cutoff for materials

Having to implement it separately in each material's shader is not
optimal, but since they each define their own uniform block, no better
solution is readily apparent.

The occluder shader also supports alpha cutoff so that objects with
such materials can cast proper shadows.

2 years agoEnable shadow map for the blended method when exporting
Mikko Rasa [Fri, 11 Mar 2022 09:25:46 +0000 (11:25 +0200)]
Enable shadow map for the blended method when exporting

Blended objects may want to receive shadows even though they can't
cast them.

2 years agoSupport specifying enabled methods in effect templates
Mikko Rasa [Fri, 11 Mar 2022 09:24:39 +0000 (11:24 +0200)]
Support specifying enabled methods in effect templates

2 years agoCreate specialized versions of SPIR-V modules with default spec values
Mikko Rasa [Fri, 11 Mar 2022 09:22:23 +0000 (11:22 +0200)]
Create specialized versions of SPIR-V modules with default spec values

It's important to remove unused resources in this case too.

2 years agoTake care of SPIR-V load IDs in ternary expressions
Mikko Rasa [Thu, 10 Mar 2022 06:54:56 +0000 (08:54 +0200)]
Take care of SPIR-V load IDs in ternary expressions

2 years agoNormalize vertex normal and tangent vectors in vertex shader
Mikko Rasa [Wed, 9 Mar 2022 18:31:03 +0000 (20:31 +0200)]
Normalize vertex normal and tangent vectors in vertex shader

If the normal matrix has scaling, that can throw things off.

2 years agoAvoid allocating buffers and images too close together
Mikko Rasa [Tue, 8 Mar 2022 14:00:22 +0000 (16:00 +0200)]
Avoid allocating buffers and images too close together

Vulkan requires that both types of resources do not reside on the same
"page" in memory.

2 years agoMinor tweaks to MemoryAllocator
Mikko Rasa [Tue, 8 Mar 2022 13:58:57 +0000 (15:58 +0200)]
Minor tweaks to MemoryAllocator

2 years agoAdd a function to request debug information from MemoryAllocator
Mikko Rasa [Tue, 8 Mar 2022 13:31:15 +0000 (15:31 +0200)]
Add a function to request debug information from MemoryAllocator

2 years agoHandle certain shader graph patterns that occur in imported glTF files
Mikko Rasa [Sun, 6 Mar 2022 11:21:28 +0000 (13:21 +0200)]
Handle certain shader graph patterns that occur in imported glTF files

2 years agoRemove unnecessary import statements from the Blender exporter
Mikko Rasa [Sun, 6 Mar 2022 10:37:35 +0000 (12:37 +0200)]
Remove unnecessary import statements from the Blender exporter

2 years agoUse bpy.path.basename instead of a custom function
Mikko Rasa [Sun, 6 Mar 2022 10:32:49 +0000 (12:32 +0200)]
Use bpy.path.basename instead of a custom function

2 years agoChange some leftover .tex2d extensions in the exporter
Mikko Rasa [Sun, 6 Mar 2022 10:30:58 +0000 (12:30 +0200)]
Change some leftover .tex2d extensions in the exporter

2 years agoHandle arbitrary channel inversions in material inputs.
Mikko Rasa [Sat, 5 Mar 2022 17:56:34 +0000 (19:56 +0200)]
Handle arbitrary channel inversions in material inputs.

2 years agoRefactor the material node processing code
Mikko Rasa [Sat, 5 Mar 2022 17:48:51 +0000 (19:48 +0200)]
Refactor the material node processing code

2 years agoDon't check group in get_unlit_inputs
Mikko Rasa [Sat, 5 Mar 2022 17:45:21 +0000 (19:45 +0200)]
Don't check group in get_unlit_inputs

It's fundamentally different from the other functions and wouldn't work
properly with a group.

2 years agoMake texture channel handling in the Blender exporter more flexible
Mikko Rasa [Sat, 5 Mar 2022 09:00:58 +0000 (11:00 +0200)]
Make texture channel handling in the Blender exporter more flexible

Any channel can now be inverted (though the shader graph inspection does
not detect this yet), so a separate invert_green channel is no longer
needed.

2 years agoFixes for exporting objects consisting only of lines
Mikko Rasa [Sat, 5 Mar 2022 08:55:47 +0000 (10:55 +0200)]
Fixes for exporting objects consisting only of lines

2 years agoRedesign progress and error reporting in the Blender exporter
Mikko Rasa [Sat, 5 Mar 2022 08:50:04 +0000 (10:50 +0200)]
Redesign progress and error reporting in the Blender exporter

Progress is now tracked in a context object, which also holds the Blender
context.  Tasks are represented by independent objects instead of a stack
structure.

The context/task objects also track which data object that task is about,
so the object path can be reported in errors.

2 years agoFix incorrect vertex array indexing in InstanceArray
Mikko Rasa [Tue, 1 Mar 2022 10:52:02 +0000 (12:52 +0200)]
Fix incorrect vertex array indexing in InstanceArray

2 years agoMove ProgramData to materials
Mikko Rasa [Mon, 28 Feb 2022 09:56:33 +0000 (11:56 +0200)]
Move ProgramData to materials

It has more users in materials and in render, and also materials is a
lower layer, so it makes more sense for it to be here.

2 years agoSimplify Program by removing transient data
Mikko Rasa [Sat, 29 Jan 2022 12:09:01 +0000 (14:09 +0200)]
Simplify Program by removing transient data

After some earlier refactorings it was only used on one code path, so
those variables are now directly declared where they're needed.

2 years agoAlign staging memory with an alignment suitable for image transfers
Mikko Rasa [Tue, 25 Jan 2022 18:14:17 +0000 (20:14 +0200)]
Align staging memory with an alignment suitable for image transfers

The source data needs to be aligned at a multiple of the texel size.  48
bytes is divisible by almost all possible pixel sizes.

2 years agoUse a dummy transmittance lookup texture to render the lookup in Sky
Mikko Rasa [Tue, 25 Jan 2022 17:56:39 +0000 (19:56 +0200)]
Use a dummy transmittance lookup texture to render the lookup in Sky

Ideally the compiler should optimize the shader so the texture isn't
used, but that'll take some extra effort to implement.

2 years agoOverhaul the Vulkan backend's memory allocator
Mikko Rasa [Tue, 25 Jan 2022 17:42:35 +0000 (19:42 +0200)]
Overhaul the Vulkan backend's memory allocator

It now sub-allocates from larger chunks of memory to avoid hitting
Vulkan's allocation count limit.

2 years agoRefactor Vulkan memory mapping functions
Mikko Rasa [Tue, 25 Jan 2022 17:16:57 +0000 (19:16 +0200)]
Refactor Vulkan memory mapping functions

An allocation is now always mapped in its entirety.  Unmapping is done
by ID instead of mapped address.

2 years agoRefactor allocation index and ID handling in the Vulkan backend
Mikko Rasa [Tue, 25 Jan 2022 16:56:16 +0000 (18:56 +0200)]
Refactor allocation index and ID handling in the Vulkan backend

MemoryAllocator now always uses indices internally.  Incoming IDs are
checked for validity.

2 years agoRemove the unused get_allocation_size function
Mikko Rasa [Tue, 25 Jan 2022 15:58:14 +0000 (17:58 +0200)]
Remove the unused get_allocation_size function

2 years agoUse pipeline keys for objects and effects
Mikko Rasa [Wed, 19 Jan 2022 13:00:52 +0000 (15:00 +0200)]
Use pipeline keys for objects and effects

2 years agoSupport multiple PipelineStates in Renderer
Mikko Rasa [Mon, 17 Jan 2022 20:41:24 +0000 (22:41 +0200)]
Support multiple PipelineStates in Renderer

In the Vulkan backend it can be beneficial to keep separate pipeline
states and avoid having to repeatedly compute hashes and look them up
from the cache.  The downside is that every time the used state object
changes, shader data has to be reapplied.  But it's likely this would
be necessary anyway due to different shader or data being used.

2 years agoApply only changed parts of VulkanPipelineState
Mikko Rasa [Sat, 15 Jan 2022 09:06:08 +0000 (11:06 +0200)]
Apply only changed parts of VulkanPipelineState

2 years agoMinor, largely cosmetic tweaks
Mikko Rasa [Fri, 14 Jan 2022 22:06:58 +0000 (00:06 +0200)]
Minor, largely cosmetic tweaks

2 years agoUse the changes member directly in PipelineState backends
Mikko Rasa [Thu, 13 Jan 2022 21:17:01 +0000 (23:17 +0200)]
Use the changes member directly in PipelineState backends

2 years agoStore simpler states by value in PipelineState
Mikko Rasa [Wed, 12 Jan 2022 20:24:54 +0000 (22:24 +0200)]
Store simpler states by value in PipelineState

Since these are also stored by value in various objects, a pointer
comparison is not enough to tell if state needs to be changed.  There's
no guarantee that the object behind the pointer stays alive, so comparing
values through the pointer is hazardous.

2 years agoCreate a function for applying framebuffer state in Renderer
Mikko Rasa [Wed, 12 Jan 2022 20:18:09 +0000 (22:18 +0200)]
Create a function for applying framebuffer state in Renderer

2 years agoMake various enums use uint8_t as their underlying type
Mikko Rasa [Wed, 12 Jan 2022 20:17:20 +0000 (22:17 +0200)]
Make various enums use uint8_t as their underlying type

2 years agoOnly set pipeline resources as used when the resource changes
Mikko Rasa [Sun, 9 Jan 2022 13:38:54 +0000 (15:38 +0200)]
Only set pipeline resources as used when the resource changes

This avoids an issue on Vulkan where invalid descriptor set writes were
generated if a resource unused by the current shader was set to the same
value it already had and the shader wasn't changed.

I'm not really sure if the flags should be set in the common part at all,
since the OpenGL bckend barely uses them.  But other approaches are not
clearly superior either.

2 years agoUse a placeholder texture when a texture has not been loaded yet
Mikko Rasa [Sun, 2 Jan 2022 11:15:01 +0000 (13:15 +0200)]
Use a placeholder texture when a texture has not been loaded yet

2 years agoUse low-level handles when computing descriptor set hashes
Mikko Rasa [Wed, 29 Dec 2021 22:03:36 +0000 (00:03 +0200)]
Use low-level handles when computing descriptor set hashes

The handle of a texture may change due to loading and unloading through
a resource manager.

2 years agoConvert pixel components if necessary when async loading textures
Mikko Rasa [Tue, 28 Dec 2021 20:11:03 +0000 (22:11 +0200)]
Convert pixel components if necessary when async loading textures

2 years agoMove Texture2D::AsyncLoader back to the common part
Mikko Rasa [Tue, 28 Dec 2021 14:09:59 +0000 (16:09 +0200)]
Move Texture2D::AsyncLoader back to the common part

The backend-specific parts are now handled by AsyncTransfer.

2 years agoRefactor Texture2D::AsyncLoader to use sub_image_async
Mikko Rasa [Tue, 28 Dec 2021 14:07:48 +0000 (16:07 +0200)]
Refactor Texture2D::AsyncLoader to use sub_image_async

2 years agoAdd an asynchronous version of Texture2D::sub_image
Mikko Rasa [Tue, 28 Dec 2021 10:03:58 +0000 (12:03 +0200)]
Add an asynchronous version of Texture2D::sub_image

2 years agoRequire buffer to have storage for mapping
Mikko Rasa [Mon, 27 Dec 2021 23:05:20 +0000 (01:05 +0200)]
Require buffer to have storage for mapping

2 years agoMake Buffer::AsyncTransfer default-constructible and move-assignable
Mikko Rasa [Mon, 27 Dec 2021 21:26:25 +0000 (23:26 +0200)]
Make Buffer::AsyncTransfer default-constructible and move-assignable

2 years agoRedesign asynchronous buffer uploads
Mikko Rasa [Fri, 24 Dec 2021 10:25:46 +0000 (12:25 +0200)]
Redesign asynchronous buffer uploads

The Buffer class now offers an async version of sub_data, which can
better account for exactly how the data needs to be uploaded.

2 years agoReset staging buffers in TransferQueue once the transfers are done
Mikko Rasa [Mon, 20 Dec 2021 21:03:33 +0000 (23:03 +0200)]
Reset staging buffers in TransferQueue once the transfers are done

2 years agoImprove state setting in Sky
Mikko Rasa [Mon, 20 Dec 2021 00:13:41 +0000 (02:13 +0200)]
Improve state setting in Sky

Avoid leaking the effect's shader data to its content as it contains no
relevant uniforms.

2 years agoUse a streaming buffer for ProgramData only when needed
Mikko Rasa [Sun, 19 Dec 2021 23:26:15 +0000 (01:26 +0200)]
Use a streaming buffer for ProgramData only when needed

2 years agoRefactor ProgramData buffer (re)creation into a function
Mikko Rasa [Sun, 19 Dec 2021 12:10:12 +0000 (14:10 +0200)]
Refactor ProgramData buffer (re)creation into a function

2 years agoMultiplex streaming buffer contents on Vulkan
Mikko Rasa [Sun, 19 Dec 2021 11:39:08 +0000 (13:39 +0200)]
Multiplex streaming buffer contents on Vulkan

This ensures that the data stays valid until the draw commands using it
have finished executing.

2 years agoInstanceArray doesn't need to refresh the vertex arrays
Mikko Rasa [Sun, 19 Dec 2021 11:26:00 +0000 (13:26 +0200)]
InstanceArray doesn't need to refresh the vertex arrays

That's done in Renderer since 9b3bce7.

2 years agoAdd a flag to obtain an aligned size requirement from Bufferable
Mikko Rasa [Sun, 19 Dec 2021 10:53:48 +0000 (12:53 +0200)]
Add a flag to obtain an aligned size requirement from Bufferable

2 years agoUse a member function to set the dirty flag in Bufferable
Mikko Rasa [Sat, 18 Dec 2021 22:16:10 +0000 (00:16 +0200)]
Use a member function to set the dirty flag in Bufferable

2 years agoKeep track of the buffers of bound uniform blocks
Mikko Rasa [Sat, 18 Dec 2021 22:00:32 +0000 (00:00 +0200)]
Keep track of the buffers of bound uniform blocks

ProgramData may recreate the buffer when creating new blocks, but existing
block objects will be retained.  As such, the block object alone isn't
enough to determine whether the binding has changed.

2 years agoIncrement frame after destroying objects instead of before
Mikko Rasa [Sat, 18 Dec 2021 18:19:55 +0000 (20:19 +0200)]
Increment frame after destroying objects instead of before

Things were getting destroyed one frame too early since the destroy queue
is ticked after rendering a frame.

2 years agoClamp depth reference for shadows to 1.0
Mikko Rasa [Tue, 14 Dec 2021 14:23:34 +0000 (16:23 +0200)]
Clamp depth reference for shadows to 1.0

This makes objects which are "behind" the shadow map volume sample the
shadow map correctly and not treat the clear value as a shadow caster.

2 years agoDefer transfer and barriers until the entire render pass is recorded
Mikko Rasa [Tue, 14 Dec 2021 12:57:34 +0000 (14:57 +0200)]
Defer transfer and barriers until the entire render pass is recorded

This ensures that all resources needed by the render pass are prepared
before executing the pass.

2 years agoUse secondary command buffers to record render pass contents
Mikko Rasa [Tue, 14 Dec 2021 12:37:57 +0000 (14:37 +0200)]
Use secondary command buffers to record render pass contents

This allows greater flexibility for ordering transfers and barriers
relative to render passes.

2 years agoCorrectly set framebuffer layers when cube map attachments are used
Mikko Rasa [Tue, 14 Dec 2021 11:24:13 +0000 (13:24 +0200)]
Correctly set framebuffer layers when cube map attachments are used

2 years agoRefactor projection matrix handling
Mikko Rasa [Tue, 14 Dec 2021 11:21:25 +0000 (13:21 +0200)]
Refactor projection matrix handling

Projection matrices in C++ side now always produce a depth range of 0 to
1 for the NDC Z coordinate.  Shaders will convert it to -1 to 1 when
targeting OpenGL.

Incidentally, the AmbientOcclusion effect's shaders were already written
as if the depth range was 0 to 1, so the effect was actually slightly
incorrect before this.

2 years agoFix incorrect lookup of GLSL interface variables
Mikko Rasa [Sun, 12 Dec 2021 21:48:40 +0000 (23:48 +0200)]
Fix incorrect lookup of GLSL interface variables

2 years agoRefactor handling of viewport Y axis
Mikko Rasa [Sun, 12 Dec 2021 21:44:04 +0000 (23:44 +0200)]
Refactor handling of viewport Y axis

Only invert it for the swapchain render target.  This makes it easier to
sample render target textures consistently.

2 years agoSet gl_Layer separately for each vertex
Mikko Rasa [Sun, 12 Dec 2021 11:17:30 +0000 (13:17 +0200)]
Set gl_Layer separately for each vertex

EmitVertex invalidates *all* output variables so they must be written
again for the next one.

2 years agoEnable geometry shaders by default
Mikko Rasa [Sun, 12 Dec 2021 11:01:38 +0000 (13:01 +0200)]
Enable geometry shaders by default

2 years agoFix render area Y coordinate calculation
Mikko Rasa [Sun, 12 Dec 2021 10:57:19 +0000 (12:57 +0200)]
Fix render area Y coordinate calculation