]>
git.tdb.fi Git - libs/gl.git/log
Mikko Rasa [Sat, 13 Aug 2016 15:29:14 +0000 (18:29 +0300)]
Binding fixes for Clipping when mixing legacy and modern mode
Mikko Rasa [Sat, 13 Aug 2016 15:28:47 +0000 (18:28 +0300)]
Implement the previously forgotten Clipping::unbind
Mikko Rasa [Fri, 12 Aug 2016 20:39:33 +0000 (23:39 +0300)]
Some fixes to lighting management
Mikko Rasa [Fri, 12 Aug 2016 20:39:06 +0000 (23:39 +0300)]
Support user clip planes in generated shaders
Mikko Rasa [Fri, 12 Aug 2016 20:38:50 +0000 (23:38 +0300)]
Handle clipping in Pipeline and Renderer
Mikko Rasa [Fri, 12 Aug 2016 20:31:47 +0000 (23:31 +0300)]
Restore user clip planes in a form compatible with modern OpenGL
They work much the same as lights, with the ability to add uniforms to a
ProgramData object.
Mikko Rasa [Tue, 2 Aug 2016 22:26:37 +0000 (01:26 +0300)]
Support rotating the camera frustum
The rotation is applied as the very last step of projection, alllowing
screen rotation to be easily implemented in software.
Mikko Rasa [Thu, 28 Jul 2016 10:49:08 +0000 (13:49 +0300)]
Don't do a potentially expensive mesh update if nothing changed
Mikko Rasa [Wed, 27 Jul 2016 15:58:17 +0000 (18:58 +0300)]
Fix incorrect multiple inclusion guards
Mikko Rasa [Fri, 22 Jul 2016 19:00:48 +0000 (22:00 +0300)]
Use cap height instead of ascent for midline alignment
Mikko Rasa [Fri, 22 Jul 2016 18:59:57 +0000 (21:59 +0300)]
Add cap height and x height metrics to Font
Since FreeType (and consequently ttf2png) doesn't provide these metrics,
they are estimated by the makefont script.
Mikko Rasa [Sat, 23 Jan 2016 02:56:04 +0000 (04:56 +0200)]
Use UNSIGNED_SHORT for allocating DEPTH_COMPONENT textures
OpenGL ES doesn't accept DEPTH_COMPONENT together with BYTE types.
Mikko Rasa [Sun, 10 Jan 2016 16:45:06 +0000 (18:45 +0200)]
Adjust OccludedScene to be more compatible with OpenGL ES
GL_SAMPLES_PASSED is not available in OpenGL ES so use occlusion_query2
for GL_ANY_SAMPLES_PASSED. In theory it's possible for an implementation
to support occlusion_query but not the 2 variant; I'll deal with that
case if I ever come across such a combination of hardware and drivers.
Mikko Rasa [Mon, 7 Dec 2015 07:08:05 +0000 (09:08 +0200)]
Rearrange things in ZSortedScene a bit
Mikko Rasa [Mon, 7 Dec 2015 07:04:10 +0000 (09:04 +0200)]
Implement a scene class that performs occlusion culling on renderables
Mikko Rasa [Sun, 6 Dec 2015 13:55:36 +0000 (15:55 +0200)]
Add a class for building icosahedron-based spheres
It doesn't do texture coordinates because there's no straightforward
mapping between a plane and an icosahedral surface.
Mikko Rasa [Fri, 4 Dec 2015 18:43:07 +0000 (20:43 +0200)]
Use a persistent sorted array in ZSortedScene
Typically the order of renderables changes very little between frames, so
it's possible to use insertion sort which is very fast for almost-sorted
arrays.
Mikko Rasa [Fri, 4 Dec 2015 18:41:43 +0000 (20:41 +0200)]
Calculate depths in ZSortedScene more efficiently
Mikko Rasa [Fri, 4 Dec 2015 13:59:10 +0000 (15:59 +0200)]
Immediately add renderables to the cache in SimpleScene::add
Mikko Rasa [Fri, 4 Dec 2015 12:45:31 +0000 (14:45 +0200)]
Cache renderables in SimpleScene into a vector
Set iteration is rather expensive, but I want to retain the O(logn)
performance of add and remove operations.
Mikko Rasa [Fri, 4 Dec 2015 12:54:55 +0000 (14:54 +0200)]
Further tweak frustum culling to be more efficient
Mikko Rasa [Fri, 4 Dec 2015 12:09:48 +0000 (14:09 +0200)]
Remove the culler abstraction and move frustum culling to Scene
It turns out that different culling methods (such as occlusion queries)
have different enough requirements that putting them behind a single
abstraction is not feasible. This also seems to provide a slight
performance boost.
Mikko Rasa [Fri, 4 Dec 2015 12:07:29 +0000 (14:07 +0200)]
Move some common matrix operations to the header so they can be inlined
Mikko Rasa [Fri, 4 Dec 2015 11:11:50 +0000 (13:11 +0200)]
Cache the total data size in ResourceManager
Calculating it again every frame turned out to be a fairly large
performance hit in applications with many different resources.
Mikko Rasa [Fri, 4 Dec 2015 09:36:07 +0000 (11:36 +0200)]
Make ResourceManager thread-safe
Since a big part of the class is loading resources asynchronously, it
makes sense that resources can also be created from another thread.
Mikko Rasa [Sat, 28 Nov 2015 15:27:02 +0000 (17:27 +0200)]
Add an option to use shared meshes when exporting
Mikko Rasa [Sat, 28 Nov 2015 15:26:33 +0000 (17:26 +0200)]
Add missing initializer
Mikko Rasa [Fri, 27 Nov 2015 06:30:52 +0000 (08:30 +0200)]
Decrement size when removing a resource from the loading thread
Mikko Rasa [Wed, 25 Nov 2015 11:53:24 +0000 (13:53 +0200)]
Add geometry builder for sphere
Mikko Rasa [Mon, 23 Nov 2015 16:18:21 +0000 (18:18 +0200)]
Allow flagging meshes for winding test in Blender
Mikko Rasa [Sun, 22 Nov 2015 09:41:15 +0000 (11:41 +0200)]
Mark fog tokens as legacy features
Mikko Rasa [Wed, 18 Nov 2015 19:04:02 +0000 (21:04 +0200)]
Clear manager in destructors of individual resource classes
If the resource is destroyed while being loaded asynchronously, loading
has to be stopped before the derived class is destroyed. The Resource
destructor is too late for that.
Mikko Rasa [Wed, 18 Nov 2015 18:53:43 +0000 (20:53 +0200)]
Support fog in lighting and shaders
Mikko Rasa [Sat, 14 Nov 2015 22:25:50 +0000 (00:25 +0200)]
Give meshes a higher priority when loading
It's better to load all meshes first so the geometry can be seen.
Mikko Rasa [Sun, 20 Sep 2015 11:20:48 +0000 (14:20 +0300)]
Honor the srgb conversion flag when loading textures asynchronously
Mikko Rasa [Sun, 20 Sep 2015 11:18:27 +0000 (14:18 +0300)]
Pass the resource collection to async loaders
This way they can access the loading parameters specified in that
collection.
Mikko Rasa [Sun, 20 Sep 2015 11:14:41 +0000 (14:14 +0300)]
Add option for the range of characters to use from a font
Mikko Rasa [Sun, 20 Sep 2015 11:14:29 +0000 (14:14 +0300)]
Fix PIL import
Mikko Rasa [Sat, 5 Sep 2015 20:05:22 +0000 (23:05 +0300)]
Throw a resource_load_error if the source could not be opened
Mikko Rasa [Sat, 5 Sep 2015 20:04:06 +0000 (23:04 +0300)]
Add a safeguard to resource_used
It's externally accessible and someone might call it with a resource
which is not registered with that manager.
Mikko Rasa [Sat, 5 Sep 2015 20:03:39 +0000 (23:03 +0300)]
Make is_resource_loaded const as it should be
Mikko Rasa [Sat, 5 Sep 2015 19:57:58 +0000 (22:57 +0300)]
Make resource locations externally accessible
This makes it easier to load resources e.g. from network on demand.
Mikko Rasa [Sun, 2 Aug 2015 09:58:59 +0000 (12:58 +0300)]
Add a function to stop a single animation
Mikko Rasa [Sat, 1 Aug 2015 19:53:35 +0000 (22:53 +0300)]
Also set uniforms in tick_stacked
Mikko Rasa [Fri, 31 Jul 2015 11:21:46 +0000 (14:21 +0300)]
Support animation of uniform variables
Mikko Rasa [Wed, 29 Jul 2015 21:13:57 +0000 (00:13 +0300)]
Add a missing include
Mikko Rasa [Wed, 15 Jul 2015 20:38:13 +0000 (23:38 +0300)]
Provide a getter for the number of active animations
Mikko Rasa [Wed, 15 Jul 2015 20:36:54 +0000 (23:36 +0300)]
Add a class for easier text rendering
I've written the equivalent in various applications a few times, so might
as well put it here.
Mikko Rasa [Wed, 15 Jul 2015 20:03:31 +0000 (23:03 +0300)]
Expose texture replacement functionality from Technique
Mikko Rasa [Tue, 14 Jul 2015 22:29:28 +0000 (01:29 +0300)]
Enable chaining of matrix modifiers
Mikko Rasa [Tue, 14 Jul 2015 21:02:35 +0000 (00:02 +0300)]
Support more ttf2png options in makefont.py
Now requires ttf2png 1.1 for the -m and -n options
Mikko Rasa [Tue, 14 Jul 2015 21:00:32 +0000 (00:00 +0300)]
Properly handle compound children with non-identity local matrix
Mikko Rasa [Fri, 17 Apr 2015 20:44:06 +0000 (23:44 +0300)]
Raise an exception if attempting to export a mesh with ngons
Otherwise there will be a much more confusing errors down the line
Mikko Rasa [Tue, 7 Apr 2015 12:17:28 +0000 (15:17 +0300)]
Revert changes if create_targets throws an exception
Mikko Rasa [Tue, 7 Apr 2015 12:16:26 +0000 (15:16 +0300)]
Fix some minor errors in the ambient occlusion shaders
Mikko Rasa [Sat, 27 Dec 2014 00:14:19 +0000 (02:14 +0200)]
Only require ARB_shadow when enabling texture compare mode
Mikko Rasa [Sat, 27 Dec 2014 00:13:38 +0000 (02:13 +0200)]
Alias texture lookup functions of all dimensionalities
Mikko Rasa [Sat, 27 Dec 2014 00:12:14 +0000 (02:12 +0200)]
Object's lod array must be initialized in all cases
Mikko Rasa [Wed, 10 Dec 2014 18:34:41 +0000 (20:34 +0200)]
Allow bounding sphere hints for objects and export such from Blender
Mikko Rasa [Wed, 10 Dec 2014 17:39:38 +0000 (19:39 +0200)]
Use explicit mipmap generation if necessary
Mikko Rasa [Wed, 10 Dec 2014 16:15:24 +0000 (18:15 +0200)]
Add methods to query the state of a resource
Mikko Rasa [Wed, 10 Dec 2014 16:08:09 +0000 (18:08 +0200)]
Add some accessors
Mikko Rasa [Sun, 7 Dec 2014 23:17:15 +0000 (01:17 +0200)]
Support defining and exporting object LoDs in Blender
Mikko Rasa [Sat, 6 Dec 2014 12:39:12 +0000 (14:39 +0200)]
Allow materials to be overridden when inheriting a technique
Mikko Rasa [Sat, 6 Dec 2014 12:38:49 +0000 (14:38 +0200)]
Support different techniques per LoD in objects
Mikko Rasa [Wed, 26 Nov 2014 09:24:12 +0000 (11:24 +0200)]
Pass errors from the resource loading thread to the main thread
Mikko Rasa [Mon, 17 Nov 2014 16:24:34 +0000 (18:24 +0200)]
Always update program uniforms if uniform names have changed
It's possible for pu.used to be zero, in which case the original code
would never update it.
Mikko Rasa [Sun, 16 Nov 2014 18:06:14 +0000 (20:06 +0200)]
Fix orthographic projection matrix calculation
I made some last minute changes for
c90cc1f and this got missed.
Mikko Rasa [Thu, 13 Nov 2014 21:45:32 +0000 (23:45 +0200)]
Miscellaneous fixes
Mikko Rasa [Thu, 13 Nov 2014 21:43:05 +0000 (23:43 +0200)]
Add a new transform API to Renderer.
Accessing the matrix stack directly is unsafe as it allows the caller to
push and pop on it independently of Renderer states.
Mikko Rasa [Thu, 13 Nov 2014 21:22:04 +0000 (23:22 +0200)]
Adapt to the new vector/matrix slicing API in mspmath
Mikko Rasa [Thu, 13 Nov 2014 21:20:08 +0000 (23:20 +0200)]
Add overloaded setters for 2x2 and 3x3 uniform matrices
Mikko Rasa [Thu, 13 Nov 2014 21:08:14 +0000 (23:08 +0200)]
Add orthographic mode to Camera
Mikko Rasa [Thu, 13 Nov 2014 18:55:10 +0000 (20:55 +0200)]
Fix extension functions on Windows
They have to be marked with APIENTRY for the correct calling convention.
OpenGL 1.0 and 1.1 functions are not available through wglGetProcAddress,
so link them directly.
Mikko Rasa [Wed, 12 Nov 2014 09:04:43 +0000 (11:04 +0200)]
Use BindRestore for binding index buffer
Plain Bind tries to unbind the buffer afterwards, which causes trouble if
the mesh itself is bound.
Mikko Rasa [Wed, 12 Nov 2014 09:00:38 +0000 (11:00 +0200)]
Use triangle strips for creating strings
Quads are not supported by modern OpenGL.
Mikko Rasa [Wed, 12 Nov 2014 00:05:15 +0000 (02:05 +0200)]
Make postprocessor shaders compatible with modern interface
Mikko Rasa [Wed, 12 Nov 2014 00:01:25 +0000 (02:01 +0200)]
Precision must always be specified for OpenGL ES
Mikko Rasa [Wed, 12 Nov 2014 00:01:05 +0000 (02:01 +0200)]
Improve legacy mode logic in ProgramBuilder
Mikko Rasa [Tue, 11 Nov 2014 23:49:39 +0000 (01:49 +0200)]
Eliminate conflicts with Windows headers
Mikko Rasa [Sat, 1 Nov 2014 00:39:06 +0000 (02:39 +0200)]
Set the rendered flag before doing anything else
Prevents recursion back into ShadowMap::setup_frame from the rendereable.
Mikko Rasa [Sat, 1 Nov 2014 00:26:34 +0000 (02:26 +0200)]
Remove separate element_buffer from Renderer, get it from mesh instead
Mikko Rasa [Sat, 1 Nov 2014 00:25:49 +0000 (02:25 +0200)]
Use the same Renderer to render all faces of EnvironmentMap
Mikko Rasa [Sat, 1 Nov 2014 00:20:27 +0000 (02:20 +0200)]
Add begin() method to make Renderer reusable
Mikko Rasa [Thu, 30 Oct 2014 08:21:18 +0000 (10:21 +0200)]
State management improvements in Renderer
Only update modelview matrix in standard_shdata if it actually changed.
Don't re-apply all shader data unless the program changed.
React to lighting changes caused by pop_state.
Mikko Rasa [Thu, 30 Oct 2014 08:19:13 +0000 (10:19 +0200)]
Roll the various changed flags into a single mask
Mikko Rasa [Mon, 27 Oct 2014 20:28:35 +0000 (22:28 +0200)]
Move eye_obj matrices back out of the uniform block
It turns out that updating the buffer for every draw call causes trouble
for drivers, especially OpenGL ES. Projection matrix typically does not
change during a frame, so it can stay.
Mikko Rasa [Tue, 21 Oct 2014 06:50:51 +0000 (09:50 +0300)]
Copy ProgramData::uniform_slots in copy constructor and operator=
Mikko Rasa [Tue, 21 Oct 2014 06:48:26 +0000 (09:48 +0300)]
Disallow direct access to uniform array elements
ProgramData can't track them correctly, and adding the support would be
too complex. Uploading the entire array at once is more efficient anyway.
Mikko Rasa [Tue, 21 Oct 2014 06:44:55 +0000 (09:44 +0300)]
Clear matrices_loaded flag after resetting matrices
Fixes an issue where using legacy mode with a Pipeline would case the
matrices to be popped twice.
Mikko Rasa [Mon, 20 Oct 2014 17:21:39 +0000 (20:21 +0300)]
OpenGL ES requires floating-point precision to be declard in shaders
Mikko Rasa [Mon, 20 Oct 2014 09:28:59 +0000 (12:28 +0300)]
Improve documentation for a number of classes
Mikko Rasa [Mon, 20 Oct 2014 08:59:22 +0000 (11:59 +0300)]
Add missing initialization
Mikko Rasa [Mon, 20 Oct 2014 08:57:16 +0000 (11:57 +0300)]
Don't crash in bounding sphere generation if an object has a null mesh
Mikko Rasa [Mon, 20 Oct 2014 08:56:10 +0000 (11:56 +0300)]
Prefer glMapBufferRange over glMapBuffer
OpenGL ES does not have glMapBuffer.
Mikko Rasa [Mon, 20 Oct 2014 08:16:55 +0000 (11:16 +0300)]
Emit warnings if an extension can't be fully supported
Mikko Rasa [Sun, 19 Oct 2014 23:33:59 +0000 (02:33 +0300)]
The GLSL texture function returns a float for shadow samplers
In contrast with the legacy shadow2D function, which returned vec4.
Mikko Rasa [Sun, 19 Oct 2014 16:59:36 +0000 (19:59 +0300)]
Deprecate Renderer::escape() and replace it with end()
I never used escape() for much anything, and now it's causing problems on
OpenGL ES by trying to apply state with no shader and consequently set
system matrices. In the future I'll add a corresponding begin() call to
allow persistent Renderers.
Mikko Rasa [Sun, 19 Oct 2014 16:28:24 +0000 (19:28 +0300)]
Legacy shader compatibility fixes for OpenGL ES
Mikko Rasa [Sun, 19 Oct 2014 16:27:26 +0000 (19:27 +0300)]
Use texture() instead of texture2D() in non-legacy mode
Because the name of the diffuse texture uniform was changed to avoid
conflicting with the function, some changes in applications may be
necessary.