]> git.tdb.fi Git - libs/gl.git/log
libs/gl.git
16 months agoFix out-of-bounds accesses of vectors
Mikko Rasa [Sat, 4 May 2024 12:30:33 +0000 (15:30 +0300)]
Fix out-of-bounds accesses of vectors

18 months agoFix creation of animation curves
Mikko Rasa [Tue, 27 Feb 2024 18:53:56 +0000 (20:53 +0200)]
Fix creation of animation curves

18 months agoFix reloading meshes with ResourceManager
Mikko Rasa [Fri, 16 Feb 2024 21:16:15 +0000 (23:16 +0200)]
Fix reloading meshes with ResourceManager

Unloading was clearing the format of VertexSetup and it wouldn't accept
the vertex array.  Setting storage format should also be skipped while
loading from a file if the same format was set previously.

19 months agoAdd a getter for the texture tag of Text
Mikko Rasa [Wed, 17 Jan 2024 20:47:00 +0000 (22:47 +0200)]
Add a getter for the texture tag of Text

19 months agoFix a bug with exporting vertex groups
Mikko Rasa [Wed, 17 Jan 2024 20:46:35 +0000 (22:46 +0200)]
Fix a bug with exporting vertex groups

20 months agoRequire interpolation and sampling qualifiers to match
Mikko Rasa [Thu, 4 Jan 2024 18:01:30 +0000 (20:01 +0200)]
Require interpolation and sampling qualifiers to match

20 months agoUse the flat qualifier on both sides of a geneated interface
Mikko Rasa [Thu, 4 Jan 2024 18:00:55 +0000 (20:00 +0200)]
Use the flat qualifier on both sides of a geneated interface

20 months agoGenerate storage offsets for default block uniforms internally
Mikko Rasa [Fri, 29 Dec 2023 08:21:21 +0000 (10:21 +0200)]
Generate storage offsets for default block uniforms internally

Intel drivers treat locations as abstract identifiers, so a 4×4 matrix
only consumes a single location.

20 months agoAdd default packing qualifiers to uniform and buffer blocks
Mikko Rasa [Fri, 29 Dec 2023 07:55:18 +0000 (09:55 +0200)]
Add default packing qualifiers to uniform and buffer blocks

The GLSL spec says they use shared packing by default, and it turns out
that on AMD graphics processors this results in large alignment event
for primitive types.  This threw off applications using storage buffers
since their contents are not reflected.

20 months agoRemove outdated tweaks for AMD graphics processors
Mikko Rasa [Fri, 29 Dec 2023 07:47:02 +0000 (09:47 +0200)]
Remove outdated tweaks for AMD graphics processors

Legacy versions of OpenGL are no longer supported so it's not necessary
to avoid these features anymore.

20 months agoFix a test case due to earlier changes
Mikko Rasa [Fri, 29 Dec 2023 07:31:30 +0000 (09:31 +0200)]
Fix a test case due to earlier changes

Commit 9f53f66 altered the order of generated declarations

20 months agoFix validation of std140 and std430 layout qualifiers
Mikko Rasa [Thu, 28 Dec 2023 21:12:22 +0000 (23:12 +0200)]
Fix validation of std140 and std430 layout qualifiers

They're allowed on buffer blocks as well, and std430 isn't allowed on
uniform blocks.  Also recognize the packed qualifier.

20 months agoDon't add both location and binding to the same uniform
Mikko Rasa [Thu, 28 Dec 2023 19:08:39 +0000 (21:08 +0200)]
Don't add both location and binding to the same uniform

It's unclear from the GLSL spec if this is allowed or not, but Intel
driver refuses to compile such shaders and it causes weird behaviour
on AMD too.

20 months agoMake MSVC happy by explicitly declaring move constructors
Mikko Rasa [Wed, 27 Dec 2023 23:19:02 +0000 (01:19 +0200)]
Make MSVC happy by explicitly declaring move constructors

20 months agoDon't make the result variable of an inlined builtin function a builtin
Mikko Rasa [Sat, 23 Dec 2023 16:16:25 +0000 (18:16 +0200)]
Don't make the result variable of an inlined builtin function a builtin

A few builtin function overloads are actually defined in the builtins
module and can be inlined.  However the GLSL formatter skips any builtin
statements, which caused the variable to go missing.

20 months agoFix move semantics of OpenGLTexture2D::AsyncTransfer
Mikko Rasa [Sat, 23 Dec 2023 12:54:34 +0000 (14:54 +0200)]
Fix move semantics of OpenGLTexture2D::AsyncTransfer

I may eventually get rid of NonCopyable, but for now let's keep things
consistent.

20 months agoRefactor interface generation to carry more explicit information
Mikko Rasa [Thu, 21 Dec 2023 21:51:37 +0000 (23:51 +0200)]
Refactor interface generation to carry more explicit information

20 months agoRename a few things for better clarity
Mikko Rasa [Thu, 21 Dec 2023 19:06:42 +0000 (21:06 +0200)]
Rename a few things for better clarity

InterfaceGenerator::generate_interface in particular was using the word
"iface" way too much.

20 months agoRemove incorrect definition of mix(float, float, float) from builtins
Mikko Rasa [Sun, 17 Dec 2023 12:29:49 +0000 (14:29 +0200)]
Remove incorrect definition of mix(float, float, float) from builtins

20 months agoRearrange invocation of passes the GLSL compiler frontend
Mikko Rasa [Sun, 17 Dec 2023 12:16:14 +0000 (14:16 +0200)]
Rearrange invocation of passes the GLSL compiler frontend

It's getting hard to divide the operations into sensibly named groups
which can be called one after another, because some of them need to be
run on the entire module and in specific order with per-stage ops.

20 months agoFix some issues with inlining variables in GLSL
Mikko Rasa [Sun, 17 Dec 2023 10:44:51 +0000 (12:44 +0200)]
Fix some issues with inlining variables in GLSL

20 months agoMostly cosmetic tweaks
Mikko Rasa [Sun, 17 Dec 2023 09:27:46 +0000 (11:27 +0200)]
Mostly cosmetic tweaks

20 months agoFix a use-after-move issue from earlier refactoring
Mikko Rasa [Sun, 17 Dec 2023 09:12:50 +0000 (11:12 +0200)]
Fix a use-after-move issue from earlier refactoring

It was causing SplatMaterial to not create its texture arrays, because
the submaterial source filenames were empty after being moved from.

20 months agoRefactor the GLSL compiler to use unique pointers
Mikko Rasa [Sun, 17 Dec 2023 08:43:03 +0000 (10:43 +0200)]
Refactor the GLSL compiler to use unique pointers

Both clone and move assignments are now explicit, although NodePtr still
has an implicitly cloning copy constructor to facilitate automatically
generated copy constructors in the node classes.  Node containers wrap
the std container instead of inheriting and only allow adding elements
by move.

20 months agoMore emplace_back streamlining
Mikko Rasa [Sun, 17 Dec 2023 08:33:52 +0000 (10:33 +0200)]
More emplace_back streamlining

20 months agoDon't unresolve function declarations which were resolved previously
Mikko Rasa [Sun, 17 Dec 2023 08:31:14 +0000 (10:31 +0200)]
Don't unresolve function declarations which were resolved previously

Even if they get resolved again to the same definition, it causes the
any_resolved flag to be set, triggering superfluous additional resolve
passes.

21 months agoConvert matrix columns to the appropriate element type
Mikko Rasa [Sat, 16 Dec 2023 22:33:39 +0000 (00:33 +0200)]
Convert matrix columns to the appropriate element type

21 months agoFix an incorrect GLSL compiler test case
Mikko Rasa [Sat, 16 Dec 2023 21:24:12 +0000 (23:24 +0200)]
Fix an incorrect GLSL compiler test case

21 months agoPrevent inlining of an expression that got something inlined into it
Mikko Rasa [Sat, 16 Dec 2023 20:55:47 +0000 (22:55 +0200)]
Prevent inlining of an expression that got something inlined into it

It's causing some issues with converting the compiler to use unique_ptr.
This way variable names make more sense in some situations as well.

21 months agoRefactor matrix constructor resolving with some early checks
Mikko Rasa [Sat, 16 Dec 2023 08:29:16 +0000 (10:29 +0200)]
Refactor matrix constructor resolving with some early checks

21 months agoUse emplace_back return value from C++17 for shorter code
Mikko Rasa [Tue, 12 Dec 2023 22:37:43 +0000 (00:37 +0200)]
Use emplace_back return value from C++17 for shorter code

21 months agoUse emplace_back and move semantics where applicable
Mikko Rasa [Tue, 12 Dec 2023 22:22:18 +0000 (00:22 +0200)]
Use emplace_back and move semantics where applicable

21 months agoConvert sub-object loading to use the new API in mspdatafile
Mikko Rasa [Tue, 12 Dec 2023 11:15:58 +0000 (13:15 +0200)]
Convert sub-object loading to use the new API in mspdatafile

21 months agoUse unique_ptr to manage memory outside the shader compiler
Mikko Rasa [Mon, 11 Dec 2023 18:56:11 +0000 (20:56 +0200)]
Use unique_ptr to manage memory outside the shader compiler

The compiler has its own complexities and will be converted in a later
commit.

21 months agoUpgrade C++ standard version to C++14
Mikko Rasa [Sun, 10 Dec 2023 14:07:14 +0000 (16:07 +0200)]
Upgrade C++ standard version to C++14

21 months agoMake boolean conversion operators explicit
Mikko Rasa [Sun, 10 Dec 2023 13:29:32 +0000 (15:29 +0200)]
Make boolean conversion operators explicit

21 months agoReplace a volatile variable with an atomic
Mikko Rasa [Sun, 10 Dec 2023 13:21:28 +0000 (15:21 +0200)]
Replace a volatile variable with an atomic

21 months agoAdd more default member initializers
Mikko Rasa [Sun, 10 Dec 2023 13:18:19 +0000 (15:18 +0200)]
Add more default member initializers

Some inner classes in particular were missed in the earlier pass.

21 months agoFix a local variable which was supposed to be static
Mikko Rasa [Sun, 10 Dec 2023 11:45:02 +0000 (13:45 +0200)]
Fix a local variable which was supposed to be static

21 months agoUse the override specifier on overridden virtual functions
Mikko Rasa [Sun, 10 Dec 2023 10:53:21 +0000 (12:53 +0200)]
Use the override specifier on overridden virtual functions

21 months agoRemove an unnecessary move
Mikko Rasa [Sun, 10 Dec 2023 10:06:31 +0000 (12:06 +0200)]
Remove an unnecessary move

Temporaries will be moved automatically

21 months agoAdd missing includes and forward declarations
Mikko Rasa [Sun, 10 Dec 2023 10:06:05 +0000 (12:06 +0200)]
Add missing includes and forward declarations

21 months agoUse nullptr instead of 0
Mikko Rasa [Sun, 10 Dec 2023 09:05:34 +0000 (11:05 +0200)]
Use nullptr instead of 0

2 years agoRemove unnecessary scoping
Mikko Rasa [Sat, 16 Sep 2023 11:32:38 +0000 (14:32 +0300)]
Remove unnecessary scoping

This was confusing MSVC in a release build and it's not needed anyway.

2 years agoAdd some missing API exports
Mikko Rasa [Sat, 16 Sep 2023 11:31:04 +0000 (14:31 +0300)]
Add some missing API exports

2 years agoEnable vsync in the OpenGL backend
Mikko Rasa [Sat, 9 Sep 2023 14:12:34 +0000 (17:12 +0300)]
Enable vsync in the OpenGL backend

Since there's multiple backends now, applications should not touch the
context directly.  The Vulkan backend already uses vsync.  I may make it
an option on the Device in the future.

2 years agoAdd some missing includes
Mikko Rasa [Tue, 5 Sep 2023 11:16:43 +0000 (14:16 +0300)]
Add some missing includes

2 years agoAdd Windows build products to .gitignore
Mikko Rasa [Tue, 5 Sep 2023 10:37:42 +0000 (13:37 +0300)]
Add Windows build products to .gitignore

2 years agoFix other warnings from MSVC
Mikko Rasa [Tue, 5 Sep 2023 10:33:27 +0000 (13:33 +0300)]
Fix other warnings from MSVC

2 years agoMove a few things to .cpp files
Mikko Rasa [Tue, 5 Sep 2023 10:28:01 +0000 (13:28 +0300)]
Move a few things to .cpp files

Otherwise they generate undefined references on MSVC.

2 years agoRefactor viewer to use Geometry::Angle
Mikko Rasa [Tue, 5 Sep 2023 10:26:31 +0000 (13:26 +0300)]
Refactor viewer to use Geometry::Angle

2 years agoPull in various constants and functions through extensions
Mikko Rasa [Tue, 5 Sep 2023 09:58:20 +0000 (12:58 +0300)]
Pull in various constants and functions through extensions

Windows SDK does not have glext.h and the base gl.h only has definitions
for OpenGL 1.1.

2 years agoReformat gl.h to make it easier to read
Mikko Rasa [Tue, 5 Sep 2023 09:56:04 +0000 (12:56 +0300)]
Reformat gl.h to make it easier to read

2 years agoUse the mspcore version of getenv
Mikko Rasa [Tue, 5 Sep 2023 09:50:03 +0000 (12:50 +0300)]
Use the mspcore version of getenv

2 years agoAdd some files to the source tarball
Mikko Rasa [Tue, 5 Sep 2023 09:49:09 +0000 (12:49 +0300)]
Add some files to the source tarball

This also includes them in the Visual Studio project, which is useful
for development.

2 years agoInvoke the extension generator through the python3 binary
Mikko Rasa [Tue, 5 Sep 2023 09:48:11 +0000 (12:48 +0300)]
Invoke the extension generator through the python3 binary

On Windows it's not executable directly.

2 years agoExport get_backend_api from the library
Mikko Rasa [Tue, 5 Sep 2023 08:50:32 +0000 (11:50 +0300)]
Export get_backend_api from the library

2 years agoDefer retrieval of default resources in Renderer until needed
Mikko Rasa [Thu, 17 Aug 2023 11:53:22 +0000 (14:53 +0300)]
Defer retrieval of default resources in Renderer until needed

This allows the Renderer to work when no resources are present. provided
that all resources are explicitly supplied.

2 years agoRedesign OffscreenView to own the render target
Mikko Rasa [Wed, 2 Aug 2023 20:33:30 +0000 (23:33 +0300)]
Redesign OffscreenView to own the render target

Change RenderTarget::get_framebuffer to const to accommodate this;
outsiders should not modify the framebuffer's structure anyway.

2 years agoFix compiler warnings introduced by gcc 13
Mikko Rasa [Wed, 2 Aug 2023 20:32:40 +0000 (23:32 +0300)]
Fix compiler warnings introduced by gcc 13

2 years agoRequire GLSL 1.40 for layout qualifiers
Mikko Rasa [Tue, 18 Jul 2023 09:28:57 +0000 (12:28 +0300)]
Require GLSL 1.40 for layout qualifiers

2 years agoDon't run conversion passes when compiling a GLSL module
Mikko Rasa [Tue, 18 Jul 2023 09:25:34 +0000 (12:25 +0300)]
Don't run conversion passes when compiling a GLSL module

Such modules are intended to be later consumed by the same compiler, so
there's no need to convert them to a lower version.

2 years agoAdd a function in Renderer to upload data to a buffer
Mikko Rasa [Tue, 18 Jul 2023 08:29:55 +0000 (11:29 +0300)]
Add a function in Renderer to upload data to a buffer

This accounts for the current frame in flight if necessary.

2 years agoSupport using storage blocks for rendering
Mikko Rasa [Tue, 18 Jul 2023 08:28:40 +0000 (11:28 +0300)]
Support using storage blocks for rendering

2 years agoSome minor refactoring
Mikko Rasa [Tue, 18 Jul 2023 08:27:49 +0000 (11:27 +0300)]
Some minor refactoring

2 years agoAdd a function to query if a uniform is a storage image
Mikko Rasa [Tue, 18 Jul 2023 08:12:57 +0000 (11:12 +0300)]
Add a function to query if a uniform is a storage image

2 years agoRename uniform blocks to just blocks in ReflectData
Mikko Rasa [Mon, 17 Jul 2023 10:31:31 +0000 (13:31 +0300)]
Rename uniform blocks to just blocks in ReflectData

2 years agoAdd storage block support to the shader compiler
Mikko Rasa [Sun, 16 Jul 2023 20:02:29 +0000 (23:02 +0300)]
Add storage block support to the shader compiler

At the moment extended alignment (std140 layout) is used for storage
blocks.  Supporting base alignment (std430) has some complications
because structs may need to be duplicated as base and extended versions.

2 years agoExport a couple of things from the shader compiler so unit tests can work
Mikko Rasa [Sun, 16 Jul 2023 19:40:15 +0000 (22:40 +0300)]
Export a couple of things from the shader compiler so unit tests can work

I'll have to think of a better way to do this later.

2 years agoFix sizing of implicitly sized arrays
Mikko Rasa [Sun, 16 Jul 2023 17:29:25 +0000 (20:29 +0300)]
Fix sizing of implicitly sized arrays

Max index was being initialized to 0, so the sizing code thought every
array was being accessed with a literal 0.

2 years agoRemove some old functions which are no longer used
Mikko Rasa [Sun, 16 Jul 2023 15:04:21 +0000 (18:04 +0300)]
Remove some old functions which are no longer used

2 years agoAdd a function to query the binding of a single uniform block
Mikko Rasa [Sun, 16 Jul 2023 15:03:56 +0000 (18:03 +0300)]
Add a function to query the binding of a single uniform block

2 years agoKeep uniform blocks sorted by their hashed name
Mikko Rasa [Sun, 16 Jul 2023 15:03:33 +0000 (18:03 +0300)]
Keep uniform blocks sorted by their hashed name

2 years agoAvoid duplicate things when generating OpenGL extensions
Mikko Rasa [Sun, 16 Jul 2023 09:45:53 +0000 (12:45 +0300)]
Avoid duplicate things when generating OpenGL extensions

2 years agoCorrectly export cameras aligned on the Z axis
Mikko Rasa [Sat, 15 Jul 2023 19:33:32 +0000 (22:33 +0300)]
Correctly export cameras aligned on the Z axis

2 years agoRetrieve sampler from technique in Text
Mikko Rasa [Fri, 14 Jul 2023 21:13:15 +0000 (00:13 +0300)]
Retrieve sampler from technique in Text

In some cases, like when using a pixelated retro font, it's important
to use a specific sampler.

2 years agoRename Text::texture_slot to texture_tag
Mikko Rasa [Fri, 14 Jul 2023 21:10:00 +0000 (00:10 +0300)]
Rename Text::texture_slot to texture_tag

It refers to the actual binding, so calling it a slot can be confusing.

2 years agoAdd getters for textures and samplers in RenderMethod
Mikko Rasa [Fri, 14 Jul 2023 21:08:28 +0000 (00:08 +0300)]
Add getters for textures and samplers in RenderMethod

2 years agoRecord texture bindings on older OpenGL versions
Mikko Rasa [Fri, 14 Jul 2023 20:35:12 +0000 (23:35 +0300)]
Record texture bindings on older OpenGL versions

2 years agoAdd missing header
Mikko Rasa [Thu, 13 Jul 2023 20:12:28 +0000 (23:12 +0300)]
Add missing header

This was supposed to be in 7864dec.

2 years agoReset the default pipeline state when rendering ends
Mikko Rasa [Mon, 3 Apr 2023 13:15:31 +0000 (16:15 +0300)]
Reset the default pipeline state when rendering ends

This avoids invalid accesses to resources which get destroyed before
the next frame, particularly with the OpenGL backend.

2 years agoResolve blocks after applying constant condition elimination
Mikko Rasa [Mon, 3 Apr 2023 13:13:52 +0000 (16:13 +0300)]
Resolve blocks after applying constant condition elimination

If the body of the conditional scope had any nested blocks, their parent
pointers need to be updated.

2 years agoRemove redundant destructor declarations
Mikko Rasa [Thu, 5 Jan 2023 18:47:48 +0000 (20:47 +0200)]
Remove redundant destructor declarations

Destructors are implicitly noexcept in C++11.

2 years agoDecorate things which constitute the public API of the library
Mikko Rasa [Wed, 4 Jan 2023 22:36:12 +0000 (00:36 +0200)]
Decorate things which constitute the public API of the library

2 years agoAdjustments due to changes in Variant
Mikko Rasa [Wed, 4 Jan 2023 22:10:19 +0000 (00:10 +0200)]
Adjustments due to changes in Variant

Retrieving an object from a collection now requires its type to be fully
defined.

2 years agoAdd debug names to some things which didn't have them
Mikko Rasa [Tue, 11 Oct 2022 08:50:25 +0000 (11:50 +0300)]
Add debug names to some things which didn't have them

2 years agoFix use of incorrect buffer in Mesh
Mikko Rasa [Tue, 11 Oct 2022 08:49:03 +0000 (11:49 +0300)]
Fix use of incorrect buffer in Mesh

Besides crashing the program in specific conditions this was causing
index buffers to sometimes lack a debug name.

2 years agoAdd SplatMaterial to Resources
Mikko Rasa [Tue, 11 Oct 2022 08:48:49 +0000 (11:48 +0300)]
Add SplatMaterial to Resources

2 years agoImprove consistency of debug names
Mikko Rasa [Tue, 11 Oct 2022 08:36:12 +0000 (11:36 +0300)]
Improve consistency of debug names

Hierarchies are now always denoted with a colon.  Square brackets are
used to add indexing-like details to child objects.

2 years agoAdd asset credits for forest pond
Mikko Rasa [Tue, 11 Oct 2022 06:48:56 +0000 (09:48 +0300)]
Add asset credits for forest pond

2 years agoDon't try to refresh a non-existent vertex setup
Mikko Rasa [Mon, 10 Oct 2022 13:23:19 +0000 (16:23 +0300)]
Don't try to refresh a non-existent vertex setup

Compute pipelines don't use one

2 years agoHandle depth range conversion in geometry and tessellation shaders
Mikko Rasa [Mon, 10 Oct 2022 11:49:11 +0000 (14:49 +0300)]
Handle depth range conversion in geometry and tessellation shaders

Clip coordinates are taken from the last stage to deal with vertex
positions, so always converting in the vertex shader is not appropriate.
A geometry shader needs the conversion before every EmitVertex call.

2 years agoRefactor statement creation in DepthRangeConverter into a function
Mikko Rasa [Mon, 10 Oct 2022 11:47:41 +0000 (14:47 +0300)]
Refactor statement creation in DepthRangeConverter into a function

2 years agoEnsure that render targets are writable when clearing
Mikko Rasa [Mon, 10 Oct 2022 09:25:13 +0000 (12:25 +0300)]
Ensure that render targets are writable when clearing

2 years agoAdd a falling raindrops effect to forest pond
Mikko Rasa [Mon, 10 Oct 2022 07:27:37 +0000 (10:27 +0300)]
Add a falling raindrops effect to forest pond

2 years agoDisable depth writes for blended rendering steps
Mikko Rasa [Mon, 10 Oct 2022 07:23:46 +0000 (10:23 +0300)]
Disable depth writes for blended rendering steps

2 years agoEnable advanced rendering options for the forest pond scene
Mikko Rasa [Sun, 9 Oct 2022 21:56:05 +0000 (00:56 +0300)]
Enable advanced rendering options for the forest pond scene

2 years agoAdd a property to always export a blended step for a sequence
Mikko Rasa [Sun, 9 Oct 2022 21:53:14 +0000 (00:53 +0300)]
Add a property to always export a blended step for a sequence

2 years agoAdjust terrain tints in the forest pond scene
Mikko Rasa [Sun, 9 Oct 2022 14:21:12 +0000 (17:21 +0300)]
Adjust terrain tints in the forest pond scene

The moss texture was overly bright.  Re-export also corrected camera
parameters after recent fixes.

2 years agoAccess vector components in Blender by name, not index
Mikko Rasa [Sun, 9 Oct 2022 14:02:28 +0000 (17:02 +0300)]
Access vector components in Blender by name, not index