]> git.tdb.fi Git - libs/gl.git/log
libs/gl.git
11 years agoLots of comment updates
Mikko Rasa [Sun, 26 Aug 2012 21:27:03 +0000 (00:27 +0300)]
Lots of comment updates

11 years agoImprovements to Bufferable
Mikko Rasa [Sun, 26 Aug 2012 19:20:16 +0000 (22:20 +0300)]
Improvements to Bufferable

Most members are now private, with read-only accessors, since the derived
classes should not modify them.  Some names were changed.

Add documentation to the class and all public/protected methods.

11 years agoDrop support for Renderables that don't accept a Renderer
Mikko Rasa [Sun, 26 Aug 2012 17:32:02 +0000 (20:32 +0300)]
Drop support for Renderables that don't accept a Renderer

The Renderer class is the way of the future and should be used whenever
possible.

11 years agoAvoid creating blocks for which there are no uniforms
Mikko Rasa [Sun, 26 Aug 2012 13:13:36 +0000 (16:13 +0300)]
Avoid creating blocks for which there are no uniforms

Since this requires finding the relevant uniforms before the block is
created, might as well store the list with the block for faster updates.

11 years agoAlign uniform blocks properly
Mikko Rasa [Sun, 26 Aug 2012 12:06:15 +0000 (15:06 +0300)]
Align uniform blocks properly

11 years agoImprove performance of Bufferable::update_buffer_data
Mikko Rasa [Sun, 26 Aug 2012 12:03:21 +0000 (15:03 +0300)]
Improve performance of Bufferable::update_buffer_data

... by avoiding the walk through the entire chain every time it is
called.  It's not necessary to add up all the sizes either, since we can
just get the end of the last Bufferable.

11 years agoGet all blocks for the program before applying them
Mikko Rasa [Sun, 26 Aug 2012 10:09:44 +0000 (13:09 +0300)]
Get all blocks for the program before applying them

This way, the correct size for the buffer can be determined right away,
rather than each block resizing it in turn.  Binding the buffer before
applying the blocks also avoids some thrashing.

11 years agoPass the UniformBlockInfo to get_block to avoid an unnecessary lookup
Mikko Rasa [Sun, 26 Aug 2012 09:42:14 +0000 (12:42 +0300)]
Pass the UniformBlockInfo to get_block to avoid an unnecessary lookup

11 years agoSort the uniforms in Program::UniformBlockInfo by offset
Mikko Rasa [Sun, 26 Aug 2012 08:01:12 +0000 (11:01 +0300)]
Sort the uniforms in Program::UniformBlockInfo by offset

11 years agoAlter the working logic of Bufferable to avoid some problems
Mikko Rasa [Sun, 26 Aug 2012 07:53:56 +0000 (10:53 +0300)]
Alter the working logic of Bufferable to avoid some problems

It was possible for the buffer data to be updated without going through
the dirty check in UniformBlock::apply, leaving the UniformBlock with a
null buf_range and resulting in a segfault.

11 years agoInitialize buf_range as null
Mikko Rasa [Sat, 25 Aug 2012 19:28:54 +0000 (22:28 +0300)]
Initialize buf_range as null

11 years agoDon't query array/matrix stride for uniforms which are not arrays/matrices
Mikko Rasa [Sat, 25 Aug 2012 19:28:05 +0000 (22:28 +0300)]
Don't query array/matrix stride for uniforms which are not arrays/matrices

11 years agoConstruct uniform buffers for named uniform blocks
Mikko Rasa [Fri, 24 Aug 2012 21:55:06 +0000 (00:55 +0300)]
Construct uniform buffers for named uniform blocks

11 years agoAdd a class to negotiate the storage of multiple objects in a buffer
Mikko Rasa [Fri, 24 Aug 2012 21:50:00 +0000 (00:50 +0300)]
Add a class to negotiate the storage of multiple objects in a buffer

11 years agoUniform handling fixes
Mikko Rasa [Fri, 24 Aug 2012 21:47:01 +0000 (00:47 +0300)]
Uniform handling fixes

Initialize strides to zero, and return a location of -1 for uniforms in
blocks.

11 years agoStore block pointer in uniform info
Mikko Rasa [Fri, 24 Aug 2012 21:46:24 +0000 (00:46 +0300)]
Store block pointer in uniform info

It greatly simplifies figuring out which uniforms are not in blocks.

11 years agoQuery information about uniform blocks when linking a Program
Mikko Rasa [Fri, 24 Aug 2012 16:05:43 +0000 (19:05 +0300)]
Query information about uniform blocks when linking a Program

11 years agoMove Program::bind to its proper place
Mikko Rasa [Fri, 24 Aug 2012 07:48:32 +0000 (10:48 +0300)]
Move Program::bind to its proper place

11 years agoUse typedefs in Program
Mikko Rasa [Fri, 24 Aug 2012 07:43:25 +0000 (10:43 +0300)]
Use typedefs in Program

11 years agoAdd the uniform buffer type
Mikko Rasa [Fri, 24 Aug 2012 07:29:08 +0000 (10:29 +0300)]
Add the uniform buffer type

11 years agoImprove binding of buffers
Mikko Rasa [Fri, 24 Aug 2012 07:25:52 +0000 (10:25 +0300)]
Improve binding of buffers

Add a set_current function, as seen in some other classes.

Buffer type support is now also checked in bind_to.

11 years agoAdd glBindBufferBase/Range functions to ARB_uniform_buffer_object
Mikko Rasa [Fri, 24 Aug 2012 07:16:36 +0000 (10:16 +0300)]
Add glBindBufferBase/Range functions to ARB_uniform_buffer_object

For some reason those functions are not tagged for the extension in
gl.spec.

11 years agoKeep track of buffer size
Mikko Rasa [Thu, 23 Aug 2012 09:32:30 +0000 (12:32 +0300)]
Keep track of buffer size

11 years agoMove some declarations around a bit
Mikko Rasa [Thu, 23 Aug 2012 06:30:20 +0000 (09:30 +0300)]
Move some declarations around a bit

11 years agoRemove the specialized setters from UniformBlock
Mikko Rasa [Wed, 22 Aug 2012 13:17:34 +0000 (16:17 +0300)]
Remove the specialized setters from UniformBlock

They were not very useful and were also getting in the way of uniform
buffer support.  UniformBlock also no longer clones the uniforms for
itself, reducing overhead.

11 years agoAdd definitions for the GL_ARB_uniform_buffer_object extension
Mikko Rasa [Wed, 22 Aug 2012 13:08:50 +0000 (16:08 +0300)]
Add definitions for the GL_ARB_uniform_buffer_object extension

11 years agoUpdate gl.spec to latest version
Mikko Rasa [Wed, 22 Aug 2012 13:06:54 +0000 (16:06 +0300)]
Update gl.spec to latest version

11 years agoMake RenderPass shprog and shdata settable from code
Mikko Rasa [Wed, 22 Aug 2012 12:28:40 +0000 (15:28 +0300)]
Make RenderPass shprog and shdata settable from code

For consistency with other similar interfaces, the pointers are now
const.  As a consequence, a uniforms statement in a datafile overrides
any previous uniforms.

11 years agoAdd a shortcut constructor to Object
Mikko Rasa [Wed, 22 Aug 2012 11:22:36 +0000 (14:22 +0300)]
Add a shortcut constructor to Object

11 years agoAvoid re-applying shader data unnecessarily
Mikko Rasa [Tue, 21 Aug 2012 23:02:26 +0000 (02:02 +0300)]
Avoid re-applying shader data unnecessarily

11 years agoPlug a memory leak
Mikko Rasa [Tue, 21 Aug 2012 23:01:15 +0000 (02:01 +0300)]
Plug a memory leak

11 years agoUse uniform arrays in Bloom and AnimatedObject
Mikko Rasa [Tue, 21 Aug 2012 22:56:37 +0000 (01:56 +0300)]
Use uniform arrays in Bloom and AnimatedObject

11 years agoImplement uniform arrays
Mikko Rasa [Tue, 21 Aug 2012 10:12:03 +0000 (13:12 +0300)]
Implement uniform arrays

11 years agoRewrite the Uniform classes as templates
Mikko Rasa [Tue, 21 Aug 2012 09:58:36 +0000 (12:58 +0300)]
Rewrite the Uniform classes as templates

This makes adding new uniform types easier, especially arrays.

11 years agoConvert existing post-processors to use the provided common resources
Mikko Rasa [Mon, 20 Aug 2012 21:05:41 +0000 (00:05 +0300)]
Convert existing post-processors to use the provided common resources

11 years agoUse two FBOs in Pipeline when necessary
Mikko Rasa [Mon, 20 Aug 2012 20:55:59 +0000 (23:55 +0300)]
Use two FBOs in Pipeline when necessary

11 years agoAdd a color curve post-processor
Mikko Rasa [Mon, 20 Aug 2012 20:30:51 +0000 (23:30 +0300)]
Add a color curve post-processor

11 years agoHelper functions for post-processors
Mikko Rasa [Mon, 20 Aug 2012 20:27:28 +0000 (23:27 +0300)]
Helper functions for post-processors

Most post-processors render fullscreen quads and use a very basic vertex
shader, so it makes sense to provide these as common resources.

11 years agoSimplify Pipeline pass management
Mikko Rasa [Mon, 20 Aug 2012 13:13:46 +0000 (16:13 +0300)]
Simplify Pipeline pass management

Originally I planned to use Pipelines to bundle objects with effects like
environmentally mapped reflection.  However, that task was delegated to
effects themselves recently, so there's no longer need for passthrough
rendering in Pipeline.  The render_all function was also a nuisance, as
it required Pipelines to be treated differently from other Renderables.

Passes are now stored in a list instead of a map.  This allows multiple
passes with the same tag (think multipass lighting), and avoids the need
to store the pass order separately.

11 years agoMove PipelinePass inside Pipeline and make the data members private
Mikko Rasa [Mon, 20 Aug 2012 12:39:26 +0000 (15:39 +0300)]
Move PipelinePass inside Pipeline and make the data members private

It's really simple and specific to Pipeline, so it doesn't make much
sense to have it as a separate class.  Encapsulation is necessary for
some future plans, and also more consistent with other public interfaces.

11 years agoUse the hash function from mspcore
Mikko Rasa [Sun, 19 Aug 2012 23:46:45 +0000 (02:46 +0300)]
Use the hash function from mspcore

Constructing tags mostly happens when loading datafiles or otherwise
outside the rendering loop, so the small extra overhead from a
cross-library function call is not significant.  Renderables that wish to
compare the Tag against a fixed value should avoid constructing the
reference Tag on every render call anyway.

11 years agoDelete multisample resources in Pipeline destructor
Mikko Rasa [Sun, 19 Aug 2012 11:16:20 +0000 (14:16 +0300)]
Delete multisample resources in Pipeline destructor

11 years agoLighting affecting the alpha value of a surface makes no sense
Mikko Rasa [Sun, 19 Aug 2012 00:34:22 +0000 (03:34 +0300)]
Lighting affecting the alpha value of a surface makes no sense

Use lighting only for RGB components, and take alpha directly from color
or material.  This should prevent problems caused by alpha>1.

11 years agoUse the TexGen wrapper in ShadowMap
Mikko Rasa [Thu, 16 Aug 2012 19:21:09 +0000 (22:21 +0300)]
Use the TexGen wrapper in ShadowMap

11 years agoAdd TexGen wrapper class
Mikko Rasa [Thu, 16 Aug 2012 19:19:28 +0000 (22:19 +0300)]
Add TexGen wrapper class

11 years agoTurn Effect into a Renderable
Mikko Rasa [Thu, 16 Aug 2012 16:46:12 +0000 (19:46 +0300)]
Turn Effect into a Renderable

They were really intended to be used this way.  This also makes it much
easier to apply an Effect to only a part of a scene.  Previously it would
have been necessary to wrap the Effect in a Pipeline, which doesn't
really support passthrough.

11 years agoRestructure ProgramData to support sharing between Programs
Mikko Rasa [Wed, 15 Aug 2012 19:36:33 +0000 (22:36 +0300)]
Restructure ProgramData to support sharing between Programs

This removes a major annoyance when dealing with ObjectInstances and
shaders.  It also paves way for Effects being able to provide uniforms,
and support for GL_ARB_uniform_buffer_object.

11 years agoGenerate a hash describing the layout of uniforms in a Program
Mikko Rasa [Wed, 15 Aug 2012 19:32:28 +0000 (22:32 +0300)]
Generate a hash describing the layout of uniforms in a Program

This allows easy recognition of whether two Programs have compatible
uniform layouts and could use shared data.

11 years agoAdd a function to query if a Technique has any shaders
Mikko Rasa [Wed, 15 Aug 2012 19:31:03 +0000 (22:31 +0300)]
Add a function to query if a Technique has any shaders

Also make PassMap public since it's exposed through get_passes

11 years agoFor a few lingering whitespace issues
Mikko Rasa [Wed, 15 Aug 2012 19:18:09 +0000 (22:18 +0300)]
For a few lingering whitespace issues

The scripts had been ignored entirely in the previous conversion.  As a
result, a few newly generated extensions didn't have proper whitespace.
Pure virtual functions in headers had also slipped through.

11 years agoMake the cubemap demo more interesting
Mikko Rasa [Mon, 13 Aug 2012 21:26:40 +0000 (00:26 +0300)]
Make the cubemap demo more interesting

It now displays two different shapes, which have reflections through an
environment map.  The same environment map is used to render a skybox.

Also uses the new direction lookup functions to create the contents for
the cube map texture.

11 years agoTangent and binormal vectors should use custom transform as well
Mikko Rasa [Mon, 13 Aug 2012 21:26:21 +0000 (00:26 +0300)]
Tangent and binormal vectors should use custom transform as well

11 years agoAdd a standard program feature for environment-mapped reflections
Mikko Rasa [Mon, 13 Aug 2012 21:21:05 +0000 (00:21 +0300)]
Add a standard program feature for environment-mapped reflections

11 years agoLookup functions to determine the orientation of cube map faces
Mikko Rasa [Mon, 13 Aug 2012 17:47:53 +0000 (20:47 +0300)]
Lookup functions to determine the orientation of cube map faces

The orientations are somewhat arbitary and not deducible with a simple
algorithm.  Writing the necessary conditional ladders everywhere would
be annoying.

11 years agoFix several bugs in the animation system
Mikko Rasa [Mon, 13 Aug 2012 12:25:54 +0000 (15:25 +0300)]
Fix several bugs in the animation system

Make the identity fallback matrix static so the pointers in interpolations
stay valid.

Don't crash when getting pose matrices from the first keyframe.

Matrix multiplication order for base point shift compensation was wrong.

Re-compensate for base point shift after interpolation.

Use correct comparison operator for max_index in AnimationPlayer.

Pass collection to keyframe loader to make loading poses possible.

Use Pose::set_armature rather than loading the pointer directly to get the
matrix array resized.

11 years agoSupport for exporting armatures and vertex groups
Mikko Rasa [Mon, 13 Aug 2012 10:18:43 +0000 (13:18 +0300)]
Support for exporting armatures and vertex groups

11 years agoRestructure the exporter to make room for new stuff
Mikko Rasa [Sun, 12 Aug 2012 16:06:29 +0000 (19:06 +0300)]
Restructure the exporter to make room for new stuff

11 years agoFix bugs that crept in with refactoring
Mikko Rasa [Sun, 12 Aug 2012 15:53:52 +0000 (18:53 +0300)]
Fix bugs that crept in with refactoring

Also add an additional safeguard against an infinite loop

11 years agoSupport for armature-based animation
Mikko Rasa [Sun, 12 Aug 2012 09:21:05 +0000 (12:21 +0300)]
Support for armature-based animation

11 years agoAllow setting keyframe matrix from the outside
Mikko Rasa [Sun, 12 Aug 2012 09:13:17 +0000 (12:13 +0300)]
Allow setting keyframe matrix from the outside

11 years agoFix uniform array element lookup
Mikko Rasa [Sun, 12 Aug 2012 09:07:38 +0000 (12:07 +0300)]
Fix uniform array element lookup

11 years agoAdd classes for armature-based deformation
Mikko Rasa [Sun, 12 Aug 2012 08:25:55 +0000 (11:25 +0300)]
Add classes for armature-based deformation

For now, link rotations in a pose must be specified in hierarchial order,
or the matrices will be wrong.

11 years agoExpose the build(Mesh &) shortcut in classes derived from GeometryBuilder
Mikko Rasa [Sat, 11 Aug 2012 18:43:18 +0000 (21:43 +0300)]
Expose the build(Mesh &) shortcut in classes derived from GeometryBuilder

11 years agoAdd missing set_looping implementation
Mikko Rasa [Sat, 11 Aug 2012 18:29:41 +0000 (21:29 +0300)]
Add missing set_looping implementation

11 years agoRestructure Animation to make matrix interpolation code more reusable
Mikko Rasa [Sat, 11 Aug 2012 18:28:15 +0000 (21:28 +0300)]
Restructure Animation to make matrix interpolation code more reusable

11 years agoDon't link program with the transform feature in constructor
Mikko Rasa [Sat, 11 Aug 2012 13:38:35 +0000 (16:38 +0300)]
Don't link program with the transform feature in constructor

The transform feature produces calls to external functions, which need to
be added in a separate shader.  Trying to link in the constructor only
produces link errors.

11 years agoBetter way to deal with program-owned shaders
Mikko Rasa [Sat, 11 Aug 2012 13:36:30 +0000 (16:36 +0300)]
Better way to deal with program-owned shaders

Track which shaders exactly are owned by the program rather than having
just a single flag.  This prevents double-free problems if a program
contains both owned and non-owned shaders, as might be the case with the
transform feature.

11 years agoAn extra sanity check for TBN export
Mikko Rasa [Thu, 9 Aug 2012 20:22:35 +0000 (23:22 +0300)]
An extra sanity check for TBN export

11 years agoRefactor strip generation code and add comments
Mikko Rasa [Thu, 9 Aug 2012 20:21:45 +0000 (23:21 +0300)]
Refactor strip generation code and add comments

11 years agoUpdate .gitignore
Mikko Rasa [Thu, 9 Aug 2012 19:36:03 +0000 (22:36 +0300)]
Update .gitignore

11 years agoA simple program to test cubemap texture functionality
Mikko Rasa [Thu, 9 Aug 2012 19:35:39 +0000 (22:35 +0300)]
A simple program to test cubemap texture functionality

11 years agoMove some member functions to more logical positions
Mikko Rasa [Thu, 9 Aug 2012 19:34:23 +0000 (22:34 +0300)]
Move some member functions to more logical positions

11 years agoComment updates for texture and framebuffer classes.
Mikko Rasa [Thu, 9 Aug 2012 19:32:47 +0000 (22:32 +0300)]
Comment updates for texture and framebuffer classes.

11 years agoFix 3D texture loading with fixed depth
Mikko Rasa [Thu, 9 Aug 2012 19:16:30 +0000 (22:16 +0300)]
Fix 3D texture loading with fixed depth

11 years agoAdd support for cube map textures
Mikko Rasa [Thu, 9 Aug 2012 18:07:43 +0000 (21:07 +0300)]
Add support for cube map textures

11 years agoMipmap generation requires GL_SGIS_generate_mipmap
Mikko Rasa [Thu, 9 Aug 2012 07:21:08 +0000 (10:21 +0300)]
Mipmap generation requires GL_SGIS_generate_mipmap

11 years agoUpdate Build file for new Builder features
Mikko Rasa [Sun, 5 Aug 2012 18:43:37 +0000 (21:43 +0300)]
Update Build file for new Builder features

11 years agoAdd support for viewing animations
Mikko Rasa [Sun, 5 Aug 2012 12:53:41 +0000 (15:53 +0300)]
Add support for viewing animations

11 years agoBasic animation support
Mikko Rasa [Sun, 5 Aug 2012 12:26:23 +0000 (15:26 +0300)]
Basic animation support

11 years agoUse a custom drawing function to group the properties in a sensible way
Mikko Rasa [Tue, 31 Jul 2012 23:35:29 +0000 (02:35 +0300)]
Use a custom drawing function to group the properties in a sensible way

11 years agoSupport exporting textures with objects
Mikko Rasa [Tue, 31 Jul 2012 23:07:55 +0000 (02:07 +0300)]
Support exporting textures with objects

11 years agoImprove texture unit handling
Mikko Rasa [Tue, 31 Jul 2012 22:49:59 +0000 (01:49 +0300)]
Improve texture unit handling

11 years agoMore compilation fixes
Mikko Rasa [Tue, 31 Jul 2012 22:36:23 +0000 (01:36 +0300)]
More compilation fixes

11 years agoDon't try to export a material texture if the mesh has no materials
Mikko Rasa [Tue, 31 Jul 2012 21:03:27 +0000 (00:03 +0300)]
Don't try to export a material texture if the mesh has no materials

11 years agoSplit mesh and object export into separate operators
Mikko Rasa [Tue, 31 Jul 2012 21:03:03 +0000 (00:03 +0300)]
Split mesh and object export into separate operators

11 years agoFix exporting compound objects with no materials
Mikko Rasa [Tue, 31 Jul 2012 19:34:04 +0000 (22:34 +0300)]
Fix exporting compound objects with no materials

11 years agoAdapt exporter to Blender 2.63
Mikko Rasa [Thu, 26 Jul 2012 20:46:11 +0000 (23:46 +0300)]
Adapt exporter to Blender 2.63

11 years agoFix compiler warnings
Mikko Rasa [Wed, 25 Jul 2012 19:48:44 +0000 (22:48 +0300)]
Fix compiler warnings

12 years agoAdjust material export and material-based texcoord generation for Blender 2.6
Mikko Rasa [Sun, 19 Feb 2012 13:57:27 +0000 (15:57 +0200)]
Adjust material export and material-based texcoord generation for Blender 2.6

12 years agoRename a variable in shader code to avoid conflict with a keyword
Mikko Rasa [Tue, 7 Feb 2012 17:45:09 +0000 (17:45 +0000)]
Rename a variable in shader code to avoid conflict with a keyword

12 years agoUse proper cast
Mikko Rasa [Tue, 7 Feb 2012 17:44:41 +0000 (17:44 +0000)]
Use proper cast

12 years agoCompatibility with Blender 2.6
Mikko Rasa [Tue, 7 Feb 2012 17:44:02 +0000 (17:44 +0000)]
Compatibility with Blender 2.6

12 years agoAdd a standard program feature for custom transforms
Mikko Rasa [Fri, 20 Jan 2012 20:29:11 +0000 (22:29 +0200)]
Add a standard program feature for custom transforms

12 years agoMove tools to their own directory as well
Mikko Rasa [Wed, 7 Sep 2011 19:51:40 +0000 (22:51 +0300)]
Move tools to their own directory as well

12 years agoAdd two demo programs (with crappy code)
Mikko Rasa [Wed, 7 Sep 2011 16:23:03 +0000 (19:23 +0300)]
Add two demo programs (with crappy code)

12 years agoFix an incorrect #include
Mikko Rasa [Wed, 7 Sep 2011 16:17:49 +0000 (19:17 +0300)]
Fix an incorrect #include

12 years agoUpdate viewer for compatibility with library changes
Mikko Rasa [Tue, 6 Sep 2011 20:58:13 +0000 (23:58 +0300)]
Update viewer for compatibility with library changes

12 years agoUse the lexical_cast framework instead of istreams
Mikko Rasa [Tue, 6 Sep 2011 20:55:35 +0000 (23:55 +0300)]
Use the lexical_cast framework instead of istreams

12 years agomspdatafile APIs have changed slightly
Mikko Rasa [Tue, 6 Sep 2011 20:49:10 +0000 (23:49 +0300)]
mspdatafile APIs have changed slightly

12 years agoRework exceptions
Mikko Rasa [Tue, 6 Sep 2011 20:46:52 +0000 (23:46 +0300)]
Rework exceptions