Added support for PKGV0018
Try to prevent crashing when shaders do not compile and go with whatever can be displayed
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
Added combo properties support
Bumped up GLSL version to 130 and added some extra definitions
This work goes on to #115, although the background won't start up yet because of shader compilation issues
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
~ Fixed combo setting based on the textures supplied to the image
~ Fixed vec4 shader constants not using the default value
Should fix#87
Signed-off-by: Alexis Maiquez Murcia <almamu@almamu.com>
~ ITextures can now also return sub-textures width and height
+ added proper code to handle animated images to properly play at normal speed
this should actually fix#79 for good
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
~ moved some things into CContext so main is a bit cleaner
~ moved wallpaper object creation into CWallpaper so main is a bit cleaner
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
~ moved pixmap, gc and image creation to the initialization
TODO: SUPPORT SCREEN SIZE CHANGES (THIS MIGHT NEED REINITIALIZATION OF THINGS)
~ moved fbo creation to initialization as it won't change anymore
~ reverted render code to the original loop as now the framebuffer is exactly as big as the whole display
~ moved glReadPixels off the wallpaper as that's code is exclusively used for screen rendering and not general rendering
~ XChangeProperty forces the update of the background, otherwise the compositor stops refreshing the screen and the background gets stuck
~ updated viewport variables to be integers instead of floats
~ reverted frame rendering code to be simpler and added the option to specify a framebuffer as target instead of screen
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
+ Added basic support for mouse position on shaders (still needs to be adjusted for backgrounds that are too big for the screen)
(this makes XRAY effects work)
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
~ shader passes now won't try to detect projection, texcoord or position, as this'll be specified as parameters
~ removed useless variables being stored
~ model view projection matrix is now stored by image, not by pass
~ proper calculation of centered images
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
~ material's binds are now a map by index so it's easier to use
- removed depth buffer for FBOs as they're not really useful (at least for now)
~ separated image setup in two stages so FBO creation happens before actually requiring them
- removed ping-pong FBOs where they didn't make sense
~ image's should now render to scene buffer directly whenever possible
~ better support for FBO scaling
~ rendering should now take into account targets and binds in a much better way
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
~ deprecated --dir --pkg options, the software will automatically detect the background we're loading
+ first draft of FBO support, there's still some extra work to do
~ texture header is now hidden behind getters so the textures can be any kind of source
~ proper setting of resolution and translation variables for textures
~ simplified call flow for any pass rendering, removing render functions on effect and material
~ framebuffer setup has to happen before object setup in the scene
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
~ quick and dirty hack to make combos propagate between shaders (this needs to be improved, left TODOs for that)
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
+ added support for texture format definition (TEX0FORMAT) although it might need some more investigation (specially for multi-pass shaders)
+ added implicit conversion from vec3 to vec2 in shaders
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
~ updated some strings to ensure the type-checking matches
+ added support for integer <-> float casting on constants
+ added support for vec2 variables
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
+ added helper to parse vector4 data from json
- removed some old, commented out code
+ added support for getting textures from the shader's code too (fixes masks on some backgrounds)
+ added support for shader varibles with default values from shader's source code
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
+ set proper glViewport instead of hardcoded 1920 by 1080 (this might require some changing and instead do a glViewport of the screen/window size and then scaling the backbuffers)
~ set proper texture size for pingpong buffers (to work with the viewport fixes)
- removed FREE_IMAGE_FORMAT as it's already included in the FreeImage library
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
~ changed how g_Time is calculated so any shader that uses it should behave properly
~ changed how the uniforms are set to a reinterpret_cast instead of static_cast to perform a direct pointer conversion (safe as we know the types were actually those types)
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
+ added texture resolution to CTexture so it can be properly used in the CPass
+ framebuffer textures now have filtering specified (prevents black screen), still need to adjust information about the texture
+ added proper uniform variable registration to ease the usage
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
- removed irrlicht functions and types from the active codebase so it's no longer required at compile time (CContext still there as the code might be still be useful)
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
~ written close to equivalent versions in OpenGL code using GLM and GLFW
~ written replacements for texture and package loading to not use irrlicht anymore
~ updated shader compiler as we now don't need to replace attributes anymore
+ added support for texture flags in the texture header (as they're needed for opengl to get proper information)
TODO: REWRITE VIDEO PLAYER SUPPORT AS THIS UPDATE EFFECTIVELY BREAKS IT
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
+ properly set g_TextureXResolution for shaders
+ properly set g_TextureX for shaders
+ properly set g_TextureXRotation for shaders
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
~ removed reduntant code from CImage and made use of the new versions of the same code on CEffect, CMaterial and CPass to simplify the rendering code and make it easier to read
TODO: FIX MATRIX THAT VERTICALLY FLIPS THE IMAGES!
~ properly linked output from CMaterial, CEffect and CPass so a full render pass outputs something to the screen
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
Added positioning code based on material origin, size, and scale.
Fixed mirrored vertices and mirrored BGRA pixels.
Added DXT3 support.
Fixed DXT decompression segfault due to sizeof (long).
Fixed RGBA packing order.
Enabled PKGV0008 support.
Fixed detection of json "scene" string with uppercase characters.
Fixed positioning of miscellaneous foreground objects.
(commits 72831e1b2f, 9017a5732e, 853d128830, af846053c8 and c45b58bc96)
~ updated CRotationRandom to support numeric and vectorial rotations
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
+ added PKGV0007 to the list of supported packages (experimental)
+ added support for parsing properties of type bolean
+ added parsing of a missing particle initializer (turbulentvelocityrandom)
+ added back sound playinh which was left out when rewritting
Signed-off-by: Alexis Maiquez Murcia <almamu@almamu.com>
* Adds FFmpeg to CMake
* Refactors to allow support for other wallpaper types
* Updates README.md for compilation requirements
* Initial video support without audio
* Properly support different wallpapers
* Fixes videos not rendering
* Nitpicks
* Moves code related to rendering from Core::CVideo to Render::CVideo
+ added parsing of bind section for shader passes
~ various new classes to properly handle texture targets, shader passes and materials
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
+ added fbos parsing from effect files
~ cleaned up effect parsing code
~ support for texture target parsing in materials for texture render targets
~ changed way of modifying textures from passes to a more abstracted way
~ moved shader constants to it's own namespace
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
+ added g_Time to global variable storage
- removed global g_Time from main
~ changed "shader parameters" to "shader variables" as it's a more apt naming
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
~ check for SDL initialization before playing audio to prevent error messages when there is not really any error
~ changed a missed iterator to auto on CSound
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
~ changed most pointers to const references to prevent modification, specially from the background parser
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
+ added check for texture rendering on startup
~ fixed possibly wrong texture size for passes
~ changed camera position
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
Take in mind that this feature is still in development, so the result most likely will be very different from the actual wallpaper engine
The final approach might be different from what's currently in use, but It's just a nice proof of concept approach
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
~ Improved Shader Compiler parameter list to a better approach
+ Added support for one-pass effects with shaders (only first shader/pass will be applied)
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
+ Added camera for new renderization code
+ Added scene for new renderization code
+ Added object for new renderization code
+ Added image for new renderization code
WARNING: THIS IS A REGRESSION AS IN SHADERS ARE NOT AS COMPLETE AS IN THE MASTER BRANCH
~ New renderization code in place
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
This includes changes to old code to be compatible, the externs won't be used once the renderer is rewritten and the old code removed
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
~ Updated #include directives to include full paths to files
~ Re-organized folder structure for the project
Signed-off-by: Alexis Maiquez <almamu@almamu.com>