GPU Texture Generator

Overview

Imogen

GPU/CPU Texture Generator

GPU Texture generator using dear imgui for UI. Not production ready and a bit messy but really fun to code. This is an hybrid project that can run natively or on the web (thanks to emscripten). Basically, add GPU and CPU nodes in a graph to manipulate and generate images. A web build is available here : http://skaven.fr/imogen/ Image of Imogen 0.13 Web Edition Currently nodes can be written in GLSL or C or Python.

Image of Imogen 0.9 Image of Imogen 0.9

Use CMake and VisualStudio to build it. Windows and web builds are available.

Web Edition limitations:

  • no threaded jobs
  • no C/Python nodes
  • no Python plugins
  • no file load/save

Features:

  • Node based texture editing
  • material library browser
  • edit/change node shaders inside the app
  • bake textures to .png, .jpg, .tga, .bmp, .hdr, mp4
  • PBR preview
  • timeline for parameters animation

Currently implemented nodes

  • circle and square generator
  • sine generator
  • checker transform
  • transform
  • Mul/Add
  • smoothstep
  • pixelize
  • blur
  • normal map from height map
  • sphere/plan previewer
  • Hexagon
  • Mul-Add colors
  • Blend (add, mul, min, max)
  • Invert color
  • Circle Splatter
  • Ramp
  • Tile
  • Polar coordinates
  • ...

Check the project page for roadmap.


This software uses the following (awesome) projects:

Dear ImGui - Omar Cornut https://github.com/ocornut/imgui

stb_image, stb_image_write - Sean T. Barett https://github.com/nothings/stb

EnkiTS - Doug Binks https://github.com/dougbinks/enkiTS

Tiny C Compiler - Fabrice Bellard https://bellard.org/tcc/

SDL2 - https://www.libsdl.org/

NativeFileDialog - Michael Labbe https://github.com/mlabbe/nativefiledialog

gl3w - Slavomir Kaslev https://github.com/skaslev/gl3w

TinyDir - https://github.com/cxong/tinydir

cmft - cubemap filtering tool - Dario Manesku https://github.com/dariomanesku/cmft

dear imgui color scheme - codz01 https://github.com/ocornut/imgui/issues/1902#issuecomment-429445321

FFMPEG - Fabrice Bellard

Python 3 - Python.org

pybind 11 - https://github.com/pybind/pybind11

RapidJSON - https://github.com/Tencent/rapidjson

nanosvg - Mikko Mononen https://github.com/memononen/nanosvg

GLSL-PathTracer - knightcrawler25 https://github.com/knightcrawler25/GLSL-PathTracer

imgui_markdown - Juliette Foucaut https://github.com/juliettef/imgui_markdown

CGLTF - Johannes Kuhlmann https://github.com/jkuhlmann/cgltf

Issues
  • C Node question

    C Node question

    I've been playing around with the node editor and it is a ton of fun. I have a question about the C nodes. I've been trying to add more functionality to the C nodes and I am attempting to include libraries like stdio and the like, but if I add an include to any of the C node scripts I get a rotating set of errors that either say source not found, relating to the ntdll.dll or an "InProcessClient.pdb not loaded, Access violation writing location" error. Any ideas?

    Thanks!

    opened by brionholland 8
  • Replacement for libtcc

    Replacement for libtcc

    Currently some nodes (paint, file read/write) are coded in C using libtcc. There are some unrecoverable errors, will not work in JS world because of JIT and I don't feel like recompiling libtcc with emscripten. I'm looking for alternative solution. 1 might be to replace it with a JS interpreter. What are other options?

    enhancement question 
    opened by CedricGuillemet 7
  • 0.6.0 crashes immediately on start

    0.6.0 crashes immediately on start

    windows 7 64bit

    0.5.0 works

    using gdb i found:

    (gdb) run Starting program: ...\Imogen\imogen.exe [New Thread 8244.0x4c8] [New Thread 8244.0x2e04] [New Thread 8244.0x26f8] [New Thread 8244.0xdf4] [New Thread 8244.0x2e8c] warning: Fatal Python error: warning: unable to load the file system codec warning: [Thread 8244.0x2e8c exited with code 3] [Thread 8244.0x26f8 exited with code 3] [Thread 8244.0xdf4 exited with code 3] [Thread 8244.0x2e04 exited with code 3] [Inferior 1 (process 8244) exited with code 03]

    opened by Xyrio 3
  • Imogen web version

    Imogen web version

    Compiled 0.13 (because 0.14 is not ready yet) with emscripten. http://skaven.fr/imogen/imogen.html Many, many, like, many broken stuff BUT it runs. Pretty happy with the result. Branch is https://github.com/CedricGuillemet/Imogen/tree/dev-0.13-emscripten run emb.bat to compile it once you have emscripten sdk installed and activated.

    opened by CedricGuillemet 2
  • Crossplatform CMakeLists.txt

    Crossplatform CMakeLists.txt

    Not perfect yet, still require manual path for tcc

    I'll try to put a hand on a windows system, I'm sure we can make library detection automatic on windows as well

    opened by crazyjul 2
  • Parse .glsl code to generate meta datas

    Parse .glsl code to generate meta datas

    For now, the metadatas are stored in Library. I'd like to get more freedom/reactivity and generate the metadata (basically parameters and types) from a parsing (threaded/jobified) of those .glsl

    enhancement help wanted 
    opened by CedricGuillemet 2
  • Release 0.2

    Release 0.2

    Previously planed for this weekend, v0.2 is a bit delayed as I rewrote the evaluation code multiple times this weekend. I'm more happy with it but it can still be better. I will release it monday or tuesday

    opened by CedricGuillemet 2
  • Copy and Paste nodes

    Copy and Paste nodes

    I don't know if there is no implementation of copy and paste yet, but i can't copy and paste nodes. If there isn't an implementation for that, could you make it please? it would help a lot. ^^

    opened by MatheusPese 2
  • Creating looped graph leads to broken data

    Creating looped graph leads to broken data

    If you have two items with input and output, and connect them back to each other, not only does the application crash, but it saves the state of the project so that if you load the same graph again, it immediately crashes.

    opened by jarikomppa 2
  • Compilation under clang

    Compilation under clang

    This is the first part of changes needed for other platforms. I do not have windows, so I haven't tried it back. Next PR will be reworked CMakeLists to work on osx/linux.

    opened by crazyjul 1
  • Question about Imogen itself

    Question about Imogen itself

    Is this tool related to the internal java-based SCEE tool also named imogen? if it is, and does the same thing, I have a couple of followup questions.

    opened by akinunsal 1
  • Is Imogen dead?

    Is Imogen dead?

    There hasn't been any development in quite some time. Is this project still active or expected to become active again?

    I've been checking for new releases, but nothing seems to have happened for more than a full year now - no commits and no releases.

    I'd really love to see Imogen develop, as there isn't really any solid FOSS PBR seamless map generation tool out there, and Imogen seemed to be a very promising project.

    Sadly I wasn't ever able to use it due to problems with running it on Linux.

    opened by unfa 3
  • Web build doesn't build materials / show anything

    Web build doesn't build materials / show anything

    When I open any material in the web version at http://skaven.fr/imogen/ it lacks any preview, and manually hitting "Build current material" gets stuck at 0%.

    I'm using Firefox 72.0.1 (64-bit).

    There are some warnings and errors in my browsers debugger console, but I'm not sure which one would be relevant to this. I'm not sure if this issue only affects me or also other users / browsers. I can probably provide more details from those logs if requested. For now I'll assume that this issue is easy to reproduce (I believe #76 also mentions this problem?).

    opened by JayFoxRox 1
  • Better UI Idea & Web Issue

    Better UI Idea & Web Issue

    Idea: Maybe you can make your UI better looking if you use blender 2.8 UI. Issue: Material previews are blank, if I try one of the examples that happens too.

    opened by GrbavaCigla 3
  • Building on linux

    Building on linux

    I have been trying to build it on Linux, but I'm having some compilation errors, the first one was regarding BGFX_CONFIG_RENDERER_OPENGLES, I manage to fix it by changing

    https://github.com/CedricGuillemet/Imogen//blob/dev-0.14/CMakeLists.txt#L82 to be ADD_DEFINITIONS(-DBGFX_CONFIG_RENDERER_OPENGLES=31) but now I'm getting: undefined reference to 'stbi_write_png' when linking.

    By the way, great work, with a little bit of marketing it can become a huge open source project.

    opened by leiserfg 6
  • Can't build on Linux - unknown platform

    Can't build on Linux - unknown platform

    I'm trying to build latest Master branch code of Imogen on Manjaro Linux. This is what I get:

    [[email protected] Imogen]$ cmake .
    -- The C compiler identification is GNU 8.3.0
    -- The CXX compiler identification is GNU 8.3.0
    -- Check for working C compiler: /usr/bin/cc
    -- Check for working C compiler: /usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Found PkgConfig: /usr/bin/pkg-config (found version "1.6.1") 
    -- Checking for module 'gtk+-3.0'
    --   Found gtk+-3.0, version 3.24.8
    CMake Warning (dev) at /usr/share/cmake-3.14/Modules/FindOpenGL.cmake:275 (message):
      Policy CMP0072 is not set: FindOpenGL prefers GLVND by default when
      available.  Run "cmake --help-policy CMP0072" for policy details.  Use the
      cmake_policy command to set the policy and suppress this warning.
    
      FindOpenGL found both a legacy GL library:
    
        OPENGL_gl_LIBRARY: /usr/lib/libGL.so
    
      and GLVND libraries for OpenGL and GLX:
    
        OPENGL_opengl_LIBRARY: /usr/lib/libOpenGL.so
        OPENGL_glx_LIBRARY: /usr/lib/libGLX.so
    
      OpenGL_GL_PREFERENCE has not been set to "GLVND" or "LEGACY", so for
      compatibility with CMake 3.10 and below the legacy GL library will be used.
    Call Stack (most recent call first):
      CMakeLists.txt:76 (find_package)
    This warning is for project developers.  Use -Wno-dev to suppress it.
    
    -- Found OpenGL: /usr/lib/libOpenGL.so   
    -- Console is hidden
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /data/Applications/Imogen
    [[email protected] Imogen]$ make 
    Scanning dependencies of target Imogen
    [  2%] Building CXX object CMakeFiles/Imogen.dir/src/Bitmap.cpp.o
    In file included from /data/Applications/Imogen/src/Bitmap.cpp:26:
    /data/Applications/Imogen/src/Platform.h:92:2: error: #error unknown platform
     #error unknown platform
      ^~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:82:5: error: ‘GL_RGB’ was not declared in this scope
         GL_RGB,
         ^~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:82:5: note: suggested alternative: ‘NSVG_RGB’
         GL_RGB,
         ^~~~~~
         NSVG_RGB
    /data/Applications/Imogen/src/Bitmap.cpp:83:5: error: ‘GL_RGB’ was not declared in this scope
         GL_RGB,
         ^~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:83:5: note: suggested alternative: ‘NSVG_RGB’
         GL_RGB,
         ^~~~~~
         NSVG_RGB
    /data/Applications/Imogen/src/Bitmap.cpp:84:5: error: ‘GL_RGB’ was not declared in this scope
         GL_RGB,
         ^~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:84:5: note: suggested alternative: ‘NSVG_RGB’
         GL_RGB,
         ^~~~~~
         NSVG_RGB
    /data/Applications/Imogen/src/Bitmap.cpp:85:5: error: ‘GL_RGB’ was not declared in this scope
         GL_RGB,
         ^~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:85:5: note: suggested alternative: ‘NSVG_RGB’
         GL_RGB,
         ^~~~~~
         NSVG_RGB
    /data/Applications/Imogen/src/Bitmap.cpp:86:5: error: ‘GL_RGB’ was not declared in this scope
         GL_RGB,
         ^~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:86:5: note: suggested alternative: ‘NSVG_RGB’
         GL_RGB,
         ^~~~~~
         NSVG_RGB
    /data/Applications/Imogen/src/Bitmap.cpp:87:5: error: ‘GL_RGBA’ was not declared in this scope
         GL_RGBA, // RGBE
         ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:87:5: note: suggested alternative: ‘NL_ARGMAX’
         GL_RGBA, // RGBE
         ^~~~~~~
         NL_ARGMAX
    /data/Applications/Imogen/src/Bitmap.cpp:89:5: error: ‘GL_RGBA’ was not declared in this scope
         GL_RGBA,
         ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:89:5: note: suggested alternative: ‘NL_ARGMAX’
         GL_RGBA,
         ^~~~~~~
         NL_ARGMAX
    /data/Applications/Imogen/src/Bitmap.cpp:90:5: error: ‘GL_RGBA’ was not declared in this scope
         GL_RGBA,
         ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:90:5: note: suggested alternative: ‘NL_ARGMAX’
         GL_RGBA,
         ^~~~~~~
         NL_ARGMAX
    /data/Applications/Imogen/src/Bitmap.cpp:91:5: error: ‘GL_RGBA’ was not declared in this scope
         GL_RGBA,
         ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:91:5: note: suggested alternative: ‘NL_ARGMAX’
         GL_RGBA,
         ^~~~~~~
         NL_ARGMAX
    /data/Applications/Imogen/src/Bitmap.cpp:92:5: error: ‘GL_RGBA’ was not declared in this scope
         GL_RGBA,
         ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:92:5: note: suggested alternative: ‘NL_ARGMAX’
         GL_RGBA,
         ^~~~~~~
         NL_ARGMAX
    /data/Applications/Imogen/src/Bitmap.cpp:93:5: error: ‘GL_RGBA’ was not declared in this scope
         GL_RGBA,
         ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:93:5: note: suggested alternative: ‘NL_ARGMAX’
         GL_RGBA,
         ^~~~~~~
         NL_ARGMAX
    /data/Applications/Imogen/src/Bitmap.cpp:95:5: error: ‘GL_RGBA’ was not declared in this scope
         GL_RGBA, // RGBM
         ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:95:5: note: suggested alternative: ‘NL_ARGMAX’
         GL_RGBA, // RGBM
         ^~~~~~~
         NL_ARGMAX
    /data/Applications/Imogen/src/Bitmap.cpp:98:5: error: ‘GL_RGB’ was not declared in this scope
         GL_RGB,
         ^~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:98:5: note: suggested alternative: ‘NSVG_RGB’
         GL_RGB,
         ^~~~~~
         NSVG_RGB
    /data/Applications/Imogen/src/Bitmap.cpp:99:5: error: ‘GL_RGB’ was not declared in this scope
         GL_RGB,
         ^~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:99:5: note: suggested alternative: ‘NSVG_RGB’
         GL_RGB,
         ^~~~~~
         NSVG_RGB
    /data/Applications/Imogen/src/Bitmap.cpp:100:5: error: ‘GL_RGB’ was not declared in this scope
         GL_RGB,
         ^~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:100:5: note: suggested alternative: ‘NSVG_RGB’
         GL_RGB,
         ^~~~~~
         NSVG_RGB
    /data/Applications/Imogen/src/Bitmap.cpp:101:5: error: ‘GL_RGB’ was not declared in this scope
         GL_RGB,
         ^~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:101:5: note: suggested alternative: ‘NSVG_RGB’
         GL_RGB,
         ^~~~~~
         NSVG_RGB
    /data/Applications/Imogen/src/Bitmap.cpp:102:5: error: ‘GL_RGB’ was not declared in this scope
         GL_RGB,
         ^~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:102:5: note: suggested alternative: ‘NSVG_RGB’
         GL_RGB,
         ^~~~~~
         NSVG_RGB
    /data/Applications/Imogen/src/Bitmap.cpp:103:5: error: ‘GL_RGBA’ was not declared in this scope
         GL_RGBA, // RGBE
         ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:103:5: note: suggested alternative: ‘NL_ARGMAX’
         GL_RGBA, // RGBE
         ^~~~~~~
         NL_ARGMAX
    /data/Applications/Imogen/src/Bitmap.cpp:105:5: error: ‘GL_RGBA’ was not declared in this scope
         GL_RGBA,
         ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:105:5: note: suggested alternative: ‘NL_ARGMAX’
         GL_RGBA,
         ^~~~~~~
         NL_ARGMAX
    /data/Applications/Imogen/src/Bitmap.cpp:106:5: error: ‘GL_RGBA’ was not declared in this scope
         GL_RGBA,
         ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:106:5: note: suggested alternative: ‘NL_ARGMAX’
         GL_RGBA,
         ^~~~~~~
         NL_ARGMAX
    /data/Applications/Imogen/src/Bitmap.cpp:107:5: error: ‘GL_RGBA’ was not declared in this scope
         GL_RGBA,
         ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:107:5: note: suggested alternative: ‘NL_ARGMAX’
         GL_RGBA,
         ^~~~~~~
         NL_ARGMAX
    /data/Applications/Imogen/src/Bitmap.cpp:108:5: error: ‘GL_RGBA’ was not declared in this scope
         GL_RGBA,
         ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:108:5: note: suggested alternative: ‘NL_ARGMAX’
         GL_RGBA,
         ^~~~~~~
         NL_ARGMAX
    /data/Applications/Imogen/src/Bitmap.cpp:109:5: error: ‘GL_RGBA’ was not declared in this scope
         GL_RGBA,
         ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:109:5: note: suggested alternative: ‘NL_ARGMAX’
         GL_RGBA,
         ^~~~~~~
         NL_ARGMAX
    /data/Applications/Imogen/src/Bitmap.cpp:111:5: error: ‘GL_RGBA’ was not declared in this scope
         GL_RGBA, // RGBM
         ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:111:5: note: suggested alternative: ‘NL_ARGMAX’
         GL_RGBA, // RGBM
         ^~~~~~~
         NL_ARGMAX
    /data/Applications/Imogen/src/Bitmap.cpp:116:5: error: ‘GL_TEXTURE_CUBE_MAP_POSITIVE_X’ was not declared in this scope
         GL_TEXTURE_CUBE_MAP_POSITIVE_X,
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:117:5: error: ‘GL_TEXTURE_CUBE_MAP_NEGATIVE_X’ was not declared in this scope
         GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:118:5: error: ‘GL_TEXTURE_CUBE_MAP_POSITIVE_Y’ was not declared in this scope
         GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:119:5: error: ‘GL_TEXTURE_CUBE_MAP_NEGATIVE_Y’ was not declared in this scope
         GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:120:5: error: ‘GL_TEXTURE_CUBE_MAP_POSITIVE_Z’ was not declared in this scope
         GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:121:5: error: ‘GL_TEXTURE_CUBE_MAP_NEGATIVE_Z’ was not declared in this scope
         GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp: In function ‘void SaveCapture(const string&, int, int, int, int)’:
    /data/Applications/Imogen/src/Bitmap.cpp:132:19: error: ‘GL_VIEWPORT’ was not declared in this scope
         glGetIntegerv(GL_VIEWPORT, viewport);
                       ^~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:132:5: error: ‘glGetIntegerv’ was not declared in this scope
         glGetIntegerv(GL_VIEWPORT, viewport);
         ^~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:132:5: note: suggested alternative: ‘getdate_err’
         glGetIntegerv(GL_VIEWPORT, viewport);
         ^~~~~~~~~~~~~
         getdate_err
    /data/Applications/Imogen/src/Bitmap.cpp:136:48: error: ‘GL_RGB’ was not declared in this scope
         glReadPixels(x, viewport[3] - y - h, w, h, GL_RGB, GL_UNSIGNED_BYTE, imgBits);
                                                    ^~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:136:48: note: suggested alternative: ‘NSVG_RGB’
         glReadPixels(x, viewport[3] - y - h, w, h, GL_RGB, GL_UNSIGNED_BYTE, imgBits);
                                                    ^~~~~~
                                                    NSVG_RGB
    /data/Applications/Imogen/src/Bitmap.cpp:136:56: error: ‘GL_UNSIGNED_BYTE’ was not declared in this scope
         glReadPixels(x, viewport[3] - y - h, w, h, GL_RGB, GL_UNSIGNED_BYTE, imgBits);
                                                            ^~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:136:5: error: ‘glReadPixels’ was not declared in this scope
         glReadPixels(x, viewport[3] - y - h, w, h, GL_RGB, GL_UNSIGNED_BYTE, imgBits);
         ^~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp: In static member function ‘static unsigned int Image::Upload(Image*, unsigned int, int)’:
    /data/Applications/Imogen/src/Bitmap.cpp:260:9: error: ‘glGenTextures’ was not declared in this scope
             glGenTextures(1, &textureId);
             ^~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:262:50: error: ‘GL_TEXTURE_2D’ was not declared in this scope
         unsigned int targetType = (cubeFace == -1) ? GL_TEXTURE_2D : GL_TEXTURE_CUBE_MAP;
                                                      ^~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:262:66: error: ‘GL_TEXTURE_CUBE_MAP’ was not declared in this scope
         unsigned int targetType = (cubeFace == -1) ? GL_TEXTURE_2D : GL_TEXTURE_CUBE_MAP;
                                                                      ^~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:263:5: error: ‘glBindTexture’ was not declared in this scope
         glBindTexture(targetType, textureId);
         ^~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:274:18: error: ‘GL_UNSIGNED_BYTE’ was not declared in this scope
                      GL_UNSIGNED_BYTE,
                      ^~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:267:5: error: ‘glTexImage2D’ was not declared in this scope
         glTexImage2D((cubeFace == -1) ? GL_TEXTURE_2D : glCubeFace[cubeFace],
         ^~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:276:14: error: ‘GL_LINEAR’ was not declared in this scope
         TexParam(GL_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, targetType);
                  ^~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:276:14: note: suggested alternative: ‘__LINE__’
         TexParam(GL_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, targetType);
                  ^~~~~~~~~
                  __LINE__
    /data/Applications/Imogen/src/Bitmap.cpp:276:36: error: ‘GL_CLAMP_TO_EDGE’ was not declared in this scope
         TexParam(GL_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, targetType);
                                        ^~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp: In member function ‘void RenderTarget::BindAsTarget() const’:
    /data/Applications/Imogen/src/Bitmap.cpp:458:23: error: ‘GL_FRAMEBUFFER’ was not declared in this scope
         glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
                           ^~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:458:5: error: ‘glBindFramebuffer’ was not declared in this scope
         glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
         ^~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:459:5: error: ‘glViewport’ was not declared in this scope
         glViewport(0, 0, mImage->mWidth, mImage->mHeight);
         ^~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp: In member function ‘void RenderTarget::BindAsCubeTarget() const’:
    /data/Applications/Imogen/src/Bitmap.cpp:464:19: error: ‘GL_TEXTURE_CUBE_MAP’ was not declared in this scope
         glBindTexture(GL_TEXTURE_CUBE_MAP, mGLTexID);
                       ^~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:464:5: error: ‘glBindTexture’ was not declared in this scope
         glBindTexture(GL_TEXTURE_CUBE_MAP, mGLTexID);
         ^~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:465:23: error: ‘GL_FRAMEBUFFER’ was not declared in this scope
         glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
                           ^~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:465:5: error: ‘glBindFramebuffer’ was not declared in this scope
         glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
         ^~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp: In member function ‘void RenderTarget::BindCubeFace(size_t, int, int)’:
    /data/Applications/Imogen/src/Bitmap.cpp:471:9: error: ‘GL_FRAMEBUFFER’ was not declared in this scope
             GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GLenum(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face), mGLTexID, mipmap);
             ^~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:471:25: error: ‘GL_COLOR_ATTACHMENT0’ was not declared in this scope
             GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GLenum(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face), mGLTexID, mipmap);
                             ^~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:471:54: error: ‘GL_TEXTURE_CUBE_MAP_POSITIVE_X’ was not declared in this scope
             GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GLenum(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face), mGLTexID, mipmap);
                                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:471:47: error: ‘GLenum’ was not declared in this scope
             GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GLenum(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face), mGLTexID, mipmap);
                                                   ^~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:471:47: note: suggested alternative: ‘enum’
             GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GLenum(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face), mGLTexID, mipmap);
                                                   ^~~~~~
                                                   enum
    /data/Applications/Imogen/src/Bitmap.cpp:470:5: error: ‘glFramebufferTexture2D’ was not declared in this scope
         glFramebufferTexture2D(
         ^~~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:472:5: error: ‘glViewport’ was not declared in this scope
         glViewport(0, 0, faceWidth >> mipmap, faceWidth >> mipmap);
         ^~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp: In member function ‘void RenderTarget::Destroy()’:
    /data/Applications/Imogen/src/Bitmap.cpp:478:9: error: ‘glDeleteTextures’ was not declared in this scope
             glDeleteTextures(1, &mGLTexID);
             ^~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:480:9: error: ‘glDeleteTextures’ was not declared in this scope
             glDeleteTextures(1, &mGLTexDepth);
             ^~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:483:13: error: ‘glIsFramebuffer’ was not declared in this scope
             if (glIsFramebuffer(mFbo))
                 ^~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:485:13: error: ‘glDeleteFramebuffers’ was not declared in this scope
                 glDeleteFramebuffers(1, &mFbo);
                 ^~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:493:9: error: ‘glDeleteRenderbuffers’ was not declared in this scope
             glDeleteRenderbuffers(1, &mDepthBuffer);
             ^~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp: In member function ‘void RenderTarget::InitBuffer(int, int, bool)’:
    /data/Applications/Imogen/src/Bitmap.cpp:530:5: error: ‘glGenFramebuffers’ was not declared in this scope
         glGenFramebuffers(1, &mFbo);
         ^~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:531:23: error: ‘GL_FRAMEBUFFER’ was not declared in this scope
         glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
                           ^~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:531:5: error: ‘glBindFramebuffer’ was not declared in this scope
         glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
         ^~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:534:5: error: ‘glGenTextures’ was not declared in this scope
         glGenTextures(1, &mGLTexID);
         ^~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:535:19: error: ‘GL_TEXTURE_2D’ was not declared in this scope
         glBindTexture(GL_TEXTURE_2D, mGLTexID);
                       ^~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:535:5: error: ‘glBindTexture’ was not declared in this scope
         glBindTexture(GL_TEXTURE_2D, mGLTexID);
         ^~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:536:36: error: ‘GL_RGBA8’ was not declared in this scope
         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
                                        ^~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:536:36: note: suggested alternative: ‘NL_ARGMAX’
         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
                                        ^~~~~~~~
                                        NL_ARGMAX
    /data/Applications/Imogen/src/Bitmap.cpp:536:64: error: ‘GL_RGBA’ was not declared in this scope
         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
                                                                    ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:536:64: note: suggested alternative: ‘NL_ARGMAX’
         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
                                                                    ^~~~~~~
                                                                    NL_ARGMAX
    /data/Applications/Imogen/src/Bitmap.cpp:536:73: error: ‘GL_UNSIGNED_BYTE’ was not declared in this scope
         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
                                                                             ^~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:536:5: error: ‘glTexImage2D’ was not declared in this scope
         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
         ^~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:537:14: error: ‘GL_NEAREST’ was not declared in this scope
         TexParam(GL_NEAREST, GL_NEAREST, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, GL_TEXTURE_2D);
                  ^~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:537:14: note: suggested alternative: ‘CLONE_PARENT’
         TexParam(GL_NEAREST, GL_NEAREST, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, GL_TEXTURE_2D);
                  ^~~~~~~~~~
                  CLONE_PARENT
    /data/Applications/Imogen/src/Bitmap.cpp:537:38: error: ‘GL_CLAMP_TO_EDGE’ was not declared in this scope
         TexParam(GL_NEAREST, GL_NEAREST, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, GL_TEXTURE_2D);
                                          ^~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:538:44: error: ‘GL_COLOR_ATTACHMENT0’ was not declared in this scope
         glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mGLTexID, 0);
                                                ^~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:538:5: error: ‘glFramebufferTexture2D’ was not declared in this scope
         glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mGLTexID, 0);
         ^~~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:545:40: error: ‘GL_DEPTH_COMPONENT24’ was not declared in this scope
             glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, width, height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
                                            ^~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:545:80: error: ‘GL_DEPTH_COMPONENT’ was not declared in this scope
             glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, width, height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
                                                                                    ^~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:545:100: error: ‘GL_FLOAT’ was not declared in this scope
             glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, width, height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
                                                                                                        ^~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:545:100: note: suggested alternative: ‘MAXFLOAT’
             glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, width, height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
                                                                                                        ^~~~~~~~
                                                                                                        MAXFLOAT
    /data/Applications/Imogen/src/Bitmap.cpp:547:48: error: ‘GL_DEPTH_ATTACHMENT’ was not declared in this scope
             glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, mGLTexDepth, 0);
                                                    ^~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:550:18: error: ‘GLenum’ does not name a type; did you mean ‘enum’?
         static const GLenum drawBuffers[] = {GL_COLOR_ATTACHMENT0};
                      ^~~~~~
                      enum
    /data/Applications/Imogen/src/Bitmap.cpp:551:26: error: ‘drawBuffers’ was not declared in this scope
         glDrawBuffers(sizeof(drawBuffers) / sizeof(GLenum), drawBuffers);
                              ^~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:551:26: note: suggested alternative: ‘InitBuffer’
         glDrawBuffers(sizeof(drawBuffers) / sizeof(GLenum), drawBuffers);
                              ^~~~~~~~~~~
                              InitBuffer
    /data/Applications/Imogen/src/Bitmap.cpp:551:48: error: ‘GLenum’ was not declared in this scope
         glDrawBuffers(sizeof(drawBuffers) / sizeof(GLenum), drawBuffers);
                                                    ^~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:551:48: note: suggested alternative: ‘enum’
         glDrawBuffers(sizeof(drawBuffers) / sizeof(GLenum), drawBuffers);
                                                    ^~~~~~
                                                    enum
    /data/Applications/Imogen/src/Bitmap.cpp:551:5: error: ‘glDrawBuffers’ was not declared in this scope
         glDrawBuffers(sizeof(drawBuffers) / sizeof(GLenum), drawBuffers);
         ^~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:557:5: error: ‘GLint’ was not declared in this scope
         GLint last_viewport[4];
         ^~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:557:5: note: suggested alternative: ‘uint’
         GLint last_viewport[4];
         ^~~~~
         uint
    /data/Applications/Imogen/src/Bitmap.cpp:558:19: error: ‘GL_VIEWPORT’ was not declared in this scope
         glGetIntegerv(GL_VIEWPORT, last_viewport);
                       ^~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:558:32: error: ‘last_viewport’ was not declared in this scope
         glGetIntegerv(GL_VIEWPORT, last_viewport);
                                    ^~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:558:5: error: ‘glGetIntegerv’ was not declared in this scope
         glGetIntegerv(GL_VIEWPORT, last_viewport);
         ^~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:558:5: note: suggested alternative: ‘getdate_err’
         glGetIntegerv(GL_VIEWPORT, last_viewport);
         ^~~~~~~~~~~~~
         getdate_err
    /data/Applications/Imogen/src/Bitmap.cpp:560:5: error: ‘glClearColor’ was not declared in this scope
         glClearColor(0, 0, 0, 0);
         ^~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:561:13: error: ‘GL_COLOR_BUFFER_BIT’ was not declared in this scope
         glClear(GL_COLOR_BUFFER_BIT | (depthBuffer ? GL_DEPTH_BUFFER_BIT : 0));
                 ^~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:561:50: error: ‘GL_DEPTH_BUFFER_BIT’ was not declared in this scope
         glClear(GL_COLOR_BUFFER_BIT | (depthBuffer ? GL_DEPTH_BUFFER_BIT : 0));
                                                      ^~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:561:5: error: ‘glClear’ was not declared in this scope
         glClear(GL_COLOR_BUFFER_BIT | (depthBuffer ? GL_DEPTH_BUFFER_BIT : 0));
         ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:563:53: error: ‘GLsizei’ was not declared in this scope
         glViewport(last_viewport[0], last_viewport[1], (GLsizei)last_viewport[2], (GLsizei)last_viewport[3]);
                                                         ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:563:53: note: suggested alternative: ‘dysize’
         glViewport(last_viewport[0], last_viewport[1], (GLsizei)last_viewport[2], (GLsizei)last_viewport[3]);
                                                         ^~~~~~~
                                                         dysize
    /data/Applications/Imogen/src/Bitmap.cpp:563:5: error: ‘glViewport’ was not declared in this scope
         glViewport(last_viewport[0], last_viewport[1], (GLsizei)last_viewport[2], (GLsizei)last_viewport[3]);
         ^~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp: In member function ‘void RenderTarget::InitCube(int, int)’:
    /data/Applications/Imogen/src/Bitmap.cpp:584:5: error: ‘glGenFramebuffers’ was not declared in this scope
         glGenFramebuffers(1, &mFbo);
         ^~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:585:23: error: ‘GL_FRAMEBUFFER’ was not declared in this scope
         glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
                           ^~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:585:5: error: ‘glBindFramebuffer’ was not declared in this scope
         glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
         ^~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:587:5: error: ‘glGenTextures’ was not declared in this scope
         glGenTextures(1, &mGLTexID);
         ^~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:588:19: error: ‘GL_TEXTURE_CUBE_MAP’ was not declared in this scope
         glBindTexture(GL_TEXTURE_CUBE_MAP, mGLTexID);
                       ^~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:588:5: error: ‘glBindTexture’ was not declared in this scope
         glBindTexture(GL_TEXTURE_CUBE_MAP, mGLTexID);
         ^~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:594:26: error: ‘GL_TEXTURE_CUBE_MAP_POSITIVE_X’ was not declared in this scope
                 glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i,
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:596:26: error: ‘GL_RGBA’ was not declared in this scope
                              GL_RGBA,
                              ^~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:596:26: note: suggested alternative: ‘NL_ARGMAX’
                              GL_RGBA,
                              ^~~~~~~
                              NL_ARGMAX
    /data/Applications/Imogen/src/Bitmap.cpp:601:26: error: ‘GL_UNSIGNED_BYTE’ was not declared in this scope
                              GL_UNSIGNED_BYTE,
                              ^~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:594:13: error: ‘glTexImage2D’ was not declared in this scope
                 glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i,
                 ^~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:606:14: error: ‘GL_LINEAR_MIPMAP_LINEAR’ was not declared in this scope
         TexParam(GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, GL_TEXTURE_CUBE_MAP);
                  ^~~~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:606:39: error: ‘GL_LINEAR’ was not declared in this scope
         TexParam(GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, GL_TEXTURE_CUBE_MAP);
                                           ^~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:606:39: note: suggested alternative: ‘__LINE__’
         TexParam(GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, GL_TEXTURE_CUBE_MAP);
                                           ^~~~~~~~~
                                           __LINE__
    /data/Applications/Imogen/src/Bitmap.cpp:606:50: error: ‘GL_CLAMP_TO_EDGE’ was not declared in this scope
         TexParam(GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, GL_TEXTURE_CUBE_MAP);
                                                      ^~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:608:44: error: ‘GL_COLOR_ATTACHMENT0’ was not declared in this scope
         glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_CUBE_MAP_POSITIVE_X, mGLTexID, 0);
                                                ^~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:608:66: error: ‘GL_TEXTURE_CUBE_MAP_POSITIVE_X’ was not declared in this scope
         glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_CUBE_MAP_POSITIVE_X, mGLTexID, 0);
                                                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:608:5: error: ‘glFramebufferTexture2D’ was not declared in this scope
         glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_CUBE_MAP_POSITIVE_X, mGLTexID, 0);
         ^~~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp: In member function ‘void RenderTarget::CheckFBO()’:
    /data/Applications/Imogen/src/Bitmap.cpp:615:23: error: ‘GL_FRAMEBUFFER’ was not declared in this scope
         glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
                           ^~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:615:5: error: ‘glBindFramebuffer’ was not declared in this scope
         glBindFramebuffer(GL_FRAMEBUFFER, mFbo);
         ^~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:617:18: error: ‘glCheckFramebufferStatus’ was not declared in this scope
         int status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
                      ^~~~~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:620:14: error: ‘GL_FRAMEBUFFER_COMPLETE’ was not declared in this scope
             case GL_FRAMEBUFFER_COMPLETE:
                  ^~~~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:624:14: error: ‘GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT’ was not declared in this scope
             case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT:
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:628:14: error: ‘GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT’ was not declared in this scope
             case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /data/Applications/Imogen/src/Bitmap.cpp:650:14: error: ‘GL_FRAMEBUFFER_UNSUPPORTED’ was not declared in this scope
             case GL_FRAMEBUFFER_UNSUPPORTED:
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~
    make[2]: *** [CMakeFiles/Imogen.dir/build.make:63: CMakeFiles/Imogen.dir/src/Bitmap.cpp.o] Error 1
    make[1]: *** [CMakeFiles/Makefile2:73: CMakeFiles/Imogen.dir/all] Error 2
    make: *** [Makefile:84: all] Error 2
    
    opened by unfa 11
Releases(0.13.0)
  • 0.13.0(May 13, 2019)

    New:

    • Removed text edit for nodes shader. Edit them with your favorite editor and press F7 to hotload them
    • User documentation visible on github
    • Signed Distance node
    • Box Blur node with multipass
    • Channel packer node
    • Lens node with optional vignette
    • invert in NormalMap node
    • Perlin noise node
    • Mouse State toolip to show how the mouse is used for educative vdeos
    • Improved imgInspect

    Fixed:

    • Clamp node, invert node
    Source code(tar.gz)
    Source code(zip)
    Imogen-0.13.0.zip(65.02 MB)
  • 0.12.0(Apr 20, 2019)

    New:

    • replace cmft library with a custom cubemap radiance/irradiance node
    • LOD visualization in cubemap viewer
    • key modifiers constants accessible in nodes
    • default parameters for physical sky
    • better mipmap management
    • dirty flags accessible in nodes

    Fixed:

    • many bugs fixed here and there. More to come...
    Source code(tar.gz)
    Source code(zip)
    Imogen-0.12.0.zip(62.71 MB)
  • 0.11(Mar 31, 2019)

  • 0.10.0(Mar 9, 2019)

    New:

    • Threaded evaluation system for exports
    • Reaction Diffusion node
    • Kaleidoscope (symetry/mirror) node
    • Palette node (c64, pico-8, CGA ...) with optional dithering
    • Show/hide windows
    • Main menu accessible by the top left button
    • New header
    • Auto layout nodes
    • Default node parameter values can be defined in the node definition JSON
    • Multipass nodes
    • Pinned parameters and node previews are visible when no node is selected

    Fixed:

    • Better Tile node
    • Fixed mouse interaction with Transform node
    • Fixed undo/redo
    • Fix Nan in node graph editor when window loses focus
    • Fix node creation position when zoom is different of 1
    • Click to close context menu in node graph editor
    Source code(tar.gz)
    Source code(zip)
    Imogen-0.10.0.zip(57.26 MB)
  • 0.9(Feb 11, 2019)

  • 0.8.0(Jan 2, 2019)

    New:

    • python plugins
    • svg import
    • fur generator/display (experimental)
    • materialX graph library export (experimental)
    • time line/animation play modes
    • animation curve editing (numerical edit, deletion) with undo/redo
    • improved curve edit and sequence editor

    Fixed:

    • image allocation fixed
    • PBR node inverted cubemap sampling
    Source code(tar.gz)
    Source code(zip)
    Imogen-0.8.0.zip(48.36 MB)
  • 0.7.0(Dec 6, 2018)

    New:

    • Ambient Occlusion node
    • Improve PBR node with cubemap display, displacement factor and various geometry
    • Better cubemap handling in glsl nodes
    • Terrain preview node
    • small icon on nodes that indicates the type of render target(2D, cubemap)
    • improved undo/redo
    • you can select multiples nodes, move, delete, ...
    • copy/paste node between graphs
    • improved focused window handling
    • color picker/debugger in preview window
    • zoom/pan 2d preview
    • improved nodes and rugs display
    • 3D view manipulation a la Maya
    • tab key in node graph brings the context menu with focus on search edit box

    Known issues:

    • some rendertarget keep previous sizes (from previous open graph)
    Source code(tar.gz)
    Source code(zip)
    Imogen-0.7.0.zip(55.93 MB)
  • 0.6.1(Dec 3, 2018)

  • 0.6.0(Dec 2, 2018)

    New:

    • Python 3.7 node evaluators (experimental)
    • warp transform node
    • NGon generator node
    • Gradient builder node
    • Camera parameter type
    • Amiga ball displayed when there is compilation error
    • Gradient builder parameter widget
    • undo/redo (beta)

    Changed:

    • fixed tile node
    • Ramp node can use an optional input texture
    • dear imgui version bump

    Known issue:

    • Japanese tile sample is broken
    • Cubemap filtering doesn't work and may use a lot of CPU/RAM
    Source code(tar.gz)
    Source code(zip)
    Imogen-0.6.0.zip(50.39 MB)
  • 0.5.0(Nov 19, 2018)

  • 0.4(Oct 24, 2018)

    Imogen 0.4 - codename Andromeda Shun

    Image of Yaktocat New:

    • Node graph zoom with mouse wheel
    • cmft used for cubemap filtering
    • dds/ktx load and save
    • cubemap support
    • physical sky cubemap generator node
    • cubemap display (projection, fps, isometric) node
    • equirectangular to cubemap converter node
    • small animation display of processing node/background job
    • list, smal icons, big icons display of graph library
    • rugs in graph editor: add colored comments to your graph
    • extract a node preview into a dockable window

    Changed:

    • node graph clips nodes and connexions
    • async image loading
    • dear imgui new docking system
    • new ui dark color scheme

    Known issues:

    • cubemap filtering is an experiement. use with caution.
    • ktx format is not properly tested
    Source code(tar.gz)
    Source code(zip)
    Imogen-0.4.0.zip(15.24 MB)
  • 0.3.0(Oct 8, 2018)

    New:

    • C nodes can change the size and blending mode of the texture target
    • Nodes can mix C and GLSL
    • Paint2D node
    • Swirl node
    • Crop node
    • UI mode for nodes : nodes can display user information
    • Nodes can handle mouse pos and buttons
    • openGL debug output in the console
    • image ratio support
    • better image resize in the NodeEdit panel

    Changed:

    • more consistent texV management
    • Threaded decoding and loading of node textures (paint2d Surface)
    Source code(tar.gz)
    Source code(zip)
    Imogen-0.3.0.zip(6.10 MB)
  • 0.2.0(Oct 2, 2018)

    Image of imogen New:

    • C CPU nodes. edit and run C code on the fly
    • image reader/writer with jpg, png, tga, bmp, partial HDR support
    • thumbnail node: node, library, display
    • save and restore docking layout
    • Export button in node graph dock that force every export in the graph

    Changed:

    • Separate scale X and Y values in Transform node
    Source code(tar.gz)
    Source code(zip)
    Imogen-0.2.0.zip(5.59 MB)
  • 0.1.1(Sep 22, 2018)

    New:

    • SDL 2 instead of custom Windows only ImApp.h (one big step toward Linux port)
    • Clamp node
    • More blending option in the blend node (Thanks Jari Komppa)
    • Polar coordinates node (Thanks Jari Komppa)

    Fixed:

    • clear text selection when switching file in shaders edit
    • clear nodegraph/selection when clicking new material
    • bad link deletion when creating link from input to output
    • connection loop detection
    Source code(tar.gz)
    Source code(zip)
    Imogen-0.1.1.zip(4.63 MB)
  • 0.1(Sep 16, 2018)

    Draft of Imogen, a GPU procedural texture generation. Get a clue on how it works. A bit messy. Some known bugs:

    • bad connection when plugin from input to output
    • bake is broken
    • tile node is broken
    • ramp node behaves strangely until node is selected Image of imogen Image of imogen Binaries in the zip
    Source code(tar.gz)
    Source code(zip)
    Imogen0.1-SaintSeya.zip(4.14 MB)
Owner
Cedric Guillemet
Cedric Guillemet
DirectXTex texture processing library

DirectXTex texture processing library http://go.microsoft.com/fwlink/?LinkId=248926 Copyright (c) Microsoft Corporation. November 8, 2021 This package

Microsoft 1.3k Aug 7, 2022
Basic framework for D3D11 init, model/texture loading, shader compilation and camera movement.

reed-framework Basic framework for D3D11 init, model/texture loading, camera movement, etc. Instructions: #include <framework.h> Link with framework.l

Nathan Reed 34 May 18, 2022
Advanced DXTc texture compression and transcoding library

crunch/crnlib v1.04 - Advanced DXTn texture compression library Copyright (C) 2010-2017 Richard Geldreich, Jr. and Binomial LLC http://binomial.info F

Unity Technologies 205 Jul 30, 2022
Wang Tiles Grid generator

Wang Tiles Grid generator Quick Start The project is using nobuild build system. $ cc -o nobuild nobuild.c $ ./nobuild $ ./wang -live Goal Trying to g

Tsoding 27 Jun 25, 2022
Python binding for Grasp Pose Generator (pyGPG)

Python binding for Grasp Pose Generator (pyGPG) Grasp Pose Generator is a cpp package that creat grasp candidates for 3D point clouds. This package bi

Hongzhuo Liang 10 Jul 21, 2022
Ipsys Particle System Yey letS go, very cool particle system generator and fast renderer

ipsys - Ipsys Particle System Yey letS go About Ipsys is a piece of software that focuces on running and displaying cool randomly generated particule

Anima Libera 5 May 26, 2022
Dissecting the M1's GPU for 3D acceleration

Asahi GPU Research for an open source graphics stack for Apple M1. wrap Build with the included makefile make wrap.dylib, and insert in any Metal appl

Asahi Linux 928 Jul 27, 2022
nsfminer is an Ethash GPU mining application: with nsfminer you can mine every coin which relies on an Ethash Proof of Work.

nsfminer (no stinkin' fees) Ethereum (ethash) miner with OpenCL, CUDA and stratum support nsfminer is an Ethash GPU mining application: with nsfminer

Jean M. Cyr 511 Aug 2, 2022
Software ray tracer written from scratch in C that can run on CPU or GPU with emphasis on ease of use and trivial setup

A minimalist and platform-agnostic interactive/real-time raytracer. Strong emphasis on simplicity, ease of use and almost no setup to get started with

Arnon Marcus 43 Jul 22, 2022
2D GPU renderer for dynamic UIs

vger vger is a vector graphics renderer which renders a limited set of primitives, but does so almost entirely on the GPU. Works on iOS and macOS. API

Audulus LLC 121 Jul 29, 2022
This is a openGL cube demo program. It was made as a tech demo using PVR_PSP2 Driver layer GPU libraries.

OpenGL Cube Demo using PVR_PSP2 Driver layer GPU libraries This is a openGL cube demo program. It was made as a tech demo using PVR_PSP2 Driver layer

David Cantu 5 Oct 31, 2021
What I'm doing here is insane GPU driver prototype for @GreenteaOS

NjRAA Work-in-progress Driver Foundation [nee-jee-ray] What I'm doing here is a GPU driver for Linux as a prototype for future graphics stack of the @

Miraculous Ladybugreport 4 Jan 22, 2022
A Hydra-enabled GPU path tracer that supports MaterialX.

A Hydra-enabled GPU path tracer that supports MaterialX.

Pablo Delgado 156 Jul 27, 2022
Legion Low Level Rendering Interface provides a graphics API agnostic rendering interface with minimal CPU overhead and low level access to verbose GPU operations.

Legion-LLRI Legion-LLRI, or “Legion Low Level Rendering Interface” is a rendering API that aims to provide a graphics API agnostic approach to graphic

Rythe Interactive 25 Mar 8, 2022
A low-level, cross-platform GPU library

vgpu is cross-platform low-level GPU library. Features Support for Windows, Linux, macOS. Modern rendering using Vulkan and Direct3D12. Dependencies U

Amer Koleci 9 Jul 28, 2022
GPU cloth with OpenGL Compute Shaders

GPU cloth with OpenGL Compute Shaders This project in progress is a PBD cloth simulation accelerated and parallelized using OpenGL compute shaders. Fo

null 35 Jul 27, 2022
Optimized GPU noise functions and utilities

Optimized GPU noise functions and utilities

Brian Sharpe 330 Jul 29, 2022
SMAA is a very efficient GPU-based MLAA implementation (DX9, DX10, DX11 and OpenGL)

SMAA is a very efficient GPU-based MLAA implementation (DX9, DX10, DX11 and OpenGL), capable of handling subpixel features seamlessly, and featuring an improved and advanced pattern detection & handling mechanism.

Jorge Jimenez 819 Aug 8, 2022
RDO BC1-7 GPU texture encoders

bc7enc - Fast BC1-7 GPU texture encoders with Rate Distortion Optimization (RDO) This repo contains fast texture encoders for BC1-7. All formats suppo

Rich Geldreich 93 Jul 25, 2022
A texture compression algorithm for sprite sheets that allows decompression on the GPU during rendering.

CRABBY A texture compression format for spritesheets Crabby TL;DR Crabby is a compressed texture format for spritesheets and flipbook animations. What

Colt McAnlis 101 Jul 30, 2022
GPU Texture Baking Tool

fornos GPU Texture Baking Tool A fast and simple tool to bake your high-poly mesh details to textures. Bakers Height Position Normals Ambient Occlusio

Oscar Sebio Cajaraville 93 Jul 5, 2022
Basis Universal GPU Texture Codec

basis_universal Basis Universal Supercompressed GPU Texture Codec Basis Universal is a "supercompressed" GPU texture data interchange system that supp

null 2.1k Jul 29, 2022
GPU 3D signed distance field generator, written with DirectX 11 compute shader

GPU SDF Generator GPU 3D signed distance field generator, written with DirectX 11 compute shader Building git clone --recursive https://github.com/Air

Z Guan 24 Jul 15, 2022
4eisa40 GPU computing : exploiting the GPU to execute advanced simulations

GPU-computing 4eisa40 GPU computing : exploiting the GPU to execute advanced simulations Activities Parallel programming Algorithms Image processing O

Ecam 4MIN repositories 2 Jan 10, 2022
WebGL Texture plugin for Flutter

So far there is no way to render 3D objects efficiently in Flutter. Also directly accessing and programming the GPU from Dart isn't supported yet. This plugin shall close this gap.

null 95 Aug 4, 2022
Stack-based texture generation tool written in C99!

Stack-based texture generation tool written in C99! Brought to you by @zaklaus and contributors Introduction zpl.texed is a cross-platform stack-based

zpl | pushing the boundaries of simplicity. 17 May 1, 2022
NVIDIA Texture Tools samples for compression, image processing, and decompression.

NVTT 3 Samples This repository contains a number of samples showing how to use NVTT 3, a GPU-accelerated texture compression and image processing libr

NVIDIA DesignWorks Samples 31 Jun 13, 2022