]> git.tdb.fi Git - libs/gl.git/log
libs/gl.git
5 years agoSet texture format according to sRGB colorspace setting
Mikko Rasa [Sun, 19 May 2019 23:20:06 +0000 (02:20 +0300)]
Set texture format according to sRGB colorspace setting

5 years agoImplement material maps for exporting objects with multiple materials
Mikko Rasa [Sun, 19 May 2019 23:03:41 +0000 (02:03 +0300)]
Implement material maps for exporting objects with multiple materials

This replaces the material texture feature which was removed earlier.  The
principle is similar (store material color values in a texture) but the
maps are global, making it possible for multiple objects to use the same
map.

5 years agoImprove texture unit assignment when exporting meshes
Mikko Rasa [Sat, 18 May 2019 14:55:16 +0000 (17:55 +0300)]
Improve texture unit assignment when exporting meshes

5 years agoSome bugfixes to texture exporting
Mikko Rasa [Sat, 18 May 2019 07:54:44 +0000 (10:54 +0300)]
Some bugfixes to texture exporting

5 years agoSimplify the resource separation options
Mikko Rasa [Sat, 18 May 2019 07:45:23 +0000 (10:45 +0300)]
Simplify the resource separation options

Having different options for each resource type was getting unmanageable.
I don't see much value in such fine-grained control either.

5 years agoUse filtering options from Blender texture
Mikko Rasa [Thu, 16 May 2019 21:46:21 +0000 (00:46 +0300)]
Use filtering options from Blender texture

A new property has been added on textures to reference the original image
only and use default options at load time.

5 years agoRefactor texture handling in the material exporter
Mikko Rasa [Thu, 16 May 2019 19:56:37 +0000 (22:56 +0300)]
Refactor texture handling in the material exporter

5 years agoMove material and texture export to their own classes
Mikko Rasa [Thu, 16 May 2019 15:58:55 +0000 (18:58 +0300)]
Move material and texture export to their own classes

Also move technique properties from Object to Material.

5 years agoMake resource handling in the Blender exporter more flexible
Mikko Rasa [Thu, 16 May 2019 11:38:27 +0000 (14:38 +0300)]
Make resource handling in the Blender exporter more flexible

All resources are now collected into a dict and referenced or inlined as
necessary.  This makes it possible for SceneExporter to see the resources
used by objects and export them to the resource collection as separate
items.

5 years agoRedesign file writing in the Blender exporter
Mikko Rasa [Wed, 15 May 2019 21:42:03 +0000 (00:42 +0300)]
Redesign file writing in the Blender exporter

Instead of writing statements directly to the file as string fragments,
construct an in-memory representation of the exported data first.  This
allows it to be manipulated and combined easier.

5 years agoCombine shared_mesh and shared_tech into a single option
Mikko Rasa [Wed, 15 May 2019 21:38:02 +0000 (00:38 +0300)]
Combine shared_mesh and shared_tech into a single option

5 years agoTemporarily remove the material texture feature from Blender exporter
Mikko Rasa [Wed, 15 May 2019 21:33:00 +0000 (00:33 +0300)]
Temporarily remove the material texture feature from Blender exporter

It gets in the way of other improvements and will be replaced by a
similar yet different feature later.

5 years agoOnly use texunit zero in exporter-generated techniques
Mikko Rasa [Sun, 12 May 2019 06:59:53 +0000 (09:59 +0300)]
Only use texunit zero in exporter-generated techniques

It does not make much sense to use anything else without shaders, and
accessing the mesh to find out unit numbers is getting in the way of
some other changes.

5 years agoSome cleanups to exporter code
Mikko Rasa [Sun, 12 May 2019 05:36:17 +0000 (08:36 +0300)]
Some cleanups to exporter code

5 years agoFix some errors in the triangulation algorithm
Mikko Rasa [Mon, 6 May 2019 06:08:19 +0000 (09:08 +0300)]
Fix some errors in the triangulation algorithm

Normals were reversed and edge links were not being updated properly.

5 years agoRewrite triangle strip generation in the Blender exporter
Mikko Rasa [Sun, 5 May 2019 13:54:37 +0000 (16:54 +0300)]
Rewrite triangle strip generation in the Blender exporter

The old algorithm had many of the right ideas but was too clever by half
and consequently very complex.  Use a simpler score-based algorithm
developed by Tom Forsyth.  Also reorder vertices to make memory accesses
to them occur in a more linear fashion.

Options related to cache optimization were removed since there's
no good reason not to optimize.

5 years agoExplicitly triangulate faces in the Blender exporter
Mikko Rasa [Sat, 4 May 2019 23:16:22 +0000 (02:16 +0300)]
Explicitly triangulate faces in the Blender exporter

Previously they were implicitly triangulated during strip generation,
with the idea that it would be more flexible.  However I have some
doubts of its benefits and existing strip generation algorithms tend
to deal exclusively in triangles.

5 years agoAdd a bunch of comments to the Mesh class in the Blender exporter
Mikko Rasa [Sat, 4 May 2019 20:34:15 +0000 (23:34 +0300)]
Add a bunch of comments to the Mesh class in the Blender exporter

5 years agoRename some variable to be a bit clearer
Mikko Rasa [Sat, 4 May 2019 20:29:11 +0000 (23:29 +0300)]
Rename some variable to be a bit clearer

5 years agoSimplify the vertex splitting algorithm
Mikko Rasa [Sat, 4 May 2019 20:16:58 +0000 (23:16 +0300)]
Simplify the vertex splitting algorithm

It now uses single-pass loops instead of temporary lists where feasible.

5 years agoMake the edge map transient
Mikko Rasa [Sat, 4 May 2019 20:11:47 +0000 (23:11 +0300)]
Make the edge map transient

It's only actually used to associate edges with faces so it's simpler if
it doesn't need to be maintained in other functions.

5 years agoMore post-refactoring bugfixes
Mikko Rasa [Sat, 4 May 2019 18:50:06 +0000 (21:50 +0300)]
More post-refactoring bugfixes

5 years agoImprove progress reporting in the Blender exporter
Mikko Rasa [Sat, 4 May 2019 13:42:34 +0000 (16:42 +0300)]
Improve progress reporting in the Blender exporter

Pushing and popping tasks now makes more sense.  The Progress object
always exists but it's possible to suppress reporting (see 9b57666) by
giving it a falsy context.  Progress reporting has been added to a few
places that previously lacked it.

5 years agoRemove extraneous semicolons from Python code
Mikko Rasa [Sat, 4 May 2019 13:40:59 +0000 (16:40 +0300)]
Remove extraneous semicolons from Python code

Sometimes I instinctively put one in because I'm used to writing C++.

5 years agoFix some errors introduced in the refactoring
Mikko Rasa [Sat, 4 May 2019 13:39:26 +0000 (16:39 +0300)]
Fix some errors introduced in the refactoring

5 years agoMajor rework of mesh handling in Blender exporter
Mikko Rasa [Fri, 3 May 2019 17:13:45 +0000 (20:13 +0300)]
Major rework of mesh handling in Blender exporter

All of the preprocessing has been moved out of the MeshExporter class and
into a utility function.  This should make it easier for other exporter
classes to use meshes.

5 years agoRemove the external tech exporter property
Mikko Rasa [Wed, 1 May 2019 09:29:11 +0000 (12:29 +0300)]
Remove the external tech exporter property

Always use an external technique if one is specified through the object
property.

5 years agoRemove the compound property from exporter
Mikko Rasa [Wed, 1 May 2019 09:07:52 +0000 (12:07 +0300)]
Remove the compound property from exporter

It hasn't been very useful since objects got the compound with parent
property.  Removing it simplifies passing around the object to be
exported.

5 years agoMove most properties from exporters to the relevant types
Mikko Rasa [Tue, 30 Apr 2019 22:00:22 +0000 (01:00 +0300)]
Move most properties from exporters to the relevant types

These properties pertain to the things being exported and should retain
their values between exports.  It's getting especially difficult to
specify object-specific properties when exporting an entire scene.

6 years agoAllow multiple character ranges in the makefont script
Mikko Rasa [Sat, 7 Jul 2018 07:26:03 +0000 (10:26 +0300)]
Allow multiple character ranges in the makefont script

6 years agoBe less eager to optimize constant conditions in loops
Mikko Rasa [Sat, 7 Jul 2018 07:25:08 +0000 (10:25 +0300)]
Be less eager to optimize constant conditions in loops

It still requires more work to actually detect the scope in which
variables are set, but this at least solves the immediate problem I had.

6 years agoSupport the sample sampling qualifier
Mikko Rasa [Thu, 5 Jul 2018 21:03:35 +0000 (00:03 +0300)]
Support the sample sampling qualifier

Also add a version check for the centroid qualifier.

6 years agoAdd a utility class for switching renderables
Mikko Rasa [Thu, 5 Jul 2018 18:29:29 +0000 (21:29 +0300)]
Add a utility class for switching renderables

6 years agoAllow RED and RG pixel formats in RenderTargetFormat
Mikko Rasa [Wed, 4 Jul 2018 20:49:06 +0000 (23:49 +0300)]
Allow RED and RG pixel formats in RenderTargetFormat

6 years agoAdd support for GLSL interpolation qualifiers
Mikko Rasa [Tue, 3 Jul 2018 23:26:02 +0000 (02:26 +0300)]
Add support for GLSL interpolation qualifiers

6 years agoRearrange GLSL qualifier parsing
Mikko Rasa [Tue, 3 Jul 2018 23:22:56 +0000 (02:22 +0300)]
Rearrange GLSL qualifier parsing

GLSL 4.20 allows qualifiers to be in any order so there's no sense to
enforce a particular order here.  Always output them in a compatible
order though.

6 years agoHave Object provide an identity matrix from get_matrix
Mikko Rasa [Mon, 2 Jul 2018 21:00:28 +0000 (00:00 +0300)]
Have Object provide an identity matrix from get_matrix

It's often useful to have static geometry in a scene directly as an Object
without creating an instance.  Many features such as Z-sorting and culling
require a matrix to be available.

6 years agoDisable mipmaps from various render target textures
Mikko Rasa [Mon, 2 Jul 2018 15:00:30 +0000 (18:00 +0300)]
Disable mipmaps from various render target textures

6 years agoAllow the maximum mipmap level of a texture to be specified
Mikko Rasa [Mon, 2 Jul 2018 12:49:48 +0000 (15:49 +0300)]
Allow the maximum mipmap level of a texture to be specified

This doubles as a way to specify the number of mipmap levels to allocate
when the tetxure image is loaded from a Graphics::Image.

6 years agoExplicitly define the number of mipmap levels in textures
Mikko Rasa [Mon, 2 Jul 2018 12:46:13 +0000 (15:46 +0300)]
Explicitly define the number of mipmap levels in textures

Storage() no longer uses the minification filter to decide whether to
allocate mipmaps or not.  That functionality has been moved to image(),
specifically the version taking a Graphics::Image.

6 years agoThrow an exception if Texture*::allocate is called before storage
Mikko Rasa [Mon, 2 Jul 2018 12:39:45 +0000 (15:39 +0300)]
Throw an exception if Texture*::allocate is called before storage

6 years agoDon't link keyframes with zero interval
Mikko Rasa [Mon, 2 Jul 2018 11:44:23 +0000 (14:44 +0300)]
Don't link keyframes with zero interval

Fixes an issue where a lone instant keyframe at the end of the animation
would produce bad values as the iterator tries to divide by zero.

6 years agoDon't allow iterators on empty animations
Mikko Rasa [Mon, 2 Jul 2018 11:43:49 +0000 (14:43 +0300)]
Don't allow iterators on empty animations

6 years agoRequire the first keyframe of an animation to be at zero offset
Mikko Rasa [Mon, 2 Jul 2018 11:43:02 +0000 (14:43 +0300)]
Require the first keyframe of an animation to be at zero offset

Having empty space at the start of an animation produces unexpected
results.

6 years agoAdd getter for animation duration
Mikko Rasa [Sun, 1 Jul 2018 22:10:58 +0000 (01:10 +0300)]
Add getter for animation duration

6 years agoAdd a speed parameter for animation playback
Mikko Rasa [Sun, 1 Jul 2018 22:10:41 +0000 (01:10 +0300)]
Add a speed parameter for animation playback

6 years agoSupport slopes in keyframe interpolation
Mikko Rasa [Sun, 1 Jul 2018 22:01:27 +0000 (01:01 +0300)]
Support slopes in keyframe interpolation

6 years agoSupport animations on Placeables
Mikko Rasa [Sun, 1 Jul 2018 20:58:02 +0000 (23:58 +0300)]
Support animations on Placeables

Only matrix animations work for obvious reasons.

6 years agoAdd functions to control environment map updates
Mikko Rasa [Sun, 1 Jul 2018 10:05:39 +0000 (13:05 +0300)]
Add functions to control environment map updates

If the environment changes only very slowly or not at all, it may be
desirable to not update the map every frame.

6 years agoAdd a function to set depth clip of EnvironmentMap
Mikko Rasa [Sun, 1 Jul 2018 10:05:11 +0000 (13:05 +0300)]
Add a function to set depth clip of EnvironmentMap

6 years agoDo not attempt to legacy-bind texture targets which do not support it
Mikko Rasa [Sun, 1 Jul 2018 09:53:08 +0000 (12:53 +0300)]
Do not attempt to legacy-bind texture targets which do not support it

6 years agoBind textures in the modern way when shaders are used
Mikko Rasa [Sun, 1 Jul 2018 09:52:07 +0000 (12:52 +0300)]
Bind textures in the modern way when shaders are used

6 years agoUse DSA for binding textures if available
Mikko Rasa [Sun, 1 Jul 2018 09:15:17 +0000 (12:15 +0300)]
Use DSA for binding textures if available

6 years agoRecognize in and out qualifiers for function parameters
Mikko Rasa [Sun, 1 Jul 2018 07:55:31 +0000 (10:55 +0300)]
Recognize in and out qualifiers for function parameters

6 years agoFix a stupid error with PixelStore parameter mask
Mikko Rasa [Tue, 26 Jun 2018 23:14:09 +0000 (02:14 +0300)]
Fix a stupid error with PixelStore parameter mask

6 years agoFix shadowing warnings from older gcc versions
Mikko Rasa [Mon, 25 Jun 2018 21:20:02 +0000 (00:20 +0300)]
Fix shadowing warnings from older gcc versions

6 years agoAdditional overloads for creating pipelines
Mikko Rasa [Sat, 23 Jun 2018 09:12:26 +0000 (12:12 +0300)]
Additional overloads for creating pipelines

6 years agoPlug a memory leak in PipelineTemplate
Mikko Rasa [Sat, 23 Jun 2018 00:57:40 +0000 (03:57 +0300)]
Plug a memory leak in PipelineTemplate

6 years agoMake grid texture coordinates relative to the grid origin
Mikko Rasa [Wed, 20 Jun 2018 10:40:17 +0000 (13:40 +0300)]
Make grid texture coordinates relative to the grid origin

Instead of the world origin, which doesn't make much sense.

6 years agoAdd default texture anisotropy to Resources
Mikko Rasa [Wed, 20 Jun 2018 10:39:00 +0000 (13:39 +0300)]
Add default texture anisotropy to Resources

6 years agoMinor fixes to texture anisotropy handling
Mikko Rasa [Wed, 20 Jun 2018 10:38:16 +0000 (13:38 +0300)]
Minor fixes to texture anisotropy handling

Initialize the anisotropy parameter and don't try to set it unless the
extension is supported.

6 years agoAdd loading support for AmbientOcclusion
Mikko Rasa [Wed, 20 Jun 2018 10:37:51 +0000 (13:37 +0300)]
Add loading support for AmbientOcclusion

6 years agoCorrectly handle luminance-only formats in maketex.py
Mikko Rasa [Wed, 20 Jun 2018 10:36:44 +0000 (13:36 +0300)]
Correctly handle luminance-only formats in maketex.py

6 years agoApply FunctionResolver again after DeclarationReorderer
Mikko Rasa [Sat, 16 Jun 2018 21:16:49 +0000 (00:16 +0300)]
Apply FunctionResolver again after DeclarationReorderer

Function calls that referred to declarations before need to be updated in
case the definition was moved to before the call site.

6 years agoReorder functions in dependency order
Mikko Rasa [Sat, 16 Jun 2018 16:38:11 +0000 (19:38 +0300)]
Reorder functions in dependency order

Otherwise the inliner might inline a function to a point before its
original definition.  This can break references to other functions
declared after the inlining point, causing the unused function eliminator
to eventually remove them.

6 years agoFix matrix interpolation parameter calculation
Mikko Rasa [Sat, 16 Jun 2018 12:23:01 +0000 (15:23 +0300)]
Fix matrix interpolation parameter calculation

With an x87 FPU and compiler optimizations enabled, the code could end up
taking arccos of a value very slightly larger than one.  This would result
in a NaN and destroy the matrix contents.

6 years agoFix an incorrect negation
Mikko Rasa [Thu, 17 May 2018 14:36:39 +0000 (17:36 +0300)]
Fix an incorrect negation

6 years agoFix a bug in ProgramData when all uniforms in a block are removed
Mikko Rasa [Wed, 9 May 2018 19:08:23 +0000 (22:08 +0300)]
Fix a bug in ProgramData when all uniforms in a block are removed

Program blocks continued using the previously generated uniform blocks,
but because the uniform values were removed the blocks were not updated
anymore.

6 years agoUpdate the font script to match latest ttf2png
Mikko Rasa [Sat, 5 May 2018 19:33:07 +0000 (22:33 +0300)]
Update the font script to match latest ttf2png

6 years agoAdd a missing initializer
Mikko Rasa [Wed, 2 May 2018 22:06:44 +0000 (01:06 +0300)]
Add a missing initializer

6 years agoCosmetic fixes
Mikko Rasa [Wed, 2 May 2018 22:06:11 +0000 (01:06 +0300)]
Cosmetic fixes

6 years agoImplement an event system for animations
Mikko Rasa [Wed, 2 May 2018 21:49:15 +0000 (00:49 +0300)]
Implement an event system for animations

It can be used to sync other actions to certain points of the animation.

6 years agoRefactor the Animation reference out of TimedKeyFrame
Mikko Rasa [Wed, 2 May 2018 19:54:47 +0000 (22:54 +0300)]
Refactor the Animation reference out of TimedKeyFrame

It's only used in prepare() so might as well pass the reference to that
function.

6 years agoRefactor AnimationPlayer ticking
Mikko Rasa [Wed, 2 May 2018 19:32:14 +0000 (22:32 +0300)]
Refactor AnimationPlayer ticking

It's not more consistent between single and stacked animations.  There
shouldn't be significant performance penalty since the animation states
would be freed upon removing the target anyway.

6 years agoFix a stale pointer issue with Animation
Mikko Rasa [Wed, 2 May 2018 19:22:23 +0000 (22:22 +0300)]
Fix a stale pointer issue with Animation

Now that keyframe information is stored in a vector it's no longer
guaranteed that pointers to them stay valid after push_back.  Re-link
all TimedKeyFrames if the vector gets reallocated.

6 years agoChange some class names
Mikko Rasa [Wed, 2 May 2018 15:43:55 +0000 (18:43 +0300)]
Change some class names

6 years agoUse vector when there's no reason to use some other container
Mikko Rasa [Sat, 28 Apr 2018 15:13:29 +0000 (18:13 +0300)]
Use vector when there's no reason to use some other container

6 years agoMake Animation::Iterator assignable
Mikko Rasa [Sat, 28 Apr 2018 14:40:37 +0000 (17:40 +0300)]
Make Animation::Iterator assignable

6 years agoShare shader data between copied RenderPasses
Mikko Rasa [Thu, 26 Apr 2018 23:43:51 +0000 (02:43 +0300)]
Share shader data between copied RenderPasses

Applications that use the Text class hevily were ending up with multiple
copies of the same ProgramData, each with their own uniform buffers.

An even better solution would be to have Text objects share the technique,
but I don't have any good ideas for implementing that.

6 years agoSupport overriding uniforms in inherited Techniques
Mikko Rasa [Thu, 26 Apr 2018 16:34:55 +0000 (19:34 +0300)]
Support overriding uniforms in inherited Techniques

6 years agoAllow setting uniform values using a Uniform object
Mikko Rasa [Thu, 26 Apr 2018 16:34:02 +0000 (19:34 +0300)]
Allow setting uniform values using a Uniform object

6 years agoAdd const overload for AnimatedObject::get_shader_data
Mikko Rasa [Thu, 26 Apr 2018 10:46:06 +0000 (13:46 +0300)]
Add const overload for AnimatedObject::get_shader_data

6 years agoSort the cap_height and x_height arrays in makefont.py
Mikko Rasa [Wed, 25 Apr 2018 11:58:39 +0000 (14:58 +0300)]
Sort the cap_height and x_height arrays in makefont.py

I'm pretty sure they were intended to be sorted given that the item at
the two-thirds position is selected.

6 years agoAdd missing includes
Mikko Rasa [Wed, 25 Apr 2018 11:55:11 +0000 (14:55 +0300)]
Add missing includes

6 years agoCheck for OES_mapbuffer in Buffer::unmap
Mikko Rasa [Wed, 25 Apr 2018 11:53:33 +0000 (14:53 +0300)]
Check for OES_mapbuffer in Buffer::unmap

It might have been mapped through ARB_map_buffer_range, in which case
OES_mapbuffer didn't get initialized in Buffer::map.

6 years agoCosmetic changes and TODOs
Mikko Rasa [Wed, 25 Apr 2018 11:36:52 +0000 (14:36 +0300)]
Cosmetic changes and TODOs

6 years agoRemove the mesh2c tool
Mikko Rasa [Wed, 25 Apr 2018 11:32:38 +0000 (14:32 +0300)]
Remove the mesh2c tool

It was created years ago for a purpose which has not been relevant for a
long while.

6 years agoUse an explicit material slot name in RenderPass
Mikko Rasa [Wed, 25 Apr 2018 11:13:26 +0000 (14:13 +0300)]
Use an explicit material slot name in RenderPass

The previous method of overriding materials with pass name seemed a
bit too hacky to my liking.  This is more in line with how overriding
textures works.

The Blender exporter now expects the base technique to have a material
slot "surface".

6 years agoThrow key_error if an inherited Technique uses nonexistent texture slot
Mikko Rasa [Wed, 25 Apr 2018 10:51:53 +0000 (13:51 +0300)]
Throw key_error if an inherited Technique uses nonexistent texture slot

6 years agoMake a private copy of shader data in RenderPass
Mikko Rasa [Wed, 25 Apr 2018 10:47:14 +0000 (13:47 +0300)]
Make a private copy of shader data in RenderPass

Sharing it is not very common and can't be done in data files.  Owned
data is also needed to override uniforms in inherited Techniques.

6 years agoCheck uniform names when loading RenderPasses
Mikko Rasa [Wed, 25 Apr 2018 10:40:12 +0000 (13:40 +0300)]
Check uniform names when loading RenderPasses

6 years agoAllow tying ProgramData to a Program for name-checking purposes
Mikko Rasa [Wed, 25 Apr 2018 10:23:56 +0000 (13:23 +0300)]
Allow tying ProgramData to a Program for name-checking purposes

6 years agoStore mesh batches in vector instead of list
Mikko Rasa [Sun, 22 Apr 2018 08:54:16 +0000 (11:54 +0300)]
Store mesh batches in vector instead of list

6 years agoMake all forms of Batch::append return a reference to itself
Mikko Rasa [Sun, 22 Apr 2018 08:50:27 +0000 (11:50 +0300)]
Make all forms of Batch::append return a reference to itself

6 years agoPass the file name from Resources to ProgramCompiler
Mikko Rasa [Sun, 22 Apr 2018 08:48:12 +0000 (11:48 +0300)]
Pass the file name from Resources to ProgramCompiler

6 years agoAdd a function to remove uniforms from ProgramData
Mikko Rasa [Sun, 22 Apr 2018 08:43:08 +0000 (11:43 +0300)]
Add a function to remove uniforms from ProgramData

It may be beneficial to revert to a Technique's default value and its
associated buffers instead of explicitly setting the same value in an
ObjectInstance's private ProgramData.

6 years agoAvoid memory leak if an invalid uniform name is given
Mikko Rasa [Sun, 22 Apr 2018 08:37:54 +0000 (11:37 +0300)]
Avoid memory leak if an invalid uniform name is given

6 years agoAllow direct access to AnimatedObject's ProgramData
Mikko Rasa [Sun, 22 Apr 2018 08:35:46 +0000 (11:35 +0300)]
Allow direct access to AnimatedObject's ProgramData

The animation-related set_uniform interface was already public so there
isn't any good reason to not allow full access.  This also makes trivial
customization easier as subclassing is not needed.

6 years agoUse different heuristics for applying shader data
Mikko Rasa [Sat, 14 Apr 2018 22:13:56 +0000 (01:13 +0300)]
Use different heuristics for applying shader data

Since later shdata can override values from earlier ones, the stack must
be replayed even if items are only removed.  However we can detect if the
exact same items are added back as might happen when multiple objects
using the same technique are rendered in succession.

6 years agoVisit generated assignments in InterfaceGenerator
Mikko Rasa [Sat, 14 Apr 2018 07:50:09 +0000 (10:50 +0300)]
Visit generated assignments in InterfaceGenerator