lp:sqee

Created by James Gangur and last modified
Get this branch:
bzr branch lp:sqee
Only James Gangur can upload to this branch. If you are James Gangur please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
James Gangur
Project:
SQEE
Status:
Development

Recent revisions

117. By James Gangur

Various tidy ups to rpg rendering classes
Removed the revalidate function from wcoe::Object
Minor refactoring of the sokoban test
Made Mesh and Camera store their buffers directly
Moved NonCopyable into the sq namespace
Replaced GLM with my own maths library
refactored sqee/forward.hpp. It's now three seperate files:
 - setup.hpp: contains typedefs, namespace aliases and NonCopyable
 - builtins.hpp: contains includes and usings of std types (fewer than before)
 - forward.hpp: contains forward declarations of SQEE classes only
Renamed maths/Culling.xpp to Volumes. Struct definitions are now here.
Added misc/StringCast.xpp, containing functions for casting for chaiscript and glsl
Resource holder singletons are now all in app/Resources.xpp

Particles are still broken, and a lot of tidying is still needed after the refactoring in this version.

116. By James Gangur

Refactored Texture objects:
 - format, iFormat and preset are now passed to the ctor
 - allocate_storage is now responsible for setting up the texture
 - added a delete_object method, for saving video memory
 - allocate_storage now takes a mipmaps argument
 - buffer_memory now takes a data type argument
 - removed the mutable textures entirely
Refactored sq::Settings:
 - Settings are now stored in Boxed_Value objects, making supporting new types easier
 - Added Boxed_Value versions of the mod/get functions for use with chaiscript
All texture members are now stored as value types, rather than unique_ptrs
Refactored chaiscript files. More consistent and improved compile times.
Moved RPG's SkyBox, Ambient and Skylight objects into their own files
Tidied up most of the wcoe objects regarding direct state access
For rpg Object derived classes, prefer using value members over unique_ptrs
Fixed reflections, added new Reflects object to Renderer

Particles still need to be fixed

115. By James Gangur

Removed all the indirect lighting stuff. When I try it again, I'll do it differently.
Some includes and usings have been removed from forward.hpp. I will try and remove more still.
sq::draw_screen_quad no longer uses a vbo for any data, the vertex shader is required to use an array
The culling function is maths/Culling now return true when NOT culled, so that the function names make sense
Added const to many member function of libsqee classes, namely those that only affect GL state
Added final to several more classes that really shouldn't be inherited from
Removed the 4 argument (part of single uniform) update() overload from sq::UniformBuffer
Allow PreProcessor to report multiple errors at once. Also did some small optimisations.
The PreProcessor::load function now takes a shader as an argument, rather than returning a string.
Added Direct State Access! All OpenGL objects now make use of DSA to make things nicer and faster.
Added new buffer objects to LibSQEE: FixedBuffer, which can't be resized, and DynamicBuffer, which can
Added a new VertexArray class that nicely wraps an OpenGL VertexArray. It also supports an element buffer.
Refactored sq::Mesh to make use of the new FixedBuffer and VertexArray classes.
sq::Mesh now stores all of it's materials in a single index buffer, using count and offset to draw each
Added a new draw_complete method to sq::Mesh, that draws all materials at once. Renamed draw_ibo to draw_material.
When rendering objects into shadow maps, non-punchthough objects are now drawn with draw_complete()
Refactored sq::Framebuffer. Removed the use() method, since glDrawBuffers actually only needs calling once.
Refactored usage of fbos. In general, new ones are only needed for different draw buffers. Otherwise, change attachments.
sq::Framebuffer now takes const references to textures, since it only needs the texture handle_default
Replace forward_list with vector wherever possible, since it is usually a better choice
Removed the ObjTraits template from sqt::wcoe. type_traits/typeid is now used instead.
Objects and cells are now stored as unique/raw pointers rather than shared/weak ones
HUGE refactoring of RPG's rendering code:
 - Renamed rndr::Graph to rndr::Renderer, since it wasn't actually a graph in any way
 - Replaced the separate cpp files with actual new classes: Shadows, Gbuffers, Lighting and Pretties
 - Object lists are now sorted and culled before they are iterated through for actual rendering
 - Removed the framebuffers from the light objects, they are now part of the renderer
 - Textures for effects are now deleted when the effect is turned off, to save vram
 - All rendering textures are now immutable, and are recreated when resized.
 - Removed the lumalpha shader, as it can just be done in another pass

There are quite a few things disabled in this version, namely particles and reflections. I will fix these in the next commit.

114. By James Gangur

Renamed src/ directory to source/, because I think it looks nicer.
Added more Doxygen stuff to LibSQEE. New things finished are app/Logging and gl/everything.
Moved Logging.xpp from sqee/app/ to sqee/debug/, since there are no classes in them
GLSLHeaders.c is now a cpp file, because it uses c++11 raw string literals
Added an OrderedMap class to libsqee. It replaces the unordered_map and deque combos in sq::Application.
Renamed RPG's ModelStatic object to ModelSimple, since static will soon mean something else
Parsing the various sqee file types will now throw meaningful exceptions on errors
Moved from opengl 4.1 to 4.2. I'll stay on this one for real this time.
Added the rest of the texture draw to screen debug functions
Refactored the SQEE application class and it's members:
 - Application now stores unique_ptr's to sf::Window and sf::ContextSettings (again)
 - Application now has a handle_default method that handles some events (close and resize)
 - The ChaiScript console is no longer a scene and handler. It's now a member of sq::Application.
 - Removed sq::BasicFPSScene. Application now has a new DebugOverlay class that does this.
 - sq::Scene::render() no longer takes frame time as an argument, since only the FPS needed it.
 - Made some methods of Scene and Handler pure virtual (again)
Removed the global settings and console instances from chaiscript, they are now members of app
Made RPG's SSAO and and Bloom shaders consistent at different screen resolutions
Updating the values in the uniform buffer of sq::Camera is now done in one gl call
Misc refactoring of RPG's wcoe::Object and children's init code
Renamed sq::ArmatureTrnsfrm to sq::ArmaTransform

This version also contains of lot of unused code from prototyping some indirect lighting stuff, I'll try and remove it in the near future (replace it with something that works). This is dependant on when I get a new GPU, since I really can't work with it on a GT 520.

113. By James Gangur

THIZ IZ LOTZ OF CODEZ
Changed OpenGL core version from 3.3 to 4.1 (hooray mesa!)
Renamed sq::SettingsMaps to sq::Settings, including file names
Removed the crnt/next/apply system from sq::Settings. It now has add, mod, get and check methods.
Removed several quality options:
- Shadow is now just small/large (removed highest setting)
- Got rid of the no filtering at all shadow mode (it was only really for debugging)
Increased the radius of the SSAO shader, both on low and high quality settings
Doubled the filter radius of all shadow filtering. This will suit the smoother lighting that is comming.
Added some stubs for Irradiance Volumes, for better ambient lighting. This will be a very big change.
Added the nanoflann library to extlibs. It provides a nice KD-Tree that will be used for irradiance volumes.
Added sets to sq::Settings that store settings that were changed since clear_changed() was last called
Refactored textures to use immutable storage. Resize method changed to allocate_storage.
Added a group of TextureMut classes that use mutable storage. They lack the load_from_file methods.
Added an "extra" member to rpg's Object class. It's a std::map<string, Boxed_Value>, for anything.
Added an "invalidate()" function rpg's Object. It tells the refresh function that something has changed.
Added (invalid == true) checks to refresh methods of all RPG object types, so they only do work when needed
Added functions to debug/OpenGL.xpp for drawing 2D and Cube textures to the screen. Array versions todo.
Improved the light shafts shader. It now shows a much smoother transition to the maximum value.
Added stubs for a new "MetaObject" object type to RPG. It will be used for running scripts.
Started adding doxygen comments to libSQEE. Currently just done the texture classes.
Moved the shadowmap resizing code into the refresh functions of the light classes
Moved the wcoe/obj/Object.xpp and wcoe/obj/Animation.xpp files into wcoe/
Renamed wcoe/obj directory to wcoe/objects

112. By James Gangur

A really, really big update that doesn't actually do much

- Added shaders for an awesome volumetric light shaft effect. Quality is toggleable with L.
- Rewrote the GLSL Preprocessor to add new features and error checking
  - Automatically adds #version and #extension lines to all shaders.
  - Adds #line when including headers, so the compiler will give correct error line numbers
  - Will now report errors when an include fails, rather than crashing
  - Include no longer takes quote around paths (#include path/to/header)
- Modified the cubemap loading functions. Cubemap textures are now always loaded from 6 seperate images
- Renamed the debug/Callbacks.hpp file to debug/OpenGL.hpp. Also added a .cpp partner file.
- Removed the viewport() method from textures. Use sq::VIEWPORT(texture.size).
- Removed resource destruction frm RigBody object, since it is now managed by reactphysics3d
- Removed JsonCPP completely, as I now have my own formats for all assets.
- Removed the CubeNrms and CubeTans arrays from maths/General.hpp
- Removed all of the enums from froward.hpp, as they were unused.
- Removed the #if SQEE_DEBUG condition around all the property checks in the RPG objects
- Changed the names of various functions in misc/Files.xpp
- Added windows version of get_files_from_dir function
- Added an SMAA shader. Have yet to start implementing it at all.
- Added an SQDEBUG macro into forward.hpp. It's a simple wrapper for #ifdef SQEE_DEUBUG.
- Added a whole bunch of new features to the SkyBox class and shaders
  - You can now change the colour, saturation, brightness and contrast
  - Also added the animation components to the class.
- Rearranged the compiled in GLSL headers. Added a set of colour space functions.
- Major modification to the CMake scripts
  - Re-added support for building and linking sqee statically
  - Fixed building (shared and static) sqee on windows
  - Added stubs for both Android and MacOSX
  - Added a special linux debug mode option, to link to debug versions of bundled libraries.
- Removed the old embed directory that was still there for some reason

111. By James Gangur

Just Aother Large-Ass Update

- Moved some generic GLSL headers out of sqee-rpg. They are now compiled in to libsqee (data/GLSLHeaders.c).
- Removed the old Sokoban and Flappy Bird tests. They have long since worked, and fixing them means completely rewriting them.
- Renamed some classes to be more consistent. SceneConsole->ConsoleScene, HandlerConsole->ConsoleHandler
- Prefixed and renamed the Basic scenes and handlers. They now follow the form of BasicCloseHandler.
- Moved the GLSL PreProcessor class from sqee/gl into sqee/app
- Added std::map and std::list includes and usings to sqee/forward.hpp
- The SQEE Mesh format now supports Vertex Colours as another property.
- Gave sq::Skin and sq::Mesh an extra constructor that takes a path and runs create() automatically.
- Added an sq::OrthoFrus class as a new bounding shape. Also added it to RPG's skylight class to perform culling when rendering shadow maps.
- Began refactoring the sq::Application class, to try and support fullscreen mode, but I've hit a snag with limitations in SFML.
- Last but not least, added an all-new Sokoban test! It's in early stages, but there is already quite a lot to it. Code is mega ugly, avert your eyes.

110. By James Gangur

Added Physics, with ReactPhysics3D!

- Added a basic PhysObject class to libsqee. It contains data loaded from a new format, .sqp
- Added RigBodyBasic and RigBodyMulti object types to rpg. Began implementing the Basic varient.
- RigBodyBasic is used for objects that are completely solid, without any joints or constraints. Multi will be for more complex objects.
- Removed the seperate assets paths singletons. There is now just one, and various functions just append their subpaths.
- Refactored and upgraded the basic text rendering system. It now supports rendering in any corner, a shadow for characters, and changing colour and alpha.
    - TODO: implement the "Centre" alignment modes
- Removed the gl and chai tests. They have not been updated or used in ages, and were no longer actually useful in that state.
    - TODO: add more tests! fix and update sokoban firstly.
- Made all resources file names PascalCase. This meant updating all of the Sponza textures and skins.
- Removed many old, unused resources from rpg. This includes the Ubuntu fonts, the old "WorldTest" cell and it's contents, and some old debug textures.

109. By James Gangur

Soooo many changes

- Completely redid the sq::Skeleton and sq::Animation classes, moving them into a single sq::Armature class
- The sq::Armature class, can be shared in exactly the same way as meshes and skins. The animation interface is now part of sqt::ModelSkelly.
- Renamed all the files to use PascalCase. They also, where applicable, match the name of the class they contain.
- Removed the requirement of headers in many of the resource formats. Size is now automatic from the number of items in the resource.
- Cleaned up the includes in most of the headers. They have been reordered and unneeded or old debug ones have been removed.
- Renamed some gl classes: Framebuffer->FrameBuffer, Uniformbuffer->UniformBuffer, Texture2DArray->TextureArray
- This commit message seems way too short, so probably lots of other stuff I forgot.

108. By James Gangur

Small Update before I rewrite the skeletal animation system

- Removed the MainCamera class from rpg, and the UboCamera class from sqee. There is now just one sq::Camera class, that uses ubos.
- Removed all the ugly macros in the rpg rendering code and replaced it with nice inline functions, now in sqee/gl/drawing.hpp
- Fixed the skeletal animation system, as well as possible with the way it currently works. I will be rewriting it.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
This branch contains Public information 
Everyone can see this information.