]> git.tdb.fi Git - libs/gl.git/log
libs/gl.git
3 years agoMove buffer resizing out of Bufferable
Mikko Rasa [Mon, 25 Jan 2021 00:12:26 +0000 (02:12 +0200)]
Move buffer resizing out of Bufferable

Required for immutable buffer storage.  This commit has a couple warts
I didn't bother to fix because those parts will be rewritten.

3 years agoSome tweaks to Mesh::add_batch
Mikko Rasa [Sun, 24 Jan 2021 23:46:34 +0000 (01:46 +0200)]
Some tweaks to Mesh::add_batch

Index buffer can be assumed to exist.  Add a fast path for first batch,
which will also be useful in the next stage of buffer refactoring.

3 years agoFurther refactor Bufferable's API for derived classes
Mikko Rasa [Sun, 24 Jan 2021 16:25:51 +0000 (18:25 +0200)]
Further refactor Bufferable's API for derived classes

3 years agoClear the dirty flag of Bufferable in upload_data
Mikko Rasa [Sun, 24 Jan 2021 14:13:20 +0000 (16:13 +0200)]
Clear the dirty flag of Bufferable in upload_data

3 years agoRemove support for UInt8 indices from Batch
Mikko Rasa [Sat, 23 Jan 2021 17:27:32 +0000 (19:27 +0200)]
Remove support for UInt8 indices from Batch

Vulkan does not support them

3 years agoCollapse the shared part of Mesh::draw and draw_instanced
Mikko Rasa [Sat, 23 Jan 2021 17:26:28 +0000 (19:26 +0200)]
Collapse the shared part of Mesh::draw and draw_instanced

3 years agoIncrease version to 3.0
Mikko Rasa [Sat, 23 Jan 2021 10:01:36 +0000 (12:01 +0200)]
Increase version to 3.0

The recent modernization work has introduced some incompatible changes,
and now I'm gearing towards Vulkan support which will change the API
even more.

3 years agoUse matching type to retrieve interpolated spline values
Mikko Rasa [Sun, 17 Jan 2021 17:02:26 +0000 (19:02 +0200)]
Use matching type to retrieve interpolated spline values

This way the double-to-float conversion is done at a more relevant stage.

3 years agoConvert the extension generator script to Python 3
Mikko Rasa [Sat, 9 Jan 2021 16:53:09 +0000 (18:53 +0200)]
Convert the extension generator script to Python 3

3 years agoFix applying of single-component scaling curves
Mikko Rasa [Thu, 7 Jan 2021 22:28:19 +0000 (00:28 +0200)]
Fix applying of single-component scaling curves

3 years agoSuppress some deprecation warnings from internal use
Mikko Rasa [Thu, 7 Jan 2021 10:16:33 +0000 (12:16 +0200)]
Suppress some deprecation warnings from internal use

3 years agoAdd multiplication operators between Matrix and float
Mikko Rasa [Wed, 30 Dec 2020 15:09:15 +0000 (17:09 +0200)]
Add multiplication operators between Matrix and float

Newer gcc versions are complaining about an ambiguity between the vector
multiplication operators in GL::Matrix and the scalar multiplication for
LinAl::Matrix.

4 years agoActually use the light color in cooktorrance shader
Mikko Rasa [Sun, 2 Aug 2020 12:04:41 +0000 (15:04 +0300)]
Actually use the light color in cooktorrance shader

4 years agoUse correct shader variable names for PBR materials
Mikko Rasa [Sun, 2 Aug 2020 11:44:56 +0000 (14:44 +0300)]
Use correct shader variable names for PBR materials

4 years agoConvert exporter operator properties to annotations
Mikko Rasa [Sat, 27 Jun 2020 09:30:44 +0000 (12:30 +0300)]
Convert exporter operator properties to annotations

4 years agoReplace single file mode in object exporter with collection
Mikko Rasa [Sat, 27 Jun 2020 08:57:58 +0000 (11:57 +0300)]
Replace single file mode in object exporter with collection

4 years agoRefactor export extension change into the exporter base class
Mikko Rasa [Fri, 26 Jun 2020 23:07:02 +0000 (02:07 +0300)]
Refactor export extension change into the exporter base class

4 years agoRefactor writing files in the Blender exporter
Mikko Rasa [Fri, 26 Jun 2020 22:53:21 +0000 (01:53 +0300)]
Refactor writing files in the Blender exporter

Instead of having the same loop over statements in a dozen of places,
put it in the Resource class.

4 years agoRemove support for inline textures in RenderPass
Mikko Rasa [Tue, 23 Jun 2020 16:38:56 +0000 (19:38 +0300)]
Remove support for inline textures in RenderPass

The datafile system has advanced sufficiently that this particular case
of inlining is no longer needed.

4 years agoUpdate export progress more frequently
Mikko Rasa [Tue, 23 Jun 2020 16:38:03 +0000 (19:38 +0300)]
Update export progress more frequently

4 years agoRaise an exception if the TBN UV layer is not found during export
Mikko Rasa [Tue, 23 Jun 2020 16:37:40 +0000 (19:37 +0300)]
Raise an exception if the TBN UV layer is not found during export

4 years agoRework Blender material and texture export
Mikko Rasa [Tue, 23 Jun 2020 15:14:59 +0000 (18:14 +0300)]
Rework Blender material and texture export

4 years agoRequire all uniforms in a buffer-backed block to be present
Mikko Rasa [Tue, 23 Jun 2020 14:20:20 +0000 (17:20 +0300)]
Require all uniforms in a buffer-backed block to be present

4 years agoMake setting a nonexistent uniform only a warning in debug builds
Mikko Rasa [Tue, 23 Jun 2020 14:19:11 +0000 (17:19 +0300)]
Make setting a nonexistent uniform only a warning in debug builds

During development it's sometimes necessary to disable parts of a shader,
which causes variables to disappear.

4 years agoNormalize fragment normal
Mikko Rasa [Tue, 23 Jun 2020 14:11:54 +0000 (17:11 +0300)]
Normalize fragment normal

With some shading models even small deviations, such as result from
the quantization to 8-bit texel component values, may cause visible
artifacts.

4 years agoAdd a PBR material type and corresponding shader
Mikko Rasa [Tue, 23 Jun 2020 14:06:30 +0000 (17:06 +0300)]
Add a PBR material type and corresponding shader

4 years agoNaming tweaks in builtin shaders
Mikko Rasa [Tue, 23 Jun 2020 14:01:53 +0000 (17:01 +0300)]
Naming tweaks in builtin shaders

4 years agoUse HDR rendering and a colorcurve postprocessor in desertpillars
Mikko Rasa [Thu, 11 Jun 2020 19:24:20 +0000 (22:24 +0300)]
Use HDR rendering and a colorcurve postprocessor in desertpillars

4 years agoModernize the demo and tool programs
Mikko Rasa [Thu, 11 Jun 2020 15:07:38 +0000 (18:07 +0300)]
Modernize the demo and tool programs

4 years agoAdd a flag to BasicMaterial to enable shadow map
Mikko Rasa [Thu, 11 Jun 2020 19:05:19 +0000 (22:05 +0300)]
Add a flag to BasicMaterial to enable shadow map

4 years agoFix shadow map uniform name
Mikko Rasa [Thu, 11 Jun 2020 14:18:08 +0000 (17:18 +0300)]
Fix shadow map uniform name

4 years agoGive materials the capability to automatically create a suitable shader
Mikko Rasa [Thu, 11 Jun 2020 13:23:19 +0000 (16:23 +0300)]
Give materials the capability to automatically create a suitable shader

4 years agoCheck uniforms as a hint for texunit to use for material textures
Mikko Rasa [Thu, 11 Jun 2020 11:13:38 +0000 (14:13 +0300)]
Check uniforms as a hint for texunit to use for material textures

4 years agoRecreate RenderPass shdata if a new program is specified
Mikko Rasa [Thu, 11 Jun 2020 08:09:14 +0000 (11:09 +0300)]
Recreate RenderPass shdata if a new program is specified

4 years agoCopy the tied program of ProgramData
Mikko Rasa [Thu, 4 Jun 2020 23:16:16 +0000 (02:16 +0300)]
Copy the tied program of ProgramData

4 years agoAdd a new, better structured Phong shader
Mikko Rasa [Thu, 4 Jun 2020 21:04:53 +0000 (00:04 +0300)]
Add a new, better structured Phong shader

4 years agoRedesign the material system
Mikko Rasa [Wed, 3 Jun 2020 18:56:00 +0000 (21:56 +0300)]
Redesign the material system

Now that legacy OpenGL support is removed and all lighting calculations
are done in shaders, there's no reason to stick to the old material model
anymore.  The new model is closer to that used by many 3D modeling
programs, with textures applied to material properties.  It also allows
different types of materials with different shading models.

This change breaks source compatibility, but the new BasicMaterial class
is mostly compatible with the old Material class, with only minor changes
needed in code and datafiles.

4 years agoFix a bug with setting uniforms after texunits
Mikko Rasa [Mon, 1 Jun 2020 10:11:30 +0000 (13:11 +0300)]
Fix a bug with setting uniforms after texunits

4 years agoWrite the occluder shader in GLSL
Mikko Rasa [Sun, 31 May 2020 21:53:04 +0000 (00:53 +0300)]
Write the occluder shader in GLSL

4 years agoAdd a texunit statement which automatically determines the unit number
Mikko Rasa [Sun, 31 May 2020 09:43:03 +0000 (12:43 +0300)]
Add a texunit statement which automatically determines the unit number

4 years agoRemove obsolete demo programs
Mikko Rasa [Mon, 25 May 2020 19:11:58 +0000 (22:11 +0300)]
Remove obsolete demo programs

4 years agoMark ProgramBuilder as deprecated
Mikko Rasa [Mon, 25 May 2020 18:43:29 +0000 (21:43 +0300)]
Mark ProgramBuilder as deprecated

4 years agoChange Texturing to store index-texture pairs
Mikko Rasa [Mon, 25 May 2020 15:17:28 +0000 (18:17 +0300)]
Change Texturing to store index-texture pairs

Modern GPUs have a large number of texture binding points so storing
texture pointers for all of them is inefficient.

4 years agoAutomatically add uniforms for texunits
Mikko Rasa [Tue, 19 May 2020 12:16:35 +0000 (15:16 +0300)]
Automatically add uniforms for texunits

The uniform statement now uses existing ProgramData if it exists, to
avoid inadvertently erasing the texunit uniforms.

4 years agoRequire shader for rendering
Mikko Rasa [Mon, 18 May 2020 22:57:24 +0000 (01:57 +0300)]
Require shader for rendering

Being able to assume shaders are used will make implementing some
features easier.

4 years agoRemove attribute proxying from Mesh in the Blender exporter
Mikko Rasa [Sun, 3 May 2020 22:28:28 +0000 (01:28 +0300)]
Remove attribute proxying from Mesh in the Blender exporter

Instead just copy all the data.  This makes the script easier to read and
avoids holding references to stale data.

4 years agoUpdate the Blender exporter for version 2.80
Mikko Rasa [Sun, 3 May 2020 22:22:55 +0000 (01:22 +0300)]
Update the Blender exporter for version 2.80

Textures are disabled for now.  Blender's materials have changed
significantly enough to be difficult to map to the current mspgl material
system and I'm planning to do some changes to the library anyway.

4 years agoCheck that Object has a Mesh when rendering
Mikko Rasa [Thu, 5 Mar 2020 17:46:03 +0000 (19:46 +0200)]
Check that Object has a Mesh when rendering

4 years agoAdd a find_pass function to Technique
Mikko Rasa [Sat, 2 May 2020 14:55:37 +0000 (17:55 +0300)]
Add a find_pass function to Technique

4 years agoFix euler angle calculation in Transform
Mikko Rasa [Sun, 9 Feb 2020 22:07:37 +0000 (00:07 +0200)]
Fix euler angle calculation in Transform

4 years agoAccess static functions through class and not instance
Mikko Rasa [Sun, 9 Feb 2020 22:07:09 +0000 (00:07 +0200)]
Access static functions through class and not instance

4 years agoCosmetic fixes
Mikko Rasa [Sun, 9 Feb 2020 22:06:54 +0000 (00:06 +0200)]
Cosmetic fixes

4 years agoCheck for non-null buffer in Bufferable's refresh function
Mikko Rasa [Sun, 9 Feb 2020 22:04:14 +0000 (00:04 +0200)]
Check for non-null buffer in Bufferable's refresh function

4 years agoFlush the shader data of View's Renderer after rendering
Mikko Rasa [Sun, 9 Feb 2020 22:01:58 +0000 (00:01 +0200)]
Flush the shader data of View's Renderer after rendering

In a very simple application with only a single renderable omitting the
flush would prevent shader data from being updated.

4 years agoMake all overloads of render available in WindowView
Mikko Rasa [Sun, 9 Feb 2020 22:01:35 +0000 (00:01 +0200)]
Make all overloads of render available in WindowView

4 years agoAdd a function to clear all FBO component buffers
Mikko Rasa [Sun, 9 Feb 2020 22:00:26 +0000 (00:00 +0200)]
Add a function to clear all FBO component buffers

4 years agoRemove the kludge for FBO error codes on GLES
Mikko Rasa [Sun, 9 Feb 2020 21:57:57 +0000 (23:57 +0200)]
Remove the kludge for FBO error codes on GLES

This turned out to be a bad idea as the constants are not defined in the
headers.  Not having them here makes the extension generator emit the
definitions with a proper #ifndef guard.

4 years agoDon't call glVertexAttribDivisor if the extension is not available
Mikko Rasa [Sun, 9 Feb 2020 21:53:24 +0000 (23:53 +0200)]
Don't call glVertexAttribDivisor if the extension is not available

4 years agoUse GLES3 headers instead of GLES2
Mikko Rasa [Sun, 9 Feb 2020 21:51:16 +0000 (23:51 +0200)]
Use GLES3 headers instead of GLES2

A few constants are not available in GLES2 and would be bothersome to
introduce through a fake extension.  I'll bring back compatibility if
some relevant hardware turns out to only support GLES2.

4 years agoRemove sized L and LA pixel formats
Mikko Rasa [Sun, 9 Feb 2020 21:48:45 +0000 (23:48 +0200)]
Remove sized L and LA pixel formats

These constants are not part of modern OpenGL and not supported on
OpenGL ES.  The unsized formats can still be used for uploading data
and will be translated to RED and RG for use as internal format.

4 years agoAdd the specializations for non-square matrix uniforms
Mikko Rasa [Sun, 9 Feb 2020 20:51:04 +0000 (22:51 +0200)]
Add the specializations for non-square matrix uniforms

These were forgotten from d971f8d.

4 years agoRecognize an assignment to an out parameter as used
Mikko Rasa [Wed, 5 Feb 2020 21:48:46 +0000 (23:48 +0200)]
Recognize an assignment to an out parameter as used

4 years agoAdd support for non-square matrix uniforms
Mikko Rasa [Wed, 5 Feb 2020 21:35:42 +0000 (23:35 +0200)]
Add support for non-square matrix uniforms

4 years agoRewrite ProgramData update in a more efficient way
Mikko Rasa [Wed, 5 Feb 2020 18:07:28 +0000 (20:07 +0200)]
Rewrite ProgramData update in a more efficient way

This method does not do any map lookups on the fast path.

5 years agoRemove the EXT_draw_range_elements extension
Mikko Rasa [Mon, 4 Nov 2019 01:58:45 +0000 (03:58 +0200)]
Remove the EXT_draw_range_elements extension

Its main use is to allow the OpenGL implementation to optimize reads from
client memory, which is moot when storing vertices in VRAM.

5 years agoCheck for null camera in View::render
Mikko Rasa [Mon, 4 Nov 2019 01:56:05 +0000 (03:56 +0200)]
Check for null camera in View::render

5 years agoAllow system framebuffer to not have attachments
Mikko Rasa [Mon, 4 Nov 2019 01:55:41 +0000 (03:55 +0200)]
Allow system framebuffer to not have attachments

5 years agoUse a persistent Renderer in View
Mikko Rasa [Sun, 3 Nov 2019 17:41:37 +0000 (19:41 +0200)]
Use a persistent Renderer in View

5 years agoDeprecated the Renderer constructor taking a Camera pointer
Mikko Rasa [Sun, 3 Nov 2019 11:58:16 +0000 (13:58 +0200)]
Deprecated the Renderer constructor taking a Camera pointer

5 years agoRemove one more render function without a Renderer I missed before
Mikko Rasa [Fri, 1 Nov 2019 08:25:22 +0000 (10:25 +0200)]
Remove one more render function without a Renderer I missed before

5 years agoSupport rendering View with an externally provided Renderer
Mikko Rasa [Thu, 31 Oct 2019 11:47:22 +0000 (13:47 +0200)]
Support rendering View with an externally provided Renderer

This can be useful if an OffscreenView is used to render a sub-scene in
some renderable's setup_frame function.

5 years agoRemove various old deprecated things
Mikko Rasa [Thu, 31 Oct 2019 00:44:55 +0000 (02:44 +0200)]
Remove various old deprecated things

Mark remaining ones as deprecated with a compiler attribute.

5 years agoRequire vertex arrays to have a buffer when adding them to VertexSetup
Mikko Rasa [Tue, 29 Oct 2019 22:02:51 +0000 (00:02 +0200)]
Require vertex arrays to have a buffer when adding them to VertexSetup

5 years agoRemove bind mechanics from Mesh and VertexArray
Mikko Rasa [Tue, 29 Oct 2019 00:25:16 +0000 (02:25 +0200)]
Remove bind mechanics from Mesh and VertexArray

It's now handled through VertexSetup.

5 years agoRemove last fragments of rendererless rendering
Mikko Rasa [Tue, 29 Oct 2019 00:19:43 +0000 (02:19 +0200)]
Remove last fragments of rendererless rendering

5 years agoAdd sanity checks to bind functions
Mikko Rasa [Tue, 29 Oct 2019 00:04:37 +0000 (02:04 +0200)]
Add sanity checks to bind functions

5 years agoAlways use VertexSetup in Mesh
Mikko Rasa [Mon, 28 Oct 2019 23:57:53 +0000 (01:57 +0200)]
Always use VertexSetup in Mesh

This means vertex array objects are now required.  I don't think that's a
problem since they've been supported even on mobile hardware for a long
time.

5 years agoRemove immediate mode emulation
Mikko Rasa [Mon, 28 Oct 2019 13:42:20 +0000 (15:42 +0200)]
Remove immediate mode emulation

It's not very useful anymore and starting to get in the way of other
things.

5 years agoAlways use buffers in Mesh
Mikko Rasa [Wed, 23 Oct 2019 11:25:46 +0000 (14:25 +0300)]
Always use buffers in Mesh

5 years agoRemove support for legacy OpenGL features
Mikko Rasa [Sun, 20 Oct 2019 17:20:57 +0000 (20:20 +0300)]
Remove support for legacy OpenGL features

This includes all fixed-point functionality as well as the
NV_primitive_restart and SGIS_generate_mipmap extensions, which have
better alternatives available in modern OpenGL.

5 years agoInitialize members of Font::Glyph legacy
Mikko Rasa [Mon, 30 Sep 2019 11:06:46 +0000 (14:06 +0300)]
Initialize members of Font::Glyph

It's not safe to assume that font files contain all of the values for
every glyph.

5 years agoRequire ARB_shader_objects in Shader constructor
Mikko Rasa [Wed, 25 Sep 2019 16:33:11 +0000 (19:33 +0300)]
Require ARB_shader_objects in Shader constructor

5 years agoHide windows.h from public headers
Mikko Rasa [Wed, 18 Sep 2019 15:10:21 +0000 (18:10 +0300)]
Hide windows.h from public headers

OpenGL headers require a few #defines, so do those manually instead.

5 years agoAppease the compiler with some extra copy-ctor's and operator='s
Mikko Rasa [Thu, 12 Sep 2019 19:34:15 +0000 (22:34 +0300)]
Appease the compiler with some extra copy-ctor's and operator='s

In C++11 if you manually define either a copy constructor or an
assignment operator, you must define the other as well.

5 years agoProduce a linear animation curve if there's only one keyframe
Mikko Rasa [Mon, 26 Aug 2019 11:53:21 +0000 (14:53 +0300)]
Produce a linear animation curve if there's only one keyframe

This can be useful for setting a constant value for the duration of an
animation, without needing to specify the value twice.

5 years agoPlug some memory leaks
Mikko Rasa [Wed, 7 Aug 2019 11:56:42 +0000 (14:56 +0300)]
Plug some memory leaks

5 years agoFix an uninitialized variable
Mikko Rasa [Tue, 6 Aug 2019 17:11:47 +0000 (20:11 +0300)]
Fix an uninitialized variable

5 years agoAdd a function to flush shader data in Renderer
Mikko Rasa [Sun, 28 Jul 2019 00:03:58 +0000 (03:03 +0300)]
Add a function to flush shader data in Renderer

Necessary if the same shader data object is used in successive draw
commands but the contained uniform values are changed.

5 years agoAdd an object LoD bias parameter to Renderer
Mikko Rasa [Sat, 27 Jul 2019 23:05:55 +0000 (02:05 +0300)]
Add an object LoD bias parameter to Renderer

This could be used by environment map and similar effects to render the
scene at lower detail.

5 years agoAdd an alpha channel flag to Pipeline
Mikko Rasa [Sat, 27 Jul 2019 23:05:05 +0000 (02:05 +0300)]
Add an alpha channel flag to Pipeline

5 years agoDon't add externally specified postprocessors as owned
Mikko Rasa [Fri, 26 Jul 2019 17:02:58 +0000 (20:02 +0300)]
Don't add externally specified postprocessors as owned

5 years agoRecognize the samplerCubeArray type in shaders
Mikko Rasa [Tue, 23 Jul 2019 08:07:29 +0000 (11:07 +0300)]
Recognize the samplerCubeArray type in shaders

The actual extension will be added a bit later.

5 years agoSupport named postprocessor slots in pipeline templates
Mikko Rasa [Tue, 23 Jul 2019 07:07:40 +0000 (10:07 +0300)]
Support named postprocessor slots in pipeline templates

This can be useful if a postprocessor in the middle of the chain needs to
be created at runtime due to data dependencies.

5 years agoAllow access to ShadowMap's texture and matrix from outside
Mikko Rasa [Tue, 23 Jul 2019 07:04:00 +0000 (10:04 +0300)]
Allow access to ShadowMap's texture and matrix from outside

This is necessary if a postprocessor wants to access the shadow map for
deferred shading.

5 years agoRecognize #version directive in GLSL
Mikko Rasa [Thu, 11 Jul 2019 22:22:59 +0000 (01:22 +0300)]
Recognize #version directive in GLSL

This allows shaders to explicitly specify the required version in
case there's a feature which is not detected by the program compiler
framework.

5 years agoAdd feature check for array texture samplers
Mikko Rasa [Thu, 11 Jul 2019 22:22:02 +0000 (01:22 +0300)]
Add feature check for array texture samplers

5 years agoTranslate cube map sampling function for old GLSL versions
Mikko Rasa [Thu, 11 Jul 2019 12:34:30 +0000 (15:34 +0300)]
Translate cube map sampling function for old GLSL versions

5 years agoAdd functions for setting arrays of 2x2 and 3x3 matrix uniforms
Mikko Rasa [Tue, 9 Jul 2019 22:51:37 +0000 (01:51 +0300)]
Add functions for setting arrays of 2x2 and 3x3 matrix uniforms

5 years agoMake explicit mipmap generation public
Mikko Rasa [Mon, 8 Jul 2019 16:24:02 +0000 (19:24 +0300)]
Make explicit mipmap generation public

Also changed set_generate_mipmap to set_auto_generate_mipmap to clarify
that it concerns automatic mipmap generation.

5 years agoGuard against sample points behind the camera in ambient occlusion
Mikko Rasa [Wed, 3 Jul 2019 21:06:00 +0000 (00:06 +0300)]
Guard against sample points behind the camera in ambient occlusion