]> git.tdb.fi Git - libs/gl.git/log
libs/gl.git
7 years agoDerive ProgramCompiler::DeclarationCombiner from BlockModifier
Mikko Rasa [Tue, 14 Nov 2017 11:00:18 +0000 (13:00 +0200)]
Derive ProgramCompiler::DeclarationCombiner from BlockModifier

7 years agoSupport precision qualifiers in shaders
Mikko Rasa [Tue, 14 Nov 2017 10:57:34 +0000 (12:57 +0200)]
Support precision qualifiers in shaders

7 years agoFix shader version declaration when minor version is zero
Mikko Rasa [Tue, 14 Nov 2017 10:56:34 +0000 (12:56 +0200)]
Fix shader version declaration when minor version is zero

7 years agoBasic OpenGL ES support in ProgramCompiler
Mikko Rasa [Tue, 14 Nov 2017 08:53:47 +0000 (10:53 +0200)]
Basic OpenGL ES support in ProgramCompiler

Check language features against the correct version depending on the API
and emit a default precision qualifier for float types.

7 years agoCosmetic fixes
Mikko Rasa [Tue, 14 Nov 2017 08:48:37 +0000 (10:48 +0200)]
Cosmetic fixes

7 years agoUse matrix column accessors rather than multiplication
Mikko Rasa [Tue, 14 Nov 2017 08:47:32 +0000 (10:47 +0200)]
Use matrix column accessors rather than multiplication

7 years agoMake use of the Light's matrix in ShadowMap
Mikko Rasa [Fri, 10 Nov 2017 07:38:43 +0000 (09:38 +0200)]
Make use of the Light's matrix in ShadowMap

7 years agoDerive Camera and Light from Placeable
Mikko Rasa [Fri, 10 Nov 2017 07:26:38 +0000 (09:26 +0200)]
Derive Camera and Light from Placeable

7 years agoImprove parameters and documentation of Light
Mikko Rasa [Thu, 9 Nov 2017 14:41:01 +0000 (16:41 +0200)]
Improve parameters and documentation of Light

7 years agoAdd a new Placeable base class
Mikko Rasa [Wed, 8 Nov 2017 06:42:24 +0000 (08:42 +0200)]
Add a new Placeable base class

7 years agoRemove useless namespace prefixes
Mikko Rasa [Sun, 10 Sep 2017 12:37:54 +0000 (15:37 +0300)]
Remove useless namespace prefixes

7 years agoImmediately process window size to set correct viewport size
Mikko Rasa [Sun, 10 Sep 2017 12:33:41 +0000 (15:33 +0300)]
Immediately process window size to set correct viewport size

The system framebuffer acquires its size from the window when the GL
context is created, but in some use cases the window may change size
before a View is created on it.

7 years agoSimplify version comparisons
Mikko Rasa [Sun, 10 Sep 2017 12:32:26 +0000 (15:32 +0300)]
Simplify version comparisons

The less-than operator was implemented a while ago but these two cases
were missed.

7 years agoThrow an exception if a referenced external image is not found
Mikko Rasa [Sun, 10 Sep 2017 12:31:30 +0000 (15:31 +0300)]
Throw an exception if a referenced external image is not found

7 years agoUse the same mesh for multiple instances of an object in scene exporter
Mikko Rasa [Sun, 10 Sep 2017 12:23:22 +0000 (15:23 +0300)]
Use the same mesh for multiple instances of an object in scene exporter

7 years agoEliminate a useless temporary variable
Mikko Rasa [Sun, 10 Sep 2017 12:22:03 +0000 (15:22 +0300)]
Eliminate a useless temporary variable

7 years agoSmall optimization for mesh exporter performance
Mikko Rasa [Sun, 10 Sep 2017 12:19:40 +0000 (15:19 +0300)]
Small optimization for mesh exporter performance

7 years agoFix an incorrect variable in the mesh exporter
Mikko Rasa [Sun, 10 Sep 2017 12:17:52 +0000 (15:17 +0300)]
Fix an incorrect variable in the mesh exporter

7 years agoUse correct function name in exception
Mikko Rasa [Sun, 10 Sep 2017 12:08:20 +0000 (15:08 +0300)]
Use correct function name in exception

7 years agoSome comment updates
Mikko Rasa [Sun, 10 Sep 2017 12:07:24 +0000 (15:07 +0300)]
Some comment updates

7 years agoDon't crash if an explicitly specified backport extension is not found
Mikko Rasa [Sun, 10 Sep 2017 11:28:38 +0000 (14:28 +0300)]
Don't crash if an explicitly specified backport extension is not found

Also fix formatting of the error message.

7 years agoOpenGL ES compatibility fixes
Mikko Rasa [Sun, 10 Sep 2017 11:25:29 +0000 (14:25 +0300)]
OpenGL ES compatibility fixes

7 years agoHeader fixes
Mikko Rasa [Sun, 10 Sep 2017 11:22:30 +0000 (14:22 +0300)]
Header fixes

7 years agoDisable core version of primitive restart on Radeon as well
Mikko Rasa [Sun, 8 Jan 2017 13:59:57 +0000 (15:59 +0200)]
Disable core version of primitive restart on Radeon as well

Maybe there's something wrong with my code but I can't figure what.  This
is the easy solution.

7 years agoReturn false from is_supported for disabled extensions
Mikko Rasa [Sun, 8 Jan 2017 13:59:37 +0000 (15:59 +0200)]
Return false from is_supported for disabled extensions

7 years agoPerform ambient occlusion PRNG multiplication with 64-bit integers
Mikko Rasa [Fri, 6 Jan 2017 16:16:48 +0000 (18:16 +0200)]
Perform ambient occlusion PRNG multiplication with 64-bit integers

7 years agoUse linear filtering for ambient occlusion render target
Mikko Rasa [Fri, 6 Jan 2017 16:15:43 +0000 (18:15 +0200)]
Use linear filtering for ambient occlusion render target

The blurring step samples it exactly between texels so nearest filtering
may cause artifacts due to floating point math instability.

7 years agoFix some errors in the ambient occlusion shader
Mikko Rasa [Fri, 6 Jan 2017 14:26:53 +0000 (16:26 +0200)]
Fix some errors in the ambient occlusion shader

7 years agoProperly handle the legacy replacement of fragment shader output
Mikko Rasa [Fri, 6 Jan 2017 13:18:42 +0000 (15:18 +0200)]
Properly handle the legacy replacement of fragment shader output

Assignment targets to the output variable need to be cleared, lest the
unused variable locator tries to access deleted nodes.

7 years agoDon't replace in/out with attribute/varying until formatting
Mikko Rasa [Fri, 6 Jan 2017 13:17:08 +0000 (15:17 +0200)]
Don't replace in/out with attribute/varying until formatting

Some parts of the code depend on having the correct interfaces present in
the AST.

7 years agoSimplify reflections in the singlepass shader
Mikko Rasa [Fri, 6 Jan 2017 11:49:20 +0000 (13:49 +0200)]
Simplify reflections in the singlepass shader

Specular reflection of the sky was dropped.  It's better implemented
through an environment map.  In the future I'll add a skybox utility
class which provides a simple environment map.

7 years agoGuard against missing extensions on OS X
Mikko Rasa [Fri, 6 Jan 2017 11:48:17 +0000 (13:48 +0200)]
Guard against missing extensions on OS X

Symbols are linked directly so the definitions must be present in the
system OpenGL library at compile time.

7 years agoUse the correct define to detect Windows
Mikko Rasa [Fri, 6 Jan 2017 11:14:31 +0000 (13:14 +0200)]
Use the correct define to detect Windows

7 years agoDefine some GL enums in case they don't exist
Mikko Rasa [Fri, 6 Jan 2017 10:33:39 +0000 (12:33 +0200)]
Define some GL enums in case they don't exist

7 years agoImplement an assignment operator for RenderPass
Mikko Rasa [Fri, 6 Jan 2017 10:27:54 +0000 (12:27 +0200)]
Implement an assignment operator for RenderPass

Clang compains about this too when trying to assign the pass map in
Technique.

7 years agoFix some clang compile warnings
Mikko Rasa [Fri, 6 Jan 2017 10:27:40 +0000 (12:27 +0200)]
Fix some clang compile warnings

7 years agoDefault to mipmapped filtering if EXT_framebuffer_object is available
Mikko Rasa [Thu, 29 Dec 2016 09:41:03 +0000 (11:41 +0200)]
Default to mipmapped filtering if EXT_framebuffer_object is available

Even if SGIS_generate_mipmap isn't.  The latter functionality has been
removed from modern OpenGL.

7 years agoAdd a method to set the texture filter of RenderTarget textures
Mikko Rasa [Thu, 29 Dec 2016 09:39:23 +0000 (11:39 +0200)]
Add a method to set the texture filter of RenderTarget textures

7 years agoRemove useless declarations of main() from shaders
Mikko Rasa [Fri, 16 Dec 2016 21:52:39 +0000 (23:52 +0200)]
Remove useless declarations of main() from shaders

7 years agoImprove the ambient occlusion postprocessor
Mikko Rasa [Sat, 10 Dec 2016 23:01:51 +0000 (01:01 +0200)]
Improve the ambient occlusion postprocessor

Now that postprocessors have access to the Renderer and its state, the
camera projection matrix can be used for more sophisticated depth
calculations.

7 years agoAlso re-apply standard shader data when the shader program changes
Mikko Rasa [Sat, 10 Dec 2016 23:01:31 +0000 (01:01 +0200)]
Also re-apply standard shader data when the shader program changes

7 years agoAlways treat GLSL function parameters as referenced
Mikko Rasa [Sat, 10 Dec 2016 20:48:07 +0000 (22:48 +0200)]
Always treat GLSL function parameters as referenced

They can't be removed so adding them to the set of unused nodes would
lead to an infinite loop.

7 years agoSome fixes to assignment management in UnusedVariableLocator
Mikko Rasa [Sat, 10 Dec 2016 20:43:51 +0000 (22:43 +0200)]
Some fixes to assignment management in UnusedVariableLocator

Sometimes assignments were being removed when they shouldn't (reference
from a conditional sub-block).  Other times they weren't being removed
when they should (followup assignment in the same block).

7 years agoSupport attaching 3D and 2DArray textures to Framebuffer
Mikko Rasa [Sat, 10 Dec 2016 17:32:27 +0000 (19:32 +0200)]
Support attaching 3D and 2DArray textures to Framebuffer

7 years agoReorder declarations right after injecting the shared scope
Mikko Rasa [Sat, 10 Dec 2016 17:28:42 +0000 (19:28 +0200)]
Reorder declarations right after injecting the shared scope

This is necesary for InterfaceGenerator to recognize additional inputs in
shaders that import a main function with passthrough in it.  Otherwise no
passthroughs would be generated and those inputs would be unusable in
later stages.

7 years agoRefactor and improve unused variable detection in ProgramCompiler
Mikko Rasa [Sat, 10 Dec 2016 17:24:58 +0000 (19:24 +0200)]
Refactor and improve unused variable detection in ProgramCompiler

It now recognizes and marks for removal assignments to global variables
if the variable is not read in any function.

7 years agoRecognize backward references in GLSL loops
Mikko Rasa [Wed, 7 Dec 2016 00:31:45 +0000 (02:31 +0200)]
Recognize backward references in GLSL loops

A lone assignment at the end of a loop isn't unused if the next iteration
uses the value.

7 years agoCompute Framebuffer size correctly when texture mipmaps are attached
Mikko Rasa [Tue, 6 Dec 2016 21:53:48 +0000 (23:53 +0200)]
Compute Framebuffer size correctly when texture mipmaps are attached

7 years agoAdd a default tag to render functions that were missing it
Mikko Rasa [Tue, 6 Dec 2016 21:34:35 +0000 (23:34 +0200)]
Add a default tag to render functions that were missing it

7 years agoImmediate update camera aspect in View::set_camera
Mikko Rasa [Tue, 6 Dec 2016 21:34:16 +0000 (23:34 +0200)]
Immediate update camera aspect in View::set_camera

7 years agoInitialize View::camera to null
Mikko Rasa [Tue, 6 Dec 2016 21:33:58 +0000 (23:33 +0200)]
Initialize View::camera to null

So it doesn't crash when used without a camera.

7 years agoAdd some more premade blend modes
Mikko Rasa [Tue, 6 Dec 2016 21:33:17 +0000 (23:33 +0200)]
Add some more premade blend modes

7 years agoMark some functions as const that by all rights should be
Mikko Rasa [Tue, 6 Dec 2016 21:32:08 +0000 (23:32 +0200)]
Mark some functions as const that by all rights should be

7 years agoSet a sensible projection matrix when there's no camera
Mikko Rasa [Tue, 6 Dec 2016 21:31:40 +0000 (23:31 +0200)]
Set a sensible projection matrix when there's no camera

7 years agoRecognize various nonlinear flow control statement
Mikko Rasa [Tue, 6 Dec 2016 21:31:07 +0000 (23:31 +0200)]
Recognize various nonlinear flow control statement

7 years agoRemove some methods that have been deprecated for a long while
Mikko Rasa [Mon, 5 Dec 2016 18:34:03 +0000 (20:34 +0200)]
Remove some methods that have been deprecated for a long while

7 years agoAdd bounding sphere passthrough to Effect
Mikko Rasa [Mon, 5 Dec 2016 17:56:18 +0000 (19:56 +0200)]
Add bounding sphere passthrough to Effect

7 years agoRefresh lighting and culling uniforms if the camera changes in pop_state
Mikko Rasa [Mon, 5 Dec 2016 17:50:48 +0000 (19:50 +0200)]
Refresh lighting and culling uniforms if the camera changes in pop_state

7 years agoAdd setup/finish_frame methods to OccludedScene and ZSortedScene
Mikko Rasa [Mon, 5 Dec 2016 17:21:34 +0000 (19:21 +0200)]
Add setup/finish_frame methods to OccludedScene and ZSortedScene

7 years agoUse the external Renderer to render ShadowMap and EnvironmentMap
Mikko Rasa [Mon, 5 Dec 2016 17:20:17 +0000 (19:20 +0200)]
Use the external Renderer to render ShadowMap and EnvironmentMap

7 years agoChange the setup/finish_frame interface to be non-const
Mikko Rasa [Mon, 5 Dec 2016 17:04:30 +0000 (19:04 +0200)]
Change the setup/finish_frame interface to be non-const

There's no deprecated versions left behind because it would be impossible
to make it work with Renderables that forward the calls to a Scene.
Better to just get compile errors and fix them as I encounter them.

7 years agoStore Renderables as non-const pointers or references
Mikko Rasa [Mon, 5 Dec 2016 16:35:22 +0000 (18:35 +0200)]
Store Renderables as non-const pointers or references

It's irked me for a while how some renderables (mostly effects) need to
do internal updates in setup_frame, but it's const so I end up with a ton
of mutables.  Since almost all of my use cases actually pass in non-const
Renderables anyway, I'm just going to change this.

7 years agoRemove the Renderer-less overload of Renderable::render
Mikko Rasa [Mon, 5 Dec 2016 16:10:52 +0000 (18:10 +0200)]
Remove the Renderer-less overload of Renderable::render

It's been sort-of deprecated for a long time even though it wasn't marked
as such.  None of my code code uses it with anything else than Pipeline
(and that code path is being replaced with View).

7 years agoAssociate camera and setup/finish_frame calls with View
Mikko Rasa [Mon, 5 Dec 2016 14:15:27 +0000 (16:15 +0200)]
Associate camera and setup/finish_frame calls with View

... instead of Pipeline.  Having a Camera in the Pipeline but using the
Renderer's camera to override it for some things feels like a hack.

Pipeline gets to keep it's top-level render function for now.

7 years agoRefactor postprocessor uniform usage
Mikko Rasa [Sat, 3 Dec 2016 16:37:53 +0000 (18:37 +0200)]
Refactor postprocessor uniform usage

A lot of the values are shared between processing passes, so it doesn't
make sense to keep multiple copies.  ProgramData will take care of only
setting the required uniforms.

7 years agoUse RenderTarget objects to manage FBOs in postprocessors
Mikko Rasa [Sat, 3 Dec 2016 16:31:48 +0000 (18:31 +0200)]
Use RenderTarget objects to manage FBOs in postprocessors

7 years agoAdd a RenderTarget class to manage and annotate FBOs
Mikko Rasa [Sat, 3 Dec 2016 16:03:12 +0000 (18:03 +0200)]
Add a RenderTarget class to manage and annotate FBOs

I want to have deferred lighting support at some point, and it requires
multiple outputs from the geometry rasterization stage.  There needs to
be some way to annotate which buffer holds which information.

7 years agoDon't bother with RAII here
Mikko Rasa [Sat, 3 Dec 2016 15:56:50 +0000 (17:56 +0200)]
Don't bother with RAII here

There are already RAII objects in the outer scope.

7 years agoRemove dynamic allocation from VertexFormat
Mikko Rasa [Sat, 3 Dec 2016 15:53:19 +0000 (17:53 +0200)]
Remove dynamic allocation from VertexFormat

On 64-bit systems the pointer takes eight bytes, and a typical malloc
implementation will have two pointers worth of overhead.  Vertex formats
hardly ever reach even eight components, so it's cheaper to just store
a fixed-size array in the class itself.

7 years agoEnsure that program syntax nodes get deep-copied properly
Mikko Rasa [Fri, 2 Dec 2016 20:17:50 +0000 (22:17 +0200)]
Ensure that program syntax nodes get deep-copied properly

The changes in 57c1139 prevented copies happening even when they should,
so the shared section got inserted into shader stages by reference.  This
caused some funny business with the variable resolver and unused variable
locator.

Containers of nodes must have RefPtrs inside them, since insertions will
create some temporary copies of the element and with NodePtr that would
trigger copying the node as well.  So the cloning of nodes is performed
when the container itself is copied.

7 years agoInline trivial shader functions that are only called once
Mikko Rasa [Fri, 2 Dec 2016 10:32:23 +0000 (12:32 +0200)]
Inline trivial shader functions that are only called once

I.e. functions that consist of a single return statement.

7 years agoReorder declarations in shaders
Mikko Rasa [Fri, 2 Dec 2016 10:26:12 +0000 (12:26 +0200)]
Reorder declarations in shaders

So that structs appear before variables and variables appear before
functions.  This ensures that the declarations stay visible if an
expression is moved to an earlier point while inlining functions.

7 years agoRemove some VariableResolver calls that are no longer needed
Mikko Rasa [Fri, 2 Dec 2016 10:24:14 +0000 (12:24 +0200)]
Remove some VariableResolver calls that are no longer needed

Now that nodes don't get copied when moving around the previously
resolved declaration pointers will stay valid.

7 years agoUpgrade NodePtr to RefPtr
Mikko Rasa [Thu, 1 Dec 2016 11:29:29 +0000 (13:29 +0200)]
Upgrade NodePtr to RefPtr

Allows Nodes to be moved from one Block to another without copying them.
When targeting GLSL 1.30 LegacyConverter has a sequence where it flattens
an interface block and later checks the type of those variables through
their declaration pointer.  This caused memory errors because the
original nodes were destroyed in the flatten operation.

7 years agoSome fixes for the scene exporter
Mikko Rasa [Wed, 30 Nov 2016 22:39:34 +0000 (00:39 +0200)]
Some fixes for the scene exporter

7 years agoImprove the color curve postprocessor
Mikko Rasa [Mon, 28 Nov 2016 21:31:19 +0000 (23:31 +0200)]
Improve the color curve postprocessor

7 years agoProperly scale the the bounding sphere for frustum culling
Mikko Rasa [Mon, 28 Nov 2016 00:20:20 +0000 (02:20 +0200)]
Properly scale the the bounding sphere for frustum culling

The original radius must be squared too.  Also, negative distances mean
the sphere is inside the frustum and should not be culled.

7 years agoUse Renderer for rendering PostProcessors
Mikko Rasa [Sat, 26 Nov 2016 11:09:00 +0000 (13:09 +0200)]
Use Renderer for rendering PostProcessors

7 years agoEnsure that DepthTest and Blend get unbound for PostProcessors
Mikko Rasa [Sat, 26 Nov 2016 05:29:20 +0000 (07:29 +0200)]
Ensure that DepthTest and Blend get unbound for PostProcessors

7 years agoDeprecate Renderer::begin() and remove the already deprecated escape()
Mikko Rasa [Sat, 26 Nov 2016 05:01:36 +0000 (07:01 +0200)]
Deprecate Renderer::begin() and remove the already deprecated escape()

7 years agoMake the camera part of changeable Renderer state
Mikko Rasa [Sat, 26 Nov 2016 04:56:54 +0000 (06:56 +0200)]
Make the camera part of changeable Renderer state

I'd like to move to a single, persistent renderer at some point and this
is a necessary step towards that.  Some effects want to use their own
camera to render into an FBO.

7 years agoSet the appropriate flags on Renderer state changes
Mikko Rasa [Sat, 26 Nov 2016 04:52:39 +0000 (06:52 +0200)]
Set the appropriate flags on Renderer state changes

8 years agoAccount for scale when performing frustum culling
Mikko Rasa [Fri, 25 Nov 2016 21:19:08 +0000 (23:19 +0200)]
Account for scale when performing frustum culling

It will still break with non-uniform scaling.

8 years agoEvaluate parenthesized expression as the contained expression's value
Mikko Rasa [Fri, 25 Nov 2016 12:22:38 +0000 (14:22 +0200)]
Evaluate parenthesized expression as the contained expression's value

8 years agoUse layout declarations to set attribute and fragment data locations
Mikko Rasa [Sat, 19 Nov 2016 16:24:18 +0000 (18:24 +0200)]
Use layout declarations to set attribute and fragment data locations

A fallback to glBind*Location functions is provided in case the
implementation does not support GLSL 3.30.

8 years agoSupport layout declarations on variables
Mikko Rasa [Sat, 19 Nov 2016 16:23:58 +0000 (18:23 +0200)]
Support layout declarations on variables

8 years agoEliminate the separate matrix stack in Renderer
Mikko Rasa [Sat, 19 Nov 2016 14:20:06 +0000 (16:20 +0200)]
Eliminate the separate matrix stack in Renderer

Instead incorporate the modelview matrix into the main render state.

8 years agoAllow redeclarations to override the type of a variable
Mikko Rasa [Fri, 18 Nov 2016 22:01:40 +0000 (00:01 +0200)]
Allow redeclarations to override the type of a variable

This can be used to e.g. change the sampler type of the diffuse map.  At
the moment the appropriate sampling function also needs to be overridden
since texcoord dimensions are not handled automatically.

8 years agoMove postprocessor shaders to the builtin shaderlib
Mikko Rasa [Fri, 18 Nov 2016 21:45:00 +0000 (23:45 +0200)]
Move postprocessor shaders to the builtin shaderlib

8 years agoGenerate the entire shaderlib into a single file
Mikko Rasa [Fri, 18 Nov 2016 21:16:54 +0000 (23:16 +0200)]
Generate the entire shaderlib into a single file

Generating lots of small files seemed rather silly, and I found no good
way to automatically generate the builtin init code.

8 years agoAutomatically backport shaders to earlier GLSL versions if necessary
Mikko Rasa [Fri, 18 Nov 2016 17:40:16 +0000 (19:40 +0200)]
Automatically backport shaders to earlier GLSL versions if necessary

Fragment shader output replacement is a bit crude and will just replace
any output with gl_FragColor.  It will be made better later.

8 years agoRefactor block modification operations into an intermediate base class
Mikko Rasa [Fri, 18 Nov 2016 17:38:10 +0000 (19:38 +0200)]
Refactor block modification operations into an intermediate base class

8 years agoAdd a builtin module for standard shaders
Mikko Rasa [Tue, 15 Nov 2016 17:09:50 +0000 (19:09 +0200)]
Add a builtin module for standard shaders

It doesn't support multiple lights as generating the necessary array
interfaces through a geometry shader turned out to be rather non-trivial.
I plan to add deferred rendering modules with multi-light support later.

8 years agoRemove unused functions from the shader source
Mikko Rasa [Mon, 14 Nov 2016 15:46:35 +0000 (17:46 +0200)]
Remove unused functions from the shader source

8 years agoRemove conditionals and loops that can be determined to never run
Mikko Rasa [Mon, 14 Nov 2016 13:33:45 +0000 (15:33 +0200)]
Remove conditionals and loops that can be determined to never run

This is the other major step required for standard shader generation.
Currently the constant condition eliminator is pretty conservative and
will only consider the initialization values of variables.  Globals are
only considered if they are declared const.

8 years agoImplement an import system
Mikko Rasa [Mon, 14 Nov 2016 12:22:02 +0000 (14:22 +0200)]
Implement an import system

This is the first of two major steps required to replicate the core
functionality of the old ProgramBuilder system, namely generating
standard shaders.  The other is conditionally including pieces of code,
which will be added soon.

8 years agoFurther reduce overhead of applying ProgramCompiler visitors
Mikko Rasa [Mon, 14 Nov 2016 11:41:46 +0000 (13:41 +0200)]
Further reduce overhead of applying ProgramCompiler visitors

8 years agoCheck if blocks need braces at formatting time
Mikko Rasa [Mon, 14 Nov 2016 11:39:50 +0000 (13:39 +0200)]
Check if blocks need braces at formatting time

8 years agoParse true and false as literals rather than identifiers
Mikko Rasa [Mon, 14 Nov 2016 09:52:14 +0000 (11:52 +0200)]
Parse true and false as literals rather than identifiers

8 years agoFix formatting issues with else ifs
Mikko Rasa [Sun, 13 Nov 2016 22:35:55 +0000 (00:35 +0200)]
Fix formatting issues with else ifs