GodComplex is intended to be a small Windows 64K intro that uses DirectX11. Now it's more of an all-purpose dev. framework... ^^
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
Images/In • Added some new PNG Dec 19, 2016
Packages • Loaded MS LTC tables and tried to use them Sep 14, 2018
Procedural • Moved godcomplex solution to VS2012 Nov 1, 2016
RendererD3D11 • Wrote a converter from cross to simple DDS cube map May 14, 2018
Scene • Renamed the Material class into "Shader" to be more coherent Jul 18, 2015
Utility • Fucking EOL changes! Mar 30, 2018
.gitignore • Solution update with new test project Nov 8, 2018
FractalNoise0.float . Better framerate, better resolution, better everything! Mar 23, 2013
GodComplex.aps . Finished refactoring primitives, geometry builders and POM texture … Nov 29, 2013
GodComplex.cpp • Moved godcomplex solution to VS2012 Nov 1, 2016
GodComplex.h • Started petting everything! :D Nov 12, 2016
GodComplex.rc • Wrote a little Voronoï cell debugger... Mar 27, 2015
GodComplex.vcxproj • Started petting everything! :D Nov 12, 2016
GodComplex.vcxproj.user • Moved godcomplex solution to VS2012 Nov 1, 2016
GodComplex2012.vcxproj.filters . Started rewriting the time-sliced tables computer but using the pix… Jul 17, 2013
Gradient_Photoshop.png . Updated cooker Aug 25, 2014
Gray128_Linear.png . Updated cooker Aug 25, 2014
LinearGradient.png . Database generator fixes Aug 9, 2014
README.md • Readme update Sep 4, 2018
Tests.sln • Solution update with new test project Nov 8, 2018
TexIrradiance_64x16.pom . Uncommented the clouds rendering and it's working again somehow... Nov 23, 2013
TexScattering_256x128x32.pom . Uncommented the clouds rendering and it's working again somehow... Nov 23, 2013
TexTransmittance_256x64.pom . Uncommented the clouds rendering and it's working again somehow... Nov 23, 2013
Tools.sln • Finally found the stupid bug => I was multiplying instead of dividi… Jul 26, 2018


God Complex: A 64K Experiment

Code ► Patapom

Originaly designed to create 64KB intros for the demoscene.

After some time, it became a bit more than a 64K intro framework and really became the core framework for all my experiments...

NOTE: ALL the parts described below have been thoroughly tested in real use condition! That means the code should be robust enough and you shouldn't encounter bugs very often (hopefully)...

What you will find in this framework:

  • Various libraries, including:

    • An image library that supports all formats the FreeImage library is supporting, plus the DDS format. It also offers a simple and efficient plotting service as well as a HDR=>LDR conversion service. It supports various color profiles and can be used as a very simple Profile Connection Space (CIE XYZ) to ensure a full control over your import/export pipeline as it attempts to apply the principles explained in my blog about colorimetry that you can find here and there.

    • A very simple yet efficient DirectX 11 rendering library. Don't expect a super optimized renderer here: the main goal is to quickly and easily prototype some tools and experiments! Nevertheless, all the necessary heavy-duty structures for creating powerful GPGPU softwares are there. Most of the tools I wrote are heavily using compute shaders by the way.

    • A multi-tier math library that is very simple to use as it mimics the vectors found in HLSL (i.e. float2, float3, float4, float4x4, etc.).

      The second tier of the library contains more involved tools like quaternions, pseudo- & quasi-random-number generators, spherical harmonics support, complex numbers suppport, noise generation algorithms, etc.

      The last tier of the library contains high-level "solver" tools like Levenberg-Marquardt, BFGS, simulated annealing or other linear regression tools.

      It also offers a GPU-accelerated 1D and 2D FFT library, but also the CPU version of the FFT and DFT.

  • Various generators, namely:

  • Various tests:

    • Area Light implementation, as used in the Dishonored 2 title + LTC technique
    • Filmic Curve + Histogram Auto-Exposure, as used in the Dishonored 2 title
    • Fresnel Tests, showing the various fresnel equations (Schlick, exact, and more recently the 2-terms approximation for metals described by http://jcgt.org/published/0003/04/03/paper.pdf)
    • Spherical harmonics Irradiance encoding/decoding experiments, as described in my blog post about SH.
    • HBIL Technique demo
    • Many others coming up as they still need to be converted from 32 to 64 bits...

What you will NOT find though:

  • Exactly the total amount of information in the Universe that is not represented by this bunch of code and data

More precisely:

  • Everything animation-related, except some basic support for quaternions
  • Everything mesh-related except the most basic mesh generators, as I loathe geometry problems :D
  • Everything sound-related, as I never wrote anything else than graphical stuff
  • Any meta-templated-convoluted shitty code that is abominable to read and debug (i.e. anything like the STL or boost, if you like those and desperately need to explain why, please just go away).

=► My main concerns are ► useability, ► readability, ► maintanability and most of all, ► simplicity (and God knows it's awfully hard to make something simple!)

Minimum requirements are:

This framework is written for the Microsoft Windows platform using Microsoft Visual Studio 64-bits C++ for the low-level part, it is (usually) wrapped in CLR Managed C++ to make the native low-level part easily accessible by the high-level tools and applications that are written in C# (if you're one of those guys who like to advocate why open-source software and linux is so much better than windows and desperately need to explain why, please just go away too).

You end up with tools that you can write very easily and very quickly thanks to C#, but that are also fast as lightning thanks to optimized native C++ and/or hardware acceleration offered by DirectX.

Best of both worlds, right?