Commit Graph

185 Commits

Author SHA1 Message Date
Hynak
c11c6928ea Fixes issue #59's origial issue 2022-02-25 14:23:37 -05:00
Alexis Maiquez
131801b7f0 ~ quick and dirty fix for composite color not being the right value (need to verify that this is actually what should happen)
fixes @C0nvert's #59 issue

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2022-02-23 09:50:55 +01:00
Alexis Maiquez
42b8c92c1c ~ Fix compilation with latest avcoded library
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2022-02-23 08:45:06 +01:00
Alexis Maiquez
fa2720f07c ~ Fixed multiple screens not getting a background drawn
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-12-04 23:49:28 +01:00
Alexis Maiquez
577b81215b Merge branch 'main' of git@github.com:Almamu/linux-wallpaperengine.git 2021-12-04 23:45:09 +01:00
Alexis Maiquez
18ab051d47 ~ Fix background setup not working properly after the implementation of mouse support
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-12-04 23:44:17 +01:00
Alexis Maiquez
e08a252f03 + Added brightness reading for image objects
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-12-04 23:15:56 +01:00
Alexis Maiquez
afe7452340 + added support for alpha and color loading for images
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-12-04 21:57:21 +01:00
Alexis Maiquez
816e0a6ddf ~ Hopefully take into account object scale properly
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-12-04 03:54:46 +01:00
Alexis Maiquez
49a5f9e2ab + added proper framebuffer clearing for passes
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-12-04 02:50:11 +01:00
Alexis Maiquez
b55f2e8bf4 + Added PKGV0015 support
+ 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>
2021-12-03 02:02:46 +01:00
Alexis Maiquez
d0572b257f ~ Combos can have no default value
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-12-02 22:00:43 +01:00
Alexis Maiquez
342522cd1d + Added handling for floating point precision qualifiers on type detection
+ Fixed textures not being detected properly on images that do not have any source

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-12-02 21:33:50 +01:00
Alexis Maiquez
13bcd52e8c ~ Fixed regression in composite layer handling
~ Properly fixed usage of "previous" as texture

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-11-30 23:49:08 +01:00
Alexis Maiquez
b920e94870 ~ Fixed some backgrounds being black because of wrong composite layer ordering
~ Videos should no longer appear vertically mirrored

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-11-30 21:32:19 +01:00
Alexis Maiquez
96fb8a6700 + Added some more default values for shaders so genericimage2 displays properly
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-11-29 14:37:09 +01:00
Alexis Maiquez
9d2e9b43ee ~ Fixed an infinite loop in the shader compiler
+ Added more valid variable types to the shader compiler so compilation doesn't fail

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-11-29 13:36:15 +01:00
Alexis Maiquez
adad3bd18c ~ Changed parser to give sane defaults to some values (like origin, scale and size for each object)
~ Improved path detection on command line arguments
- Removed references to old, deprecated options

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-11-29 12:57:15 +01:00
Alexis Maiquez
332507351f ~ use glClear instead of allocating pixels for FBOs creation
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-10-01 15:46:04 +02:00
Alexis Maiquez
4744304a3d ~ fixed multiple-screen rendering of backgrounds
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-10-01 04:16:13 +02:00
Alexis Maiquez
13ef4a96c2 ~ changed orthographic camera to use the center as 0, might get reverted,
~ 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>
2021-10-01 04:06:27 +02:00
Alexis Maiquez
f86eba347c ~ changed priority of assets loading, so background's assets should be loaded before looking into the assets folder
~ hopefully fixed effects that use shader targets so they now display properly

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-09-29 01:21:35 +02:00
Alexis Maiquez
f5e943b0fc + added ansiotropic filtering
~ 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>
2021-09-28 21:41:24 +02:00
Alexis Maiquez
5828b2ee80 + added some extra documentation on rendering based on observations and trial and error
~ 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>
2021-09-27 01:39:23 +02:00
Alexis Maiquez
50c9aebab0 - removed references to irrlicht (thanks to @mihawk90)
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-09-10 14:38:29 +02:00
Alexis Maiquez
93456940e3 ~ fix videos not being rendered properly
~ fix some combos not having the correct casing for shaders

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-09-08 21:57:57 +02:00
Alexis Maiquez
73c40c3d4e ~ fix resolutions higher than your current window
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-09-08 21:03:50 +02:00
Alexis Maiquez
3736c0c1b9 - removed some irr:: types left on the code that I missed
~ 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>
2021-09-08 20:30:03 +02:00
Alexis Maiquez
0a95b27272 + added somewhat proper scaling of (small) backgrounds
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-09-08 19:47:49 +02:00
Alexis Maiquez
48da16f7e5 ~ listen for screen size changes and setup proper viewport so everything is rendered from the center of the screen
~ fixed a typo on one of the vertex positions for the CWallpaper::render function

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-09-08 19:42:27 +02:00
Alexis Maiquez
0225cac917 ~ changed glfw to use a custom library version until upstream adds proper support for this
~ brought back proper background rendering and position detection

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-09-08 19:09:43 +02:00
Alexis Maiquez
2432ec9a36 ~ some cleanup of todos and dead code
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-09-05 22:02:58 +02:00
Alexis Maiquez
03c4660f5c ~ brought back path fixing functionality so all paths given in the command line now end with a /
+ 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>
2021-09-05 21:53:37 +02:00
Alexis Maiquez
154fe905bc ~ brought back video support
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-09-05 21:52:16 +02:00
Alexis Maiquez
113d84173e ~ changed readTexture for containers to produce a CTexture file ready to be used (simplifies loading textures)
~ fixed a write to null error on CDirectory that wasn't taking into account that length can be null

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-09-05 14:29:11 +02:00
Alexis Maiquez Murcia
30b4eb4cd4 ~ fix type extraction on shaders not working properly
+ added uint4 and mat4x3 types

Signed-off-by: Alexis Maiquez Murcia <almamu@almamu.com>
2021-09-04 21:49:48 +02:00
Alexis Maiquez
b152913d90 - removed useless variable types that are not being used anymore
~ 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>
2021-09-04 15:44:39 +02:00
Alexis Maiquez
65bfbe1493 + added some default values for TextureMipmap as they were not being set automatically by the compiler sometimes (and thus breaking the texture load)
+ 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>
2021-09-04 15:02:11 +02:00
Alexis Maiquez
2ffb5f1b24 + added an extra render pass to render the scene upside down (so it looks fine)
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-09-03 03:24:55 +02:00
Alexis Maiquez
16ed2f30de + added FreeImage for loading all the non-compiled textures (jpg, pngs, etc)
+ 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>
2021-09-02 23:59:00 +02:00
Alexis Maiquez
9d7d344b80 - removed commented code from main.cpp that is not useful anymore
~ 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>
2021-09-02 22:30:38 +02:00
Alexis Maiquez
59e6800f81 + added depthtesting and blending support for shader passes
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-09-02 09:05:12 +02:00
Alexis Maiquez
09d53e8dd7 + added proper value for a_TexCoord when the rendering is not hapening from the main texture
TODO: THIS IS ALL EXPERIMENTAL CODE, THESE VALUES WILL BE SETUP ON STARTUP AND NOT ON RUNTIME

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-09-01 20:10:21 +02:00
Alexis Maiquez
06c519ce79 - removed useless debugging output
~ changed attribs to be registered at a list too to make it easier to use

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-09-01 19:55:03 +02:00
Alexis Maiquez
d9c12d0b58 - removed .idea folder as that shouldn't have been uploaded in the first place
~ changed g_Time to float instead of double

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-09-01 15:30:00 +02:00
Alexis Maiquez
eb29078cfe - removed duplicated list of variables and unified under the new way of registering uniforms, simplifying required code
- removed commented out code on CPass as there's already almost equivalent code working

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-09-01 01:48:21 +02:00
Alexis Maiquez
7613bf254a ~ updated readme to reflect current status
+ 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>
2021-09-01 01:27:01 +02:00
Alexis Maiquez
8bc19b20ae + added support for the isVisible flag on images
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-08-31 02:51:10 +02:00
Alexis Maiquez
dd76439901 ~ fixed a_TexCoord variable not having the correct values
- 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>
2021-08-31 02:29:28 +02:00
Alexis Maiquez
291b7e364a - removed/commented out most irrlicht-specific code
~ 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>
2021-08-31 01:14:08 +02:00
Alexis Maiquez
861f2261ef ~ changed the texture resolution constant on shaders, although it is 100% incorrect, seems to get some more wallpapers working
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-08-08 09:41:25 +02:00
Alexis Maiquez
537acb97bd ~ shader precompilation should be done in order to ensure that the vertex shader has information discovered by the fragment shader (like new combos) should fix some effects on backgrounds
+ added partial support for shader constant values from the scene.json

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-08-08 08:41:03 +02:00
Alexis Maiquez
8d0eb6d63c ~ combo value detection should now update combo list on shaders too instead of writting them directly
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-08-08 07:46:06 +02:00
Alexis Maiquez
b4a6dc9bcd ~ fragment shaders can set new combos on rare occasions, so updated shader compiler to reflect this possibility
~ also updated shader passes to ensure it takes this into account

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-08-08 07:41:12 +02:00
Alexis Maiquez
4309ca722d + properly set g_Time for shaders
+ 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>
2021-08-08 02:02:17 +02:00
Alexis Maiquez
2673179909 + added a really dirty fix for the upside down textures that had applied some effects to them
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-08-08 01:14:52 +02:00
Alexis Maiquez
c93c72edc0 + added orthogonal flag to the camera
~ 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>
2021-07-29 16:05:15 +02:00
Alexis Maiquez
89f956e796 ~ fix image positioning when the camera center was not 0, 0, 0
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2021-06-16 18:38:37 +02:00
Alexis Maiquez
e89e80c2b8 ~ Fixed a mistake in the variable parsing for the shader pre-compiler, arrays are not always expected
Signed-off-by: Alexis Maiquez Murcia <almamu@almamu.com>
2020-10-29 12:00:51 +01:00
Alexis Maiquez
cf70484188 ~ forward port changes on the pull request #22 by @ambidot
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>
2020-07-29 13:21:54 +02:00
IceCryptonym
5d5ce361fe
Initial video support without audio (#14)
* 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
2020-04-27 18:50:17 +02:00
IceCryptonym
b37c519209 Nitpicks 2020-03-25 10:20:34 +10:00
IceCryptonym
5122206d83 Renames jsonFindValueRequired to jsonFindRequired 2020-03-24 15:38:56 +10:00
IceCryptonym
e30f62d7a1 Clean up json.find(...) calls 2020-03-24 15:32:27 +10:00
Alexis Maiquez
274bb08e4f ~ fix images being rendered fliped horizontally
+ added support for arrays in shaders

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2020-03-24 01:00:33 +01:00
Alexis Maiquez
8d2f2adcfa ~ added proper texture input/output
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2019-09-11 15:52:51 +02:00
Alexis Maiquez
cbe79b535b ~ changed wrong class name crom CPassess to CPass
+ 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>
2019-09-11 15:32:57 +02:00
Alexis Maiquez
5e94fc7bab + added parsing of dependencies for objects
+ 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>
2019-09-11 09:15:50 +02:00
Alexis Maiquez
e32bc4d6f1 ~ effect parsing now takes into account combos and assigns the shader constants to the proper shader pass
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2019-09-10 15:28:59 +02:00
Alexis Maiquez
318a99d5ca + added vector3 support for shader constants (looks like strings were vector3 after all)
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2019-09-10 15:01:59 +02:00
Alexis Maiquez
4358e7c173 - removed shader string constants, shaders do not have any, for future reference, these might be vectors or colors
+ shader constants now should be correctly applied as values for variables whenever possible

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2019-09-10 14:54:49 +02:00
Alexis Maiquez
dc36adb200 + added mouse input handling and mouse position variable to shaders
+ added vector2 pointer class for shader parameters

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2019-09-10 13:55:12 +02:00
Alexis Maiquez
d7cf8af7ca + created global variable storage for shaders
+ 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>
2019-09-10 13:27:18 +02:00
Alexis Maiquez
d03edb7c1e ~ cleaned up main function and moved initialization functions to a more proper place
~ 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>
2019-09-10 12:55:45 +02:00
Alexis Maiquez
ce67c0bf64 ~ moved file resolution to the Irrlicht Context class
Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2019-09-10 11:32:15 +02:00
Alexis Maiquez
3587fdec1e ~ changed all iterators to auto
~ changed most pointers to const references to prevent modification, specially from the background parser

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2019-09-10 11:02:45 +02:00
Alexis Maiquez
3371e10b01 ~ fixed segmentation fault when creating a scene
+ 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>
2019-09-09 16:06:28 +02:00
Alexis Maiquez
f7be32eed3 ~ moved OnRegisterSceneNode to CObject as this function should barely change
+ support for sounds added

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2019-09-09 10:13:06 +02:00
Alexis Maiquez
e285b313e0 ~ use clearcolor from scene instead of using black
~ camera should use it's own getters, not access the m_camera object directly

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2019-09-09 09:46:29 +02:00
Alexis Maiquez
d13ad3fdca ~ moved passes counter to the correct place
~ generated unique name for pass textures

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2019-09-09 09:20:27 +02:00
Alexis Maiquez
7ab533aaab + Support for multi-passes materials added
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>
2019-09-09 02:30:29 +02:00
Alexis Maiquez
32a6a7af65 + Added parsing of shader constants for effects
~ 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>
2019-09-08 21:09:19 +02:00
Alexis Maiquez
fc8778ab64 ~ More changes to the new parser to properly load object passes from JSON (combos, elements missing, shader, etc)
+ 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>
2019-09-06 15:54:41 +02:00
Alexis Maiquez
b8b3c2899d ~ Removed static variables in namespace WallpaperEngine::Irrlicht and moved to a context approach
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>
2019-09-05 17:24:16 +02:00
Alexis Maiquez
1c50095ead ~ Changed FileSystem/utils.h to FileSystem/FileSystem.h following the same criteria used in Core namespace
~ Updated #include directives to include full paths to files
~ Re-organized folder structure for the project

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2019-09-04 09:18:33 +02:00