diff --git a/CMakeLists.txt b/CMakeLists.txt index df9d6fe..302934b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,7 +27,7 @@ set(EXTRA_CXX_WARNINGS "-Wnon-virtual-dtor -Wold-style-cast") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${C_AND_CXX_WARNINGS}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_WARNINGS}") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 ${C_AND_CXX_WARNINGS}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 ${C_AND_CXX_WARNINGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_C_WARNINGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXX_WARNINGS}") @@ -65,10 +65,10 @@ find_package(Protobuf REQUIRED) pkg_check_modules(SDL2 sdl2 REQUIRED) pkg_check_modules(SDL2_IMAGE SDL2_image REQUIRED) -pkg_check_modules(DBUS_CPP dbus-cpp REQUIRED) pkg_check_modules(DBUS dbus-1 REQUIRED) pkg_check_modules(LXC lxc REQUIRED) pkg_check_modules(PROPERTIES_CPP properties-cpp REQUIRED) +pkg_check_modules(LIBSYSTEMD libsystemd REQUIRED) # FIXME mir support is currently broken due to mir's API # being broken with recent landings in Ubuntu 16.04 # pkg_check_modules(MIRCLIENT mirclient) @@ -95,8 +95,6 @@ find_package(GMock) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -fPIC") -set(ANBOX_TRANSLATOR_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/anbox/translators) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTRANSLATOR_INSTALL_DIR=\\\"${CMAKE_INSTALL_PREFIX}/${ANBOX_TRANSLATOR_INSTALL_DIR}\\\"") if (NOT ANBOX_VERSION) exec_program("git" ${CMAKE_SOURCE_DIR} ARGS "rev-parse --short HEAD" OUTPUT_VARIABLE GIT_COMMIT_HASH) diff --git a/README.md b/README.md index 9639b5a..ecd26c8 100644 --- a/README.md +++ b/README.md @@ -89,12 +89,10 @@ a simple task. At the moment we officially support the following Linux distributions: * Ubuntu 16.04 (xenial) + * Ubuntu 18.04 (bionic) -Untested but likely to work: - - * Ubuntu 14.04 (trusty) - * Ubuntu 16.10 (yakkety) - * Ubuntu 17.04 (zesty) +However all other distributions supporting snap packages should work as +well as long as they provide the mandatory kernel modules (see kernel/). ## Install and Run Android Applications @@ -118,7 +116,7 @@ system: * libboost-test * libboost-thread * libcap - * libdbus-cpp + * libsystemd * mesa (libegl1, libgles2) * glib-2.0 * libsdl2 @@ -133,7 +131,7 @@ command: $ sudo apt install build-essential cmake cmake-data debhelper dbus google-mock \ libboost-dev libboost-filesystem-dev libboost-log-dev libboost-iostreams-dev \ libboost-program-options-dev libboost-system-dev libboost-test-dev \ - libboost-thread-dev libcap-dev libdbus-1-dev libdbus-cpp-dev libegl1-mesa-dev \ + libboost-thread-dev libcap-dev libsystemd-dev libegl1-mesa-dev \ libgles2-mesa-dev libglib2.0-dev libglm-dev libgtest-dev liblxc1 \ libproperties-cpp-dev libprotobuf-dev libsdl2-dev libsdl2-image-dev lxc-dev \ pkg-config protobuf-compiler diff --git a/android/hwcomposer/hwcomposer.cpp b/android/hwcomposer/hwcomposer.cpp index 7e2e489..530f948 100644 --- a/android/hwcomposer/hwcomposer.cpp +++ b/android/hwcomposer/hwcomposer.cpp @@ -197,6 +197,7 @@ static int hwc_set(hwc_composer_device_1_t* dev, size_t numDisplays, rcEnc->rcPostLayer(rcEnc, layer->name, cb->hostHandle, + layer->planeAlpha / 255, layer->sourceCrop.left, layer->sourceCrop.top, layer->sourceCrop.right, diff --git a/android/opengl/system/renderControl_enc/renderControl_client_proc.h b/android/opengl/system/renderControl_enc/renderControl_client_proc.h index 5129b99..565fd12 100644 --- a/android/opengl/system/renderControl_enc/renderControl_client_proc.h +++ b/android/opengl/system/renderControl_enc/renderControl_client_proc.h @@ -44,7 +44,7 @@ typedef int (renderControl_APIENTRY *rcGetDisplayHeight_client_proc_t) (void * c typedef int (renderControl_APIENTRY *rcGetDisplayDpiX_client_proc_t) (void * ctx, uint32_t); typedef int (renderControl_APIENTRY *rcGetDisplayDpiY_client_proc_t) (void * ctx, uint32_t); typedef int (renderControl_APIENTRY *rcGetDisplayVsyncPeriod_client_proc_t) (void * ctx, uint32_t); -typedef void (renderControl_APIENTRY *rcPostLayer_client_proc_t) (void * ctx, const char*, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); +typedef void (renderControl_APIENTRY *rcPostLayer_client_proc_t) (void * ctx, const char*, uint32_t, float, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t); typedef void (renderControl_APIENTRY *rcPostAllLayersDone_client_proc_t) (void * ctx); diff --git a/android/opengl/system/renderControl_enc/renderControl_enc.cpp b/android/opengl/system/renderControl_enc/renderControl_enc.cpp index f162c7e..4a22b54 100644 --- a/android/opengl/system/renderControl_enc/renderControl_enc.cpp +++ b/android/opengl/system/renderControl_enc/renderControl_enc.cpp @@ -1283,7 +1283,7 @@ int rcGetDisplayVsyncPeriod_enc(void *self , uint32_t displayId) return retval; } -void rcPostLayer_enc(void *self , const char* name, uint32_t colorBuffer, int32_t sourceCropLeft, int32_t sourceCropTop, int32_t sourceCropRight, int32_t sourceCropBottom, int32_t displayFrameLeft, int32_t displayFrameTop, int32_t displayFrameRight, int32_t displayFrameBottom) +void rcPostLayer_enc(void *self , const char* name, uint32_t colorBuffer, float alpha, int32_t sourceCropLeft, int32_t sourceCropTop, int32_t sourceCropRight, int32_t sourceCropBottom, int32_t displayFrameLeft, int32_t displayFrameTop, int32_t displayFrameRight, int32_t displayFrameBottom) { renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self; @@ -1294,7 +1294,7 @@ void rcPostLayer_enc(void *self , const char* name, uint32_t colorBuffer, int32_ const unsigned int __size_name = (strlen(name) + 1); unsigned char *ptr; unsigned char *buf; - const size_t sizeWithoutChecksum = 8 + __size_name + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 1*4; + const size_t sizeWithoutChecksum = 8 + __size_name + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 1*4; const size_t checksumSize = checksumCalculator->checksumByteSize(); const size_t totalSize = sizeWithoutChecksum + checksumSize; buf = stream->alloc(totalSize); @@ -1305,6 +1305,7 @@ void rcPostLayer_enc(void *self , const char* name, uint32_t colorBuffer, int32_ *(unsigned int *)(ptr) = __size_name; ptr += 4; memcpy(ptr, name, __size_name);ptr += __size_name; memcpy(ptr, &colorBuffer, 4); ptr += 4; + memcpy(ptr, &alpha, 4); ptr += 4; memcpy(ptr, &sourceCropLeft, 4); ptr += 4; memcpy(ptr, &sourceCropTop, 4); ptr += 4; memcpy(ptr, &sourceCropRight, 4); ptr += 4; diff --git a/android/opengl/system/renderControl_enc/renderControl_entry.cpp b/android/opengl/system/renderControl_enc/renderControl_entry.cpp index 166fd64..822bb80 100644 --- a/android/opengl/system/renderControl_enc/renderControl_entry.cpp +++ b/android/opengl/system/renderControl_enc/renderControl_entry.cpp @@ -41,7 +41,7 @@ extern "C" { int rcGetDisplayDpiX(uint32_t displayId); int rcGetDisplayDpiY(uint32_t displayId); int rcGetDisplayVsyncPeriod(uint32_t displayId); - void rcPostLayer(const char* name, uint32_t colorBuffer, int32_t sourceCropLeft, int32_t sourceCropTop, int32_t sourceCropRight, int32_t sourceCropBottom, int32_t displayFrameLeft, int32_t displayFrameTop, int32_t displayFrameRight, int32_t displayFrameBottom); + void rcPostLayer(const char* name, uint32_t colorBuffer, float alpha, int32_t sourceCropLeft, int32_t sourceCropTop, int32_t sourceCropRight, int32_t sourceCropBottom, int32_t displayFrameLeft, int32_t displayFrameTop, int32_t displayFrameRight, int32_t displayFrameBottom); void rcPostAllLayersDone(); }; @@ -262,10 +262,10 @@ int rcGetDisplayVsyncPeriod(uint32_t displayId) return ctx->rcGetDisplayVsyncPeriod(ctx, displayId); } -void rcPostLayer(const char* name, uint32_t colorBuffer, int32_t sourceCropLeft, int32_t sourceCropTop, int32_t sourceCropRight, int32_t sourceCropBottom, int32_t displayFrameLeft, int32_t displayFrameTop, int32_t displayFrameRight, int32_t displayFrameBottom) +void rcPostLayer(const char* name, uint32_t colorBuffer, float alpha, int32_t sourceCropLeft, int32_t sourceCropTop, int32_t sourceCropRight, int32_t sourceCropBottom, int32_t displayFrameLeft, int32_t displayFrameTop, int32_t displayFrameRight, int32_t displayFrameBottom) { GET_CONTEXT; - ctx->rcPostLayer(ctx, name, colorBuffer, sourceCropLeft, sourceCropTop, sourceCropRight, sourceCropBottom, displayFrameLeft, displayFrameTop, displayFrameRight, displayFrameBottom); + ctx->rcPostLayer(ctx, name, colorBuffer, alpha, sourceCropLeft, sourceCropTop, sourceCropRight, sourceCropBottom, displayFrameLeft, displayFrameTop, displayFrameRight, displayFrameBottom); } void rcPostAllLayersDone() diff --git a/android/service/platform_api_stub.cpp b/android/service/platform_api_stub.cpp index 37fa5d4..4d351bd 100644 --- a/android/service/platform_api_stub.cpp +++ b/android/service/platform_api_stub.cpp @@ -99,7 +99,8 @@ void PlatformApiStub::update_application_list(const ApplicationListUpdate &updat *c = category; } - app->set_icon(a.icon.data(), a.icon.size()); + if (a.icon.size() > 0) + app->set_icon(a.icon.data(), a.icon.size()); } for (const auto &package : update.removed_applications) { diff --git a/android/service/platform_service.cpp b/android/service/platform_service.cpp index 0a19818..b390a0c 100644 --- a/android/service/platform_service.cpp +++ b/android/service/platform_service.cpp @@ -118,7 +118,14 @@ status_t PlatformService::update_application_list(const Parcel &data) { data.readByteVector(&p.icon); - update.applications.push_back(p); + // Send updates with icons separately to not overflow protobuf + if (p.icon.size() > 0) { + anbox::PlatformApiStub::ApplicationListUpdate with_icon_update; + with_icon_update.applications.push_back(p); + platform_api_stub_->update_application_list(with_icon_update); + } else { + update.applications.push_back(p); + } } const auto num_removed_packages = data.readInt32(); diff --git a/data/anbox.desktop b/data/anbox.desktop deleted file mode 100644 index cac4f5e..0000000 --- a/data/anbox.desktop +++ /dev/null @@ -1,7 +0,0 @@ -[Desktop Entry] -Name=Anbox -Exec=anbox run --rootfs=android-rootfs -Icon=anbox -Terminal=false -Type=Application -X-Ubuntu-Touch=true diff --git a/data/apparmor/anbox-container.aa b/data/apparmor/anbox-container.aa new file mode 100644 index 0000000..61e52fa --- /dev/null +++ b/data/apparmor/anbox-container.aa @@ -0,0 +1,246 @@ +#include +profile "anbox-container" flags=(attach_disconnected,mediate_deleted) { + ### Base profile + capability, + dbus, + file, + network, + umount, + + # Allow us to receive signals from anywhere. + signal (receive), + + # Allow us to send signals to ourselves + signal peer=@{profile_name}, + + # Allow other processes to read our /proc entries, futexes, perf tracing and + # kcmp for now (they will need 'read' in the first place). Administrators can + # override with: + # deny ptrace (readby) ... + ptrace (readby), + + # Allow other processes to trace us by default (they will need 'trace' in + # the first place). Administrators can override with: + # deny ptrace (tracedby) ... + ptrace (tracedby), + + # Allow us to ptrace ourselves + ptrace peer=@{profile_name}, + + # ignore DENIED message on / remount + deny mount options=(ro, remount) -> /, + deny mount options=(ro, remount, silent) -> /, + + # allow tmpfs mounts everywhere + mount fstype=tmpfs, + + # allow hugetlbfs mounts everywhere + mount fstype=hugetlbfs, + + # allow mqueue mounts everywhere + mount fstype=mqueue, + + # allow fuse mounts everywhere + mount fstype=fuse, + mount fstype=fuse.*, + + # deny access under /proc/bus to avoid e.g. messing with pci devices directly + deny @{PROC}/bus/** wklx, + + # deny writes in /proc/sys/fs but allow binfmt_misc to be mounted + mount fstype=binfmt_misc -> /proc/sys/fs/binfmt_misc/, + deny @{PROC}/sys/fs/** wklx, + + # allow efivars to be mounted, writing to it will be blocked though + mount fstype=efivarfs -> /sys/firmware/efi/efivars/, + + # block some other dangerous paths + deny @{PROC}/kcore rwklx, + deny @{PROC}/sysrq-trigger rwklx, + + # deny writes in /sys except for /sys/fs/cgroup, also allow + # fusectl, securityfs and debugfs to be mounted there (read-only) + mount fstype=fusectl -> /sys/fs/fuse/connections/, + mount fstype=securityfs -> /sys/kernel/security/, + mount fstype=debugfs -> /sys/kernel/debug/, + deny mount fstype=debugfs -> /var/lib/ureadahead/debugfs/, + mount fstype=proc -> /proc/, + mount fstype=sysfs -> /sys/, + mount options=(rw, nosuid, nodev, noexec, remount) -> /sys/, + deny /sys/firmware/efi/efivars/** rwklx, + # note, /sys/kernel/security/** handled below + mount options=(move) /sys/fs/cgroup/cgmanager/ -> /sys/fs/cgroup/cgmanager.lower/, + mount options=(ro, nosuid, nodev, noexec, remount, strictatime) -> /sys/fs/cgroup/, + + # deny reads from debugfs + deny /sys/kernel/debug/{,**} rwklx, + + # allow paths to be made slave, shared, private or unbindable + # FIXME: This currently doesn't work due to the apparmor parser treating those as allowing all mounts. +# mount options=(rw,make-slave) -> **, +# mount options=(rw,make-rslave) -> **, +# mount options=(rw,make-shared) -> **, +# mount options=(rw,make-rshared) -> **, +# mount options=(rw,make-private) -> **, +# mount options=(rw,make-rprivate) -> **, +# mount options=(rw,make-unbindable) -> **, +# mount options=(rw,make-runbindable) -> **, + + # allow bind-mounts of anything except /proc, /sys and /dev + mount options=(rw,bind) /[^spd]*{,/**}, + mount options=(rw,bind) /d[^e]*{,/**}, + mount options=(rw,bind) /de[^v]*{,/**}, + mount options=(rw,bind) /dev/.[^l]*{,/**}, + mount options=(rw,bind) /dev/.l[^x]*{,/**}, + mount options=(rw,bind) /dev/.lx[^c]*{,/**}, + mount options=(rw,bind) /dev/.lxc?*{,/**}, + mount options=(rw,bind) /dev/[^.]*{,/**}, + mount options=(rw,bind) /dev?*{,/**}, + mount options=(rw,bind) /p[^r]*{,/**}, + mount options=(rw,bind) /pr[^o]*{,/**}, + mount options=(rw,bind) /pro[^c]*{,/**}, + mount options=(rw,bind) /proc?*{,/**}, + mount options=(rw,bind) /s[^y]*{,/**}, + mount options=(rw,bind) /sy[^s]*{,/**}, + mount options=(rw,bind) /sys?*{,/**}, + + # allow moving mounts except for /proc, /sys and /dev + mount options=(rw,move) /[^spd]*{,/**}, + mount options=(rw,move) /d[^e]*{,/**}, + mount options=(rw,move) /de[^v]*{,/**}, + mount options=(rw,move) /dev/.[^l]*{,/**}, + mount options=(rw,move) /dev/.l[^x]*{,/**}, + mount options=(rw,move) /dev/.lx[^c]*{,/**}, + mount options=(rw,move) /dev/.lxc?*{,/**}, + mount options=(rw,move) /dev/[^.]*{,/**}, + mount options=(rw,move) /dev?*{,/**}, + mount options=(rw,move) /p[^r]*{,/**}, + mount options=(rw,move) /pr[^o]*{,/**}, + mount options=(rw,move) /pro[^c]*{,/**}, + mount options=(rw,move) /proc?*{,/**}, + mount options=(rw,move) /s[^y]*{,/**}, + mount options=(rw,move) /sy[^s]*{,/**}, + mount options=(rw,move) /sys?*{,/**}, + + # generated by: lxc-generate-aa-rules.py container-rules.base + deny /proc/sys/[^kn]*{,/**} wklx, + deny /proc/sys/k[^e]*{,/**} wklx, + deny /proc/sys/ke[^r]*{,/**} wklx, + deny /proc/sys/ker[^n]*{,/**} wklx, + deny /proc/sys/kern[^e]*{,/**} wklx, + deny /proc/sys/kerne[^l]*{,/**} wklx, + deny /proc/sys/kernel/[^smhd]*{,/**} wklx, + deny /proc/sys/kernel/d[^o]*{,/**} wklx, + deny /proc/sys/kernel/do[^m]*{,/**} wklx, + deny /proc/sys/kernel/dom[^a]*{,/**} wklx, + deny /proc/sys/kernel/doma[^i]*{,/**} wklx, + deny /proc/sys/kernel/domai[^n]*{,/**} wklx, + deny /proc/sys/kernel/domain[^n]*{,/**} wklx, + deny /proc/sys/kernel/domainn[^a]*{,/**} wklx, + deny /proc/sys/kernel/domainna[^m]*{,/**} wklx, + deny /proc/sys/kernel/domainnam[^e]*{,/**} wklx, + deny /proc/sys/kernel/domainname?*{,/**} wklx, + deny /proc/sys/kernel/h[^o]*{,/**} wklx, + deny /proc/sys/kernel/ho[^s]*{,/**} wklx, + deny /proc/sys/kernel/hos[^t]*{,/**} wklx, + deny /proc/sys/kernel/host[^n]*{,/**} wklx, + deny /proc/sys/kernel/hostn[^a]*{,/**} wklx, + deny /proc/sys/kernel/hostna[^m]*{,/**} wklx, + deny /proc/sys/kernel/hostnam[^e]*{,/**} wklx, + deny /proc/sys/kernel/hostname?*{,/**} wklx, + deny /proc/sys/kernel/m[^s]*{,/**} wklx, + deny /proc/sys/kernel/ms[^g]*{,/**} wklx, + deny /proc/sys/kernel/msg*/** wklx, + deny /proc/sys/kernel/s[^he]*{,/**} wklx, + deny /proc/sys/kernel/se[^m]*{,/**} wklx, + deny /proc/sys/kernel/sem*/** wklx, + deny /proc/sys/kernel/sh[^m]*{,/**} wklx, + deny /proc/sys/kernel/shm*/** wklx, + deny /proc/sys/kernel?*{,/**} wklx, + deny /proc/sys/n[^e]*{,/**} wklx, + deny /proc/sys/ne[^t]*{,/**} wklx, + deny /proc/sys/net?*{,/**} wklx, + deny /sys/[^fdck]*{,/**} wklx, + deny /sys/c[^l]*{,/**} wklx, + deny /sys/cl[^a]*{,/**} wklx, + deny /sys/cla[^s]*{,/**} wklx, + deny /sys/clas[^s]*{,/**} wklx, + deny /sys/class/[^n]*{,/**} wklx, + deny /sys/class/n[^e]*{,/**} wklx, + deny /sys/class/ne[^t]*{,/**} wklx, + deny /sys/class/net?*{,/**} wklx, + deny /sys/class?*{,/**} wklx, + deny /sys/d[^e]*{,/**} wklx, + deny /sys/de[^v]*{,/**} wklx, + deny /sys/dev[^i]*{,/**} wklx, + deny /sys/devi[^c]*{,/**} wklx, + deny /sys/devic[^e]*{,/**} wklx, + deny /sys/device[^s]*{,/**} wklx, + deny /sys/devices/[^v]*{,/**} wklx, + deny /sys/devices/v[^i]*{,/**} wklx, + deny /sys/devices/vi[^r]*{,/**} wklx, + deny /sys/devices/vir[^t]*{,/**} wklx, + deny /sys/devices/virt[^u]*{,/**} wklx, + deny /sys/devices/virtu[^a]*{,/**} wklx, + deny /sys/devices/virtua[^l]*{,/**} wklx, + deny /sys/devices/virtual/[^n]*{,/**} wklx, + deny /sys/devices/virtual/n[^e]*{,/**} wklx, + deny /sys/devices/virtual/ne[^t]*{,/**} wklx, + deny /sys/devices/virtual/net?*{,/**} wklx, + deny /sys/devices/virtual?*{,/**} wklx, + deny /sys/devices?*{,/**} wklx, + deny /sys/f[^s]*{,/**} wklx, + deny /sys/fs/[^c]*{,/**} wklx, + deny /sys/fs/c[^g]*{,/**} wklx, + deny /sys/fs/cg[^r]*{,/**} wklx, + deny /sys/fs/cgr[^o]*{,/**} wklx, + deny /sys/fs/cgro[^u]*{,/**} wklx, + deny /sys/fs/cgrou[^p]*{,/**} wklx, + deny /sys/fs/cgroup?*{,/**} wklx, + deny /sys/fs?*{,/**} wklx, + + ### Feature: unix + # Allow receive via unix sockets from anywhere + unix (receive), + + # Allow all unix in the container + unix peer=(label=@{profile_name}), + + ### Feature: cgroup namespace + mount fstype=cgroup -> /sys/fs/cgroup/**, + + ### Configuration: nesting + pivot_root, + ptrace, + signal, + + deny /dev/.lxd/proc/** rw, + deny /dev/.lxd/sys/** rw, + + mount /var/lib/lxd/shmounts/ -> /var/lib/lxd/shmounts/, + mount none -> /var/lib/lxd/shmounts/, + mount fstype=proc -> /usr/lib/*/lxc/**, + mount fstype=sysfs -> /usr/lib/*/lxc/**, + mount options=(rw,bind), + mount options=(rw,rbind), + mount options=(rw,make-rshared), + + # there doesn't seem to be a way to ask for: + # mount options=(ro,nosuid,nodev,noexec,remount,bind), + # as we always get mount to $cdir/proc/sys with those flags denied + # So allow all mounts until that is straightened out: + mount, + mount options=bind /var/lib/lxd/shmounts/** -> /var/lib/lxd/**, + + mount options=(rw,make-slave) -> **, + mount options=(rw,make-rslave) -> **, + mount options=(rw,make-shared) -> **, + mount options=(rw,make-rshared) -> **, + mount options=(rw,make-private) -> **, + mount options=(rw,make-rprivate) -> **, + mount options=(rw,make-unbindable) -> **, + mount options=(rw,make-runbindable) -> **, + + mount options=(rw,bind), + mount options=(rw,rbind), +} diff --git a/data/desktop/android-settings.desktop b/data/desktop/android-settings.desktop new file mode 100644 index 0000000..dd12255 --- /dev/null +++ b/data/desktop/android-settings.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Version=1.0 +Exec=anbox.app-settings +Terminal=false +Type=Application +Name=Android Settings +GenericName=Android Settings diff --git a/snap/gui/anbox.desktop b/data/desktop/appmgr.desktop similarity index 72% rename from snap/gui/anbox.desktop rename to data/desktop/appmgr.desktop index 74b42e7..248acde 100644 --- a/snap/gui/anbox.desktop +++ b/data/desktop/appmgr.desktop @@ -1,6 +1,6 @@ [Desktop Entry] -Name=Anbox -GenericName=Android in a box +Name=Anbox Application Manager +GenericName=Anbox Application Manager Version=1.0 Type=Application Icon=${SNAP}/meta/gui/icon.png diff --git a/data/glvnd/10_nvidia.json b/data/glvnd/10_nvidia.json new file mode 100644 index 0000000..2bfcca0 --- /dev/null +++ b/data/glvnd/10_nvidia.json @@ -0,0 +1,6 @@ +{ + "file_format_version" : "1.0.0", + "ICD" : { + "library_path" : "libEGL_nvidia.so.0" + } +} diff --git a/data/glvnd/50_mesa.json b/data/glvnd/50_mesa.json new file mode 100644 index 0000000..8aaaa10 --- /dev/null +++ b/data/glvnd/50_mesa.json @@ -0,0 +1,6 @@ +{ + "file_format_version" : "1.0.0", + "ICD" : { + "library_path" : "libEGL_mesa.so.0" + } +} diff --git a/debian/anbox-common.install b/debian/anbox-common.install deleted file mode 100644 index d320f00..0000000 --- a/debian/anbox-common.install +++ /dev/null @@ -1 +0,0 @@ -etc/X11/Xsession.d/68anbox diff --git a/debian/changelog b/debian/changelog index 2f89091..a23ddfb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +anbox (10) bionic; urgency=medium + + * Bump version + + -- Simon Fels Wed, 23 May 2018 11:05:05 +0200 + anbox (8) artful; urgency=medium * Drop upstart/systemctl session jobs diff --git a/debian/control b/debian/control index 72e3872..2d97ac6 100644 --- a/debian/control +++ b/debian/control @@ -8,21 +8,9 @@ Homepage: http://anbox.io Vcs-Browser: https://github.com/anbox/anbox Vcs-Git: https://github.com/anbox/anbox.git -Package: anbox-common -Architecture: all -Depends: ${misc:Depends} -Description: Common files necessary for Anbox - . - This package contains necessary things which can't be shipped - with anbox snap package - Package: anbox-modules-dkms Architecture: all Depends: dkms (>= 1.95), ${misc:Depends} -# Get existing installations to install the anbox-common package -# as this will replace our existing classic snap based install -# approach. -Recommends: anbox-common Description: Android kernel driver (binder, ashmem) in DKMS format. . This package contains a out-of-tree version of the core Android diff --git a/debian/rules b/debian/rules index 9874b48..c2d7a6a 100755 --- a/debian/rules +++ b/debian/rules @@ -28,7 +28,4 @@ override_dh_install: install -d $(CURDIR)/debian/tmp/etc/modules-load.d install -m 0644 kernel/anbox.conf $(CURDIR)/debian/tmp/etc/modules-load.d - install -d $(CURDIR)/debian/tmp/etc/X11/Xsession.d - install -m 0644 data/xsession.conf $(CURDIR)/debian/tmp/etc/X11/Xsession.d/68anbox - dh_install diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 179e7f3..f61af7d 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -1,3 +1,4 @@ add_subdirectory(process-cpp-minimal) add_subdirectory(android-emugl) add_subdirectory(xdg) +add_subdirectory(backtrace-cpp) diff --git a/external/android-emugl/host/libs/CMakeLists.txt b/external/android-emugl/host/libs/CMakeLists.txt index 1e15260..f3141bf 100644 --- a/external/android-emugl/host/libs/CMakeLists.txt +++ b/external/android-emugl/host/libs/CMakeLists.txt @@ -21,4 +21,3 @@ add_subdirectory(GLESv1_dec) add_subdirectory(GLESv2_dec) add_subdirectory(libOpenGLESDispatch) add_subdirectory(renderControl_dec) -add_subdirectory(Translator) diff --git a/external/android-emugl/host/libs/Translator/CMakeLists.txt b/external/android-emugl/host/libs/Translator/CMakeLists.txt deleted file mode 100644 index 5c2e6d0..0000000 --- a/external/android-emugl/host/libs/Translator/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -add_subdirectory(GLcommon) -add_subdirectory(EGL) -add_subdirectory(GLES_CM) -add_subdirectory(GLES_V2) diff --git a/external/android-emugl/host/libs/Translator/EGL/Android.mk b/external/android-emugl/host/libs/Translator/EGL/Android.mk deleted file mode 100644 index 28c2120..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/Android.mk +++ /dev/null @@ -1,46 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -host_OS_SRCS := -host_common_LDLIBS := - -ifeq ($(BUILD_TARGET_OS),linux) - host_OS_SRCS = EglOsApi_glx.cpp - host_common_LDLIBS += -lGL -lX11 -ldl -lpthread -endif - -ifeq ($(BUILD_TARGET_OS),darwin) - host_OS_SRCS = EglOsApi_darwin.cpp \ - MacNative.m \ - MacPixelFormatsAttribs.m - - host_common_LDLIBS += -Wl,-framework,AppKit -endif - -ifeq ($(BUILD_TARGET_OS),windows) - host_OS_SRCS = EglOsApi_wgl.cpp - host_common_LDLIBS += -lgdi32 -endif - -host_common_SRC_FILES := \ - $(host_OS_SRCS) \ - ThreadInfo.cpp \ - EglImp.cpp \ - EglConfig.cpp \ - EglContext.cpp \ - EglGlobalInfo.cpp \ - EglValidate.cpp \ - EglSurface.cpp \ - EglWindowSurface.cpp \ - EglPbufferSurface.cpp \ - EglThreadInfo.cpp \ - EglDisplay.cpp \ - ClientAPIExts.cpp - -### EGL host implementation ######################## -$(call emugl-begin-host-shared-library,lib$(BUILD_TARGET_SUFFIX)EGL_translator) -$(call emugl-import,libGLcommon) - -LOCAL_LDLIBS += $(host_common_LDLIBS) -LOCAL_SRC_FILES := $(host_common_SRC_FILES) - -$(call emugl-end-module) diff --git a/external/android-emugl/host/libs/Translator/EGL/CMakeLists.txt b/external/android-emugl/host/libs/Translator/EGL/CMakeLists.txt deleted file mode 100644 index c55d74f..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/CMakeLists.txt +++ /dev/null @@ -1,30 +0,0 @@ -set(SOURCES - ThreadInfo.cpp - EglImp.cpp - EglConfig.cpp - EglContext.cpp - EglGlobalInfo.cpp - EglValidate.cpp - EglSurface.cpp - EglWindowSurface.cpp - EglPbufferSurface.cpp - EglThreadInfo.cpp - EglDisplay.cpp - EglOsApi_glx.cpp - ClientAPIExts.cpp) - -include_directories(BEFORE - ${EGL_INCLUDE_DIRS} - ${GLESv2_INCLUDE_DIRS}) - -add_library(EGL_translator SHARED ${SOURCES}) -target_link_libraries(EGL_translator - GLcommon - ${EGL_LDFLAGS} - ${EGL_LIBRARIES} - ${GLESv2_LDFLAGS} - ${GLESv2_LIBRARIES}) - -install( - TARGETS EGL_translator - LIBRARY DESTINATION ${ANBOX_TRANSLATOR_INSTALL_DIR}) diff --git a/external/android-emugl/host/libs/Translator/EGL/ClientAPIExts.cpp b/external/android-emugl/host/libs/Translator/EGL/ClientAPIExts.cpp deleted file mode 100644 index 0aeb44e..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/ClientAPIExts.cpp +++ /dev/null @@ -1,159 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "ClientAPIExts.h" -#include "EglGlobalInfo.h" -#include "GLcommon/GLutils.h" -#include "GLcommon/TranslatorIfaces.h" -#include "ThreadInfo.h" -#include -#include - -namespace ClientAPIExts -{ - -// -// define function pointer type for each extention function -// typename has the form __egl_{funcname}_t -// -#define FUNC_TYPE(fname) __egl_ ## fname ## _t -#define API_ENTRY(fname,params,args) \ - typedef void (GL_APIENTRY *FUNC_TYPE(fname)) params; - -#define API_ENTRY_RET(rtype,fname,params,args) \ - typedef rtype (GL_APIENTRY *FUNC_TYPE(fname)) params; - -#include "ClientAPIExts.in" -#undef API_ENTRY -#undef API_ENTRY_RET - -///// -// Define static table to store the function value for each -// client API. functions pointers will get initialized through -// ClientAPIExts::initClientFuncs function after each client API has been -// loaded. -///// -#define API_ENTRY(fname,params,args) \ - FUNC_TYPE(fname) fname; - -#define API_ENTRY_RET(rtype,fname,params,args) \ - API_ENTRY(fname,params,args) - -static struct _ext_table -{ -#include "ClientAPIExts.in" -} s_client_extensions[MAX_GLES_VERSION-1]; - -#undef API_ENTRY -#undef API_ENTRY_RET - -// -// This function initialized each entry in the s_client_extensions -// struct at the givven index using the givven client interface -// -void initClientFuncs(const GLESiface *iface, int idx) -{ -#define API_ENTRY(fname,params,args) \ - s_client_extensions[idx].fname = \ - (FUNC_TYPE(fname))iface->getProcAddress(#fname); - -#define API_ENTRY_RET(rtype,fname,params,args) \ - API_ENTRY(fname,params,args) - - // - // reset all func pointers to NULL - // - memset(&s_client_extensions[idx], 0, sizeof(struct _ext_table)); - - // - // And now query the GLES library for each proc address - // -#include "ClientAPIExts.in" -#undef API_ENTRY -#undef API_ENTRY_RET -} - -// -// Define implementation for each extension function which checks -// the current context version and calls to the correct client API -// function. -// -#define API_ENTRY(fname,params,args) \ - static void _egl_ ## fname params \ - { \ - ThreadInfo* thread = getThreadInfo(); \ - if (!thread->eglContext.Ptr()) { \ - return; \ - } \ - int idx = (int)thread->eglContext->version() - 1; \ - if (!s_client_extensions[idx].fname) { \ - return; \ - } \ - (*s_client_extensions[idx].fname) args; \ - } - -#define API_ENTRY_RET(rtype,fname,params,args) \ - static rtype _egl_ ## fname params \ - { \ - ThreadInfo* thread = getThreadInfo(); \ - if (!thread->eglContext.Ptr()) { \ - return (rtype)0; \ - } \ - int idx = (int)thread->eglContext->version() - 1; \ - if (!s_client_extensions[idx].fname) { \ - return (rtype)0; \ - } \ - return (*s_client_extensions[idx].fname) args; \ - } - -#include "ClientAPIExts.in" -#undef API_ENTRY -#undef API_ENTRY_RET - -// -// Define a table to map function names to the local _egl_ version of -// the extension function, to be used in eglGetProcAddress. -// -#define API_ENTRY(fname,params,args) \ - { #fname, (__translatorMustCastToProperFunctionPointerType)_egl_ ## fname}, -#define API_ENTRY_RET(rtype,fname,params,args) \ - API_ENTRY(fname,params,args) - -static struct _client_ext_funcs { - const char *fname; - __translatorMustCastToProperFunctionPointerType proc; -} s_client_ext_funcs[] = { -#include "ClientAPIExts.in" -}; -static const int numExtFuncs = sizeof(s_client_ext_funcs) / - sizeof(s_client_ext_funcs[0]); - -#undef API_ENTRY -#undef API_ENTRY_RET - -// -// returns the __egl_ version of the givven extension function name. -// -__translatorMustCastToProperFunctionPointerType getProcAddress(const char *fname) -{ - for (int i=0; i 0 ? 1 : 0), - m_samples_per_pixel(samples_per_pixel), - m_stencil_size(stencil_size), - m_surface_type(surface_type), - m_transparent_type(transparent_type), - m_trans_red_val(trans_red_val), - m_trans_green_val(trans_green_val), - m_trans_blue_val(trans_blue_val), - m_conformant(((red_size + green_size + blue_size + alpha_size > 0) && - (caveat != EGL_NON_CONFORMANT_CONFIG)) ? - m_renderable_type : 0), - m_nativeFormat(frmt) {} - - -EglConfig::EglConfig(const EglConfig& conf) : - m_buffer_size(conf.m_buffer_size), - m_red_size(conf.m_red_size), - m_green_size(conf.m_green_size), - m_blue_size(conf.m_blue_size), - m_alpha_size(conf.m_alpha_size), - m_bind_to_tex_rgb(conf.m_bind_to_tex_rgb), - m_bind_to_tex_rgba(conf.m_bind_to_tex_rgba), - m_caveat(conf.m_caveat), - m_config_id(conf.m_config_id), - m_native_config_id(conf.m_native_config_id), - m_frame_buffer_level(conf.m_frame_buffer_level), - m_depth_size(conf.m_depth_size), - m_max_pbuffer_width(conf.m_max_pbuffer_width), - m_max_pbuffer_height(conf.m_max_pbuffer_height), - m_max_pbuffer_size(conf.m_max_pbuffer_size), - m_max_swap_interval(conf.m_max_swap_interval), - m_min_swap_interval(conf.m_min_swap_interval), - m_native_renderable(conf.m_native_renderable), - m_renderable_type(conf.m_renderable_type), - m_native_visual_id(conf.m_native_visual_id), - m_native_visual_type(conf.m_native_visual_type), - m_sample_buffers_num(conf.m_sample_buffers_num), - m_samples_per_pixel(conf.m_samples_per_pixel), - m_stencil_size(conf.m_stencil_size), - m_surface_type(conf.m_surface_type), - m_transparent_type(conf.m_transparent_type), - m_trans_red_val(conf.m_trans_red_val), - m_trans_green_val(conf.m_trans_green_val), - m_trans_blue_val(conf.m_trans_blue_val), - m_conformant(conf.m_conformant), - m_nativeFormat(conf.m_nativeFormat->clone()) {} - - -EglConfig::EglConfig(const EglConfig& conf, - EGLint config_id, - EGLint red_size, - EGLint green_size, - EGLint blue_size, - EGLint alpha_size) : - m_buffer_size(red_size + green_size + blue_size + alpha_size), - m_red_size(red_size), - m_green_size(green_size), - m_blue_size(blue_size), - m_alpha_size(alpha_size), - m_bind_to_tex_rgb(conf.m_bind_to_tex_rgb), - m_bind_to_tex_rgba(conf.m_bind_to_tex_rgba), - m_caveat(conf.m_caveat), - m_config_id(config_id), - m_native_config_id(conf.m_native_config_id), - m_frame_buffer_level(conf.m_frame_buffer_level), - m_depth_size(conf.m_depth_size), - m_max_pbuffer_width(conf.m_max_pbuffer_width), - m_max_pbuffer_height(conf.m_max_pbuffer_height), - m_max_pbuffer_size(conf.m_max_pbuffer_size), - m_max_swap_interval(conf.m_max_swap_interval), - m_min_swap_interval(conf.m_min_swap_interval), - m_native_renderable(conf.m_native_renderable), - m_renderable_type(conf.m_renderable_type), - m_native_visual_id(conf.m_native_visual_id), - m_native_visual_type(conf.m_native_visual_type), - m_sample_buffers_num(conf.m_sample_buffers_num), - m_samples_per_pixel(conf.m_samples_per_pixel), - m_stencil_size(conf.m_stencil_size), - m_surface_type(conf.m_surface_type), - m_transparent_type(conf.m_transparent_type), - m_trans_red_val(conf.m_trans_red_val), - m_trans_green_val(conf.m_trans_green_val), - m_trans_blue_val(conf.m_trans_blue_val), - m_conformant(conf.m_conformant), - m_nativeFormat(conf.m_nativeFormat->clone()) {}; - - -bool EglConfig::getConfAttrib(EGLint attrib,EGLint* val) const { - switch(attrib) { - case EGL_BUFFER_SIZE: - *val = m_buffer_size; - break; - case EGL_RED_SIZE: - *val = m_red_size; - break; - case EGL_GREEN_SIZE: - *val = m_green_size; - break; - case EGL_BLUE_SIZE: - *val = m_blue_size; - break; - case EGL_ALPHA_SIZE: - *val = m_alpha_size; - break; - case EGL_BIND_TO_TEXTURE_RGB: - *val = m_bind_to_tex_rgb; - break; - case EGL_BIND_TO_TEXTURE_RGBA: - *val = m_bind_to_tex_rgba; - break; - case EGL_CONFIG_CAVEAT: - *val = m_caveat; - break; - case EGL_CONFIG_ID: - *val = m_config_id; - break; - case EGL_DEPTH_SIZE: - *val = m_depth_size; - break; - case EGL_LEVEL: - *val = m_frame_buffer_level; - break; - case EGL_MAX_PBUFFER_WIDTH: - *val = m_max_pbuffer_width; - break; - case EGL_MAX_PBUFFER_HEIGHT: - *val = m_max_pbuffer_height; - break; - case EGL_MAX_PBUFFER_PIXELS: - *val = m_max_pbuffer_size; - break; - case EGL_MAX_SWAP_INTERVAL: - *val = m_max_swap_interval; - break; - case EGL_MIN_SWAP_INTERVAL: - *val = m_min_swap_interval; - break; - case EGL_NATIVE_RENDERABLE: - *val = m_native_renderable; - break; - case EGL_NATIVE_VISUAL_ID: - *val = m_native_visual_id; - break; - case EGL_NATIVE_VISUAL_TYPE: - *val = m_native_visual_type; - break; - case EGL_RENDERABLE_TYPE: - *val = m_renderable_type; - break; - case EGL_SAMPLE_BUFFERS: - *val = m_sample_buffers_num; - break; - case EGL_SAMPLES: - *val = m_samples_per_pixel; - break; - case EGL_STENCIL_SIZE: - *val = m_stencil_size; - break; - case EGL_SURFACE_TYPE: - *val = m_surface_type; - break; - case EGL_TRANSPARENT_TYPE: - *val =m_transparent_type; - break; - case EGL_TRANSPARENT_RED_VALUE: - *val = m_trans_red_val; - break; - case EGL_TRANSPARENT_GREEN_VALUE: - *val = m_trans_green_val; - break; - case EGL_TRANSPARENT_BLUE_VALUE: - *val = m_trans_blue_val; - break; - case EGL_CONFORMANT: - *val = m_conformant; - break; - default: - return false; - } - return true; -} - -// checking compitabilty between *this configuration and another configuration -// the compitability is checked againsed red,green,blue,buffer stencil and depth sizes -bool EglConfig::compatibleWith(const EglConfig& conf) const { - - return m_buffer_size == conf.m_buffer_size && - m_red_size == conf.m_red_size && - m_green_size == conf.m_green_size && - m_blue_size == conf.m_blue_size && - m_depth_size == conf.m_depth_size && - m_stencil_size == conf.m_stencil_size; -} - -//following the sorting EGLconfig as in spec -bool EglConfig::operator<(const EglConfig& conf) const { - //0 - if(m_conformant != conf.m_conformant) { - return m_conformant != 0; //We want the conformant ones first - } - //1 - if(m_caveat != conf.m_caveat) { - return m_caveat < conf.m_caveat; // EGL_NONE < EGL_SLOW_CONFIG < EGL_NON_CONFORMANT_CONFIG - } - //2 TODO: - - //3 - if(m_buffer_size != conf.m_buffer_size) { - return m_buffer_size < conf.m_buffer_size; - } - //4 - if(m_sample_buffers_num != conf.m_sample_buffers_num) { - return m_sample_buffers_num < conf.m_sample_buffers_num; - } - //5 - if(m_samples_per_pixel != conf.m_samples_per_pixel) { - return m_samples_per_pixel < conf.m_samples_per_pixel; - } - //6 - if(m_depth_size != conf.m_depth_size) { - return m_depth_size < conf.m_depth_size; - } - //7 - if(m_stencil_size != conf.m_stencil_size) { - return m_stencil_size < conf.m_stencil_size; - } - //8 implementation defined - if(m_native_visual_type != conf.m_native_visual_type) { - return m_native_visual_type < conf.m_native_visual_type; - } - //9 - return m_config_id < conf.m_config_id; -} - -bool EglConfig::operator>=(const EglConfig& conf) const { - return !((*this) < conf); -} -#define CHECK_PROP(dummy,prop_name,op) \ - if((dummy.prop_name != EGL_DONT_CARE) && (dummy.prop_name op prop_name)) return false; -#define CHECK_PROP_CAST(dummy,prop_name,op) \ - if((((EGLint)dummy.prop_name) != EGL_DONT_CARE) && (dummy.prop_name op prop_name)) return false; -//checking if config stands for all the selection crateria of dummy as defined by EGL spec -bool EglConfig::chosen(const EglConfig& dummy) const { - - //atleast - CHECK_PROP(dummy,m_buffer_size,>); - CHECK_PROP(dummy,m_red_size,>); - CHECK_PROP(dummy,m_green_size,>); - CHECK_PROP(dummy,m_blue_size,>); - CHECK_PROP(dummy,m_alpha_size,>); - CHECK_PROP(dummy,m_depth_size,>); - CHECK_PROP(dummy,m_stencil_size,>); - CHECK_PROP(dummy,m_sample_buffers_num,>); - CHECK_PROP(dummy,m_samples_per_pixel,>); - - //exact - CHECK_PROP(dummy,m_frame_buffer_level,!=); - CHECK_PROP(dummy,m_config_id,!=); - CHECK_PROP(dummy,m_native_visual_type,!=); - CHECK_PROP(dummy,m_max_swap_interval ,!=); - CHECK_PROP(dummy,m_min_swap_interval ,!=); - CHECK_PROP(dummy,m_trans_red_val ,!=); - CHECK_PROP(dummy,m_trans_green_val ,!=); - CHECK_PROP(dummy,m_trans_blue_val ,!=); - //exact - when cast to EGLint is needed when comparing to EGL_DONT_CARE - CHECK_PROP_CAST(dummy,m_bind_to_tex_rgb ,!=); - CHECK_PROP_CAST(dummy,m_bind_to_tex_rgba,!=); - CHECK_PROP_CAST(dummy,m_caveat,!=); - CHECK_PROP_CAST(dummy,m_native_renderable ,!=); - CHECK_PROP_CAST(dummy,m_transparent_type ,!=); - - //mask - if(dummy.m_surface_type != EGL_DONT_CARE && - ((dummy.m_surface_type & m_surface_type) != dummy.m_surface_type)) return false; - - if(dummy.m_conformant != (EGLenum)EGL_DONT_CARE && - ((dummy.m_conformant & m_conformant) != dummy.m_conformant)) return false; - - if(dummy.m_renderable_type != EGL_DONT_CARE && - ((dummy.m_renderable_type & m_renderable_type) != dummy.m_renderable_type)) return false; - - //passed all checks - return true; -} diff --git a/external/android-emugl/host/libs/Translator/EGL/EglConfig.h b/external/android-emugl/host/libs/Translator/EGL/EglConfig.h deleted file mode 100644 index 9eee1fd..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglConfig.h +++ /dev/null @@ -1,148 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef EGL_CONFIG_H -#define EGL_CONFIG_H - -#include "EglOsApi.h" -#include - -#include - -#define MIN_SWAP_INTERVAL 1 -#define MAX_SWAP_INTERVAL 10 - -// A class used to model the content of an EGLConfig object. -// This is really a structure with several fields that can be queried -// individually with getConfigAttrib(), and compared for sorting according -// to the EGLConfig specification. -class EglConfig { -public: - // Return the value of a given attribute, identified by its name |attrib| - // (e.g. EGL_CONFIG_ID). On success, return true and sets |*val| to the - // attribute value. On failure (unknown |attrib| value), return false. - bool getConfAttrib(EGLint attrib, EGLint* val) const; - - // Comparison operators used to sort EglConfig instances. - bool operator<(const EglConfig& conf) const; - bool operator>=(const EglConfig& conf) const; - - // Return true iff this instance is compatible with |conf|, i.e. that - // they have the same red/green/blue/depth/stencil sizes. - bool compatibleWith(const EglConfig& conf) const; //compatibility - - // Return true iff this instance matches the minimal requirements of - // another EglConfig |dummy|. Any attribute value in |dummy| that isn't - // EGL_DONT_CARE will be tested against the corresponding value in the - // instance. - bool chosen(const EglConfig& dummy) const; - - // Return the EGL_SURFACE_TYPE value. - EGLint surfaceType() const { return m_surface_type;}; - - // Return the EGL_CONFIG_ID value. - EGLint id() const { return m_config_id; } - - // Return the native configuration id. By default, this is the same as id() - // Except if the EglConfig was created with the overriding copy-constructor - // below. In which case nativeId() is the id() value of the source - // EglConfig, while id() will return the overriden value. - EGLint nativeId() const { return m_native_config_id; } - - // Return the native pixel format for this config. - EglOS::PixelFormat* nativeFormat() const { return m_nativeFormat; } - - // Constructor for a new instance, all values explicitly defined. - EglConfig(EGLint red_size, - EGLint green_size, - EGLint blue_size, - EGLint alpha_size, - EGLenum caveat, - EGLint config_id, - EGLint depth_size, - EGLint frame_buffer_level, - EGLint max_pbuffer_width, - EGLint max_pbuffer_height, - EGLint max_pbuffer_size, - EGLBoolean native_renderable, - EGLint renderable_type, - EGLint native_visual_id, - EGLint native_visual_type, - EGLint samples_per_pixel, - EGLint stencil_size, - EGLint surface_type, - EGLenum transparent_type, - EGLint trans_red_val, - EGLint trans_green_val, - EGLint trans_blue_val, - EglOS::PixelFormat* frmt); - - // Copy-constructor. - EglConfig(const EglConfig& conf); - - // A copy-constructor that allows one to override the configuration ID - // and red/green/blue/alpha sizes. Note that this is how one creates - // an EglConfig instance where nativeId() and id() return different - // values (see comment for nativeId()). - EglConfig(const EglConfig& conf, - EGLint config_id, - EGLint red_size, - EGLint green_size, - EGLint blue_size, - EGLint alpha_size); - - // Destructor is required to get id of pixel format instance. - ~EglConfig() { - delete m_nativeFormat; - } - -private: - const EGLint m_buffer_size; - const EGLint m_red_size; - const EGLint m_green_size; - const EGLint m_blue_size; - const EGLint m_alpha_size; - const EGLBoolean m_bind_to_tex_rgb; - const EGLBoolean m_bind_to_tex_rgba; - const EGLenum m_caveat; - const EGLint m_config_id; - const EGLint m_native_config_id; - const EGLint m_frame_buffer_level; - const EGLint m_depth_size; - const EGLint m_max_pbuffer_width; - const EGLint m_max_pbuffer_height; - const EGLint m_max_pbuffer_size; - const EGLint m_max_swap_interval; - const EGLint m_min_swap_interval; - const EGLBoolean m_native_renderable; - const EGLint m_renderable_type; - const EGLint m_native_visual_id; - const EGLint m_native_visual_type; - const EGLint m_sample_buffers_num; - const EGLint m_samples_per_pixel; - const EGLint m_stencil_size; - const EGLint m_surface_type; - const EGLenum m_transparent_type; - const EGLint m_trans_red_val; - const EGLint m_trans_green_val; - const EGLint m_trans_blue_val; - const EGLenum m_conformant; - - EglOS::PixelFormat* m_nativeFormat; -}; - -typedef std::list ConfigsList; - -#endif diff --git a/external/android-emugl/host/libs/Translator/EGL/EglContext.cpp b/external/android-emugl/host/libs/Translator/EGL/EglContext.cpp deleted file mode 100644 index 28247c6..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglContext.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "EglContext.h" -#include "EglDisplay.h" -#include "EglGlobalInfo.h" -#include "EglOsApi.h" - -unsigned int EglContext::s_nextContextHndl = 0; - -extern EglGlobalInfo* g_eglInfo; // defined in EglImp.cpp - -bool EglContext::usingSurface(SurfacePtr surface) { - return surface.Ptr() == m_read.Ptr() || surface.Ptr() == m_draw.Ptr(); -} - -EglContext::EglContext(EglDisplay *dpy, - EglOS::Context* context, - ContextPtr shared_context, - EglConfig* config, - GLEScontext* glesCtx, - GLESVersion ver, - ObjectNameManager* mngr) : - m_dpy(dpy), - m_native(context), - m_config(config), - m_glesContext(glesCtx), - m_read(NULL), - m_draw(NULL), - m_version(ver), - m_mngr(mngr) { - m_shareGroup = shared_context.Ptr()? - mngr->attachShareGroup(context,shared_context->nativeType()): - mngr->createShareGroup(context); - m_hndl = ++s_nextContextHndl; -} - -EglContext::~EglContext() -{ - // - // remove the context in the underlying OS layer - // - m_dpy->nativeType()->destroyContext(m_native); - - // - // call the client-api to remove the GLES context - // - g_eglInfo->getIface(version())->deleteGLESContext(m_glesContext); - - if (m_mngr) - { - m_mngr->deleteShareGroup(m_native); - } -} - -void EglContext::setSurfaces(SurfacePtr read,SurfacePtr draw) -{ - m_read = read; - m_draw = draw; -} - -bool EglContext::getAttrib(EGLint attrib,EGLint* value) { - switch(attrib) { - case EGL_CONFIG_ID: - *value = m_config->id(); - break; - default: - return false; - } - return true; -} - -bool EglContext::attachImage(unsigned int imageId,ImagePtr img){ - if(m_attachedImages.find(imageId) == m_attachedImages.end()){ - m_attachedImages[imageId] = img; - return true; - } - return false; -} - -void EglContext::detachImage(unsigned int imageId){ - m_attachedImages.erase(imageId); -} - diff --git a/external/android-emugl/host/libs/Translator/EGL/EglContext.h b/external/android-emugl/host/libs/Translator/EGL/EglContext.h deleted file mode 100644 index 2189d94..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglContext.h +++ /dev/null @@ -1,74 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef EGL_CONTEXT_H -#define EGL_CONTEXT_H - -#include "EglConfig.h" -#include "EglOsApi.h" -#include "EglSurface.h" - -#include -#include -#include - -#include "emugl/common/smart_ptr.h" - -#include - -#include - -class EglContext; -typedef emugl::SmartPtr ContextPtr; - -class EglDisplay; - -class EglContext { - -public: - - EglContext(EglDisplay *dpy, EglOS::Context* context,ContextPtr shared_context,EglConfig* config,GLEScontext* glesCtx,GLESVersion ver,ObjectNameManager* mngr); - bool usingSurface(SurfacePtr surface); - EglOS::Context* nativeType() const { return m_native; } - bool getAttrib(EGLint attrib,EGLint* value); - SurfacePtr read(){ return m_read;}; - SurfacePtr draw(){ return m_draw;}; - ShareGroupPtr getShareGroup(){return m_shareGroup;} - EglConfig* getConfig(){ return m_config;}; - GLESVersion version(){return m_version;}; - GLEScontext* getGlesContext(){return m_glesContext;} - void setSurfaces(SurfacePtr read,SurfacePtr draw); - unsigned int getHndl(){return m_hndl;} - bool attachImage(unsigned int imageId,ImagePtr img); - void detachImage(unsigned int imageId); - - ~EglContext(); - -private: - static unsigned int s_nextContextHndl; - EglDisplay *m_dpy; - EglOS::Context* m_native; - EglConfig* m_config; - GLEScontext* m_glesContext; - ShareGroupPtr m_shareGroup; - SurfacePtr m_read; - SurfacePtr m_draw; - GLESVersion m_version; - ObjectNameManager *m_mngr; - unsigned int m_hndl; - ImagesHndlMap m_attachedImages; -}; - -#endif diff --git a/external/android-emugl/host/libs/Translator/EGL/EglDisplay.cpp b/external/android-emugl/host/libs/Translator/EGL/EglDisplay.cpp deleted file mode 100644 index 33b8503..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglDisplay.cpp +++ /dev/null @@ -1,416 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "EglDisplay.h" - -#include "EglConfig.h" -#include "EglOsApi.h" -#include - -EglDisplay::EglDisplay(EGLNativeDisplayType dpy, - EglOS::Display* idpy) : - m_dpy(dpy), - m_idpy(idpy), - m_initialized(false), - m_configInitialized(false), - m_nextEglImageId(0), - m_globalSharedContext(NULL) -{ - m_manager[GLES_1_1] = new ObjectNameManager(&m_globalNameSpace); - m_manager[GLES_2_0] = new ObjectNameManager(&m_globalNameSpace); -}; - -EglDisplay::~EglDisplay() { - emugl::Mutex::AutoLock mutex(m_lock); - - // - // Destroy the global context if one was created. - // (should be true for windows platform only) - // - if (m_globalSharedContext != NULL) { - m_idpy->destroyContext(m_globalSharedContext); - } - - m_idpy->release(); - - for(ConfigsList::iterator it = m_configs.begin(); - it != m_configs.end(); - it++) { - delete *it; - } - - delete m_manager[GLES_1_1]; - delete m_manager[GLES_2_0]; - - delete m_idpy; -} - -void EglDisplay::initialize(int renderableType) { - emugl::Mutex::AutoLock mutex(m_lock); - m_initialized = true; - initConfigurations(renderableType); - m_configInitialized = true; -} - -bool EglDisplay::isInitialize() { return m_initialized;} - -void EglDisplay::terminate(){ - emugl::Mutex::AutoLock mutex(m_lock); - m_contexts.clear(); - m_surfaces.clear(); - m_initialized = false; -} - -static bool compareEglConfigsPtrs(EglConfig* first,EglConfig* second) { - return *first < *second ; -} - -void EglDisplay::addSimplePixelFormat(int red_size, - int green_size, - int blue_size, - int alpha_size) { - m_configs.sort(compareEglConfigsPtrs); - - EGLConfig match; - - EglConfig dummy(red_size, - green_size, - blue_size, - alpha_size, // RGB_565 - EGL_DONT_CARE, - EGL_DONT_CARE, - 16, // Depth - EGL_DONT_CARE, - EGL_DONT_CARE, - EGL_DONT_CARE, - EGL_DONT_CARE, - EGL_DONT_CARE, - EGL_DONT_CARE, - EGL_DONT_CARE, - EGL_DONT_CARE, - EGL_DONT_CARE, - EGL_DONT_CARE, - EGL_DONT_CARE, - EGL_DONT_CARE, - EGL_DONT_CARE, - EGL_DONT_CARE, - EGL_DONT_CARE, - NULL); - - if(!doChooseConfigs(dummy, &match, 1)) - { - return; - } - - const EglConfig* config = (EglConfig*)match; - - int bSize; - config->getConfAttrib(EGL_BUFFER_SIZE,&bSize); - - if(bSize == 16) - { - return; - } - - int max_config_id = 0; - - for(ConfigsList::iterator it = m_configs.begin(); it != m_configs.end() ;it++) { - EGLint id; - (*it)->getConfAttrib(EGL_CONFIG_ID, &id); - if(id > max_config_id) - max_config_id = id; - } - - EglConfig* newConfig = new EglConfig(*config,max_config_id+1, - red_size, green_size, blue_size, - alpha_size); - - m_configs.push_back(newConfig); -} - -void EglDisplay::addMissingConfigs() { - addSimplePixelFormat(5, 6, 5, 0); // RGB_565 - addSimplePixelFormat(8, 8, 8, 0); // RGB_888 - // (Host GPUs that are newer may not list RGB_888 - // out of the box.) -} - -void EglDisplay::initConfigurations(int renderableType) { - if (m_configInitialized) { - return; - } - m_idpy->queryConfigs(renderableType, addConfig, this); - - addMissingConfigs(); - m_configs.sort(compareEglConfigsPtrs); - -#if EMUGL_DEBUG - for (ConfigsList::const_iterator it = m_configs.begin(); - it != m_configs.end(); - it++) { - EglConfig* config = *it; - EGLint red, green, blue, alpha, depth, stencil, renderable, surface; - config->getConfAttrib(EGL_RED_SIZE, &red); - config->getConfAttrib(EGL_GREEN_SIZE, &green); - config->getConfAttrib(EGL_BLUE_SIZE, &blue); - config->getConfAttrib(EGL_ALPHA_SIZE, &alpha); - config->getConfAttrib(EGL_DEPTH_SIZE, &depth); - config->getConfAttrib(EGL_STENCIL_SIZE, &stencil); - config->getConfAttrib(EGL_RENDERABLE_TYPE, &renderable); - config->getConfAttrib(EGL_SURFACE_TYPE, &surface); - } -#endif // EMUGL_DEBUG -} - -EglConfig* EglDisplay::getConfig(EGLConfig conf) const { - emugl::Mutex::AutoLock mutex(m_lock); - - for(ConfigsList::const_iterator it = m_configs.begin(); - it != m_configs.end(); - it++) { - if(static_cast(*it) == conf) { - return (*it); - } - } - return NULL; -} - -SurfacePtr EglDisplay::getSurface(EGLSurface surface) const { - emugl::Mutex::AutoLock mutex(m_lock); - /* surface is "key" in map. */ - unsigned int hndl = SafeUIntFromPointer(surface); - SurfacesHndlMap::const_iterator it = m_surfaces.find(hndl); - return it != m_surfaces.end() ? - (*it).second : - SurfacePtr(NULL); -} - -ContextPtr EglDisplay::getContext(EGLContext ctx) const { - emugl::Mutex::AutoLock mutex(m_lock); - /* ctx is "key" in map. */ - unsigned int hndl = SafeUIntFromPointer(ctx); - ContextsHndlMap::const_iterator it = m_contexts.find(hndl); - return it != m_contexts.end() ? - (*it).second : - ContextPtr(NULL); -} - -bool EglDisplay::removeSurface(EGLSurface s) { - emugl::Mutex::AutoLock mutex(m_lock); - /* s is "key" in map. */ - unsigned int hndl = SafeUIntFromPointer(s); - SurfacesHndlMap::iterator it = m_surfaces.find(hndl); - if(it != m_surfaces.end()) { - m_surfaces.erase(it); - return true; - } - return false; -} - -bool EglDisplay::removeContext(EGLContext ctx) { - emugl::Mutex::AutoLock mutex(m_lock); - /* ctx is "key" in map. */ - unsigned int hndl = SafeUIntFromPointer(ctx); - ContextsHndlMap::iterator it = m_contexts.find(hndl); - if(it != m_contexts.end()) { - m_contexts.erase(it); - return true; - } - return false; -} - -bool EglDisplay::removeContext(ContextPtr ctx) { - emugl::Mutex::AutoLock mutex(m_lock); - - ContextsHndlMap::iterator it; - for(it = m_contexts.begin(); it != m_contexts.end();it++) { - if((*it).second.Ptr() == ctx.Ptr()){ - break; - } - } - if(it != m_contexts.end()) { - m_contexts.erase(it); - return true; - } - return false; -} - -EglConfig* EglDisplay::getConfig(EGLint id) const { - emugl::Mutex::AutoLock mutex(m_lock); - - for(ConfigsList::const_iterator it = m_configs.begin(); - it != m_configs.end(); - it++) { - if((*it)->id() == id) { - return (*it); - - } - } - return NULL; -} - -int EglDisplay::getConfigs(EGLConfig* configs,int config_size) const { - emugl::Mutex::AutoLock mutex(m_lock); - int i = 0; - for(ConfigsList::const_iterator it = m_configs.begin(); - it != m_configs.end() && i < config_size; - i++, it++) { - configs[i] = static_cast(*it); - } - return i; -} - -int EglDisplay::chooseConfigs(const EglConfig& dummy, - EGLConfig* configs, - int config_size) const { - emugl::Mutex::AutoLock mutex(m_lock); - return doChooseConfigs(dummy, configs, config_size); -} - -int EglDisplay::doChooseConfigs(const EglConfig& dummy, - EGLConfig* configs, - int config_size) const { - int added = 0; - for(ConfigsList::const_iterator it = m_configs.begin(); - it != m_configs.end() && (added < config_size || !configs); - it++) { - if( (*it)->chosen(dummy)){ - if(configs) { - configs[added] = static_cast(*it); - } - added++; - } - } - //no need to sort since the configurations are saved already in sorted maner - return added; -} - -EGLSurface EglDisplay::addSurface(SurfacePtr s ) { - emugl::Mutex::AutoLock mutex(m_lock); - unsigned int hndl = s.Ptr()->getHndl(); - EGLSurface ret =reinterpret_cast (hndl); - - if(m_surfaces.find(hndl) != m_surfaces.end()) { - return ret; - } - - m_surfaces[hndl] = s; - return ret; -} - -EGLContext EglDisplay::addContext(ContextPtr ctx ) { - emugl::Mutex::AutoLock mutex(m_lock); - - unsigned int hndl = ctx.Ptr()->getHndl(); - EGLContext ret = reinterpret_cast (hndl); - - if(m_contexts.find(hndl) != m_contexts.end()) { - return ret; - } - m_contexts[hndl] = ctx; - return ret; -} - - -EGLImageKHR EglDisplay::addImageKHR(ImagePtr img) { - emugl::Mutex::AutoLock mutex(m_lock); - do { ++m_nextEglImageId; } while(m_nextEglImageId == 0); - img->imageId = m_nextEglImageId; - m_eglImages[m_nextEglImageId] = img; - return reinterpret_cast(m_nextEglImageId); -} - -ImagePtr EglDisplay::getImage(EGLImageKHR img) const { - emugl::Mutex::AutoLock mutex(m_lock); - /* img is "key" in map. */ - unsigned int hndl = SafeUIntFromPointer(img); - ImagesHndlMap::const_iterator i( m_eglImages.find(hndl) ); - return (i != m_eglImages.end()) ? (*i).second :ImagePtr(NULL); -} - -bool EglDisplay:: destroyImageKHR(EGLImageKHR img) { - emugl::Mutex::AutoLock mutex(m_lock); - /* img is "key" in map. */ - unsigned int hndl = SafeUIntFromPointer(img); - ImagesHndlMap::iterator i( m_eglImages.find(hndl) ); - if (i != m_eglImages.end()) - { - m_eglImages.erase(i); - return true; - } - return false; -} - -EglOS::Context* EglDisplay::getGlobalSharedContext() const { - emugl::Mutex::AutoLock mutex(m_lock); -#ifndef _WIN32 - // find an existing OpenGL context to share with, if exist - EglOS::Context* ret = - (EglOS::Context*)m_manager[GLES_1_1]->getGlobalContext(); - if (!ret) - ret = (EglOS::Context*)m_manager[GLES_2_0]->getGlobalContext(); - return ret; -#else - if (!m_globalSharedContext) { - // - // On windows we create a dummy context to serve as the - // "global context" which all contexts share with. - // This is because on windows it is not possible to share - // with a context which is already current. This dummy context - // will never be current to any thread so it is safe to share with. - // Create that context using the first config - if (m_configs.size() < 1) { - // Should not happen! config list should be initialized at this point - return NULL; - } - EglConfig *cfg = (*m_configs.begin()); - m_globalSharedContext = m_idpy->createContext( - cfg->nativeFormat(), NULL); - } - - return m_globalSharedContext; -#endif -} - -// static -void EglDisplay::addConfig(void* opaque, const EglOS::ConfigInfo* info) { - EglDisplay* display = static_cast(opaque); - EglConfig* config = new EglConfig( - info->red_size, - info->green_size, - info->blue_size, - info->alpha_size, - info->caveat, - info->config_id, - info->depth_size, - info->frame_buffer_level, - info->max_pbuffer_width, - info->max_pbuffer_height, - info->max_pbuffer_size, - info->native_renderable, - info->renderable_type, - info->native_visual_id, - info->native_visual_type, - info->samples_per_pixel, - info->stencil_size, - info->surface_type, - info->transparent_type, - info->trans_red_val, - info->trans_green_val, - info->trans_blue_val, - info->frmt); - - display->m_configs.push_back(config); -} diff --git a/external/android-emugl/host/libs/Translator/EGL/EglDisplay.h b/external/android-emugl/host/libs/Translator/EGL/EglDisplay.h deleted file mode 100644 index e890b78..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglDisplay.h +++ /dev/null @@ -1,116 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef EGL_DISPLAY_H -#define EGL_DISPLAY_H - -#include -#include -#include -#include -#include "emugl/common/mutex.h" -#include "emugl/common/smart_ptr.h" - -#include "EglConfig.h" -#include "EglContext.h" -#include "EglOsApi.h" -#include "EglSurface.h" -#include "EglWindowSurface.h" - - - -typedef std::map ContextsHndlMap; -typedef std::map SurfacesHndlMap; - -class EglDisplay { -public: - // Create new EglDisplay instance from a given native display |dpy|, - // with matching internal display |idpy|. If |isDefault| is true, - // this will be considered the default diplay. - EglDisplay(EGLNativeDisplayType dpy, EglOS::Display* idpy); - - // Return the native display handle for this EglDisplay. - EGLNativeDisplayType getNativeDisplay() const { return m_dpy; } - - // Return the native internal display handle for this EglDisplay. - EglOS::Display* nativeType() const { return m_idpy; } - - // Return the number of known configurations for this EglDisplay. - int nConfigs() const { return m_configs.size(); } - - // Write up to |config_size| EGLConfig values into the |configs| array. - // Return the number if values written. - int getConfigs(EGLConfig* configs,int config_size) const; - - // Select all display configurations that match at least the values - // in |dummy|. If |configs| is NULL, this returns the number of all - // matching configs. Otherwise, this writes into |configs| up to - // |config_size| matching EGLConfig values, and returns their number. - int chooseConfigs(const EglConfig& dummy, - EGLConfig* configs, - int config_size) const; - - // Return the EglConfig value that matches a given EGLConfig |conf|. - EglConfig* getConfig(EGLConfig conf) const; - - // Return the EglConfig value that matches a given EGLConfig with - // EGL_CONFIG_ID value |id|. - EglConfig* getConfig(EGLint id) const; - - EGLSurface addSurface(SurfacePtr s ); - SurfacePtr getSurface(EGLSurface surface) const; - bool removeSurface(EGLSurface s); - EGLContext addContext(ContextPtr ctx ); - ContextPtr getContext(EGLContext ctx) const; - bool removeContext(EGLContext ctx); - bool removeContext(ContextPtr ctx); - ObjectNameManager* getManager(GLESVersion ver) const { return m_manager[ver];} - - ~EglDisplay(); - void initialize(int renderableType); - void terminate(); - bool isInitialize(); - - ImagePtr getImage(EGLImageKHR img) const; - EGLImageKHR addImageKHR(ImagePtr); - bool destroyImageKHR(EGLImageKHR img); - EglOS::Context* getGlobalSharedContext() const; - -private: - static void addConfig(void* opaque, const EglOS::ConfigInfo* configInfo); - - int doChooseConfigs(const EglConfig& dummy,EGLConfig* configs,int config_size) const; - void addSimplePixelFormat(int red_size, int green_size, int blue_size, int alpha_size); - void addMissingConfigs(void); - void initConfigurations(int renderableType); - - EGLNativeDisplayType m_dpy; - EglOS::Display* m_idpy; - bool m_initialized; - bool m_configInitialized; - ConfigsList m_configs; - ContextsHndlMap m_contexts; - SurfacesHndlMap m_surfaces; - GlobalNameSpace m_globalNameSpace; - ObjectNameManager* m_manager[MAX_GLES_VERSION]; - mutable emugl::Mutex m_lock; - ImagesHndlMap m_eglImages; - unsigned int m_nextEglImageId; - mutable EglOS::Context* m_globalSharedContext; -}; - -#endif - - diff --git a/external/android-emugl/host/libs/Translator/EGL/EglGlobalInfo.cpp b/external/android-emugl/host/libs/Translator/EGL/EglGlobalInfo.cpp deleted file mode 100644 index 95bbcda..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglGlobalInfo.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "EglGlobalInfo.h" - -#include "ClientAPIExts.h" -#include "EglDisplay.h" -#include "EglOsApi.h" - -#include "emugl/common/lazy_instance.h" - -#include - -namespace { - -// Use a LazyInstance to ensure thread-safe initialization. -emugl::LazyInstance sSingleton = LAZY_INSTANCE_INIT; - -} // namespace - -// static -EglGlobalInfo* EglGlobalInfo::getInstance() { - return sSingleton.ptr(); -} - -EglGlobalInfo::EglGlobalInfo() : - m_displays(), - m_engine(NULL), - m_display(NULL), - m_lock() { - // TODO(digit): Choose alternate engine based on env. variable? - m_engine = EglOS::Engine::getHostInstance(); - m_display = m_engine->getDefaultDisplay(); - - memset(m_gles_ifaces, 0, sizeof(m_gles_ifaces)); - memset(m_gles_extFuncs_inited, 0, sizeof(m_gles_extFuncs_inited)); -} - -EglGlobalInfo::~EglGlobalInfo() { - for (size_t n = 0; n < m_displays.size(); ++n) { - delete m_displays[n]; - } -} - -EglDisplay* EglGlobalInfo::addDisplay(EGLNativeDisplayType dpy, - EglOS::Display* idpy) { - //search if it already exists. - emugl::Mutex::AutoLock mutex(m_lock); - for (size_t n = 0; n < m_displays.size(); ++n) { - if (m_displays[n]->getNativeDisplay() == dpy) { - return m_displays[n]; - } - } - - if (!idpy) { - return NULL; - } - EglDisplay* result = new EglDisplay(dpy, idpy); - m_displays.push_back(result); - return result; -} - -bool EglGlobalInfo::removeDisplay(EGLDisplay dpy) { - emugl::Mutex::AutoLock mutex(m_lock); - for (size_t n = 0; n < m_displays.size(); ++n) { - if (m_displays[n] == static_cast(dpy)) { - delete m_displays[n]; - m_displays.remove(n); - return true; - } - } - return false; -} - -EglDisplay* EglGlobalInfo::getDisplay(EGLNativeDisplayType dpy) const { - emugl::Mutex::AutoLock mutex(m_lock); - for (size_t n = 0; n < m_displays.size(); ++n) { - if (m_displays[n]->getNativeDisplay() == dpy) { - return m_displays[n]; - } - } - return NULL; -} - -EglDisplay* EglGlobalInfo::getDisplay(EGLDisplay dpy) const { - emugl::Mutex::AutoLock mutex(m_lock); - for (size_t n = 0; n < m_displays.size(); ++n) { - if (m_displays[n] == static_cast(dpy)) { - return m_displays[n]; - } - } - return NULL; -} - -void EglGlobalInfo::initClientExtFuncTable(GLESVersion ver) { - emugl::Mutex::AutoLock mutex(m_lock); - if (!m_gles_extFuncs_inited[ver]) { - ClientAPIExts::initClientFuncs(m_gles_ifaces[ver], (int)ver - 1); - m_gles_extFuncs_inited[ver] = true; - } -} diff --git a/external/android-emugl/host/libs/Translator/EGL/EglGlobalInfo.h b/external/android-emugl/host/libs/Translator/EGL/EglGlobalInfo.h deleted file mode 100644 index 8fa8acc..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglGlobalInfo.h +++ /dev/null @@ -1,110 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef EGL_GLOBAL_INFO -#define EGL_GLOBAL_INFO - -#include "EglDisplay.h" -#include "EglConfig.h" -#include "EglContext.h" -#include "EglOsApi.h" - -#include "emugl/common/lazy_instance.h" -#include "emugl/common/pod_vector.h" -#include "emugl/common/mutex.h" - -#include - -#include - -class EglDisplay; - -// Holds all global information shared by the EGL implementation in a given -// process. This really amounts to: -// -// - A list of EglDisplay instances, each identified by an -// EGLNativeDisplayType and EglOS::Display*. -// -// - GLES interface function pointers for all supported GLES versions. - -class EglGlobalInfo { - -public: - // Returns a pointer to the process' single instance, which will be - // created on demand. This can be called multiple times, each call will - // increment an internal reference-count. - static EglGlobalInfo* getInstance(); - - // Create a new EglDisplay instance from an existing native |dpy| value. - // |idpy| is the corresponding native internal display type. See - // generateInternalDisplay() below to understand how they differ. - EglDisplay* addDisplay(EGLNativeDisplayType dpy, - EglOS::Display* idpy); - - // Return the EglDisplay instance corresponding to a given native |dpy| - // value. - EglDisplay* getDisplay(EGLNativeDisplayType dpy) const; - - // Return the EglDisplay instance corresponding to a given EGLDisplay |dpy| - // value. NULL if none matches. - EglDisplay* getDisplay(EGLDisplay dpy) const; - - // Remove a given EGLDisplay identified by |dpy|. - bool removeDisplay(EGLDisplay dpy); - - // Return the default native internal display handle. - EglOS::Display* getDefaultNativeDisplay() const { - return m_display; - }; - - // Return the default engine handle. - EglOS::Engine* getOsEngine() const { - return m_engine; - } - - // Set the GLES interface pointer corresponding to a given GLES version. - // |iface| is a pointer to a structure containing function pointers - // related to a specific GLES version. - // |ver| is a version identifier, e.g. GLES_1_1 or GLES_2_0. - void setIface(const GLESiface* iface, GLESVersion ver) { - m_gles_ifaces[ver] = iface; - }; - - // Return the current GLES interface pointer for a given GLES version. - // |ver| is a version identifier, e.g. GLES_1_1 or GLES_2_0. - const GLESiface* getIface(GLESVersion ver) const { - return m_gles_ifaces[ver]; - } - - // Initialize the table of extension functions for a given GLES version - // |ver|. This must be called after setIface() for the corresponding - // version. - void initClientExtFuncTable(GLESVersion ver); - -private: - EglGlobalInfo(); - ~EglGlobalInfo(); - - friend struct emugl::LazyInstance; - - emugl::PodVector m_displays; - EglOS::Engine* m_engine; - EglOS::Display* m_display; - const GLESiface* m_gles_ifaces[MAX_GLES_VERSION]; - bool m_gles_extFuncs_inited[MAX_GLES_VERSION]; - mutable emugl::Mutex m_lock; -}; - -#endif diff --git a/external/android-emugl/host/libs/Translator/EGL/EglImp.cpp b/external/android-emugl/host/libs/Translator/EGL/EglImp.cpp deleted file mode 100644 index df38472..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglImp.cpp +++ /dev/null @@ -1,981 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifdef _WIN32 -#undef EGLAPI -#define EGLAPI __declspec(dllexport) -#endif - -#include "ThreadInfo.h" -#include -#include "emugl/common/shared_library.h" -#include - -#include "EglWindowSurface.h" -#include "EglPbufferSurface.h" -#include "EglGlobalInfo.h" -#include "EglThreadInfo.h" -#include "EglValidate.h" -#include "EglDisplay.h" -#include "EglContext.h" -#include "EglConfig.h" -#include "EglOsApi.h" -#include "ClientAPIExts.h" - -#include - -#include -#include -#include - -#define MAJOR 1 -#define MINOR 4 - -//declarations - -EglImage *attachEGLImage(unsigned int imageId); -void detachEGLImage(unsigned int imageId); -GLEScontext* getGLESContext(); -GlLibrary* getGlLibrary(); - -#define tls_thread EglThreadInfo::get() - -EglGlobalInfo* g_eglInfo = NULL; -emugl::Mutex s_eglLock; - -void initGlobalInfo() -{ - emugl::Mutex::AutoLock mutex(s_eglLock); - if (!g_eglInfo) { - g_eglInfo = EglGlobalInfo::getInstance(); - } -} - -static const EGLiface s_eglIface = { - .getGLESContext = getGLESContext, - .eglAttachEGLImage = attachEGLImage, - .eglDetachEGLImage = detachEGLImage, - .eglGetGlLibrary = getGlLibrary, -}; - -static void initGLESx(GLESVersion version) { - const GLESiface* iface = g_eglInfo->getIface(version); - if (!iface) { - DBG("EGL failed to initialize GLESv%d; incompatible interface\n", version); - return; - } - iface->initGLESx(); -} - -/***************************************** supported extentions ***********************************************************************/ - -//extentions -#define EGL_EXTENTIONS 2 - -//decleration -extern "C" { -EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR(EGLDisplay display, EGLContext context, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR(EGLDisplay display, EGLImageKHR image); -} // extern "C" - -// extentions descriptors -static const ExtentionDescriptor s_eglExtentions[] = { - {"eglCreateImageKHR" , - (__eglMustCastToProperFunctionPointerType)eglCreateImageKHR }, - {"eglDestroyImageKHR", - (__eglMustCastToProperFunctionPointerType)eglDestroyImageKHR }, -}; - -static const int s_eglExtentionsSize = - sizeof(s_eglExtentions) / sizeof(ExtentionDescriptor); - -/****************************************************************************************************************************************/ -//macros for accessing global egl info & tls objects - -#define CURRENT_THREAD() do {} while (0); - -#define RETURN_ERROR(ret,err) \ - CURRENT_THREAD() \ - if(tls_thread->getError() == EGL_SUCCESS) { \ - tls_thread->setError(err); \ - } \ - return ret; - -#define VALIDATE_DISPLAY_RETURN(EGLDisplay,ret) \ - EglDisplay* dpy = g_eglInfo->getDisplay(EGLDisplay); \ - if(!dpy){ \ - RETURN_ERROR(ret,EGL_BAD_DISPLAY); \ - } \ - if(!dpy->isInitialize()) { \ - RETURN_ERROR(ret,EGL_NOT_INITIALIZED); \ - } - -#define VALIDATE_CONFIG_RETURN(EGLConfig,ret) \ - EglConfig* cfg = dpy->getConfig(EGLConfig); \ - if(!cfg) { \ - RETURN_ERROR(ret,EGL_BAD_CONFIG); \ - } - -#define VALIDATE_SURFACE_RETURN(EGLSurface,ret,varName) \ - SurfacePtr varName = dpy->getSurface(EGLSurface); \ - if(!varName.Ptr()) { \ - RETURN_ERROR(ret,EGL_BAD_SURFACE); \ - } - -#define VALIDATE_CONTEXT_RETURN(EGLContext,ret) \ - ContextPtr ctx = dpy->getContext(EGLContext); \ - if(!ctx.Ptr()) { \ - RETURN_ERROR(ret,EGL_BAD_CONTEXT); \ - } - - -#define VALIDATE_DISPLAY(EGLDisplay) \ - VALIDATE_DISPLAY_RETURN(EGLDisplay,EGL_FALSE) - -#define VALIDATE_CONFIG(EGLConfig) \ - VALIDATE_CONFIG_RETURN(EGLConfig,EGL_FALSE) - -#define VALIDATE_SURFACE(EGLSurface,varName) \ - VALIDATE_SURFACE_RETURN(EGLSurface,EGL_FALSE,varName) - -#define VALIDATE_CONTEXT(EGLContext) \ - VALIDATE_CONTEXT_RETURN(EGLContext,EGL_FALSE) - - -GLEScontext* getGLESContext() -{ - ThreadInfo* thread = getThreadInfo(); - return thread->glesContext; -} - -GlLibrary* getGlLibrary() { - return EglGlobalInfo::getInstance()->getOsEngine()->getGlLibrary(); -} - -EGLAPI EGLint EGLAPIENTRY eglGetError(void) { - CURRENT_THREAD(); - EGLint err = tls_thread->getError(); - tls_thread->setError(EGL_SUCCESS); - return err; -} - -EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id) { - EglDisplay* dpy = NULL; - EglOS::Display* internalDisplay = NULL; - - initGlobalInfo(); - - if ((dpy = g_eglInfo->getDisplay(display_id))) { - return dpy; - } - if (display_id != EGL_DEFAULT_DISPLAY) { - return EGL_NO_DISPLAY; - } - internalDisplay = g_eglInfo->getDefaultNativeDisplay(); - dpy = g_eglInfo->addDisplay(display_id,internalDisplay); - if(!dpy) { - return EGL_NO_DISPLAY; - } - return dpy; -} - - -#define TRANSLATOR_GETIFACE_NAME "__translator_getIfaces" - -static __translator_getGLESIfaceFunc loadIfaces(const char* libName, - char* error, - size_t errorSize) { - emugl::SharedLibrary* libGLES = emugl::SharedLibrary::open( - libName, error, errorSize); - if (!libGLES) { - return NULL; - } - __translator_getGLESIfaceFunc func = (__translator_getGLESIfaceFunc) - libGLES->findSymbol(TRANSLATOR_GETIFACE_NAME); - if (!func) { - snprintf(error, errorSize, "Missing symbol %s", - TRANSLATOR_GETIFACE_NAME); - return NULL; - } - return func; -} - -#define LIB_GLES_CM_NAME EMUGL_LIBNAME("GLES_CM_translator") -#define LIB_GLES_V2_NAME EMUGL_LIBNAME("GLES_V2_translator") - -EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay display, EGLint *major, EGLint *minor) { - - initGlobalInfo(); - - EglDisplay* dpy = g_eglInfo->getDisplay(display); - if(!dpy) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_DISPLAY); - } - - if(major) *major = MAJOR; - if(minor) *minor = MINOR; - - __translator_getGLESIfaceFunc func = NULL; - int renderableType = EGL_OPENGL_ES_BIT; - - char error[256]; - if(!g_eglInfo->getIface(GLES_1_1)) { - func = loadIfaces(LIB_GLES_CM_NAME, error, sizeof(error)); - if (func) { - g_eglInfo->setIface(func(&s_eglIface),GLES_1_1); - } else { - fprintf(stderr, "%s: Could not find ifaces for GLES CM 1.1 [%s]\n", - __FUNCTION__, error); - return EGL_FALSE; - } - initGLESx(GLES_1_1); - } - if(!g_eglInfo->getIface(GLES_2_0)) { - func = loadIfaces(LIB_GLES_V2_NAME, error, sizeof(error)); - if (func) { - renderableType |= EGL_OPENGL_ES2_BIT; - g_eglInfo->setIface(func(&s_eglIface),GLES_2_0); - } else { - fprintf(stderr, "%s: Could not find ifaces for GLES 2.0 [%s]\n", - __FUNCTION__, error); - } - initGLESx(GLES_2_0); - } - dpy->initialize(renderableType); - return EGL_TRUE; -} - -EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay display) { - VALIDATE_DISPLAY(display); - dpy->terminate(); - return EGL_TRUE; -} - -EGLAPI const char * EGLAPIENTRY eglQueryString(EGLDisplay display, EGLint name) { - VALIDATE_DISPLAY(display); - static const char* vendor = "Google"; - static const char* version = "1.4"; - static const char* extensions = "EGL_KHR_image_base EGL_KHR_gl_texture_2D_image"; - if(!EglValidate::stringName(name)) { - RETURN_ERROR(NULL,EGL_BAD_PARAMETER); - } - switch(name) { - case EGL_VENDOR: - return vendor; - case EGL_VERSION: - return version; - case EGL_EXTENSIONS: - return extensions; - } - return NULL; -} - -EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay display, EGLConfig *configs, - EGLint config_size, EGLint *num_config) { - VALIDATE_DISPLAY(display); - if(!num_config) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_PARAMETER); - } - - if(configs == NULL) { - *num_config = dpy->nConfigs(); - } else { - *num_config = dpy->getConfigs(configs,config_size); - } - - return EGL_TRUE; -} - -EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay display, const EGLint *attrib_list, - EGLConfig *configs, EGLint config_size, - EGLint *num_config) { - VALIDATE_DISPLAY(display); - if(!num_config) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_PARAMETER); - } - - //selection defaults - // NOTE: Some variables below are commented out to reduce compiler warnings. - // TODO(digit): Look if these variables are really needed or not, and if so - // fix the code to do it properly. - EGLint surface_type = EGL_WINDOW_BIT; - EGLint renderable_type = EGL_OPENGL_ES_BIT; - //EGLBoolean bind_to_tex_rgb = EGL_DONT_CARE; - //EGLBoolean bind_to_tex_rgba = EGL_DONT_CARE; - EGLenum caveat = EGL_DONT_CARE; - EGLint config_id = EGL_DONT_CARE; - EGLBoolean native_renderable = EGL_DONT_CARE; - EGLint native_visual_type = EGL_DONT_CARE; - //EGLint max_swap_interval = EGL_DONT_CARE; - //EGLint min_swap_interval = EGL_DONT_CARE; - EGLint trans_red_val = EGL_DONT_CARE; - EGLint trans_green_val = EGL_DONT_CARE; - EGLint trans_blue_val = EGL_DONT_CARE; - EGLenum transparent_type = EGL_NONE; - //EGLint buffer_size = 0; - EGLint red_size = 0; - EGLint green_size = 0; - EGLint blue_size = 0; - EGLint alpha_size = 0; - EGLint depth_size = 0; - EGLint frame_buffer_level = 0; - //EGLint sample_buffers_num = 0; - EGLint samples_per_pixel = 0; - EGLint stencil_size = 0; - - if(!EglValidate::noAttribs(attrib_list)) { //there are attribs - int i = 0 ; - bool hasConfigId = false; - while(attrib_list[i] != EGL_NONE && !hasConfigId) { - switch(attrib_list[i]) { - case EGL_MAX_PBUFFER_WIDTH: - case EGL_MAX_PBUFFER_HEIGHT: - case EGL_MAX_PBUFFER_PIXELS: - case EGL_NATIVE_VISUAL_ID: - break; //we dont care from those selection crateria - case EGL_LEVEL: - if(attrib_list[i+1] == EGL_DONT_CARE) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - frame_buffer_level = attrib_list[i+1]; - break; - case EGL_BUFFER_SIZE: - if(attrib_list[i+1] < 0) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - //buffer_size = attrib_list[i+1]; - break; - case EGL_RED_SIZE: - if(attrib_list[i+1] < 0) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - red_size = attrib_list[i+1]; - break; - case EGL_GREEN_SIZE: - if(attrib_list[i+1] < 0) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - green_size = attrib_list[i+1]; - break; - case EGL_BLUE_SIZE: - if(attrib_list[i+1] < 0) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - blue_size = attrib_list[i+1]; - break; - case EGL_ALPHA_SIZE: - if(attrib_list[i+1] < 0) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - alpha_size = attrib_list[i+1]; - break; - case EGL_BIND_TO_TEXTURE_RGB: - //bind_to_tex_rgb = attrib_list[i+1]; - break; - case EGL_BIND_TO_TEXTURE_RGBA: - //bind_to_tex_rgba = attrib_list[i+1]; - break; - case EGL_CONFIG_CAVEAT: - if(attrib_list[i+1] != EGL_NONE && attrib_list[i+1] != EGL_SLOW_CONFIG && attrib_list[i+1] != EGL_NON_CONFORMANT_CONFIG) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - caveat = attrib_list[i+1]; - break; - case EGL_CONFIG_ID: - if(attrib_list[i+1] < 0) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - config_id = attrib_list[i+1]; - hasConfigId = true; - break; - case EGL_DEPTH_SIZE: - if(attrib_list[i+1] < 0) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - depth_size = attrib_list[i+1]; - break; - case EGL_MAX_SWAP_INTERVAL: - if(attrib_list[i+1] < 0) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - //max_swap_interval = attrib_list[i+1]; - break; - case EGL_MIN_SWAP_INTERVAL: - if(attrib_list[i+1] < 0) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - //min_swap_interval = attrib_list[i+1]; - break; - case EGL_NATIVE_RENDERABLE: - native_renderable = attrib_list[i+1]; - break; - case EGL_RENDERABLE_TYPE: - renderable_type = attrib_list[i+1]; - break; - case EGL_NATIVE_VISUAL_TYPE: - native_visual_type = attrib_list[i+1]; - break; - if(attrib_list[i+1] < 0 || attrib_list[i+1] > 1 ) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - case EGL_SAMPLE_BUFFERS: - //sample_buffers_num = attrib_list[i+1]; - break; - if(attrib_list[i+1] < 0) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - case EGL_SAMPLES: - if(attrib_list[i+1] < 0) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - samples_per_pixel = attrib_list[i+1]; - break; - case EGL_STENCIL_SIZE: - if(attrib_list[i+1] < 0) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - stencil_size = attrib_list[i+1]; - break; - case EGL_SURFACE_TYPE: - surface_type = attrib_list[i+1]; - break; - case EGL_TRANSPARENT_TYPE: - if(attrib_list[i+1] != EGL_NONE && attrib_list[i+1] != EGL_TRANSPARENT_RGB ) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - transparent_type = attrib_list[i+1]; - break; - case EGL_TRANSPARENT_RED_VALUE: - trans_red_val = attrib_list[i+1]; - break; - case EGL_TRANSPARENT_GREEN_VALUE: - trans_green_val = attrib_list[i+1]; - break; - case EGL_TRANSPARENT_BLUE_VALUE: - trans_blue_val = attrib_list[i+1]; - break; - default: - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - i+=2; - } - if(hasConfigId) { - EglConfig* pConfig = dpy->getConfig(config_id); - if(pConfig) { - if(configs) { - configs[0] = static_cast(pConfig); - } - *num_config = 1; - return EGL_TRUE; - } else { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - } - } - EglConfig dummy(red_size,green_size,blue_size,alpha_size,caveat,config_id,depth_size, - frame_buffer_level,0,0,0,native_renderable,renderable_type,0,native_visual_type, - samples_per_pixel,stencil_size,surface_type,transparent_type, - trans_red_val,trans_green_val,trans_blue_val,NULL); - - *num_config = dpy->chooseConfigs(dummy,configs,config_size); - - - return EGL_TRUE; -} - -EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay display, EGLConfig config, - EGLint attribute, EGLint *value) { - VALIDATE_DISPLAY(display); - VALIDATE_CONFIG(config); - if(!EglValidate::confAttrib(attribute)){ - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - return cfg->getConfAttrib(attribute,value)? EGL_TRUE:EGL_FALSE; -} - -EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay display, EGLConfig config, - EGLNativeWindowType win, - const EGLint *attrib_list) { - VALIDATE_DISPLAY_RETURN(display,EGL_NO_SURFACE); - VALIDATE_CONFIG_RETURN(config,EGL_NO_SURFACE); - - if(!(cfg->surfaceType() & EGL_WINDOW_BIT)) { - RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_MATCH); - } - if(!dpy->nativeType()->isValidNativeWin(win)) { - RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_NATIVE_WINDOW); - } - if(!EglValidate::noAttribs(attrib_list)) { - RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ATTRIBUTE); - } - if(EglWindowSurface::alreadyAssociatedWithConfig(win)) { - RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ALLOC); - } - - unsigned int width,height; - if(!dpy->nativeType()->checkWindowPixelFormatMatch( - win, cfg->nativeFormat(), &width, &height)) { - RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ALLOC); - } - SurfacePtr wSurface(new EglWindowSurface(dpy, win,cfg,width,height)); - if(!wSurface.Ptr()) { - RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ALLOC); - } - return dpy->addSurface(wSurface); -} - -EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface( - EGLDisplay display, - EGLConfig config, - const EGLint *attrib_list) { - VALIDATE_DISPLAY_RETURN(display,EGL_NO_SURFACE); - VALIDATE_CONFIG_RETURN(config,EGL_NO_SURFACE); - if(!(cfg->surfaceType() & EGL_PBUFFER_BIT)) { - RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_MATCH); - } - - SurfacePtr pbSurface(new EglPbufferSurface(dpy,cfg)); - if(!pbSurface.Ptr()) { - RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ALLOC); - } - - if(!EglValidate::noAttribs(attrib_list)) { // There are attribs. - int i = 0 ; - while(attrib_list[i] != EGL_NONE) { - if(!pbSurface->setAttrib(attrib_list[i],attrib_list[i+1])) { - RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ATTRIBUTE); - } - i+=2; - } - } - - EGLint width, height, largest, texTarget, texFormat; - EglPbufferSurface* tmpPbSurfacePtr = - static_cast(pbSurface.Ptr()); - - tmpPbSurfacePtr->getDim(&width, &height, &largest); - tmpPbSurfacePtr->getTexInfo(&texTarget, &texFormat); - - if(!EglValidate::pbufferAttribs(width, - height, - texFormat == EGL_NO_TEXTURE, - texTarget == EGL_NO_TEXTURE)) { - //TODO: RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_VALUE); dont have bad_value - RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ATTRIBUTE); - } - - EglOS::PbufferInfo pbinfo; - - pbinfo.width = width; - pbinfo.height = height; - pbinfo.largest = largest; - pbinfo.target = texTarget; - pbinfo.format = texFormat; - - tmpPbSurfacePtr->getAttrib(EGL_MIPMAP_TEXTURE, &pbinfo.hasMipmap); - - EglOS::Surface* pb = dpy->nativeType()->createPbufferSurface( - cfg->nativeFormat(), &pbinfo); - if(!pb) { - //TODO: RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_VALUE); dont have bad value - RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ATTRIBUTE); - } - - tmpPbSurfacePtr->setNativePbuffer(pb); - return dpy->addSurface(pbSurface); -} - -EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay display, EGLSurface surface) { - VALIDATE_DISPLAY(display); - SurfacePtr srfc = dpy->getSurface(surface); - if(!srfc.Ptr()) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_SURFACE); - } - - dpy->removeSurface(surface); - return EGL_TRUE; -} - -EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay display, EGLSurface surface, - EGLint attribute, EGLint *value) { - VALIDATE_DISPLAY(display); - VALIDATE_SURFACE(surface,srfc); - - if(!srfc->getAttrib(attribute,value)) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - return EGL_TRUE; -} - -EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay display, EGLSurface surface, - EGLint attribute, EGLint value) { - VALIDATE_DISPLAY(display); - VALIDATE_SURFACE(surface,srfc); - if(!srfc->setAttrib(attribute,value)) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - return EGL_TRUE; -} - -EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay display, EGLConfig config, - EGLContext share_context, - const EGLint *attrib_list) { - VALIDATE_DISPLAY_RETURN(display,EGL_NO_CONTEXT); - VALIDATE_CONFIG_RETURN(config,EGL_NO_CONTEXT); - - GLESVersion version = GLES_1_1; - if(!EglValidate::noAttribs(attrib_list)) { - int i = 0; - while(attrib_list[i] != EGL_NONE) { - switch(attrib_list[i]) { - case EGL_CONTEXT_CLIENT_VERSION: - if(attrib_list[i+1] == 2) { - version = GLES_2_0; - } else { - version = GLES_1_1; - } - break; - default: - RETURN_ERROR(EGL_NO_CONTEXT,EGL_BAD_ATTRIBUTE); - } - i+=2; - } - } - const GLESiface* iface = g_eglInfo->getIface(version); - GLEScontext* glesCtx = NULL; - if(iface) { - glesCtx = iface->createGLESContext(); - } else { // there is no interface for this gles version - RETURN_ERROR(EGL_NO_CONTEXT,EGL_BAD_ATTRIBUTE); - } - - ContextPtr sharedCtxPtr; - if(share_context != EGL_NO_CONTEXT) { - sharedCtxPtr = dpy->getContext(share_context); - if(!sharedCtxPtr.Ptr()) { - RETURN_ERROR(EGL_NO_CONTEXT,EGL_BAD_CONTEXT); - } - } - - EglOS::Context* globalSharedContext = dpy->getGlobalSharedContext(); - EglOS::Context* nativeContext = dpy->nativeType()->createContext( - cfg->nativeFormat(), globalSharedContext); - - if(nativeContext) { - ContextPtr ctx(new EglContext(dpy, nativeContext,sharedCtxPtr,cfg,glesCtx,version,dpy->getManager(version))); - return dpy->addContext(ctx); - } else { - iface->deleteGLESContext(glesCtx); - } - -return EGL_NO_CONTEXT; -} - -EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay display, EGLContext context) { - VALIDATE_DISPLAY(display); - VALIDATE_CONTEXT(context); - - dpy->removeContext(context); - return EGL_TRUE; -} - -EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay display, - EGLSurface draw, - EGLSurface read, - EGLContext context) { - VALIDATE_DISPLAY(display); - - bool releaseContext = EglValidate::releaseContext(context, read, draw); - if(!releaseContext && EglValidate::badContextMatch(context, read, draw)) { - RETURN_ERROR(EGL_FALSE, EGL_BAD_MATCH); - } - - ThreadInfo* thread = getThreadInfo(); - ContextPtr prevCtx = thread->eglContext; - - if(releaseContext) { //releasing current context - if(prevCtx.Ptr()) { - g_eglInfo->getIface(prevCtx->version())->flush(); - if(!dpy->nativeType()->makeCurrent(NULL,NULL,NULL)) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ACCESS); - } - thread->updateInfo(ContextPtr(NULL),dpy,NULL,ShareGroupPtr(NULL),dpy->getManager(prevCtx->version())); - } - } else { //assining new context - VALIDATE_CONTEXT(context); - VALIDATE_SURFACE(draw,newDrawSrfc); - VALIDATE_SURFACE(read,newReadSrfc); - - EglSurface* newDrawPtr = newDrawSrfc.Ptr(); - EglSurface* newReadPtr = newReadSrfc.Ptr(); - ContextPtr newCtx = ctx; - - if (newCtx.Ptr() && prevCtx.Ptr()) { - if (newCtx.Ptr() == prevCtx.Ptr()) { - if (newDrawPtr == prevCtx->draw().Ptr() && - newReadPtr == prevCtx->read().Ptr()) { - // nothing to do - return EGL_TRUE; - } - } - else { - // Make sure previous context is detached from surfaces - releaseContext = true; - } - } - - //surfaces compatibility check - if(!((*ctx->getConfig()).compatibleWith((*newDrawPtr->getConfig()))) || - !((*ctx->getConfig()).compatibleWith((*newReadPtr->getConfig())))) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_MATCH); - } - - EglOS::Display* nativeDisplay = dpy->nativeType(); - EglOS::Surface* nativeRead = newReadPtr->native(); - EglOS::Surface* nativeDraw = newDrawPtr->native(); - //checking native window validity - if(newReadPtr->type() == EglSurface::WINDOW && - !nativeDisplay->isValidNativeWin(nativeRead)) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_NATIVE_WINDOW); - } - if(newDrawPtr->type() == EglSurface::WINDOW && - !nativeDisplay->isValidNativeWin(nativeDraw)) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_NATIVE_WINDOW); - } - - if(prevCtx.Ptr()) { - g_eglInfo->getIface(prevCtx->version())->flush(); - } - if (!dpy->nativeType()->makeCurrent( - newReadPtr->native(), - newDrawPtr->native(), - newCtx->nativeType())) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_ACCESS); - } - //TODO: handle the following errors - // EGL_BAD_CURRENT_SURFACE , EGL_CONTEXT_LOST , EGL_BAD_ACCESS - - thread->updateInfo(newCtx,dpy,newCtx->getGlesContext(),newCtx->getShareGroup(),dpy->getManager(newCtx->version())); - newCtx->setSurfaces(newReadSrfc,newDrawSrfc); - g_eglInfo->getIface(newCtx->version())->initContext(newCtx->getGlesContext(),newCtx->getShareGroup()); - - // Initialize the GLES extension function table used in - // eglGetProcAddress for the context's GLES version if not - // yet initialized. We initialize it here to make sure we call the - // GLES getProcAddress after when a context is bound. - g_eglInfo->initClientExtFuncTable(newCtx->version()); - } - - // release previous context surface binding - if(prevCtx.Ptr() && releaseContext) { - prevCtx->setSurfaces(SurfacePtr(NULL),SurfacePtr(NULL)); - } - - return EGL_TRUE; -} - -EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay display, EGLContext context, - EGLint attribute, EGLint *value) { - VALIDATE_DISPLAY(display); - VALIDATE_CONTEXT(context); - - if(!ctx->getAttrib(attribute,value)){ - RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE); - } - return EGL_TRUE; -} - -EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay display, EGLSurface surface) { - VALIDATE_DISPLAY(display); - VALIDATE_SURFACE(surface,Srfc); - ThreadInfo* thread = getThreadInfo(); - ContextPtr currentCtx = thread->eglContext; - - - //if surface not window return - if(Srfc->type() != EglSurface::WINDOW){ - RETURN_ERROR(EGL_TRUE,EGL_SUCCESS); - } - - if(!currentCtx.Ptr() || !currentCtx->usingSurface(Srfc) || - !dpy->nativeType()->isValidNativeWin(Srfc.Ptr()->native())) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_SURFACE); - } - - dpy->nativeType()->swapBuffers(Srfc->native()); - return EGL_TRUE; -} - -EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void) { - ThreadInfo* thread = getThreadInfo(); - EglDisplay* dpy = static_cast(thread->eglDisplay); - ContextPtr ctx = thread->eglContext; - if(dpy && ctx.Ptr()){ - // This double check is required because a context might still be current after it is destroyed - in which case - // its handle should be invalid, that is EGL_NO_CONTEXT should be returned even though the context is current - EGLContext c = (EGLContext)SafePointerFromUInt(ctx->getHndl()); - if(dpy->getContext(c).Ptr()) - { - return c; - } - } - return EGL_NO_CONTEXT; -} - -EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw) { - if (!EglValidate::surfaceTarget(readdraw)) { - return EGL_NO_SURFACE; - } - - ThreadInfo* thread = getThreadInfo(); - EglDisplay* dpy = static_cast(thread->eglDisplay); - ContextPtr ctx = thread->eglContext; - - if(dpy && ctx.Ptr()) { - SurfacePtr surface = readdraw == EGL_READ ? ctx->read() : ctx->draw(); - if(surface.Ptr()) - { - // This double check is required because a surface might still be - // current after it is destroyed - in which case its handle should - // be invalid, that is EGL_NO_SURFACE should be returned even - // though the surface is current. - EGLSurface s = (EGLSurface)SafePointerFromUInt(surface->getHndl()); - surface = dpy->getSurface(s); - if(surface.Ptr()) - { - return s; - } - } - } - return EGL_NO_SURFACE; -} - -EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void) { - ThreadInfo* thread = getThreadInfo(); - return (thread->eglContext.Ptr()) ? thread->eglDisplay : EGL_NO_DISPLAY; -} - -EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api) { - if(!EglValidate::supportedApi(api)) { - RETURN_ERROR(EGL_FALSE,EGL_BAD_PARAMETER); - } - CURRENT_THREAD(); - tls_thread->setApi(api); - return EGL_TRUE; -} - -EGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void) { - CURRENT_THREAD(); - return tls_thread->getApi(); -} - -EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void) { - ThreadInfo* thread = getThreadInfo(); - EglDisplay* dpy = static_cast(thread->eglDisplay); - return eglMakeCurrent(dpy,EGL_NO_SURFACE,EGL_NO_SURFACE,EGL_NO_CONTEXT); -} - -EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY - eglGetProcAddress(const char *procname){ - __eglMustCastToProperFunctionPointerType retVal = NULL; - - initGlobalInfo(); - - if(!strncmp(procname,"egl",3)) { //EGL proc - for(int i=0;i < s_eglExtentionsSize;i++){ - if(strcmp(procname,s_eglExtentions[i].name) == 0){ - retVal = s_eglExtentions[i].address; - break; - } - } - } - else { - // Look at the clientAPI (GLES) supported extension - // function table. - retVal = ClientAPIExts::getProcAddress(procname); - } - return retVal; -} - -/************************** KHR IMAGE *************************************************************/ -EglImage *attachEGLImage(unsigned int imageId) -{ - ThreadInfo* thread = getThreadInfo(); - EglDisplay* dpy = static_cast(thread->eglDisplay); - ContextPtr ctx = thread->eglContext; - if (ctx.Ptr()) { - ImagePtr img = dpy->getImage(reinterpret_cast(imageId)); - if(img.Ptr()) { - ctx->attachImage(imageId,img); - return img.Ptr(); - } - } - return NULL; -} - -void detachEGLImage(unsigned int imageId) -{ - ThreadInfo* thread = getThreadInfo(); - ContextPtr ctx = thread->eglContext; - if (ctx.Ptr()) { - ctx->detachImage(imageId); - } -} - - -EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR(EGLDisplay display, EGLContext context, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list) -{ - VALIDATE_DISPLAY(display); - VALIDATE_CONTEXT(context); - - // We only support EGL_GL_TEXTURE_2D images - if (target != EGL_GL_TEXTURE_2D_KHR) { - RETURN_ERROR(EGL_NO_IMAGE_KHR,EGL_BAD_PARAMETER); - } - - ThreadInfo* thread = getThreadInfo(); - ShareGroupPtr sg = thread->shareGroup; - if (sg.Ptr() != NULL) { - unsigned int globalTexName = sg->getGlobalName(TEXTURE, SafeUIntFromPointer(buffer)); - if (!globalTexName) return EGL_NO_IMAGE_KHR; - - ImagePtr img( new EglImage() ); - if (img.Ptr() != NULL) { - - ObjectDataPtr objData = sg->getObjectData(TEXTURE, SafeUIntFromPointer(buffer)); - if (!objData.Ptr()) return EGL_NO_IMAGE_KHR; - - TextureData *texData = (TextureData *)objData.Ptr(); - if(!texData->width || !texData->height) return EGL_NO_IMAGE_KHR; - img->width = texData->width; - img->height = texData->height; - img->border = texData->border; - img->internalFormat = texData->internalFormat; - img->globalTexName = globalTexName; - return dpy->addImageKHR(img); - } - } - - return EGL_NO_IMAGE_KHR; -} - - -EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR(EGLDisplay display, EGLImageKHR image) -{ - VALIDATE_DISPLAY(display); - return dpy->destroyImageKHR(image) ? EGL_TRUE:EGL_FALSE; -} - -/*********************************************************************************/ diff --git a/external/android-emugl/host/libs/Translator/EGL/EglOsApi.h b/external/android-emugl/host/libs/Translator/EGL/EglOsApi.h deleted file mode 100644 index e1ec4fa..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglOsApi.h +++ /dev/null @@ -1,188 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef EGL_OS_API_H -#define EGL_OS_API_H - -#include - -#define PBUFFER_MAX_WIDTH 32767 -#define PBUFFER_MAX_HEIGHT 32767 -#define PBUFFER_MAX_PIXELS (PBUFFER_MAX_WIDTH * PBUFFER_MAX_HEIGHT) - -class GlLibrary; - -namespace EglOS { - -// This header contains declaration used to abstract the underlying -// desktop GL library (or equivalent) that is being used by our EGL -// and GLES translation libraries. - -// Use EglOS::Engine::getHostInstance() to retrieve an instance of the -// EglOS::Engine interface that matches the host display system. -// -// Alternate renderers (e.g. software-based Mesa) can also implement -// their own engine. - -// Base class used to wrap various GL Surface types. -class Surface { -public: - typedef enum { - WINDOW = 0, - PBUFFER = 1, - } SurfaceType; - - explicit Surface(SurfaceType type) : mType(type) {} - - virtual ~Surface() {} - - SurfaceType type() const { return mType; } - -protected: - SurfaceType mType; -}; - -// An interface class for engine-specific implementation of a GL context. -class Context { -public: - Context() {} - virtual ~Context() {} -}; - -// Base class used to wrap engine-specific pixel format descriptors. -class PixelFormat { -public: - PixelFormat() {} - - virtual ~PixelFormat() {} - - virtual PixelFormat* clone() = 0; -}; - -// Small structure used to describe the properties of an engine-specific -// config. -struct ConfigInfo { - EGLint red_size; - EGLint green_size; - EGLint blue_size; - EGLint alpha_size; - EGLenum caveat; - EGLint config_id; - EGLint depth_size; - EGLint frame_buffer_level; - EGLint max_pbuffer_width; - EGLint max_pbuffer_height; - EGLint max_pbuffer_size; - EGLBoolean native_renderable; - EGLint renderable_type; - EGLint native_visual_id; - EGLint native_visual_type; - EGLint samples_per_pixel; - EGLint stencil_size; - EGLint surface_type; - EGLenum transparent_type; - EGLint trans_red_val; - EGLint trans_green_val; - EGLint trans_blue_val; - PixelFormat* frmt; -}; - -// A callback function type used with Display::queryConfig() to report to the -// caller a new host EGLConfig. -// |opaque| is an opaque value passed to queryConfig(). -// All other parameters are config attributes. -// Note that ownership of |frmt| is transfered to the callback. -typedef void (AddConfigCallback)(void* opaque, const ConfigInfo* configInfo); - -// Pbuffer description. -// |width| and |height| are its dimensions. -// |largest| is set to ask the largest pixek buffer (see GLX_LARGEST_PBUFFER). -// |format| is one of EGL_TEXTURE_RGB or EGL_TEXTURE_RGBA -// |target| is one of EGL_TEXTURE_2D or EGL_NO_TEXTURE. -// |hasMipmap| is true if the Pbuffer has mipmaps. -struct PbufferInfo { - EGLint width; - EGLint height; - EGLint largest; - EGLint format; - EGLint target; - EGLint hasMipmap; -}; - -// A class to model the engine-specific implementation of a GL display -// connection. -class Display { -public: - Display() {} - virtual ~Display() {} - - virtual bool release() = 0; - - virtual void queryConfigs(int renderableType, - AddConfigCallback* addConfigFunc, - void* addConfigOpaque) = 0; - - virtual bool isValidNativeWin(Surface* win) = 0; - virtual bool isValidNativeWin(EGLNativeWindowType win) = 0; - - virtual bool checkWindowPixelFormatMatch(EGLNativeWindowType win, - const PixelFormat* pixelFormat, - unsigned int* width, - unsigned int* height) = 0; - - virtual Context* createContext( - const PixelFormat* pixelFormat, Context* sharedContext) = 0; - - virtual bool destroyContext(Context* context) = 0; - - virtual Surface* createPbufferSurface( - const PixelFormat* pixelFormat, const PbufferInfo* info) = 0; - - virtual bool releasePbuffer(Surface* pb) = 0; - - virtual bool makeCurrent(Surface* read, - Surface* draw, - Context* context) = 0; - - virtual void swapBuffers(Surface* srfc) = 0; -}; - -// An interface class to model a specific underlying GL graphics subsystem -// or engine. Use getHost() to retrieve the implementation for the current -// host. -class Engine { -public: - Engine() {} - virtual ~Engine() {} - - // Return a Display instance to the default display / window. - virtual Display* getDefaultDisplay() = 0; - - // Return to engine-specific implementation of GlLibrary. - virtual GlLibrary* getGlLibrary() = 0; - - // Create a new window surface. |wnd| is a host-specific window handle - // (e.g. a Windows HWND). A software renderer would always return NULL - // here. - virtual Surface* createWindowSurface(EGLNativeWindowType wnd) = 0; - - // Retrieve the implementation for the current host. This can be called - // multiple times, and will initialize the engine on first call. - static Engine* getHostInstance(); -}; - -} // namespace EglOS - -#endif // EGL_OS_API_H diff --git a/external/android-emugl/host/libs/Translator/EGL/EglOsApi_darwin.cpp b/external/android-emugl/host/libs/Translator/EGL/EglOsApi_darwin.cpp deleted file mode 100644 index c782e9f..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglOsApi_darwin.cpp +++ /dev/null @@ -1,395 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "EglOsApi.h" - -#include "MacNative.h" - -#include "emugl/common/lazy_instance.h" -#include "emugl/common/shared_library.h" -#include "GLcommon/GLLibrary.h" -#include "OpenglCodecCommon/ErrorLog.h" - -#include - -#define MAX_PBUFFER_MIPMAP_LEVEL 1 - -namespace { - -class MacSurface : public EglOS::Surface { -public: - MacSurface(void* handle, SurfaceType type) : - Surface(type), m_handle(handle), m_hasMipmap(false) {} - - void* handle() const { return m_handle; } - - bool hasMipmap() const { return m_hasMipmap; } - void setHasMipmap(bool value) { m_hasMipmap = value; } - - static MacSurface* from(EglOS::Surface* s) { - return static_cast(s); - } - -private: - void* m_handle; - bool m_hasMipmap; -}; - -class MacContext : public EglOS::Context { -public: - explicit MacContext(void* context) : mContext(context) {} - - virtual ~MacContext() { - nsDestroyContext(mContext); - } - - void* context() const { return mContext; } - - static void* from(EglOS::Context* c) { - return static_cast(c)->context(); - } - -private: - void* mContext; -}; - -typedef std::list NativeFormatList; - -NativeFormatList s_nativeFormats; - -void initNativeConfigs(){ - int nConfigs = getNumPixelFormats(); - if (s_nativeFormats.empty()) { - for(int i = 0; i < nConfigs; i++) { - void* frmt = getPixelFormat(i); - if (frmt) { - s_nativeFormats.push_back(frmt); - } - } - } -} - -class MacPixelFormat : public EglOS::PixelFormat { -public: - MacPixelFormat(void* handle, int redSize, int greenSize, int blueSize) : - mHandle(handle), - mRedSize(redSize), - mGreenSize(greenSize), - mBlueSize(blueSize) {} - - EglOS::PixelFormat* clone() { - return new MacPixelFormat(mHandle, mRedSize, mGreenSize, mBlueSize); - } - - void* handle() const { return mHandle; } - int redSize() const { return mRedSize; } - int greenSize() const { return mGreenSize; } - int blueSize() const { return mBlueSize; } - - static const MacPixelFormat* from(const EglOS::PixelFormat* f) { - return static_cast(f); - } - -private: - MacPixelFormat(); - MacPixelFormat(const MacPixelFormat& other); - - void* mHandle; - int mRedSize; - int mGreenSize; - int mBlueSize; -}; - - -void pixelFormatToConfig(int index, - int renderableType, - void* frmt, - EglOS::AddConfigCallback addConfigFunc, - void* addConfigOpaque) { - EglOS::ConfigInfo info; - memset(&info, 0, sizeof(info)); - - EGLint doubleBuffer; - getPixelFormatAttrib(frmt, MAC_HAS_DOUBLE_BUFFER, &doubleBuffer); - if (!doubleBuffer) { - return; //pixel double buffer - } - - EGLint window = 0, pbuffer = 0; - getPixelFormatAttrib(frmt, MAC_DRAW_TO_WINDOW, &window); - getPixelFormatAttrib(frmt, MAC_DRAW_TO_PBUFFER, &pbuffer); - - info.surface_type = 0; - if (window) { - info.surface_type |= EGL_WINDOW_BIT; - } - if (pbuffer) { - info.surface_type |= EGL_PBUFFER_BIT; - } - if (!info.surface_type) { - return; - } - - //default values - info.native_visual_id = 0; - info.native_visual_type = EGL_NONE; - info.caveat = EGL_NONE; - info.native_renderable = EGL_FALSE; - info.renderable_type = renderableType; - info.max_pbuffer_width = PBUFFER_MAX_WIDTH; - info.max_pbuffer_height = PBUFFER_MAX_HEIGHT; - info.max_pbuffer_size = PBUFFER_MAX_PIXELS; - info.samples_per_pixel = 0; - info.frame_buffer_level = 0; - info.trans_red_val = 0; - info.trans_green_val = 0; - info.trans_blue_val = 0; - - info.transparent_type = EGL_NONE; - - /* All configs can end up having an alpha channel even if none was requested. - * The default config chooser in GLSurfaceView will therefore not find any - * matching config. Thus, make sure alpha is zero (or at least signalled as - * zero to the calling EGL layer) for the configs where it was intended to - * be zero. */ - if (getPixelFormatDefinitionAlpha(index) == 0) { - info.alpha_size = 0; - } else { - getPixelFormatAttrib(frmt, MAC_ALPHA_SIZE, &info.alpha_size); - } - getPixelFormatAttrib(frmt, MAC_DEPTH_SIZE, &info.depth_size); - getPixelFormatAttrib(frmt, MAC_STENCIL_SIZE, &info.stencil_size); - getPixelFormatAttrib(frmt, MAC_SAMPLES_PER_PIXEL, &info.samples_per_pixel); - - //TODO: ask guy if it is OK - GLint colorSize = 0; - getPixelFormatAttrib(frmt, MAC_COLOR_SIZE, &colorSize); - info.red_size = info.green_size = info.blue_size = (colorSize / 4); - - info.config_id = (EGLint) index; - info.frmt = new MacPixelFormat( - frmt, info.red_size, info.green_size, info.blue_size); - - (*addConfigFunc)(addConfigOpaque, &info); -} - - -class MacDisplay : public EglOS::Display { -public: - explicit MacDisplay(EGLNativeDisplayType dpy) : mDpy(dpy) {} - - virtual bool release() { - return true; - } - - virtual void queryConfigs(int renderableType, - EglOS::AddConfigCallback* addConfigFunc, - void* addConfigOpaque) { - initNativeConfigs(); - int i = 0; - for (NativeFormatList::iterator it = s_nativeFormats.begin(); - it != s_nativeFormats.end(); - it++) { - pixelFormatToConfig(i++, - renderableType, - *it, - addConfigFunc, - addConfigOpaque); - } - } - - virtual bool isValidNativeWin(EglOS::Surface* win) { - if (win->type() != MacSurface::WINDOW) { - return false; - } else { - return isValidNativeWin(MacSurface::from(win)->handle()); - } - } - - virtual bool isValidNativeWin(EGLNativeWindowType win) { - unsigned int width, height; - return nsGetWinDims(win, &width, &height); - } - - virtual bool checkWindowPixelFormatMatch( - EGLNativeWindowType win, - const EglOS::PixelFormat* pixelFormat, - unsigned int* width, - unsigned int* height) { - bool ret = nsGetWinDims(win, width, height); - - const MacPixelFormat* format = MacPixelFormat::from(pixelFormat); - int r = format->redSize(); - int g = format->greenSize(); - int b = format->blueSize(); - - bool match = nsCheckColor(win, r + g + b); - - return ret && match; - } - - virtual EglOS::Context* createContext( - const EglOS::PixelFormat* pixelFormat, - EglOS::Context* sharedContext) { - void* macSharedContext = - sharedContext ? MacContext::from(sharedContext) : NULL; - return new MacContext( - nsCreateContext(MacPixelFormat::from(pixelFormat)->handle(), - macSharedContext)); - } - - virtual bool destroyContext(EglOS::Context* context) { - delete context; - return true; - } - - virtual EglOS::Surface* createPbufferSurface( - const EglOS::PixelFormat* pixelFormat, - const EglOS::PbufferInfo* info) { - GLenum glTexFormat = GL_RGBA, glTexTarget = GL_TEXTURE_2D; - switch (info->format) { - case EGL_TEXTURE_RGB: - glTexFormat = GL_RGB; - break; - case EGL_TEXTURE_RGBA: - glTexFormat = GL_RGBA; - break; - } - EGLint maxMipmap = info->hasMipmap ? MAX_PBUFFER_MIPMAP_LEVEL : 0; - - MacSurface* result = new MacSurface( - nsCreatePBuffer( - glTexTarget, - glTexFormat, - maxMipmap, - info->width, - info->height), - MacSurface::PBUFFER); - - result->setHasMipmap(info->hasMipmap); - return result; - } - - virtual bool releasePbuffer(EglOS::Surface* pb) { - if (pb) { - nsDestroyPBuffer(MacSurface::from(pb)->handle()); - } - return true; - } - - virtual bool makeCurrent(EglOS::Surface* read, - EglOS::Surface* draw, - EglOS::Context* ctx) { - // check for unbind - if (ctx == NULL && read == NULL && draw == NULL) { - nsWindowMakeCurrent(NULL, NULL); - return true; - } - else if (ctx == NULL || read == NULL || draw == NULL) { - // error ! - return false; - } - - //dont supporting diffrent read & draw surfaces on Mac - if (read != draw) { - return false; - } - switch (draw->type()) { - case MacSurface::WINDOW: - nsWindowMakeCurrent(MacContext::from(ctx), - MacSurface::from(draw)->handle()); - break; - case MacSurface::PBUFFER: - { - MacSurface* macdraw = MacSurface::from(draw); - int mipmapLevel = macdraw->hasMipmap() ? MAX_PBUFFER_MIPMAP_LEVEL : 0; - nsPBufferMakeCurrent(MacContext::from(ctx), - macdraw->handle(), mipmapLevel); - break; - } - default: - return false; - } - return true; - } - - virtual void swapBuffers(EglOS::Surface* srfc) { - nsSwapBuffers(); - } - - EGLNativeDisplayType dpy() const { return mDpy; } - -private: - EGLNativeDisplayType mDpy; -}; - -class MacGlLibrary : public GlLibrary { -public: - MacGlLibrary() : mLib(NULL) { - static const char kLibName[] = - "/System/Library/Frameworks/OpenGL.framework/OpenGL"; - char error[256]; - mLib = emugl::SharedLibrary::open(kLibName, error, sizeof(error)); - if (!mLib) { - ERR("%s: Could not open GL library %s [%s]\n", - __FUNCTION__, kLibName, error); - } - } - - ~MacGlLibrary() { - delete mLib; - } - - // override - virtual GlFunctionPointer findSymbol(const char* name) { - if (!mLib) { - return NULL; - } - return reinterpret_cast(mLib->findSymbol(name)); - } - -private: - emugl::SharedLibrary* mLib; -}; - -class MacEngine : public EglOS::Engine { -public: - MacEngine() : mGlLib() {} - - virtual EglOS::Display* getDefaultDisplay() { - return new MacDisplay(0); - } - - virtual GlLibrary* getGlLibrary() { - return &mGlLib; - } - - virtual EglOS::Surface* createWindowSurface(EGLNativeWindowType wnd) { - return new MacSurface(wnd, MacSurface::WINDOW); - } - -private: - MacGlLibrary mGlLib; -}; - -emugl::LazyInstance sHostEngine = LAZY_INSTANCE_INIT; - -} // namespace - - -// static -EglOS::Engine* EglOS::Engine::getHostInstance() { - return sHostEngine.ptr(); -} diff --git a/external/android-emugl/host/libs/Translator/EGL/EglOsApi_glx.cpp b/external/android-emugl/host/libs/Translator/EGL/EglOsApi_glx.cpp deleted file mode 100644 index c567efd..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglOsApi_glx.cpp +++ /dev/null @@ -1,468 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "EglOsApi.h" - -#include "emugl/common/lazy_instance.h" -#include "emugl/common/mutex.h" -#include "emugl/common/shared_library.h" -#include "GLcommon/GLLibrary.h" - -#include "OpenglCodecCommon/ErrorLog.h" - -#include -#include -#include -#if defined(Status) -// undef to address conflict between X11 symbol and protobuf -#undef Status -#endif - -namespace { - -typedef Display X11Display; - -class ErrorHandler{ -public: - ErrorHandler(EGLNativeDisplayType dpy); - ~ErrorHandler(); - int getLastError() const { return s_lastErrorCode; } - -private: - static int s_lastErrorCode; - int (*m_oldErrorHandler)(Display *, XErrorEvent *); - static emugl::Mutex s_lock; - static int errorHandlerProc(EGLNativeDisplayType dpy,XErrorEvent* event); -}; - -// static -int ErrorHandler::s_lastErrorCode = 0; - -// static -emugl::Mutex ErrorHandler::s_lock; - -ErrorHandler::ErrorHandler(EGLNativeDisplayType dpy) { - emugl::Mutex::AutoLock mutex(s_lock); - XSync(dpy,False); - s_lastErrorCode = 0; - m_oldErrorHandler = XSetErrorHandler(errorHandlerProc); -} - -ErrorHandler::~ErrorHandler() { - emugl::Mutex::AutoLock mutex(s_lock); - XSetErrorHandler(m_oldErrorHandler); - s_lastErrorCode = 0; -} - -int ErrorHandler::errorHandlerProc(EGLNativeDisplayType dpy, - XErrorEvent* event) { - s_lastErrorCode = event->error_code; - return 0; -} - -#define IS_SUCCESS(a) \ - do { if (a != Success) return 0; } while (0) - -#define EXIT_IF_FALSE(a) \ - do { if (a != Success) return; } while (0) - -// Implementation of EglOS::PixelFormat based on GLX. -class GlxPixelFormat : public EglOS::PixelFormat { -public: - explicit GlxPixelFormat(GLXFBConfig fbconfig) : mFbConfig(fbconfig) {} - - virtual EglOS::PixelFormat* clone() { - return new GlxPixelFormat(mFbConfig); - } - - GLXFBConfig fbConfig() const { return mFbConfig; } - - static GLXFBConfig from(const EglOS::PixelFormat* f) { - return static_cast(f)->fbConfig(); - } - -private: - GLXFBConfig mFbConfig; -}; - -void pixelFormatToConfig(EGLNativeDisplayType dpy, - int renderableType, - GLXFBConfig frmt, - EglOS::AddConfigCallback* addConfigFunc, - void* addConfigOpaque) { - EglOS::ConfigInfo info; - int tmp; - - memset(&info, 0, sizeof(info)); - - EXIT_IF_FALSE(glXGetFBConfigAttrib(dpy, frmt, GLX_TRANSPARENT_TYPE, &tmp)); - if (tmp == GLX_TRANSPARENT_INDEX) { - return; // not supporting transparent index - } else if (tmp == GLX_NONE) { - info.transparent_type = EGL_NONE; - info.trans_red_val = 0; - info.trans_green_val = 0; - info.trans_blue_val = 0; - } else { - info.transparent_type = EGL_TRANSPARENT_RGB; - - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy, frmt, GLX_TRANSPARENT_RED_VALUE, &info.trans_red_val)); - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy, frmt, GLX_TRANSPARENT_GREEN_VALUE, &info.trans_green_val)); - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy, frmt, GLX_TRANSPARENT_BLUE_VALUE, &info.trans_blue_val)); - } - - // - // filter out single buffer configurations - // - int doubleBuffer = 0; - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy, frmt, GLX_DOUBLEBUFFER, &doubleBuffer)); - if (!doubleBuffer) { - return; - } - - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy ,frmt, GLX_RED_SIZE, &info.red_size)); - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy ,frmt, GLX_GREEN_SIZE, &info.green_size)); - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy ,frmt, GLX_BLUE_SIZE, &info.blue_size)); - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy ,frmt, GLX_ALPHA_SIZE, &info.alpha_size)); - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy ,frmt, GLX_DEPTH_SIZE, &info.depth_size)); - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy ,frmt, GLX_STENCIL_SIZE, &info.stencil_size)); - - info.renderable_type = renderableType; - int nativeRenderable = 0; - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy, frmt, GLX_X_RENDERABLE, &nativeRenderable)); - info.native_renderable = !!nativeRenderable; - - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy, frmt, GLX_X_VISUAL_TYPE, &info.native_visual_type)); - - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy, frmt, GLX_VISUAL_ID, &info.native_visual_id)); - - //supported surfaces types - info.surface_type = 0; - EXIT_IF_FALSE(glXGetFBConfigAttrib(dpy, frmt, GLX_DRAWABLE_TYPE, &tmp)); - if (tmp & GLX_WINDOW_BIT && info.native_visual_id != 0) { - info.surface_type |= EGL_WINDOW_BIT; - } else { - info.native_visual_id = 0; - info.native_visual_type = EGL_NONE; - } - if (tmp & GLX_PBUFFER_BIT) { - info.surface_type |= EGL_PBUFFER_BIT; - } - - info.caveat = 0; - EXIT_IF_FALSE(glXGetFBConfigAttrib(dpy, frmt, GLX_CONFIG_CAVEAT, &tmp)); - if (tmp == GLX_NONE) { - info.caveat = EGL_NONE; - } else if (tmp == GLX_SLOW_CONFIG) { - info.caveat = EGL_SLOW_CONFIG; - } else if (tmp == GLX_NON_CONFORMANT_CONFIG) { - info.caveat = EGL_NON_CONFORMANT_CONFIG; - } - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy, frmt, GLX_MAX_PBUFFER_WIDTH, &info.max_pbuffer_width)); - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy, frmt, GLX_MAX_PBUFFER_HEIGHT, &info.max_pbuffer_height)); - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy, frmt, GLX_MAX_PBUFFER_HEIGHT, &info.max_pbuffer_size)); - - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy, frmt, GLX_LEVEL, &info.frame_buffer_level)); - - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy, frmt, GLX_FBCONFIG_ID, &info.config_id)); - - EXIT_IF_FALSE(glXGetFBConfigAttrib( - dpy, frmt, GLX_SAMPLES, &info.samples_per_pixel)); - - //Filter out configs that do not support RGBA - EXIT_IF_FALSE(glXGetFBConfigAttrib(dpy, frmt, GLX_RENDER_TYPE, &tmp)); - if (!(tmp & GLX_RGBA_BIT)) { - return; - } - - info.frmt = new GlxPixelFormat(frmt); - - (*addConfigFunc)(addConfigOpaque, &info); -} - -// Implementation of EglOS::Surface based on GLX. -class GlxSurface : public EglOS::Surface { -public: - GlxSurface(GLXDrawable drawable, SurfaceType type) : - Surface(type), mDrawable(drawable) {} - - GLXDrawable drawable() const { return mDrawable; } - - // Helper routine to down-cast an EglOS::Surface and extract - // its drawable. - static GLXDrawable drawableFor(EglOS::Surface* surface) { - return static_cast(surface)->drawable(); - } - -private: - GLXDrawable mDrawable; -}; - -// Implementation of EglOS::Context based on GLX. -class GlxContext : public EglOS::Context { -public: - explicit GlxContext(GLXContext context) : mContext(context) {} - - GLXContext context() const { return mContext; } - - static GLXContext contextFor(EglOS::Context* context) { - return static_cast(context)->context(); - } -private: - GLXContext mContext; -}; - -// Implementation of EglOS::Display based on GLX. -class GlxDisplay : public EglOS::Display { -public: - explicit GlxDisplay(X11Display* disp) : mDisplay(disp) {} - - virtual bool release() { - return XCloseDisplay(mDisplay); - } - - virtual void queryConfigs(int renderableType, - EglOS::AddConfigCallback* addConfigFunc, - void* addConfigOpaque) { - int n; - GLXFBConfig* frmtList = glXGetFBConfigs(mDisplay, 0, &n); - for(int i = 0; i < n; i++) { - pixelFormatToConfig( - mDisplay, - renderableType, - frmtList[i], - addConfigFunc, - addConfigOpaque); - } - XFree(frmtList); - } - - virtual bool isValidNativeWin(EglOS::Surface* win) { - if (!win) { - return false; - } else { - return isValidNativeWin(GlxSurface::drawableFor(win)); - } - } - - virtual bool isValidNativeWin(EGLNativeWindowType win) { - Window root; - int t; - unsigned int u; - ErrorHandler handler(mDisplay); - if (!XGetGeometry(mDisplay, win, &root, &t, &t, &u, &u, &u, &u)) { - return false; - } - return handler.getLastError() == 0; - } - - virtual bool checkWindowPixelFormatMatch( - EGLNativeWindowType win, - const EglOS::PixelFormat* pixelFormat, - unsigned int* width, - unsigned int* height) { - //TODO: to check what does ATI & NVIDIA enforce on win pixelformat - unsigned int depth, configDepth, border; - int r, g, b, x, y; - GLXFBConfig fbconfig = GlxPixelFormat::from(pixelFormat); - - IS_SUCCESS(glXGetFBConfigAttrib( - mDisplay, fbconfig, GLX_RED_SIZE, &r)); - IS_SUCCESS(glXGetFBConfigAttrib( - mDisplay, fbconfig, GLX_GREEN_SIZE, &g)); - IS_SUCCESS(glXGetFBConfigAttrib( - mDisplay, fbconfig, GLX_BLUE_SIZE, &b)); - configDepth = r + g + b; - Window root; - if (!XGetGeometry( - mDisplay, win, &root, &x, &y, width, height, &border, &depth)) { - return false; - } - return depth >= configDepth; - } - - virtual EglOS::Context* createContext( - const EglOS::PixelFormat* pixelFormat, - EglOS::Context* sharedContext) { - ErrorHandler handler(mDisplay); - GLXContext ctx = glXCreateNewContext( - mDisplay, - GlxPixelFormat::from(pixelFormat), - GLX_RGBA_TYPE, - sharedContext ? GlxContext::contextFor(sharedContext) : NULL, - true); - - if (handler.getLastError()) { - return NULL; - } - - return new GlxContext(ctx); - } - - virtual bool destroyContext(EglOS::Context* context) { - glXDestroyContext(mDisplay, GlxContext::contextFor(context)); - return true; - } - - virtual EglOS::Surface* createPbufferSurface( - const EglOS::PixelFormat* pixelFormat, - const EglOS::PbufferInfo* info) { - const int attribs[] = { - GLX_PBUFFER_WIDTH, info->width, - GLX_PBUFFER_HEIGHT, info->height, - GLX_LARGEST_PBUFFER, info->largest, - None - }; - GLXPbuffer pb = glXCreatePbuffer( - mDisplay, - GlxPixelFormat::from(pixelFormat), - attribs); - return pb ? new GlxSurface(pb, GlxSurface::PBUFFER) : NULL; - } - - virtual bool releasePbuffer(EglOS::Surface* pb) { - if (!pb) { - return false; - } else { - glXDestroyPbuffer(mDisplay, GlxSurface::drawableFor(pb)); - return true; - } - } - - virtual bool makeCurrent(EglOS::Surface* read, - EglOS::Surface* draw, - EglOS::Context* context) { - ErrorHandler handler(mDisplay); - bool retval = false; - if (!context && !read && !draw) { - // unbind - retval = glXMakeContextCurrent(mDisplay, 0, 0, NULL); - } - else if (context && read && draw) { - retval = glXMakeContextCurrent( - mDisplay, - GlxSurface::drawableFor(draw), - GlxSurface::drawableFor(read), - GlxContext::contextFor(context)); - } - return (handler.getLastError() == 0) && retval; - } - - virtual void swapBuffers(EglOS::Surface* srfc) { - if (srfc) { - glXSwapBuffers(mDisplay, GlxSurface::drawableFor(srfc)); - } - } - -private: - X11Display* mDisplay; -}; - -class GlxLibrary : public GlLibrary { -public: - typedef GlFunctionPointer (ResolverFunc)(const char* name); - - // Important: Use libGL.so.1 explicitly, because it will always link to - // the vendor-specific version of the library. libGL.so might in some - // cases, depending on bad ldconfig configurations, link to the wrapper - // lib that doesn't behave the same. - GlxLibrary() : mLib(NULL), mResolver(NULL) { - static const char kLibName[] = "libGL.so.1"; - char error[256]; - mLib = emugl::SharedLibrary::open(kLibName, error, sizeof(error)); - if (!mLib) { - ERR("%s: Could not open GL library %s [%s]\n", - __FUNCTION__, kLibName, error); - return; - } - // NOTE: Don't use glXGetProcAddress here, only glXGetProcAddressARB - // is guaranteed to be supported by vendor-specific libraries. - static const char kResolverName[] = "glXGetProcAddressARB"; - mResolver = reinterpret_cast( - mLib->findSymbol(kResolverName)); - if (!mResolver) { - ERR("%s: Could not find resolver %s in %s\n", - __FUNCTION__, kResolverName, kLibName); - delete mLib; - mLib = NULL; - } - } - - ~GlxLibrary() { - delete mLib; - } - - // override - virtual GlFunctionPointer findSymbol(const char* name) { - if (!mLib) { - return NULL; - } - GlFunctionPointer ret = (*mResolver)(name); - if (!ret) { - ret = reinterpret_cast(mLib->findSymbol(name)); - } - return ret; - } - -private: - emugl::SharedLibrary* mLib; - ResolverFunc* mResolver; -}; - -class GlxEngine : public EglOS::Engine { -public: - GlxEngine() : mGlLib() {} - - virtual EglOS::Display* getDefaultDisplay() { - return new GlxDisplay(XOpenDisplay(0)); - } - - virtual GlLibrary* getGlLibrary() { - return &mGlLib; - } - - virtual EglOS::Surface* createWindowSurface(EGLNativeWindowType wnd) { - return new GlxSurface(wnd, GlxSurface::WINDOW); - } -private: - GlxLibrary mGlLib; -}; - -emugl::LazyInstance sHostEngine = LAZY_INSTANCE_INIT; - -} // namespace - -// static -EglOS::Engine* EglOS::Engine::getHostInstance() { - return sHostEngine.ptr(); -} diff --git a/external/android-emugl/host/libs/Translator/EGL/EglOsApi_mir.cpp b/external/android-emugl/host/libs/Translator/EGL/EglOsApi_mir.cpp deleted file mode 100644 index b0970c6..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglOsApi_mir.cpp +++ /dev/null @@ -1,583 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#define MIR_EGL_PLATFORM - -#include "mir_support/shared_state.h" - -#include "EglOsApi.h" - -#include "emugl/common/lazy_instance.h" -#include "emugl/common/shared_library.h" -#include "GLcommon/GLLibrary.h" - -#include "OpenglCodecCommon/ErrorLog.h" - -#include - -#include -#include - -#include -#include - -#define EXIT_IF_FALSE(a) \ - do { if (!a) return; } while (0) - -namespace { -class HostEglImpl { -public: - static HostEglImpl* get() { - static HostEglImpl *inst = new HostEglImpl; - return inst; - } - - EGLint eglGetError() { - typedef EGLint (*_eglGetErrorFunc)(); - static _eglGetErrorFunc _eglGetError; - - if (!_eglGetError) - _eglGetError = reinterpret_cast<_eglGetErrorFunc>(lib_->findSymbol("eglGetError")); - - return _eglGetError(); - } - - EGLDisplay eglGetDisplay(EGLNativeDisplayType display_id) { - typedef EGLDisplay (*_eglGetDisplayFunc)(EGLNativeDisplayType display_id); - static _eglGetDisplayFunc _eglGetDisplay; - - if (!_eglGetDisplay) - _eglGetDisplay = reinterpret_cast<_eglGetDisplayFunc>(lib_->findSymbol("eglGetDisplay")); - - return _eglGetDisplay(display_id); - } - - EGLBoolean eglInitialize(EGLDisplay display, EGLint *major, EGLint *minor) { - typedef EGLBoolean (*_eglInitializeFunc)(EGLDisplay display, EGLint *major, EGLint *minor); - static _eglInitializeFunc _eglInitialize = nullptr; - - if (!_eglInitialize) - _eglInitialize = reinterpret_cast<_eglInitializeFunc>(lib_->findSymbol("eglInitialize")); - - return _eglInitialize(display, major, minor); - } - - EGLBoolean eglTerminate(EGLDisplay display) { - typedef EGLBoolean (*_eglTermianteFunc)(EGLDisplay display); - static _eglTermianteFunc _eglTerminate = nullptr; - - if (!_eglTerminate) - _eglTerminate = reinterpret_cast<_eglTermianteFunc>(lib_->findSymbol("eglTerminate")); - - return _eglTerminate(display); - } - - EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list) { - typedef EGLContext (*_eglCreateContextFunc)(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list); - static _eglCreateContextFunc _eglCreateContext = nullptr; - - if (!_eglCreateContext) - _eglCreateContext = reinterpret_cast<_eglCreateContextFunc>(lib_->findSymbol("eglCreateContext")); - - return _eglCreateContext(dpy, config, share_context, attrib_list); - } - - EGLBoolean eglMakeCurrent(EGLDisplay display, EGLSurface read, EGLSurface draw, EGLContext context) { - typedef EGLBoolean (*_eglMakeCurrentFunc)(EGLDisplay display, EGLSurface read, EGLSurface draw, EGLContext context); - static _eglMakeCurrentFunc _eglMakeCurrent = nullptr; - - if (!_eglMakeCurrent) - _eglMakeCurrent = reinterpret_cast<_eglMakeCurrentFunc>(lib_->findSymbol("eglMakeCurrent")); - - return _eglMakeCurrent(display, read, draw, context); - } - - EGLBoolean eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config) { - typedef EGLBoolean (*_eglGetConfigsFunc)(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config); - static _eglGetConfigsFunc _eglGetConfigs = nullptr; - - if (!_eglGetConfigs) - _eglGetConfigs = reinterpret_cast<_eglGetConfigsFunc>(lib_->findSymbol("eglGetConfigs")); - - return _eglGetConfigs(dpy, configs, config_size, num_config); - } - - EGLSurface eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list) { - typedef EGLSurface (*_eglCreatePbufferSurfaceFunc)(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list); - static _eglCreatePbufferSurfaceFunc _eglCreatePbufferSurface = nullptr; - - if (!_eglCreatePbufferSurface) - _eglCreatePbufferSurface = reinterpret_cast<_eglCreatePbufferSurfaceFunc>(lib_->findSymbol("eglCreatePbufferSurface")); - - return _eglCreatePbufferSurface(dpy, config, attrib_list); - } - - EGLBoolean eglDestroySurface(EGLDisplay display, EGLSurface surface) { - typedef EGLBoolean (*_eglDestroySurfaceFunc)(EGLDisplay display, EGLSurface surface); - static _eglDestroySurfaceFunc _eglDestroySurface = nullptr; - - if (!_eglDestroySurface) - _eglDestroySurface = reinterpret_cast<_eglDestroySurfaceFunc>(lib_->findSymbol("eglDestroySurface")); - - return _eglDestroySurface(display, surface); - } - - EGLBoolean eglSwapBuffers(EGLDisplay display, EGLSurface surface) { - typedef EGLBoolean (*_eglSwapBuffersFunc)(EGLDisplay display, EGLSurface surface); - static _eglSwapBuffersFunc _eglSwapBuffers = nullptr; - - if (!_eglSwapBuffers) - _eglSwapBuffers = reinterpret_cast<_eglSwapBuffersFunc>(lib_->findSymbol("eglSwapBuffers")); - - return _eglSwapBuffers(display, surface); - } - - EGLBoolean eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value) { - typedef EGLBoolean (*_eglGetConfigAttribFunc)(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value); - static _eglGetConfigAttribFunc _eglGetConfigAttrib = nullptr; - - if (!_eglGetConfigAttrib) - _eglGetConfigAttrib = reinterpret_cast<_eglGetConfigAttribFunc>(lib_->findSymbol("eglGetConfigAttrib")); - - return _eglGetConfigAttrib(dpy, config, attribute, value); - } - - EGLSurface eglCreateWindowSurface(EGLDisplay display, EGLConfig config, EGLNativeWindowType window, const EGLint *attribs) { - typedef EGLSurface (*_eglCreateWindowSurfaceFunc)(EGLDisplay display, EGLConfig config, EGLNativeWindowType window, const EGLint *attribs); - static _eglCreateWindowSurfaceFunc _eglCreateWindowSurface; - - if (!_eglCreateWindowSurface) - _eglCreateWindowSurface = reinterpret_cast<_eglCreateWindowSurfaceFunc>(lib_->findSymbol("eglCreateWindowSurface")); - - return _eglCreateWindowSurface(display, config, window, attribs); - } - -private: - HostEglImpl() { - static const char kLibName[] = "libEGL.so.1"; - - char error[256]; - lib_ = emugl::SharedLibrary::open(kLibName, error, sizeof(error)); - if (!lib_) { - ERR("%s: Could not open host EGL library %s [%s]\n", - __FUNCTION__, kLibName, error); - return; - } - } - - emugl::SharedLibrary *lib_; -}; - -class MirImplPixelFormat : public EglOS::PixelFormat { -public: - MirImplPixelFormat(EGLConfig config) : - config_(config) { - } - - EGLConfig nativeFormat() const { return config_; } - - virtual EglOS::PixelFormat* clone() { - return new MirImplPixelFormat(config_); - } - - static const MirImplPixelFormat* from(const EglOS::PixelFormat *format) { - return static_cast(format); - } - - EGLConfig config() const { - return config_; - } - -private: - EGLConfig config_; -}; - -class MirImplSurface : public EglOS::Surface { -public: - MirImplSurface(SurfaceType type) : - Surface(type), - surface_(EGL_NO_SURFACE) { - } - - static MirImplSurface* create_with_surface(EGLSurface surface) { - auto impl = new MirImplSurface(SurfaceType::PBUFFER); - impl->surface_ = surface; - return impl; - } - - static MirImplSurface* create_with_native_window(EGLSurface surface) { - auto impl = new MirImplSurface(SurfaceType::WINDOW); - impl->surface_ = surface; - return impl; - } - - EGLSurface drawable() { - return surface_; - } - - void invalidate() { - surface_ = EGL_NO_SURFACE; - } - - static MirImplSurface* from(EglOS::Surface *surface) { - if (!surface) - return nullptr; - - return static_cast(surface); - } - -private: - EGLSurface surface_; - EGLNativeWindowType native_window_; -}; - -class MirImplContext : public EglOS::Context { -public: - MirImplContext(EGLDisplay display, const MirImplPixelFormat *format, MirImplContext *shared_context) : - egl_display_(display), - egl_context_(EGL_NO_CONTEXT) { - - EGLint context_attribs[] = { - EGL_CONTEXT_CLIENT_VERSION, 2, - EGL_NONE - }; - - egl_context_ = HostEglImpl::get()->eglCreateContext(egl_display_, - format ? format->nativeFormat() : nullptr, - shared_context ? shared_context->nativeContext() : EGL_NO_CONTEXT, - context_attribs); - if (egl_context_ == EGL_NO_CONTEXT) - BOOST_THROW_EXCEPTION(std::runtime_error("Failed to create EGL context")); - } - - bool release() { - if (!eglDestroyContext(egl_display_, egl_context_)) - return false; - - egl_display_ = EGL_NO_DISPLAY; - egl_context_ = EGL_NO_CONTEXT; - - return true; - } - - EGLContext nativeContext() const { - return egl_context_; - } - - static MirImplContext* from(EglOS::Context *context) { - if (!context) - return nullptr; - - return static_cast(context); - } - -private: - EGLDisplay egl_display_; - EGLContext egl_context_; -}; - -class MirImplDisplay : public EglOS::Display { -public: - explicit MirImplDisplay(MirConnection *connection) : - connection_(connection) { - if (!mir_connection_is_valid(connection_)) - BOOST_THROW_EXCEPTION(std::runtime_error("Not connected to Mir server")); - - egl_display_ = HostEglImpl::get()->eglGetDisplay(mir_connection_get_egl_native_display(connection_)); - if (egl_display_ == EGL_NO_DISPLAY) - BOOST_THROW_EXCEPTION(std::runtime_error("Failed to get EGL display")); - - if (!HostEglImpl::get()->eglInitialize(egl_display_, nullptr, nullptr)) - BOOST_THROW_EXCEPTION(std::runtime_error("Failed to initialize EGL")); - } - - virtual bool release() override { - HostEglImpl::get()->eglMakeCurrent(egl_display_, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - HostEglImpl::get()->eglTerminate(egl_display_); - egl_display_ = EGL_NO_DISPLAY; - return true; - } - - virtual void queryConfigs(int renderable_type, EglOS::AddConfigCallback *callback, void *user_data) override { - int num_configs = 0; - HostEglImpl::get()->eglGetConfigs(egl_display_, nullptr, 0, &num_configs); - - auto configs = (EGLConfig*) calloc(num_configs, sizeof(EGLConfig)); - int num_config_available = 0; - HostEglImpl::get()->eglGetConfigs(egl_display_, configs, num_configs, &num_config_available); - - for (int n = 0; n < num_config_available; n++) { - EGLConfig config = configs[n]; - - EglOS::ConfigInfo info; - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_RED_SIZE, &info.red_size)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_GREEN_SIZE, &info.green_size)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_BLUE_SIZE, &info.blue_size)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_ALPHA_SIZE, &info.alpha_size)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_CONFIG_CAVEAT, &info.caveat)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_CONFIG_ID, &info.config_id)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_DEPTH_SIZE, &info.depth_size)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_LEVEL, &info.frame_buffer_level)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_MAX_PBUFFER_WIDTH, &info.max_pbuffer_width)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_MAX_PBUFFER_HEIGHT, &info.max_pbuffer_height)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_MAX_PBUFFER_PIXELS, &info.max_pbuffer_size)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_NATIVE_RENDERABLE, &info.native_renderable)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_RENDERABLE_TYPE, &info.renderable_type)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_NATIVE_VISUAL_ID, &info.native_visual_id)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_NATIVE_VISUAL_TYPE, &info.native_visual_type)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_SAMPLES, &info.samples_per_pixel)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_STENCIL_SIZE, &info.stencil_size)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_SURFACE_TYPE, &info.surface_type)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_TRANSPARENT_TYPE, &info.transparent_type)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_TRANSPARENT_RED_VALUE, &info.trans_red_val)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_TRANSPARENT_GREEN_VALUE, &info.trans_green_val)); - EXIT_IF_FALSE(copy_egl_attrib(config, EGL_TRANSPARENT_BLUE_VALUE, &info.trans_blue_val)); - - info.frmt = new MirImplPixelFormat(config); - - (*callback)(user_data, &info); - } - - free(configs); - } - - virtual bool isValidNativeWin(EglOS::Surface *surface) override { - if (!surface) - return false; - - return surface->type() == EglOS::Surface::WINDOW; - } - - virtual bool isValidNativeWin(EGLNativeWindowType window) override { - return true; - } - - virtual bool checkWindowPixelFormatMatch( - EGLNativeWindowType window, - const EglOS::PixelFormat *format, - unsigned int *width, - unsigned int *height) override { - - auto impl = MirImplPixelFormat::from(format); - - EGLint r = 0, g = 0, b = 0; - if (!copy_egl_attrib(impl->nativeFormat(), EGL_RED_SIZE, &r)) - return false; - if (!copy_egl_attrib(impl->nativeFormat(), EGL_GREEN_SIZE, &g)) - return false; - if (!copy_egl_attrib(impl->nativeFormat(), EGL_BLUE_SIZE, &b)) - return false; - - const auto config_depth = r + g +b; - - return true; - } - - virtual EglOS::Context* createContext(const EglOS::PixelFormat *format, EglOS::Context *shared_context) override { - try { - return new MirImplContext(egl_display_, - MirImplPixelFormat::from(format), - MirImplContext::from(shared_context)); - } - catch (std::exception &err) { - ERR("Failed to create EGL context: %s\n", err.what()); - return nullptr; - } - } - - virtual bool destroyContext(EglOS::Context *context) override { - if (!context) - return context; - - return MirImplContext::from(context)->release(); - } - - virtual EglOS::Surface* createPbufferSurface( - const EglOS::PixelFormat* format, - const EglOS::PbufferInfo* info) override { - - EGLint attribs[] = { - EGL_WIDTH, info->width, - EGL_HEIGHT, info->height, - EGL_LARGEST_PBUFFER, info->largest, - EGL_MIPMAP_TEXTURE, info->hasMipmap, - EGL_TEXTURE_TARGET, info->target, - EGL_NONE, - }; - - auto surface = HostEglImpl::get()->eglCreatePbufferSurface(egl_display_, - MirImplPixelFormat::from(format)->nativeFormat(), - attribs); - if (surface == EGL_NO_SURFACE) - return nullptr; - - return MirImplSurface::create_with_surface(surface); - } - - virtual bool releasePbuffer(EglOS::Surface *surface) override { - if (!surface) - return false; - - auto impl = MirImplSurface::from(surface); - if (!impl) - return false; - - if (!HostEglImpl::get()->eglDestroySurface(egl_display_, impl->drawable())) - return false; - - impl->invalidate(); - return true; - } - - virtual bool makeCurrent(EglOS::Surface* input_surface, - EglOS::Surface* output_surface, - EglOS::Context* context) override { - - bool success = false; - - if (!input_surface && !output_surface && !context) { - success = HostEglImpl::get()->eglMakeCurrent(egl_display_, - EGL_NO_SURFACE, - EGL_NO_SURFACE, - EGL_NO_CONTEXT); - } - else if (input_surface && output_surface && context) { - success = HostEglImpl::get()->eglMakeCurrent(egl_display_, - MirImplSurface::from(input_surface)->drawable(), - MirImplSurface::from(output_surface)->drawable(), - MirImplContext::from(context)->nativeContext()); - } - - return success; - } - - virtual void swapBuffers(EglOS::Surface *surface) override { - HostEglImpl::get()->eglSwapBuffers(egl_display_, MirImplSurface::from(surface)->drawable()); - } - - EGLDisplay display() const { - return egl_display_; - } - -private: - template - bool copy_egl_attrib(EGLConfig config, EGLint attribute, T *target) { - T value; - - if (!HostEglImpl::get()->eglGetConfigAttrib(egl_display_, config, attribute, reinterpret_cast(&value))) - return false; - - *target = value; - - return true; - } - - MirConnection *connection_; - EGLDisplay egl_display_; -}; - -class MirImplGlLibrary : public GlLibrary { -public: - typedef GlFunctionPointer (ResolverFunc)(const char* name); - - MirImplGlLibrary() { - static const char kLibName[] = "libGLESv2.so.2"; - static const char kEGLLibName[] = "libEGL.so.1"; - - char error[256]; - lib_ = emugl::SharedLibrary::open(kLibName, error, sizeof(error)); - if (!lib_) { - ERR("%s: Could not open host GLESv2 library %s [%s]\n", - __FUNCTION__, kLibName, error); - return; - } - - egl_lib_ = emugl::SharedLibrary::open(kEGLLibName, error, sizeof(error)); - if (!lib_) { - ERR("%s: Could not open host EGL library %s [%s]\n", - __FUNCTION__, kEGLLibName, error); - return; - } - - resolver_ = reinterpret_cast(egl_lib_->findSymbol("eglGetProcAddress")); - } - - virtual GlFunctionPointer findSymbol(const char *name) override { - if (!lib_) - return nullptr; - - ERR("Trying to resolved %s ...\n", name); - - GlFunctionPointer symbol = nullptr; - - if (resolver_) - symbol = (*resolver_)(name); - - if (!symbol) - symbol = reinterpret_cast(lib_->findSymbol(name)); - - ERR("-> %p\n", symbol); - - return symbol; - } - -private: - emugl::SharedLibrary *lib_; - emugl::SharedLibrary *egl_lib_; - ResolverFunc *resolver_; -}; - -class MirImplEngine : public EglOS::Engine { -public: - MirImplEngine() { - ERR("Initialized Mir EGL engine"); - } - - ~MirImplEngine() { - } - - virtual EglOS::Display* getDefaultDisplay() override { - mir::support::SharedState::get()->ensure_connection(); - - return new MirImplDisplay(mir::support::SharedState::get()->connection()); - } - - virtual GlLibrary* getGlLibrary() { - return &lib_; - } - - virtual EglOS::Surface* createWindowSurface(EglOS::Display *display, EGLNativeWindowType window, EglOS::PixelFormat *format) override { - mir::support::SharedState::get()->ensure_connection(); - - auto surface = HostEglImpl::get()->eglCreateWindowSurface( - static_cast(display)->display(), - static_cast(format)->config(), - window, - nullptr); - - return MirImplSurface::create_with_native_window(surface); - } - -private: - MirImplGlLibrary lib_; -}; - -emugl::LazyInstance sHostEngine = LAZY_INSTANCE_INIT; -} - -EglOS::Engine* EglOS::Engine::getHostInstance() { - return sHostEngine.ptr(); -} diff --git a/external/android-emugl/host/libs/Translator/EGL/EglOsApi_null.cpp b/external/android-emugl/host/libs/Translator/EGL/EglOsApi_null.cpp deleted file mode 100644 index 6c791c6..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglOsApi_null.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#include "EglOsApi.h" - -#include "emugl/common/lazy_instance.h" - -namespace { -class NullEngine : public EglOS::Engine { -public: - NullEngine() = default; - - virtual EglOS::Display* getDefaultDisplay() override { - return nullptr; - } - - virtual GlLibrary* getGlLibrary() { - return nullptr; - } - - virtual EglOS::Surface* createWindowSurface(EGLNativeWindowType window) override { - return nullptr; - } -}; - -emugl::LazyInstance sHostEngine = LAZY_INSTANCE_INIT; -} - -#if 0 -EglOS::Engine* EglOS::Engine::getHostInstance() { - return sHostEngine.ptr(); -} -#endif diff --git a/external/android-emugl/host/libs/Translator/EGL/EglOsApi_wgl.cpp b/external/android-emugl/host/libs/Translator/EGL/EglOsApi_wgl.cpp deleted file mode 100644 index 874ffc8..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglOsApi_wgl.cpp +++ /dev/null @@ -1,1022 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "EglOsApi.h" - -#include "emugl/common/lazy_instance.h" -#include "emugl/common/shared_library.h" -#include "GLcommon/GLLibrary.h" - -#include "OpenglCodecCommon/ErrorLog.h" - -#include -#include - -#include -#include -#include - -#include - -#include -#include - -#define IS_TRUE(a) \ - do { if (!(a)) return NULL; } while (0) - -#define EXIT_IF_FALSE(a) \ - do { if (!(a)) return; } while (0) - -#define DEBUG 0 -#if DEBUG -#define D(...) fprintf(stderr, __VA_ARGS__) -#else -#define D(...) ((void)0) -#endif - -namespace { - -using emugl::SharedLibrary; -typedef GlLibrary::GlFunctionPointer GlFunctionPointer; - -// Returns true if an extension is include in a given extension list. -// |extension| is an GL extension name. -// |extensionList| is a space-separated list of supported extension. -// Returns true if the extension is supported, false otherwise. -bool supportsExtension(const char* extension, const char* extensionList) { - size_t extensionLen = ::strlen(extension); - const char* list = extensionList; - for (;;) { - const char* p = const_cast(::strstr(list, extension)); - if (!p) { - return false; - } - // Check that the extension appears as a single word in the list - // i.e. that it is wrapped by either spaces or the start/end of - // the list. - if ((p == extensionList || p[-1] == ' ') && - (p[extensionLen] == '\0' || p[extensionLen] == ' ')) { - return true; - } - // otherwise, skip over the current position to find something else. - p += extensionLen; - } -} - -///// -///// W G L D I S P A T C H T A B L E S -///// - -// A technical note to explain what is going here, trust me, it's important. -// -// I. Library-dependent symbol resolution: -// --------------------------------------- -// -// The code here can deal with two kinds of OpenGL Windows libraries: the -// system-provided opengl32.dll, or alternate software renderers like Mesa -// (e.g. mesa_opengl32.dll). -// -// When using the system library, pixel-format related functions, like -// SetPixelFormat(), are provided by gdi32.dll, and _not_ opengl32.dll -// (even though they are documented as part of the Windows GL API). -// -// These functions must _not_ be used when using alternative renderers. -// Instead, these provide _undocumented_ alternatives with the 'wgl' prefix, -// as in wglSetPixelFormat(), wglDescribePixelFormat(), etc... which -// implement the same calling conventions. -// -// For more details about this, see 5.190 of the Windows OpenGL FAQ at: -// https://www.opengl.org/archives/resources/faq/technical/mswindows.htm -// -// Another good source of information on this topic: -// http://stackoverflow.com/questions/20645706/why-are-functions-duplicated-between-opengl32-dll-and-gdi32-dll -// -// In practice, it means that the code here should resolve 'naked' symbols -// (e.g. 'GetPixelFormat()) when using the system library, and 'prefixed' ones -// (e.g. 'wglGetPixelFormat()) otherwise. -// - -// List of WGL functions of interest to probe with GetProcAddress() -#define LIST_WGL_FUNCTIONS(X) \ - X(HGLRC, wglCreateContext, (HDC hdc)) \ - X(BOOL, wglDeleteContext, (HGLRC hglrc)) \ - X(BOOL, wglMakeCurrent, (HDC hdc, HGLRC hglrc)) \ - X(BOOL, wglShareLists, (HGLRC hglrc1, HGLRC hglrc2)) \ - X(HGLRC, wglGetCurrentContext, (void)) \ - X(HDC, wglGetCurrentDC, (void)) \ - X(GlFunctionPointer, wglGetProcAddress, (const char* functionName)) \ - -// List of WGL functions exported by GDI32 that must be used when using -// the system's opengl32.dll only, i.e. not with a software renderer like -// Mesa. For more information, see 5.190 at: -// And also: -#define LIST_GDI32_FUNCTIONS(X) \ - X(int, ChoosePixelFormat, (HDC hdc, const PIXELFORMATDESCRIPTOR* ppfd)) \ - X(BOOL, SetPixelFormat, (HDC hdc, int iPixelFormat, const PIXELFORMATDESCRIPTOR* pfd)) \ - X(int, GetPixelFormat, (HDC hdc)) \ - X(int, DescribePixelFormat, (HDC hdc, int iPixelFormat, UINT nbytes, LPPIXELFORMATDESCRIPTOR ppfd)) \ - X(BOOL, SwapBuffers, (HDC hdc)) \ - -// Declare a structure containing pointers to all functions listed above, -// and a way to initialize them. -struct WglBaseDispatch { - // declare all function pointers, followed by a dummy member used - // to terminate the constructor's initialization list properly. -#define DECLARE_WGL_POINTER(return_type, function_name, signature) \ - return_type (GL_APIENTRY* function_name) signature; - LIST_WGL_FUNCTIONS(DECLARE_WGL_POINTER) - LIST_GDI32_FUNCTIONS(DECLARE_WGL_POINTER) - SharedLibrary* mLib; - bool mIsSystemLib; - - // Default Constructor - WglBaseDispatch() : -#define INIT_WGL_POINTER(return_type, function_name, signature) \ - function_name(NULL), - LIST_WGL_FUNCTIONS(INIT_WGL_POINTER) - LIST_GDI32_FUNCTIONS(INIT_WGL_POINTER) - mLib(NULL), - mIsSystemLib(false) {} - - // Copy constructor - WglBaseDispatch(const WglBaseDispatch& other) : -#define COPY_WGL_POINTER(return_type, function_name, signature) \ - function_name(other.function_name), - LIST_WGL_FUNCTIONS(COPY_WGL_POINTER) - LIST_GDI32_FUNCTIONS(COPY_WGL_POINTER) - mLib(other.mLib), - mIsSystemLib(other.mIsSystemLib) {} - - // Initialize the dispatch table from shared library |glLib|, which - // must point to either the system or non-system opengl32.dll - // implementation. If |systemLib| is true, this considers the library - // to be the system one, and will try to find the GDI32 functions - // like GetPixelFormat() directly. If |systemLib| is false, this will - // try to load the wglXXX variants (e.g. for Mesa). See technical note - // above for details. - // Returns true on success, false otherwise (i.e. if one of the - // required symbols could not be loaded). - bool init(SharedLibrary* glLib, bool systemLib) { - bool result = true; - - mLib = glLib; - mIsSystemLib = systemLib; - -#define LOAD_WGL_POINTER(return_type, function_name, signature) \ - this->function_name = reinterpret_cast< \ - return_type (GL_APIENTRY*) signature>( \ - glLib->findSymbol(#function_name)); \ - if (!this->function_name) { \ - ERR("%s: Could not find %s in GL library\n", __FUNCTION__, \ - #function_name); \ - result = false; \ - } - -#define LOAD_WGL_GDI32_POINTER(return_type, function_name, signature) \ - this->function_name = reinterpret_cast< \ - return_type (GL_APIENTRY*) signature>( \ - GetProcAddress(gdi32, #function_name)); \ - if (!this->function_name) { \ - ERR("%s: Could not find %s in GDI32 library\n", __FUNCTION__, \ - #function_name); \ - result = false; \ - } - -#define LOAD_WGL_INNER_POINTER(return_type, function_name, signature) \ - this->function_name = reinterpret_cast< \ - return_type (GL_APIENTRY*) signature>( \ - glLib->findSymbol("wgl" #function_name)); \ - if (!this->function_name) { \ - ERR("%s: Could not find %s in GL library\n", __FUNCTION__, \ - "wgl" #function_name); \ - result = false; \ - } - - LIST_WGL_FUNCTIONS(LOAD_WGL_POINTER) - if (systemLib) { - HMODULE gdi32 = GetModuleHandle("gdi32.dll"); - LIST_GDI32_FUNCTIONS(LOAD_WGL_GDI32_POINTER) - } else { - LIST_GDI32_FUNCTIONS(LOAD_WGL_INNER_POINTER) - } - return result; - } - - // Find a function, using wglGetProcAddress() first, and if that doesn't - // work, SharedLibrary::findSymbol(). - // |functionName| is the function name. - // |glLib| is the GL library to probe with findSymbol() is needed. - GlFunctionPointer findFunction(const char* functionName) const { - GlFunctionPointer result = this->wglGetProcAddress(functionName); - if (!result && mLib) { - result = mLib->findSymbol(functionName); - } - return result; - } -}; - -// Used internally by createDummyWindow(). -LRESULT CALLBACK dummyWndProc(HWND hwnd, - UINT uMsg, - WPARAM wParam, - LPARAM lParam) { - return DefWindowProc(hwnd, uMsg, wParam, lParam); -} - -// Create a new dummy window, and return its handle. -// Note that the window is 1x1 pixels and not visible, but -// it can be used to create a device context and associated -// OpenGL rendering context. -HWND createDummyWindow() { - WNDCLASSEX wcx; - wcx.cbSize = sizeof(wcx); // size of structure - wcx.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW; // redraw if size changes - wcx.lpfnWndProc = dummyWndProc; // points to window procedure - wcx.cbClsExtra = 0; // no extra class memory - wcx.cbWndExtra = sizeof(void*); // save extra window memory, to store VasWindow instance - wcx.hInstance = NULL; // handle to instance - wcx.hIcon = NULL; // predefined app. icon - wcx.hCursor = NULL; - wcx.hbrBackground = NULL; // no background brush - wcx.lpszMenuName = NULL; // name of menu resource - wcx.lpszClassName = "DummyWin"; // name of window class - wcx.hIconSm = (HICON) NULL; // small class icon - - RegisterClassEx(&wcx); - - HWND hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, - "DummyWin", - "Dummy", - WS_POPUP, - 0, - 0, - 1, - 1, - NULL, - NULL, - 0,0); - return hwnd; -} - -// List of functions defined by the WGL_ARB_extensions_string extension. -#define LIST_WGL_ARB_extensions_string_FUNCTIONS(X) \ - X(const char*, wglGetExtensionsStringARB, (HDC hdc)) - -// List of functions defined by the WGL_ARB_pixel_format extension. -#define LIST_WGL_ARB_pixel_format_FUNCTIONS(X) \ - X(BOOL, wglGetPixelFormatAttribivARB, (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, int* piValues)) \ - X(BOOL, wglGetPixelFormatAttribfvARB, (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int* piAttributes, FLOAT* pfValues)) \ - X(BOOL, wglChoosePixelFormatARB, (HDC, const int* piAttribList, const FLOAT* pfAttribList, UINT nMaxFormats, int* piFormats, UINT* nNumFormats)) \ - -// List of functions defined by the WGL_ARB_make_current_read extension. -#define LIST_WGL_ARB_make_current_read_FUNCTIONS(X) \ - X(BOOL, wglMakeContextCurrentARB, (HDC hDrawDC, HDC hReadDC, HGLRC hglrc)) \ - X(HDC, wglGetCurrentReadDCARB, (void)) \ - -// List of functions defined by the WGL_ARB_pbuffer extension. -#define LIST_WGL_ARB_pbuffer_FUNCTIONS(X) \ - X(HPBUFFERARB, wglCreatePbufferARB, (HDC hdc, int iPixelFormat, int iWidth, int iHeight, const int* piAttribList)) \ - X(HDC, wglGetPbufferDCARB, (HPBUFFERARB hPbuffer)) \ - X(int, wglReleasePbufferDCARB, (HPBUFFERARB hPbuffer, HDC hdc)) \ - X(BOOL, wglDestroyPbufferARB, (HPBUFFERARB hPbuffer)) \ - -#define LIST_WGL_EXTENSIONS_FUNCTIONS(X) \ - LIST_WGL_ARB_pixel_format_FUNCTIONS(X) \ - LIST_WGL_ARB_make_current_read_FUNCTIONS(X) \ - LIST_WGL_ARB_pbuffer_FUNCTIONS(X) \ - -// A structure used to hold pointers to WGL extension functions. -struct WglExtensionsDispatch : public WglBaseDispatch { -public: - LIST_WGL_EXTENSIONS_FUNCTIONS(DECLARE_WGL_POINTER) - int dummy; - - // Default constructor - explicit WglExtensionsDispatch(const WglBaseDispatch& baseDispatch) : - WglBaseDispatch(baseDispatch), - LIST_WGL_EXTENSIONS_FUNCTIONS(INIT_WGL_POINTER) - dummy(0) {} - - // Initialization - bool init(HDC hdc) { - // Base initialization happens first. - bool result = WglBaseDispatch::init(mLib, mIsSystemLib); - if (!result) { - return false; - } - - // Find the list of extensions. - typedef const char* (GL_APIENTRY* GetExtensionsStringFunc)(HDC hdc); - - GetExtensionsStringFunc wglGetExtensionsStringARB = - reinterpret_cast( - this->findFunction("wglGetExtensionsStringARB")); - if (!wglGetExtensionsStringARB) { - ERR("%s: Could not find wglGetExtensionsStringARB!\n", - __FUNCTION__); - return false; - } - const char* extensionList = wglGetExtensionsStringARB(hdc); - if (!extensionList) { - extensionList = ""; - } - - // Load each extension individually. -#define LOAD_WGL_EXTENSION_FUNCTION(return_type, function_name, signature) \ - this->function_name = reinterpret_cast< \ - return_type (GL_APIENTRY*) signature>( \ - this->findFunction(#function_name)); \ - if (!this->function_name) { \ - ERR("ERROR: %s: Missing extension function %s\n", __FUNCTION__, \ - #function_name); \ - result = false; \ - } - -#define LOAD_WGL_EXTENSION(extension) \ - if (!supportsExtension(#extension, extensionList)) { \ - ERR("WARNING: %s: Missing WGL extension %s\n", __FUNCTION__, #extension); \ - } else { \ - LIST_##extension##_FUNCTIONS(LOAD_WGL_EXTENSION_FUNCTION) \ - } - - LOAD_WGL_EXTENSION(WGL_ARB_pixel_format) - LOAD_WGL_EXTENSION(WGL_ARB_make_current_read) - LOAD_WGL_EXTENSION(WGL_ARB_pbuffer) - - // Done. - return result; - } - -private: - WglExtensionsDispatch(); // no default constructor. -}; - -const WglExtensionsDispatch* initExtensionsDispatch( - const WglBaseDispatch* dispatch) { - HWND hwnd = createDummyWindow(); - HDC hdc = GetDC(hwnd); - if (!hwnd || !hdc){ - fprintf(stderr,"error while getting DC\n"); - return NULL; - } - PIXELFORMATDESCRIPTOR pfd = { - sizeof(PIXELFORMATDESCRIPTOR), // size of this pfd - 1, // version number - PFD_DRAW_TO_WINDOW | // support window - PFD_SUPPORT_OPENGL | // support OpenGL - PFD_DOUBLEBUFFER, // double buffered - PFD_TYPE_RGBA, // RGBA type - 32, // 32-bit color depth - 0, 0, 0, 0, 0, 0, // color bits ignored - 0, // no alpha buffer - 0, // shift bit ignored - 0, // no accumulation buffer - 0, 0, 0, 0, // accum bits ignored - 24, // 24-bit z-buffer - 0, // no stencil buffer - 0, // no auxiliary buffer - PFD_MAIN_PLANE, // main layer - 0, // reserved - 0, 0, 0 // layer masks ignored - }; - - int iPixelFormat = dispatch->ChoosePixelFormat(hdc, &pfd); - if (iPixelFormat <= 0) { - int err = GetLastError(); - fprintf(stderr,"error while choosing pixel format 0x%x\n", err); - return NULL; - } - if (!dispatch->SetPixelFormat(hdc, iPixelFormat, &pfd)) { - int err = GetLastError(); - fprintf(stderr,"error while setting pixel format 0x%x\n", err); - return NULL; - } - - int err; - HGLRC ctx = dispatch->wglCreateContext(hdc); - if (!ctx) { - err = GetLastError(); - fprintf(stderr,"error while creating dummy context %d\n", err); - } - if (!dispatch->wglMakeCurrent(hdc, ctx)) { - err = GetLastError(); - fprintf(stderr,"error while making dummy context current %d\n", err); - } - - WglExtensionsDispatch* result = new WglExtensionsDispatch(*dispatch); - result->init(hdc); - - dispatch->wglMakeCurrent(hdc, NULL); - dispatch->wglDeleteContext(ctx); - DeleteDC(hdc); - DestroyWindow(hwnd); - - return result; -} - -class WinPixelFormat : public EglOS::PixelFormat { -public: - WinPixelFormat(const PIXELFORMATDESCRIPTOR* desc, int configId) { - mDesc = *desc; - mConfigId = configId; - } - - EglOS::PixelFormat* clone() { - return new WinPixelFormat(&mDesc, mConfigId); - } - - const PIXELFORMATDESCRIPTOR* desc() const { return &mDesc; } - const int configId() const { return mConfigId; } - - static const WinPixelFormat* from(const EglOS::PixelFormat* f) { - return static_cast(f); - } - -private: - WinPixelFormat(); - WinPixelFormat(const WinPixelFormat& other); - - PIXELFORMATDESCRIPTOR mDesc; - int mConfigId; -}; - -class WinSurface : public EglOS::Surface { -public: - explicit WinSurface(HWND wnd) : - Surface(WINDOW), - m_hwnd(wnd), - m_pb(NULL), - m_hdc(GetDC(wnd)) {} - - explicit WinSurface(HPBUFFERARB pb, const WglExtensionsDispatch* dispatch) : - Surface(PBUFFER), - m_hwnd(NULL), - m_pb(pb), - m_hdc(NULL) { - if (dispatch->wglGetPbufferDCARB) { - m_hdc = dispatch->wglGetPbufferDCARB(pb); - } - } - - ~WinSurface() { - if (type() == WINDOW) { - ReleaseDC(m_hwnd, m_hdc); - } - } - - HWND getHwnd() const { return m_hwnd; } - HDC getDC() const { return m_hdc; } - HPBUFFERARB getPbuffer() const { return m_pb; } - - static WinSurface* from(EglOS::Surface* s) { - return static_cast(s); - } - -private: - HWND m_hwnd; - HPBUFFERARB m_pb; - HDC m_hdc; -}; - -class WinContext : public EglOS::Context { -public: - explicit WinContext(HGLRC ctx) : mCtx(ctx) {} - - HGLRC context() const { return mCtx; } - - static HGLRC from(const EglOS::Context* c) { - return static_cast(c)->context(); - } - -private: - HGLRC mCtx; -}; - -struct DisplayInfo { - DisplayInfo() : dc(NULL), hwnd(NULL), isPixelFormatSet(false) {} - - DisplayInfo(HDC hdc, HWND wnd) : - dc(hdc), hwnd(wnd), isPixelFormatSet(false) {} - - void release() { - if (hwnd) { - DestroyWindow(hwnd); - } - DeleteDC(dc); - } - - HDC dc; - HWND hwnd; - bool isPixelFormatSet; -}; - -struct TlsData { - std::map m_map; -}; - -DWORD s_tlsIndex = 0; - -TlsData* getTLS() { - TlsData *tls = (TlsData *)TlsGetValue(s_tlsIndex); - if (!tls) { - tls = new TlsData(); - TlsSetValue(s_tlsIndex, tls); - } - return tls; -} - -} // namespace - -class WinDisplay { -public: - enum { DEFAULT_DISPLAY = 0 }; - - WinDisplay() {}; - - DisplayInfo& getInfo(int configurationIndex) const { - return getTLS()->m_map[configurationIndex]; - } - - HDC getDC(int configId) const { - return getInfo(configId).dc; - } - - void setInfo(int configurationIndex, const DisplayInfo& info); - - bool isPixelFormatSet(int cfgId) const { - return getInfo(cfgId).isPixelFormatSet; - } - - void pixelFormatWasSet(int cfgId) { - getTLS()->m_map[cfgId].isPixelFormatSet = true; - } - - bool infoExists(int configurationIndex); - - void releaseAll(); -}; - -void WinDisplay::releaseAll(){ - TlsData * tls = getTLS(); - - for(std::map::iterator it = tls->m_map.begin(); - it != tls->m_map.end(); - it++) { - (*it).second.release(); - } -} - -bool WinDisplay::infoExists(int configurationIndex) { - return getTLS()->m_map.find(configurationIndex) != getTLS()->m_map.end(); -} - -void WinDisplay::setInfo(int configurationIndex, const DisplayInfo& info) { - getTLS()->m_map[configurationIndex] = info; -} - -namespace { - -static HDC getDummyDC(WinDisplay* display, int cfgId) { - HDC dpy = NULL; - if (!display->infoExists(cfgId)) { - HWND hwnd = createDummyWindow(); - dpy = GetDC(hwnd); - display->setInfo(cfgId, DisplayInfo(dpy, hwnd)); - } else { - dpy = display->getDC(cfgId); - } - return dpy; -} - - -bool initPixelFormat(HDC dc, const WglExtensionsDispatch* dispatch) { - if (dispatch->wglChoosePixelFormatARB) { - unsigned int numpf; - int iPixelFormat; - int i0 = 0; - float f0 = 0.0f; - return dispatch->wglChoosePixelFormatARB( - dc, &i0, &f0, 1, &iPixelFormat, &numpf); - } else { - PIXELFORMATDESCRIPTOR pfd; - return dispatch->ChoosePixelFormat(dc, &pfd); - } -} - -void pixelFormatToConfig(WinDisplay* display, - const WglExtensionsDispatch* dispatch, - int renderableType, - const PIXELFORMATDESCRIPTOR* frmt, - int index, - EglOS::AddConfigCallback* addConfigFunc, - void* addConfigOpaque) { - EglOS::ConfigInfo info; - memset(&info, 0, sizeof(info)); - - HDC dpy = getDummyDC(display, WinDisplay::DEFAULT_DISPLAY); - - if (frmt->iPixelType != PFD_TYPE_RGBA) { - D("%s: Not an RGBA type!\n", __FUNCTION__); - return; // other formats are not supported yet - } - if (!(frmt->dwFlags & PFD_SUPPORT_OPENGL)) { - D("%s: No OpenGL support\n", __FUNCTION__); - return; - } - // NOTE: Software renderers don't always support double-buffering. - if (dispatch->mIsSystemLib && !(frmt->dwFlags & PFD_DOUBLEBUFFER)) { - D("%s: No double-buffer support\n", __FUNCTION__); - return; - } - if ((frmt->dwFlags & (PFD_GENERIC_FORMAT | PFD_NEED_PALETTE)) != 0) { - //discard generic pixel formats as well as pallete pixel formats - D("%s: Generic format or needs palette\n", __FUNCTION__); - return; - } - - if (!dispatch->wglGetPixelFormatAttribivARB) { - D("%s: Missing wglGetPixelFormatAttribivARB\n", __FUNCTION__); - return; - } - - GLint window = 0, pbuffer = 0; - if (dispatch->mIsSystemLib) { - int windowAttrib = WGL_DRAW_TO_WINDOW_ARB; - EXIT_IF_FALSE(dispatch->wglGetPixelFormatAttribivARB( - dpy, index, 0, 1, &windowAttrib, &window)); - } - int pbufferAttrib = WGL_DRAW_TO_PBUFFER_ARB; - EXIT_IF_FALSE(dispatch->wglGetPixelFormatAttribivARB( - dpy, index, 0, 1, &pbufferAttrib, &pbuffer)); - - info.surface_type = 0; - if (window) { - info.surface_type |= EGL_WINDOW_BIT; - } - if (pbuffer) { - info.surface_type |= EGL_PBUFFER_BIT; - } - if (!info.surface_type) { - D("%s: Missing surface type\n", __FUNCTION__); - return; - } - - //default values - info.native_visual_id = 0; - info.native_visual_type = EGL_NONE; - info.caveat = EGL_NONE; - info.native_renderable = EGL_FALSE; - info.renderable_type = renderableType; - info.max_pbuffer_width = PBUFFER_MAX_WIDTH; - info.max_pbuffer_height = PBUFFER_MAX_HEIGHT; - info.max_pbuffer_size = PBUFFER_MAX_PIXELS; - info.samples_per_pixel = 0; - info.frame_buffer_level = 0; - - GLint transparent; - int transparentAttrib = WGL_TRANSPARENT_ARB; - EXIT_IF_FALSE(dispatch->wglGetPixelFormatAttribivARB( - dpy, index, 0, 1, &transparentAttrib, &transparent)); - if (transparent) { - info.transparent_type = EGL_TRANSPARENT_RGB; - int transparentRedAttrib = WGL_TRANSPARENT_RED_VALUE_ARB; - EXIT_IF_FALSE(dispatch->wglGetPixelFormatAttribivARB( - dpy, index, 0, 1, &transparentRedAttrib, &info.trans_red_val)); - int transparentGreenAttrib = WGL_TRANSPARENT_GREEN_VALUE_ARB; - EXIT_IF_FALSE(dispatch->wglGetPixelFormatAttribivARB( - dpy, index, 0, 1, &transparentGreenAttrib, - &info.trans_green_val)); - int transparentBlueAttrib = WGL_TRANSPARENT_RED_VALUE_ARB; - EXIT_IF_FALSE(dispatch->wglGetPixelFormatAttribivARB( - dpy,index, 0, 1, &transparentBlueAttrib, &info.trans_blue_val)); - } else { - info.transparent_type = EGL_NONE; - } - - info.red_size = frmt->cRedBits; - info.green_size = frmt->cGreenBits; - info.blue_size = frmt->cBlueBits; - info.alpha_size = frmt->cAlphaBits; - info.depth_size = frmt->cDepthBits; - info.stencil_size = frmt->cStencilBits; - - info.config_id = (EGLint) index; - info.frmt = new WinPixelFormat(frmt, index); - - (*addConfigFunc)(addConfigOpaque, &info); -} - -class WglDisplay : public EglOS::Display { -public: - // TODO(digit): Remove WinDisplay entirely. - explicit WglDisplay(WinDisplay* dpy, const WglExtensionsDispatch* dispatch) : - mDpy(dpy), mDispatch(dispatch) {} - - virtual ~WglDisplay() { - delete mDpy; - } - - virtual bool release() { - mDpy->releaseAll(); - return true; - } - - virtual void queryConfigs(int renderableType, - EglOS::AddConfigCallback addConfigFunc, - void* addConfigOpaque) { - HDC dpy = getDummyDC(mDpy, WinDisplay::DEFAULT_DISPLAY); - - // wglChoosePixelFormat() needs to be called at least once, - // i.e. it seems that the driver needs to initialize itself. - // Do it here during initialization. - initPixelFormat(dpy, mDispatch); - - // Quering number of formats - PIXELFORMATDESCRIPTOR pfd; - int maxFormat = mDispatch->DescribePixelFormat( - dpy, 1, sizeof(PIXELFORMATDESCRIPTOR), &pfd); - - // Inserting rest of formats. Try to map each one to an EGL Config. - for (int configId = 1; configId <= maxFormat; configId++) { - mDispatch->DescribePixelFormat( - dpy, configId, sizeof(PIXELFORMATDESCRIPTOR), &pfd); - pixelFormatToConfig( - mDpy, - mDispatch, - renderableType, - &pfd, - configId, - addConfigFunc, - addConfigOpaque); - } - } - - virtual bool isValidNativeWin(EglOS::Surface* win) { - if (!win) { - return false; - } else { - return isValidNativeWin(WinSurface::from(win)->getHwnd()); - } - } - - virtual bool isValidNativeWin(EGLNativeWindowType win) { - return IsWindow(win); - } - - virtual bool checkWindowPixelFormatMatch( - EGLNativeWindowType win, - const EglOS::PixelFormat* pixelFormat, - unsigned int* width, - unsigned int* height) { - RECT r; - if (!GetClientRect(win, &r)) { - return false; - } - *width = r.right - r.left; - *height = r.bottom - r.top; - HDC dc = GetDC(win); - const WinPixelFormat* format = WinPixelFormat::from(pixelFormat); - bool ret = mDispatch->SetPixelFormat(dc, - format->configId(), - format->desc()); - DeleteDC(dc); - return ret; - } - - virtual EglOS::Context* createContext( - const EglOS::PixelFormat* pixelFormat, - EglOS::Context* sharedContext) { - const WinPixelFormat* format = WinPixelFormat::from(pixelFormat); - HDC dpy = getDummyDC(mDpy, format->configId()); - - if (!mDpy->isPixelFormatSet(format->configId())) { - if (!mDispatch->SetPixelFormat(dpy, - format->configId(), - format->desc())) { - return NULL; - } - mDpy->pixelFormatWasSet(format->configId()); - } - - HGLRC ctx = mDispatch->wglCreateContext(dpy); - - if (ctx && sharedContext) { - if (!mDispatch->wglShareLists(WinContext::from(sharedContext), ctx)) { - mDispatch->wglDeleteContext(ctx); - return NULL; - } - } - return new WinContext(ctx); - } - - virtual bool destroyContext(EglOS::Context* context) { - if (!context) { - return false; - } - if (!mDispatch->wglDeleteContext(WinContext::from(context))) { - GetLastError(); - return false; - } - delete context; - return true; - } - - virtual EglOS::Surface* createPbufferSurface( - const EglOS::PixelFormat* pixelFormat, - const EglOS::PbufferInfo* info) { - int configId = WinPixelFormat::from(pixelFormat)->configId(); - HDC dpy = getDummyDC(mDpy, configId); - - int wglTexFormat = WGL_NO_TEXTURE_ARB; - int wglTexTarget = - (info->target == EGL_TEXTURE_2D) ? WGL_TEXTURE_2D_ARB - : WGL_NO_TEXTURE_ARB; - switch (info->format) { - case EGL_TEXTURE_RGB: - wglTexFormat = WGL_TEXTURE_RGB_ARB; - break; - case EGL_TEXTURE_RGBA: - wglTexFormat = WGL_TEXTURE_RGBA_ARB; - break; - } - - const int pbAttribs[] = { - WGL_TEXTURE_TARGET_ARB, wglTexTarget, - WGL_TEXTURE_FORMAT_ARB, wglTexFormat, - 0 - }; - - const WglExtensionsDispatch* dispatch = mDispatch; - if (!dispatch->wglCreatePbufferARB) { - return NULL; - } - HPBUFFERARB pb = dispatch->wglCreatePbufferARB( - dpy, configId, info->width, info->height, pbAttribs); - if (!pb) { - GetLastError(); - return NULL; - } - return new WinSurface(pb, dispatch); - } - - virtual bool releasePbuffer(EglOS::Surface* pb) { - if (!pb) { - return false; - } - const WglExtensionsDispatch* dispatch = mDispatch; - if (!dispatch->wglReleasePbufferDCARB || - !dispatch->wglDestroyPbufferARB) { - return false; - } - WinSurface* winpb = WinSurface::from(pb); - if (!dispatch->wglReleasePbufferDCARB( - winpb->getPbuffer(), winpb->getDC()) || - !dispatch->wglDestroyPbufferARB(winpb->getPbuffer())) { - GetLastError(); - return false; - } - return true; - } - - virtual bool makeCurrent(EglOS::Surface* read, - EglOS::Surface* draw, - EglOS::Context* context) { - HDC hdcRead = read ? WinSurface::from(read)->getDC() : NULL; - HDC hdcDraw = draw ? WinSurface::from(draw)->getDC() : NULL; - HGLRC hdcContext = context ? WinContext::from(context) : 0; - - const WglExtensionsDispatch* dispatch = mDispatch; - - if (hdcRead == hdcDraw){ - // The following loop is a work-around for a problem when - // occasionally the rendering is incorrect after hibernating and - // waking up windows. - // wglMakeCurrent will sometimes fail for a short period of time - // in such situation. - // - // For a stricter test, in addition to checking the return value, we - // might also want to check its error code. On my computer in such - // situation GetLastError() returns 0 (which is documented as - // success code). This is not a documented behaviour and is - // unreliable. But in case one needs to use it, here is the code: - // while (!(isSuccess = dispatch->wglMakeCurrent(hdcDraw, hdcContext)) && GetLastError()==0) Sleep(1000); - - while (!dispatch->wglMakeCurrent(hdcDraw, hdcContext)) { - Sleep(100); - } - return true; - } else if (!dispatch->wglMakeContextCurrentARB) { - return false; - } - bool retVal = dispatch->wglMakeContextCurrentARB( - hdcDraw, hdcRead, hdcContext); - return retVal; - } - - virtual void swapBuffers(EglOS::Surface* srfc) { - if (srfc && !mDispatch->SwapBuffers(WinSurface::from(srfc)->getDC())) { - GetLastError(); - } - } - -private: - WinDisplay* mDpy; - const WglExtensionsDispatch* mDispatch; -}; - -class WglLibrary : public GlLibrary { -public: - WglLibrary(const WglBaseDispatch* dispatch) : mDispatch(dispatch) {} - - virtual GlFunctionPointer findSymbol(const char* name) { - return mDispatch->findFunction(name); - } - -private: - const WglBaseDispatch* mDispatch; -}; - -class WinEngine : public EglOS::Engine { -public: - WinEngine(); - - ~WinEngine() { - delete mDispatch; - delete mLib; - } - - virtual EglOS::Display* getDefaultDisplay() { - WinDisplay* dpy = new WinDisplay(); - - HWND hwnd = createDummyWindow(); - HDC hdc = GetDC(hwnd); - dpy->setInfo(WinDisplay::DEFAULT_DISPLAY, DisplayInfo(hdc, hwnd)); - - return new WglDisplay(dpy, mDispatch); - } - - virtual GlLibrary* getGlLibrary() { - return &mGlLib; - } - - virtual EglOS::Surface* createWindowSurface(EGLNativeWindowType wnd) { - return new WinSurface(wnd); - } - -private: - SharedLibrary* mLib; - const WglExtensionsDispatch* mDispatch; - WglBaseDispatch mBaseDispatch; - WglLibrary mGlLib; -}; - -WinEngine::WinEngine() : - mLib(NULL), - mDispatch(NULL), - mBaseDispatch(), - mGlLib(&mBaseDispatch) { - if (!s_tlsIndex) { - s_tlsIndex = TlsAlloc(); - } - const char* kLibName = "opengl32.dll"; - bool isSystemLib = true; - const char* env = ::getenv("ANDROID_GL_LIB"); - if (env && !strcmp(env, "mesa")) { - kLibName = "mesa_opengl32.dll"; - isSystemLib = false; - } - char error[256]; - D("%s: Trying to load %s\n", __FUNCTION__, kLibName); - mLib = SharedLibrary::open(kLibName, error, sizeof(error)); - if (!mLib) { - ERR("ERROR: %s: Could not open %s: %s\n", __FUNCTION__, - kLibName, error); - exit(1); - } - - D("%s: Library loaded at %p\n", __FUNCTION__, mLib); - mBaseDispatch.init(mLib, isSystemLib); - mDispatch = initExtensionsDispatch(&mBaseDispatch); - D("%s: Dispatch initialized\n", __FUNCTION__); -} - -emugl::LazyInstance sHostEngine = LAZY_INSTANCE_INIT; - -} // namespace - -// static -EglOS::Engine* EglOS::Engine::getHostInstance() { - return sHostEngine.ptr(); -} diff --git a/external/android-emugl/host/libs/Translator/EGL/EglPbufferSurface.cpp b/external/android-emugl/host/libs/Translator/EGL/EglPbufferSurface.cpp deleted file mode 100644 index 8bcb31a..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglPbufferSurface.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "EglPbufferSurface.h" - -bool EglPbufferSurface::setAttrib(EGLint attrib,EGLint val) { - switch(attrib) { - case EGL_WIDTH: - if(val < 0) return false; - m_width = val; - break; - case EGL_HEIGHT: - if(val < 0) return false; - m_height = val; - break; - case EGL_LARGEST_PBUFFER: - m_largest = val; - break; - case EGL_TEXTURE_FORMAT: - if(val != EGL_NO_TEXTURE && val != EGL_TEXTURE_RGB && val != EGL_TEXTURE_RGBA) return false; - m_texFormat = val; - break; - case EGL_TEXTURE_TARGET: - if(val != EGL_NO_TEXTURE && val != EGL_TEXTURE_2D) return false; - m_texTarget = val; - break; - case EGL_MIPMAP_TEXTURE: - m_texMipmap = val; - break; - default: - return false; - } - return true; -} - -bool EglPbufferSurface::getAttrib(EGLint attrib,EGLint* val) { - switch(attrib) { - case EGL_CONFIG_ID: - *val = m_config->id(); - break; - case EGL_WIDTH: - *val = m_width; - break; - case EGL_HEIGHT: - *val = m_height; - break; - case EGL_LARGEST_PBUFFER: - *val = m_largest; - break; - case EGL_TEXTURE_FORMAT: - *val = m_texFormat; - break; - case EGL_TEXTURE_TARGET: - *val = m_texTarget; - break; - case EGL_MIPMAP_TEXTURE: - *val = m_texMipmap; - break; - default: - return false; - } - return true; -} diff --git a/external/android-emugl/host/libs/Translator/EGL/EglPbufferSurface.h b/external/android-emugl/host/libs/Translator/EGL/EglPbufferSurface.h deleted file mode 100644 index 12eae63..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglPbufferSurface.h +++ /dev/null @@ -1,49 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef EGL_PBUFFER_SURFACE_H -#define EGL_PBUFFER_SURFACE_H - -#include "EglSurface.h" - -class EglDisplay; - -class EglPbufferSurface:public EglSurface { -public: - EglPbufferSurface(EglDisplay *dpy, EglConfig* config): - EglSurface(dpy,PBUFFER,config,0,0), - m_texFormat(EGL_NO_TEXTURE), - m_texTarget(EGL_NO_TEXTURE), - m_texMipmap(EGL_FALSE), - m_largest(EGL_FALSE){}; - - void setNativePbuffer(EglOS::Surface* srfc) { m_native = srfc; } - bool setAttrib(EGLint attrib,EGLint val); - bool getAttrib(EGLint attrib,EGLint* val); - void getDim(EGLint* width,EGLint* height,EGLint* largest){ - *width = m_width; - *height = m_height; - *largest = m_largest; - }; - - void getTexInfo(EGLint* format,EGLint* target){ *format = m_texFormat; *target = m_texTarget;} - -private: - EGLint m_texFormat; - EGLint m_texTarget; - EGLint m_texMipmap; - EGLint m_largest; -}; -#endif diff --git a/external/android-emugl/host/libs/Translator/EGL/EglSurface.cpp b/external/android-emugl/host/libs/Translator/EGL/EglSurface.cpp deleted file mode 100644 index 26a6062..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglSurface.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "EglSurface.h" - -#include "EglDisplay.h" -#include "EglOsApi.h" - -unsigned int EglSurface::s_nextSurfaceHndl = 0; - -EglSurface::~EglSurface(){ - - if(m_type == EglSurface::PBUFFER) { - m_dpy->nativeType()->releasePbuffer(m_native); - } - - delete m_native; -} - -bool EglSurface::setAttrib(EGLint attrib,EGLint val) { - switch(attrib) { - case EGL_WIDTH: - case EGL_HEIGHT: - case EGL_LARGEST_PBUFFER: - case EGL_TEXTURE_FORMAT: - case EGL_TEXTURE_TARGET: - case EGL_MIPMAP_TEXTURE: - break; - default: - return false; - } - return true; -} diff --git a/external/android-emugl/host/libs/Translator/EGL/EglSurface.h b/external/android-emugl/host/libs/Translator/EGL/EglSurface.h deleted file mode 100644 index a3f675a..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglSurface.h +++ /dev/null @@ -1,89 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef EGL_SURFACE_H -#define EGL_SURFACE_H - -#include - -#include "EglConfig.h" -#include "EglOsApi.h" - -#include "emugl/common/smart_ptr.h" - -#include - -class EglSurface; -typedef emugl::SmartPtr SurfacePtr; - -class EglDisplay; - -class EglSurface { -public: - typedef enum { - WINDOW = 0, - PBUFFER = 1, - PIXMAP = 3 - } ESurfaceType; - - ESurfaceType type() const { return m_type; } - - EglOS::Surface* native() const { return m_native; } - - virtual bool setAttrib(EGLint attrib, EGLint val); - virtual bool getAttrib(EGLint attrib, EGLint* val) = 0; - - void setDim(int width, int height) { - m_width = width; - m_height = height; - } - - EglConfig* getConfig() const { return m_config; } - - unsigned int getHndl() const { return m_hndl; } - - virtual ~EglSurface(); - -private: - static unsigned int s_nextSurfaceHndl; - - ESurfaceType m_type; - unsigned int m_hndl; - -protected: - EglSurface(EglDisplay *dpy, - ESurfaceType type, - EglConfig* config, - EGLint width, - EGLint height) : - m_type(type), - m_config(config), - m_width(width), - m_height(height), - m_native(NULL), - m_dpy(dpy) - { - m_hndl = ++s_nextSurfaceHndl; - } - -protected: - EglConfig* m_config; - EGLint m_width; - EGLint m_height; - EglOS::Surface* m_native; - EglDisplay *m_dpy; -}; - -#endif // EGL_SURFACE_H diff --git a/external/android-emugl/host/libs/Translator/EGL/EglThreadInfo.cpp b/external/android-emugl/host/libs/Translator/EGL/EglThreadInfo.cpp deleted file mode 100644 index 6481774..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglThreadInfo.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "EglThreadInfo.h" -#include "EglOsApi.h" - -#include "emugl/common/lazy_instance.h" -#include "emugl/common/thread_store.h" - -namespace { - -class EglThreadInfoStore : public emugl::ThreadStore { -public: - EglThreadInfoStore() : emugl::ThreadStore(&destructor) {} -private: - static void destructor(void* value) { - delete static_cast(value); - } -}; - -} // namespace - -EglThreadInfo::EglThreadInfo() : - m_err(EGL_SUCCESS), m_api(EGL_OPENGL_ES_API) {} - -static emugl::LazyInstance s_tls = LAZY_INSTANCE_INIT; - -EglThreadInfo* EglThreadInfo::get(void) -{ - EglThreadInfo *ti = static_cast(s_tls->get()); - if (!ti) { - ti = new EglThreadInfo(); - s_tls->set(ti); - } - return ti; -} - diff --git a/external/android-emugl/host/libs/Translator/EGL/EglThreadInfo.h b/external/android-emugl/host/libs/Translator/EGL/EglThreadInfo.h deleted file mode 100644 index f5eeb6a..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglThreadInfo.h +++ /dev/null @@ -1,49 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef EGL_THREAD_INFO_H -#define EGL_THREAD_INFO_H - -#include - -// Model thread-specific EGL state. -class EglThreadInfo { -public: - // Return the thread-specific instance of EglThreadInfo to the caller. - // The instance will be created on first call, and destroyed automatically - // when the thread exits. - static EglThreadInfo* get(void) __attribute__((const)); - - // Set the error code |err|. Default value is EGL_NO_ERROR. - void setError(EGLint err) { m_err = err; } - - // Get the error code. Note that this doesn't change the value, - // unlike eglGetError() which resets it to EGL_NO_ERROR. - EGLint getError() const { return m_err; } - - // Change the |api| value. Default is EGL_OPENGL_ES - void setApi(EGLenum api) { m_api = api; } - - // Get the current API value. - EGLenum getApi() const { return m_api; } - -private: - EglThreadInfo(); - - EGLint m_err; - EGLenum m_api; -}; - -#endif diff --git a/external/android-emugl/host/libs/Translator/EGL/EglValidate.cpp b/external/android-emugl/host/libs/Translator/EGL/EglValidate.cpp deleted file mode 100644 index 1dde3c5..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglValidate.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "EglValidate.h" -#include - -// static -bool EglValidate::confAttrib(EGLint attrib) { - switch(attrib) { - case EGL_BUFFER_SIZE: - case EGL_RED_SIZE: - case EGL_GREEN_SIZE: - case EGL_BLUE_SIZE: - case EGL_ALPHA_SIZE: - case EGL_BIND_TO_TEXTURE_RGB: - case EGL_BIND_TO_TEXTURE_RGBA: - case EGL_CONFIG_CAVEAT: - case EGL_CONFIG_ID: - case EGL_DEPTH_SIZE: - case EGL_LEVEL: - case EGL_MAX_PBUFFER_WIDTH: - case EGL_MAX_PBUFFER_HEIGHT: - case EGL_MAX_PBUFFER_PIXELS: - case EGL_MAX_SWAP_INTERVAL: - case EGL_MIN_SWAP_INTERVAL: - case EGL_RENDERABLE_TYPE: - case EGL_NATIVE_RENDERABLE: - case EGL_NATIVE_VISUAL_ID: - case EGL_NATIVE_VISUAL_TYPE: - case EGL_SAMPLE_BUFFERS: - case EGL_SAMPLES: - case EGL_STENCIL_SIZE: - case EGL_SURFACE_TYPE: - case EGL_TRANSPARENT_TYPE: - case EGL_TRANSPARENT_RED_VALUE: - case EGL_TRANSPARENT_GREEN_VALUE: - case EGL_TRANSPARENT_BLUE_VALUE: - case EGL_CONFORMANT: - return true; - } - return false; -} - -// static -bool EglValidate::noAttribs(const EGLint* attrib) { - return !attrib || attrib[0] == EGL_NONE ; -} - -// static -bool EglValidate::pbufferAttribs(EGLint width, - EGLint height, - bool isTexFormatNoTex, - bool isTexTargetNoTex) { - if(!isTexFormatNoTex) { - if (!(isPowerOf2(width) && isPowerOf2(height))) { - return false; - } - } - return isTexFormatNoTex == isTexTargetNoTex ; -} - -// static -bool EglValidate::releaseContext(EGLContext ctx, - EGLSurface s1, - EGLSurface s2) { - return (ctx == EGL_NO_CONTEXT) && - (s1 == EGL_NO_SURFACE) && - (s2 == EGL_NO_SURFACE); -} - -// static -bool EglValidate::badContextMatch(EGLContext ctx, - EGLSurface s1, - EGLSurface s2) { - return (ctx != EGL_NO_CONTEXT) - ? (s1 == EGL_NO_SURFACE || s2 == EGL_NO_SURFACE) - : (s1 != EGL_NO_SURFACE || s2 != EGL_NO_SURFACE); -} - -// static -bool EglValidate::surfaceTarget(EGLint target) { - return target == EGL_READ || target == EGL_DRAW; -} - -// static -bool EglValidate::engine(EGLint engine) { - return engine == EGL_CORE_NATIVE_ENGINE; -} - -// static -bool EglValidate::stringName(EGLint name) { - return name == EGL_VENDOR || - name == EGL_VERSION || - name == EGL_EXTENSIONS; -} - -// static -bool EglValidate::supportedApi(EGLenum api) { - return api == EGL_OPENGL_ES_API; -} diff --git a/external/android-emugl/host/libs/Translator/EGL/EglValidate.h b/external/android-emugl/host/libs/Translator/EGL/EglValidate.h deleted file mode 100644 index a503153..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglValidate.h +++ /dev/null @@ -1,75 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef EGL_VALIDATE_H -#define EGL_VALIDATE_H - -#include - -class EglValidate { -public: - // Return true iff |attrib| is a valid EGLConfig attribute name. - static bool confAttrib(EGLint attrib); - - // Return true iff |attrib| is NULL, or |attrib[0]| is EGL_NONE, which - // correspond to empty config attribute lists. - static bool noAttribs(const EGLint* attrib); - - // Used to check that the config attributes used to create a new pbuffer - // are correct. |width| and |height| are the PBuffer's dimensions in - // pixels. |texFormatIsNoText| is true iff the PBuffer's texture format - // if EGL_NO_TEXTURE. |texTargetIsNoTex| is true iff the PBuffer's target - // is EGL_NO_TEXTURE. - static bool pbufferAttribs(EGLint width, - EGLint height, - bool texFormatIsNoTex, - bool texTargetIsNoTex); - - // Return true if |ctx| is EGL_NO_CONTEXT, and both |draw| and |read| - // are EGL_NO_SURFACE. This corresponds to an eglMakeCurrent operation - // used to release the current context and draw/read surfaces at the - // same time. - static bool releaseContext(EGLContext ctx, - EGLSurface draw, - EGLSurface read); - - // Return true if the values of |ctx|, |draw| and |read| do _not_ match - // the following rules: - // - // - If |ctx| is EGL_NO_CONTEXT, then |draw| and |read| must be - // EGL_NO_SURFACE. - // - // - If |ctx| is not EGL_NO_CONTEXT, then |draw| and |read| must not - // be EGL_NO_SURFACE. - // - static bool badContextMatch(EGLContext ctx, - EGLSurface draw, - EGLSurface read); - - // Returns true iff |target| is either EGL_DRAW or EGL_READ. - static bool surfaceTarget(EGLint target); - - // Returns true iff |engine| is EGL_CORE_NATIVE_RENDERER - static bool engine(EGLint engine); - - // Returns true iff |name| is the attribute name of a string, e.g. - // EGL_VENDOR, EGL_VERSION or EGL_EXTENSIONS. - static bool stringName(EGLint name); - - // Returns true iff |api| is the value of a supported API, e.g. - // EGL_OPENGL_ES_API. - static bool supportedApi(EGLenum api); -}; -#endif diff --git a/external/android-emugl/host/libs/Translator/EGL/EglWindowSurface.cpp b/external/android-emugl/host/libs/Translator/EGL/EglWindowSurface.cpp deleted file mode 100644 index d30afb9..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglWindowSurface.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "EglWindowSurface.h" -#include "EglGlobalInfo.h" -#include "EglOsApi.h" - -#include "emugl/common/lazy_instance.h" - -// this static member is accessed from a function registered in onexit() -// for the emulator cleanup. As all static C++ objects are also being freed -// from a system handler registered in onexit(), we can't have a class object -// by value here - it would be prone to unstable deinitialization order issue; -static emugl::LazyInstance> - s_associatedWins = LAZY_INSTANCE_INIT; - -bool EglWindowSurface::alreadyAssociatedWithConfig(EGLNativeWindowType win) { - return s_associatedWins.get().find(win) != s_associatedWins.get().end(); -} - -EglWindowSurface::EglWindowSurface(EglDisplay* dpy, - EGLNativeWindowType win, - EglConfig* config, - unsigned int width, - unsigned int height) : - EglSurface(dpy, WINDOW, config, width, height), - m_win(win) { - s_associatedWins.get().insert(win); - EglOS::Engine* engine = EglGlobalInfo::getInstance()->getOsEngine(); - m_native = engine->createWindowSurface(win); -} - -EglWindowSurface::~EglWindowSurface() { - s_associatedWins.get().erase(m_win); -} - -bool EglWindowSurface::getAttrib(EGLint attrib,EGLint* val) { - switch(attrib) { - case EGL_CONFIG_ID: - *val = m_config->id(); - break; - case EGL_WIDTH: - *val = m_width; - break; - case EGL_HEIGHT: - *val = m_height; - break; - case EGL_LARGEST_PBUFFER: - case EGL_TEXTURE_FORMAT: - case EGL_TEXTURE_TARGET: - case EGL_MIPMAP_TEXTURE: - break; - default: - return false; - } - return true; -} diff --git a/external/android-emugl/host/libs/Translator/EGL/EglWindowSurface.h b/external/android-emugl/host/libs/Translator/EGL/EglWindowSurface.h deleted file mode 100644 index 182a450..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/EglWindowSurface.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef EGL_WINDOW_SURFACE_H -#define EGL_WINDOW_SURFACE_H - -#include -#include -#include "EglSurface.h" -#include "EglConfig.h" - -class EglDisplay; - -class EglWindowSurface: public EglSurface { -public: - EglWindowSurface(EglDisplay* dpy, - EGLNativeWindowType win, - EglConfig* config, - unsigned width, - unsigned int height); - - ~EglWindowSurface(); - - bool getAttrib(EGLint attrib,EGLint* val); - - static bool alreadyAssociatedWithConfig(EGLNativeWindowType win); - -private: - EGLNativeWindowType m_win; -}; - -#endif // EGL_WINDOW_SURFACE_H diff --git a/external/android-emugl/host/libs/Translator/EGL/MacNative.h b/external/android-emugl/host/libs/Translator/EGL/MacNative.h deleted file mode 100644 index c32e182..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/MacNative.h +++ /dev/null @@ -1,53 +0,0 @@ -/* -* Copyright 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#ifndef MAC_NATIVE_H -#define MAC_NATIVE_H - -#include - -typedef enum { // Mac equivalence - MAC_HAS_DOUBLE_BUFFER = 5, // NSOpenGLPFADoubleBuffer - MAC_DRAW_TO_WINDOW = 80, // NSOpenGLPFAWindow - MAC_DRAW_TO_PBUFFER = 90, // NSOpenGLPFAPixelBuffer - MAC_SAMPLES_PER_PIXEL = 56, // NSOpenGLPFASamples - MAC_COLOR_SIZE = 8, // NSOpenGLPFAColorSize - MAC_ALPHA_SIZE = 11, // NSOpenGLPFAAlphaSize - MAC_DEPTH_SIZE = 12, // NSOpenGLPFADepthSize - MAC_STENCIL_SIZE = 13 // NSOpenGLPFAStencilSize - } MacPixelFormatAttribs; - - -extern "C"{ - -int getNumPixelFormats(); -void* getPixelFormat(int i); -int getPixelFormatDefinitionAlpha(int i); -void getPixelFormatAttrib(void* pixelFormat,int attrib,int* val); -void* nsCreateContext(void* format,void* share); -void nsWindowMakeCurrent(void* context,void* nativeWin); -void nsPBufferMakeCurrent(void* context,void* nativePBuffer,int level); -void nsSwapBuffers(); -void nsSwapInterval(int *interval); -void nsDestroyContext(void* context); -void* nsCreatePBuffer(GLenum target,GLenum format,int maxMip,int width,int height); -void nsDestroyPBuffer(void* pbuffer); -bool nsGetWinDims(void* win,unsigned int* width,unsigned int* height); -bool nsCheckColor(void* win,int colorSize); - -} - -#endif diff --git a/external/android-emugl/host/libs/Translator/EGL/MacNative.m b/external/android-emugl/host/libs/Translator/EGL/MacNative.m deleted file mode 100644 index a2cea93..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/MacNative.m +++ /dev/null @@ -1,207 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include -#include -#include -#include "MacPixelFormatsAttribs.h" - -// -// EmuGLContext inherit from NSOpenGLContext -// and adds binding state for the context to know -// if it was last bounded to a pbuffer or a window. -// This is because after the context was bounded to -// a Pbuffer, before we bind it to a window we must -// release it form the pbuffer by calling the -// clearDrawable method. We do not want to call clearDrawable -// more than really needed since when it is called at a time -// that a window is bounded to the context it will clear the -// window content causing flickering effect. -// Thererfore we call clearDrawable only when we bind the context -// to a window and it was previously bound to a Pbuffer. -// -@interface EmuGLContext : NSOpenGLContext { - @private - int boundToPbuffer; - int boundToWin; -} - -- (id) initWithFormat:(NSOpenGLPixelFormat *)pixelFormat shareContext:(NSOpenGLContext *)share; -- (void) preBind:(int)forPbuffer; -@end - -@implementation EmuGLContext -- (id) initWithFormat:(NSOpenGLPixelFormat *)pixelFormat shareContext:(NSOpenGLContext *)share -{ - self = [super initWithFormat:pixelFormat shareContext:share]; - if (self != nil) { - boundToPbuffer = 0; - boundToWin = 0; - } - return self; -} - -- (void) preBind:(int)forPbuffer -{ - if ((!forPbuffer && boundToPbuffer)) { - [self clearDrawable]; - } - boundToPbuffer = forPbuffer; - boundToWin = !boundToPbuffer; -} -@end - -int getNumPixelFormats(){ - int size; - NSOpenGLPixelFormatAttribute** attrib_lists = getPixelFormatsAttributes(&size); - return size; -} - -void* getPixelFormat(int i){ - int size; - NSOpenGLPixelFormatAttribute** attrib_lists = getPixelFormatsAttributes(&size); - return [[NSOpenGLPixelFormat alloc] initWithAttributes:attrib_lists[i]]; -} - -int getPixelFormatDefinitionAlpha(int i) { - int size; - NSOpenGLPixelFormatAttribute** attrib_lists = getPixelFormatsAttributes(&size); - NSOpenGLPixelFormatAttribute* attribs = attrib_lists[i]; - while (*attribs) { - switch (*attribs) { - // These are the ones that take a value, according to the current - // NSOpenGLPixelFormat docs - case NSOpenGLPFAAuxBuffers: - case NSOpenGLPFAColorSize: - case NSOpenGLPFADepthSize: - case NSOpenGLPFAStencilSize: - case NSOpenGLPFAAccumSize: - case NSOpenGLPFARendererID: - case NSOpenGLPFAScreenMask: - attribs += 2; - break; - case NSOpenGLPFAAlphaSize: - return attribs[1]; - break; - // All other attributes are boolean attributes that don't take a value - default: - attribs++; - } - } - return 0; -} - -void getPixelFormatAttrib(void* pixelFormat,int attrib,int* val){ - NSOpenGLPixelFormat *frmt = (NSOpenGLPixelFormat *)pixelFormat; - [frmt getValues:val forAttribute:attrib forVirtualScreen:0]; -} - -void* nsCreateContext(void* format,void* share){ - NSOpenGLPixelFormat* frmt = (NSOpenGLPixelFormat*)format; - return [[EmuGLContext alloc] initWithFormat:frmt shareContext:share]; -} - -void nsPBufferMakeCurrent(void* context,void* nativePBuffer,int level){ - EmuGLContext* ctx = (EmuGLContext *)context; - NSOpenGLPixelBuffer* pbuff = (NSOpenGLPixelBuffer *)nativePBuffer; - if(ctx == nil){ - [NSOpenGLContext clearCurrentContext]; - } else { - if(pbuff != nil){ - [ctx preBind:1]; - [ctx setPixelBuffer:pbuff cubeMapFace:0 mipMapLevel:level currentVirtualScreen:0]; - [ctx makeCurrentContext]; - } - } -} - -void nsWindowMakeCurrent(void* context,void* nativeWin){ - EmuGLContext* ctx = (EmuGLContext *)context; - NSView* win = (NSView *)nativeWin; - if(ctx == nil){ - [NSOpenGLContext clearCurrentContext]; - } else if (win != nil) { - [ctx preBind:0]; - [ctx setView: win]; - [ctx makeCurrentContext]; - } -} - -void nsSwapBuffers(){ - NSOpenGLContext* ctx = [NSOpenGLContext currentContext]; - if(ctx != nil){ - [ctx flushBuffer]; - } -} - -void nsSwapInterval(int *interval){ - NSOpenGLContext* ctx = [NSOpenGLContext currentContext]; - if( ctx != nil){ - [ctx setValues:interval forParameter:NSOpenGLCPSwapInterval]; - } -} - - -void nsDestroyContext(void* context){ - EmuGLContext *ctx = (EmuGLContext*)context; - if(ctx != nil){ - [ctx release]; - } -} - - -void* nsCreatePBuffer(GLenum target,GLenum format,int maxMip,int width,int height){ - return [[NSOpenGLPixelBuffer alloc] initWithTextureTarget:target - textureInternalFormat:format - textureMaxMipMapLevel:maxMip - pixelsWide:width pixelsHigh:height]; - -} - -void nsDestroyPBuffer(void* pbuffer){ - NSOpenGLPixelBuffer *pbuf = (NSOpenGLPixelBuffer*)pbuffer; - if(pbuf != nil){ - [pbuf release]; - } -} - -bool nsGetWinDims(void* win,unsigned int* width,unsigned int* height){ - NSView* view = (NSView*)win; - if(view != nil){ - NSRect rect = [view bounds]; - *width = rect.size.width; - *height = rect.size.height; - return true; - } - return false; -} - -bool nsCheckColor(void* win,int colorSize){ - NSView* view = (NSView*)win; - if(view != nil){ - NSWindow* wnd = [view window]; - if(wnd != nil){ - NSWindowDepth limit = [wnd depthLimit]; - NSWindowDepth defaultLimit = [NSWindow defaultDepthLimit]; - - int depth = (limit != 0) ? NSBitsPerPixelFromDepth(limit): - NSBitsPerPixelFromDepth(defaultLimit); - return depth >= colorSize; - - } - } - return false; - -} diff --git a/external/android-emugl/host/libs/Translator/EGL/MacPixelFormatsAttribs.h b/external/android-emugl/host/libs/Translator/EGL/MacPixelFormatsAttribs.h deleted file mode 100644 index 692ac22..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/MacPixelFormatsAttribs.h +++ /dev/null @@ -1,23 +0,0 @@ -/* -* Copyright 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#ifndef MAC_PIXELS_FORMATS_ATTRIBS_H -#define MAC_PIXELS_FORMATS_ATTRIBS_H - -#include -NSOpenGLPixelFormatAttribute** getPixelFormatsAttributes(int* size); - -#endif diff --git a/external/android-emugl/host/libs/Translator/EGL/MacPixelFormatsAttribs.m b/external/android-emugl/host/libs/Translator/EGL/MacPixelFormatsAttribs.m deleted file mode 100644 index f5bc49c..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/MacPixelFormatsAttribs.m +++ /dev/null @@ -1,214 +0,0 @@ -/* -* Copyright 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#include "MacPixelFormatsAttribs.h" - -static NSOpenGLPixelFormatAttribute attrs32_1[] = -{ - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAWindow, - NSOpenGLPFAPixelBuffer, - NSOpenGLPFAColorSize ,32, - NSOpenGLPFADepthSize ,24, - NSOpenGLPFAStencilSize ,8, - 0 -}; - -static NSOpenGLPixelFormatAttribute attrs32_2[] = -{ - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAWindow, - NSOpenGLPFAPixelBuffer, - NSOpenGLPFAColorSize ,32, - NSOpenGLPFAAlphaSize ,8, - NSOpenGLPFADepthSize ,24, - NSOpenGLPFAStencilSize ,8, - 0 -}; - -static NSOpenGLPixelFormatAttribute attrs32_3[] = -{ - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAWindow, - NSOpenGLPFAPixelBuffer, - NSOpenGLPFAColorSize ,32, - NSOpenGLPFAAlphaSize ,8, - 0 -}; - -static NSOpenGLPixelFormatAttribute attrs32_4[] = -{ - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAWindow, - NSOpenGLPFAPixelBuffer, - NSOpenGLPFAColorSize ,32, - 0 -}; - -static NSOpenGLPixelFormatAttribute attrs32_5[] = -{ - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAWindow, - NSOpenGLPFAPixelBuffer, - NSOpenGLPFAColorSize ,32, - NSOpenGLPFADepthSize ,24, - NSOpenGLPFASamples ,2, - 0 -}; - -static NSOpenGLPixelFormatAttribute attrs32_6[] = -{ - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAWindow, - NSOpenGLPFAPixelBuffer, - NSOpenGLPFAColorSize ,32, - NSOpenGLPFADepthSize ,24, - NSOpenGLPFASamples ,4, - 0 -}; - -static NSOpenGLPixelFormatAttribute attrs32_7[] = -{ - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAWindow, - NSOpenGLPFAPixelBuffer, - NSOpenGLPFAColorSize ,32, - NSOpenGLPFAAlphaSize ,8, - NSOpenGLPFADepthSize ,24, - NSOpenGLPFAStencilSize ,8, - NSOpenGLPFASamples ,4, - 0 -}; - -static NSOpenGLPixelFormatAttribute attrs16_1[] = -{ - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAWindow, - NSOpenGLPFAPixelBuffer, - NSOpenGLPFAColorSize ,16, - NSOpenGLPFADepthSize ,24, - 0 -}; - -static NSOpenGLPixelFormatAttribute attrs16_2[] = -{ - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAWindow, - NSOpenGLPFAPixelBuffer, - NSOpenGLPFAColorSize ,16, - NSOpenGLPFADepthSize ,24, - NSOpenGLPFAStencilSize ,8, - 0 -}; - -static NSOpenGLPixelFormatAttribute attrs64_1[] = -{ - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAWindow, - NSOpenGLPFAPixelBuffer, - NSOpenGLPFAColorSize ,64, - NSOpenGLPFAAlphaSize ,16, - 0 -}; - -static NSOpenGLPixelFormatAttribute attrs64_2[] = -{ - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAWindow, - NSOpenGLPFAPixelBuffer, - NSOpenGLPFAColorSize ,64, - NSOpenGLPFAAlphaSize ,16, - NSOpenGLPFADepthSize ,24, - NSOpenGLPFAStencilSize ,8, - 0 -}; - -static NSOpenGLPixelFormatAttribute attrs64_3[] = -{ - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAWindow, - NSOpenGLPFAPixelBuffer, - NSOpenGLPFAColorSize ,64, - NSOpenGLPFAAlphaSize ,16, - NSOpenGLPFADepthSize ,24, - 0 -}; - -static NSOpenGLPixelFormatAttribute attrs64_4[] = -{ - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAWindow, - NSOpenGLPFAPixelBuffer, - NSOpenGLPFAColorSize ,64, - NSOpenGLPFADepthSize ,24, - 0 -}; - -static NSOpenGLPixelFormatAttribute attrs64_5[] = -{ - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAWindow, - NSOpenGLPFAPixelBuffer, - NSOpenGLPFAColorSize ,64, - NSOpenGLPFADepthSize ,24, - NSOpenGLPFAStencilSize ,8, - 0 -}; - -static NSOpenGLPixelFormatAttribute attrs128_1[] = -{ - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAWindow, - NSOpenGLPFAPixelBuffer, - NSOpenGLPFAColorSize ,128, - NSOpenGLPFAAlphaSize ,32, - 0 -}; - -static NSOpenGLPixelFormatAttribute attrs128_2[] = -{ - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAWindow, - NSOpenGLPFAPixelBuffer, - NSOpenGLPFAColorSize ,128, - NSOpenGLPFAAlphaSize ,32, - NSOpenGLPFADepthSize ,24, - 0 -}; - -NSOpenGLPixelFormatAttribute** getPixelFormatsAttributes(int* size){ -static NSOpenGLPixelFormatAttribute* arr[] = -{ - attrs16_1, - attrs16_2, - attrs32_1, - attrs32_2, - attrs32_3, - attrs32_4, - attrs32_5, - attrs32_6, - attrs32_7, - attrs64_1, - attrs64_2, - attrs64_3, - attrs64_4, - attrs64_5, - attrs128_1, - attrs128_2 -}; - *size = sizeof(arr)/sizeof(arr[0]); - return arr; -} diff --git a/external/android-emugl/host/libs/Translator/EGL/ThreadInfo.cpp b/external/android-emugl/host/libs/Translator/EGL/ThreadInfo.cpp deleted file mode 100644 index 1571b3a..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/ThreadInfo.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#include "ThreadInfo.h" - -#include "emugl/common/lazy_instance.h" -#include "emugl/common/thread_store.h" - -#include - -// Set TRACE_THREADINFO to 1 to debug creation/destruction of ThreadInfo -// instances. -#define TRACE_THREADINFO 0 - -#if TRACE_THREADINFO -#define LOG_THREADINFO(x...) fprintf(stderr, x) -#else -#define LOG_THREADINFO(x...) -#endif - -namespace { - -class ThreadInfoStore : public ::emugl::ThreadStore { -public: - ThreadInfoStore() : ::emugl::ThreadStore(&destructor) {} - - size_t getInstanceCount() const { return mNumInstances; } - -private: - static void destructor(void* value) { - LOG_THREADINFO("%s: EFL %p (%d instances)\n", __FUNCTION__, - value, mNumInstances); - delete static_cast(value); - mNumInstances--; - } - - static size_t mNumInstances; -}; - -size_t ThreadInfoStore::mNumInstances = 0; - -} // namespace - - -void ThreadInfo::updateInfo(ContextPtr eglCtx, - EglDisplay* dpy, - GLEScontext* glesCtx, - ShareGroupPtr share, - ObjectNameManager* manager) { - - eglContext = eglCtx; - eglDisplay = dpy; - glesContext = glesCtx; - shareGroup = share; - objManager = manager; -} - -static ::emugl::LazyInstance s_tls = LAZY_INSTANCE_INIT; - -ThreadInfo *getThreadInfo() -{ - ThreadInfo *ti = static_cast(s_tls->get()); - if (!ti) { - ti = new ThreadInfo(); - s_tls->set(ti); - LOG_THREADINFO("%s: EGL %p (%d instances)\n", __FUNCTION__, - ti, (int)ThreadInfoStore::getInstanceCount()); - } - return ti; -} diff --git a/external/android-emugl/host/libs/Translator/EGL/ThreadInfo.h b/external/android-emugl/host/libs/Translator/EGL/ThreadInfo.h deleted file mode 100644 index ffc6e5f..0000000 --- a/external/android-emugl/host/libs/Translator/EGL/ThreadInfo.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef THREAD_INFO_H -#define THREAD_INFO_H - -#include "EglContext.h" - -class EglDisplay; -class GLEScontext; - -struct ThreadInfo { - ThreadInfo():eglDisplay(NULL),glesContext(NULL),objManager(NULL){} - - void updateInfo(ContextPtr eglctx, - EglDisplay* dpy, - GLEScontext* glesCtx, - ShareGroupPtr share, - ObjectNameManager* manager); - - ContextPtr eglContext; - EglDisplay* eglDisplay; - GLEScontext* glesContext; - ShareGroupPtr shareGroup; - ObjectNameManager* objManager; -}; - -ThreadInfo* getThreadInfo(); - -#endif diff --git a/external/android-emugl/host/libs/Translator/GLES_CM/Android.mk b/external/android-emugl/host/libs/Translator/GLES_CM/Android.mk deleted file mode 100644 index b44ad8b..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_CM/Android.mk +++ /dev/null @@ -1,14 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -host_common_SRC_FILES := \ - GLEScmImp.cpp \ - GLEScmUtils.cpp \ - GLEScmContext.cpp \ - GLEScmValidate.cpp - - -### GLES_CM host implementation (On top of OpenGL) ######################## -$(call emugl-begin-host-shared-library,lib$(BUILD_TARGET_SUFFIX)GLES_CM_translator) -$(call emugl-import,libGLcommon) -LOCAL_SRC_FILES := $(host_common_SRC_FILES) -$(call emugl-end-module) diff --git a/external/android-emugl/host/libs/Translator/GLES_CM/CMakeLists.txt b/external/android-emugl/host/libs/Translator/GLES_CM/CMakeLists.txt deleted file mode 100644 index 2d7bbe9..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_CM/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -set(SOURCES - GLEScmImp.cpp - GLEScmUtils.cpp - GLEScmContext.cpp - GLEScmValidate.cpp) - -add_library(GLES_CM_translator SHARED ${SOURCES}) -target_link_libraries(GLES_CM_translator GLcommon) - -install( - TARGETS GLES_CM_translator - LIBRARY DESTINATION ${ANBOX_TRANSLATOR_INSTALL_DIR}) diff --git a/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmContext.cpp b/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmContext.cpp deleted file mode 100644 index 92a09fc..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmContext.cpp +++ /dev/null @@ -1,430 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#include "GLEScmContext.h" -#include "GLEScmUtils.h" -#include -#include -#include -#include -#include - -void GLEScmContext::init(GlLibrary* glLib) { - emugl::Mutex::AutoLock mutex(s_lock); - if(!m_initialized) { - s_glDispatch.dispatchFuncs(GLES_1_1, glLib); - GLEScontext::init(glLib); - - m_texCoords = new GLESpointer[s_glSupport.maxTexUnits]; - m_map[GL_TEXTURE_COORD_ARRAY] = &m_texCoords[m_clientActiveTexture]; - - buildStrings((const char*)dispatcher().glGetString(GL_VENDOR), - (const char*)dispatcher().glGetString(GL_RENDERER), - (const char*)dispatcher().glGetString(GL_VERSION), - "OpenGL ES-CM 1.1"); - } - m_initialized = true; -} - -GLEScmContext::GLEScmContext():GLEScontext(),m_texCoords(NULL),m_pointsIndex(-1), m_clientActiveTexture(0) { - - m_map[GL_COLOR_ARRAY] = new GLESpointer(); - m_map[GL_NORMAL_ARRAY] = new GLESpointer(); - m_map[GL_VERTEX_ARRAY] = new GLESpointer(); - m_map[GL_POINT_SIZE_ARRAY_OES] = new GLESpointer(); -} - - -void GLEScmContext::setActiveTexture(GLenum tex) { - m_activeTexture = tex - GL_TEXTURE0; -} - -void GLEScmContext::setClientActiveTexture(GLenum tex) { - m_clientActiveTexture = tex - GL_TEXTURE0; - m_map[GL_TEXTURE_COORD_ARRAY] = &m_texCoords[m_clientActiveTexture]; -} - -GLEScmContext::~GLEScmContext(){ - if(m_texCoords){ - delete[] m_texCoords; - m_texCoords = NULL; - } - m_map[GL_TEXTURE_COORD_ARRAY] = NULL; -} - - -//setting client side arr -void GLEScmContext::setupArr(const GLvoid* arr,GLenum arrayType,GLenum dataType,GLint size,GLsizei stride,GLboolean normalized, int index){ - if( arr == NULL) return; - switch(arrayType) { - case GL_VERTEX_ARRAY: - s_glDispatch.glVertexPointer(size,dataType,stride,arr); - break; - case GL_NORMAL_ARRAY: - s_glDispatch.glNormalPointer(dataType,stride,arr); - break; - case GL_TEXTURE_COORD_ARRAY: - s_glDispatch.glTexCoordPointer(size,dataType,stride,arr); - break; - case GL_COLOR_ARRAY: - s_glDispatch.glColorPointer(size,dataType,stride,arr); - break; - case GL_POINT_SIZE_ARRAY_OES: - m_pointsIndex = index; - break; - } -} - - -void GLEScmContext::setupArrayPointerHelper(GLESConversionArrays& cArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct,GLenum array_id,GLESpointer* p){ - unsigned int size = p->getSize(); - GLenum dataType = p->getType(); - - if(needConvert(cArrs,first,count,type,indices,direct,p,array_id)){ - //conversion has occured - ArrayData currentArr = cArrs.getCurrentArray(); - setupArr(currentArr.data,array_id,currentArr.type,size,currentArr.stride,GL_FALSE, cArrs.getCurrentIndex()); - ++cArrs; - } else { - setupArr(p->getData(),array_id,dataType,size,p->getStride(), GL_FALSE); - } -} - -void GLEScmContext::setupArraysPointers(GLESConversionArrays& cArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct) { - ArraysMap::iterator it; - m_pointsIndex = -1; - - //going over all clients arrays Pointers - for ( it=m_map.begin() ; it != m_map.end(); it++ ) { - - GLenum array_id = (*it).first; - GLESpointer* p = (*it).second; - if(!isArrEnabled(array_id)) continue; - if(array_id == GL_TEXTURE_COORD_ARRAY) continue; //handling textures later - setupArrayPointerHelper(cArrs,first,count,type,indices,direct,array_id,p); - } - - unsigned int activeTexture = m_clientActiveTexture + GL_TEXTURE0; - - s_lock.lock(); - int maxTexUnits = s_glSupport.maxTexUnits; - s_lock.unlock(); - - //converting all texture coords arrays - for(int i=0; i< maxTexUnits;i++) { - - unsigned int tex = GL_TEXTURE0+i; - setClientActiveTexture(tex); - s_glDispatch.glClientActiveTexture(tex); - - GLenum array_id = GL_TEXTURE_COORD_ARRAY; - GLESpointer* p = m_map[array_id]; - if(!isArrEnabled(array_id)) continue; - setupArrayPointerHelper(cArrs,first,count,type,indices,direct,array_id,p); - } - - setClientActiveTexture(activeTexture); - s_glDispatch.glClientActiveTexture(activeTexture); -} - -void GLEScmContext::drawPointsData(GLESConversionArrays& cArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices_in,bool isElemsDraw) { - const char *pointsArr = NULL; - int stride = 0; - GLESpointer* p = m_map[GL_POINT_SIZE_ARRAY_OES]; - - //choosing the right points sizes array source - if(m_pointsIndex >= 0) { //point size array was converted - pointsArr = (const char*)(cArrs[m_pointsIndex].data); - stride = cArrs[m_pointsIndex].stride; - } else { - pointsArr = static_cast(p->getData()); - stride = p->getStride(); - } - - if(stride == 0){ - stride = sizeof(GLfloat); - } - - - if(isElemsDraw) { - int tSize = 0; - switch (type) { - case GL_UNSIGNED_BYTE: - tSize = 1; - break; - case GL_UNSIGNED_SHORT: - tSize = 2; - break; - case GL_UNSIGNED_INT: - tSize = 4; - break; - }; - - int i = 0; - while(i(indices_in)[i]: \ - type == GL_UNSIGNED_SHORT ? \ - static_cast(indices_in)[i]: \ - static_cast(indices_in)[i]) - - GLfloat pSize = *((GLfloat*)(pointsArr+(INDEX*stride))); - i++; - - while(i < count && pSize == *((GLfloat*)(pointsArr+(INDEX*stride)))) - { - sCount++; - i++; - } - - s_glDispatch.glPointSize(pSize); - s_glDispatch.glDrawElements(GL_POINTS, sCount, type, (char*)indices_in+sStart*tSize); - } - } else { - int i = 0; - while(iisVBO(); - GLenum arrType = p->getType(); - /* - conversion is not necessary in the following cases: - (*) array type is byte but it is not vertex or texture array - (*) array type is not fixed - */ - if((arrType != GL_FIXED) && (arrType != GL_BYTE)) return false; - if((arrType == GL_BYTE && (array_id != GL_VERTEX_ARRAY)) && - (arrType == GL_BYTE && (array_id != GL_TEXTURE_COORD_ARRAY)) ) return false; - - - bool byteVBO = (arrType == GL_BYTE) && usingVBO; - if(byteVBO){ - p->redirectPointerData(); - } - - if(!usingVBO || byteVBO) { - if (direct) { - convertDirect(cArrs,first,count,array_id,p); - } else { - convertIndirect(cArrs,count,type,indices,array_id,p); - } - } else { - if (direct) { - convertDirectVBO(cArrs,first,count,array_id,p) ; - } else { - convertIndirectVBO(cArrs,count,type,indices,array_id,p); - } - } - return true; -} - -const GLESpointer* GLEScmContext::getPointer(GLenum arrType) { - GLenum type = - arrType == GL_VERTEX_ARRAY_POINTER ? GL_VERTEX_ARRAY : - arrType == GL_NORMAL_ARRAY_POINTER ? GL_NORMAL_ARRAY : - arrType == GL_TEXTURE_COORD_ARRAY_POINTER ? GL_TEXTURE_COORD_ARRAY : - arrType == GL_COLOR_ARRAY_POINTER ? GL_COLOR_ARRAY : - arrType == GL_POINT_SIZE_ARRAY_POINTER_OES ? GL_POINT_SIZE_ARRAY_OES : - 0; - if(type != 0) - { - return GLEScontext::getPointer(type); - } - return NULL; -} - -void GLEScmContext::initExtensionString() { - *s_glExtensions = "GL_OES_blend_func_separate GL_OES_blend_equation_separate GL_OES_blend_subtract " - "GL_OES_byte_coordinates GL_OES_compressed_paletted_texture GL_OES_point_size_array " - "GL_OES_point_sprite GL_OES_single_precision GL_OES_stencil_wrap GL_OES_texture_env_crossbar " - "GL_OES_texture_mirored_repeat GL_OES_EGL_image GL_OES_element_index_uint GL_OES_draw_texture " - "GL_OES_texture_cube_map GL_OES_draw_texture "; - if (s_glSupport.GL_OES_READ_FORMAT) - *s_glExtensions+="GL_OES_read_format "; - if (s_glSupport.GL_EXT_FRAMEBUFFER_OBJECT) { - *s_glExtensions+="GL_OES_framebuffer_object GL_OES_depth24 GL_OES_depth32 GL_OES_fbo_render_mipmap " - "GL_OES_rgb8_rgba8 GL_OES_stencil1 GL_OES_stencil4 GL_OES_stencil8 "; - } - if (s_glSupport.GL_EXT_PACKED_DEPTH_STENCIL) - *s_glExtensions+="GL_OES_packed_depth_stencil "; - if (s_glSupport.GL_EXT_TEXTURE_FORMAT_BGRA8888) - *s_glExtensions+="GL_EXT_texture_format_BGRA8888 GL_APPLE_texture_format_BGRA8888 "; - if (s_glSupport.GL_ARB_MATRIX_PALETTE && s_glSupport.GL_ARB_VERTEX_BLEND) { - *s_glExtensions+="GL_OES_matrix_palette "; - GLint max_palette_matrices=0; - GLint max_vertex_units=0; - dispatcher().glGetIntegerv(GL_MAX_PALETTE_MATRICES_OES,&max_palette_matrices); - dispatcher().glGetIntegerv(GL_MAX_VERTEX_UNITS_OES,&max_vertex_units); - if (max_palette_matrices>=32 && max_vertex_units>=4) - *s_glExtensions+="GL_OES_extended_matrix_palette "; - } - *s_glExtensions+="GL_OES_compressed_ETC1_RGB8_texture "; -} - -int GLEScmContext::getMaxTexUnits() { - return getCaps()->maxTexUnits; -} - -bool GLEScmContext::glGetBooleanv(GLenum pname, GLboolean *params) -{ - GLint iParam; - - if(glGetIntegerv(pname, &iParam)) - { - *params = (iParam != 0); - return true; - } - - return false; -} - -bool GLEScmContext::glGetFixedv(GLenum pname, GLfixed *params) -{ - GLint iParam; - - if(glGetIntegerv(pname, &iParam)) - { - *params = I2X(iParam); - return true; - } - - return false; -} - -bool GLEScmContext::glGetFloatv(GLenum pname, GLfloat *params) -{ - GLint iParam; - - if(glGetIntegerv(pname, &iParam)) - { - *params = (GLfloat)iParam; - return true; - } - - return false; -} - -bool GLEScmContext::glGetIntegerv(GLenum pname, GLint *params) -{ - if(GLEScontext::glGetIntegerv(pname, params)) - return true; - - const GLESpointer* ptr = NULL; - - switch(pname){ - case GL_VERTEX_ARRAY_BUFFER_BINDING: - case GL_VERTEX_ARRAY_SIZE: - case GL_VERTEX_ARRAY_STRIDE: - case GL_VERTEX_ARRAY_TYPE: - ptr = getPointer(GL_VERTEX_ARRAY_POINTER); - break; - - case GL_NORMAL_ARRAY_BUFFER_BINDING: - case GL_NORMAL_ARRAY_STRIDE: - case GL_NORMAL_ARRAY_TYPE: - ptr = getPointer(GL_NORMAL_ARRAY_POINTER); - break; - - case GL_COLOR_ARRAY_BUFFER_BINDING: - case GL_COLOR_ARRAY_SIZE: - case GL_COLOR_ARRAY_STRIDE: - case GL_COLOR_ARRAY_TYPE: - ptr = getPointer(GL_COLOR_ARRAY_POINTER); - break; - - case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING: - case GL_TEXTURE_COORD_ARRAY_SIZE: - case GL_TEXTURE_COORD_ARRAY_STRIDE: - case GL_TEXTURE_COORD_ARRAY_TYPE: - ptr = getPointer(GL_TEXTURE_COORD_ARRAY_POINTER); - break; - - case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES: - case GL_POINT_SIZE_ARRAY_STRIDE_OES: - case GL_POINT_SIZE_ARRAY_TYPE_OES: - ptr = getPointer(GL_POINT_SIZE_ARRAY_POINTER_OES); - break; - - default: - return false; - } - - switch(pname) - { - case GL_VERTEX_ARRAY_BUFFER_BINDING: - case GL_NORMAL_ARRAY_BUFFER_BINDING: - case GL_COLOR_ARRAY_BUFFER_BINDING: - case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING: - case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES: - *params = ptr ? ptr->getBufferName() : 0; - break; - - case GL_VERTEX_ARRAY_STRIDE: - case GL_NORMAL_ARRAY_STRIDE: - case GL_COLOR_ARRAY_STRIDE: - case GL_TEXTURE_COORD_ARRAY_STRIDE: - case GL_POINT_SIZE_ARRAY_STRIDE_OES: - *params = ptr ? ptr->getStride() : 0; - break; - - case GL_VERTEX_ARRAY_SIZE: - case GL_COLOR_ARRAY_SIZE: - case GL_TEXTURE_COORD_ARRAY_SIZE: - *params = ptr ? ptr->getSize() : 0; - break; - - case GL_VERTEX_ARRAY_TYPE: - case GL_NORMAL_ARRAY_TYPE: - case GL_COLOR_ARRAY_TYPE: - case GL_TEXTURE_COORD_ARRAY_TYPE: - case GL_POINT_SIZE_ARRAY_TYPE_OES: - *params = ptr ? ptr->getType() : 0; - break; - } - - return true; -} diff --git a/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmContext.h b/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmContext.h deleted file mode 100644 index ef03586..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmContext.h +++ /dev/null @@ -1,71 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef GLES_CM_CONTEX_H -#define GLES_CM_CONTEX_H - -#include -#include -#include -#include - -#include -#include -#include - - -typedef std::map > PointSizeIndices; - -class GlLibrary; - -class GLEScmContext: public GLEScontext -{ -public: - virtual void init(GlLibrary* glLib); - GLEScmContext(); - - void setActiveTexture(GLenum tex); - void setClientActiveTexture(GLenum tex); - GLenum getActiveTexture() { return GL_TEXTURE0 + m_activeTexture;}; - GLenum getClientActiveTexture() { return GL_TEXTURE0 + m_clientActiveTexture;}; - void setupArraysPointers(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct); - void drawPointsArrs(GLESConversionArrays& arrs,GLint first,GLsizei count); - void drawPointsElems(GLESConversionArrays& arrs,GLsizei count,GLenum type,const GLvoid* indices); - virtual const GLESpointer* getPointer(GLenum arrType); - int getMaxTexUnits(); - - virtual bool glGetIntegerv(GLenum pname, GLint *params); - virtual bool glGetBooleanv(GLenum pname, GLboolean *params); - virtual bool glGetFloatv(GLenum pname, GLfloat *params); - virtual bool glGetFixedv(GLenum pname, GLfixed *params); - - ~GLEScmContext(); -protected: - - bool needConvert(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct,GLESpointer* p,GLenum array_id); -private: - void setupArrayPointerHelper(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct,GLenum array_id,GLESpointer* p); - void setupArr(const GLvoid* arr,GLenum arrayType,GLenum dataType,GLint size,GLsizei stride,GLboolean normalized, int pointsIndex = -1); - void drawPoints(PointSizeIndices* points); - void drawPointsData(GLESConversionArrays& arrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices_in,bool isElemsDraw); - void initExtensionString(); - - GLESpointer* m_texCoords; - int m_pointsIndex; - unsigned int m_clientActiveTexture; -}; - -#endif - diff --git a/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmImp.cpp b/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmImp.cpp deleted file mode 100644 index 2c1dea2..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmImp.cpp +++ /dev/null @@ -1,2366 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#ifdef _WIN32 -#undef GL_API -#define GL_API __declspec(dllexport) -#define GL_APICALL __declspec(dllexport) -#endif -#define GL_GLEXT_PROTOTYPES -#include "GLEScmContext.h" -#include "GLEScmValidate.h" -#include "GLEScmUtils.h" -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include - -extern "C" { - -//decleration -static void initGLESx(); -static void initContext(GLEScontext* ctx,ShareGroupPtr grp); -static void deleteGLESContext(GLEScontext* ctx); -static void setShareGroup(GLEScontext* ctx,ShareGroupPtr grp); -static GLEScontext* createGLESContext(); -static __translatorMustCastToProperFunctionPointerType getProcAddress(const char* procName); - -} - -/************************************** GLES EXTENSIONS *********************************************************/ -//extentions descriptor -typedef std::map ProcTableMap; -ProcTableMap *s_glesExtensions = NULL; -/****************************************************************************************************************/ - -static EGLiface* s_eglIface = NULL; -static GLESiface s_glesIface = { - .initGLESx = initGLESx, - .createGLESContext = createGLESContext, - .initContext = initContext, - .deleteGLESContext = deleteGLESContext, - .flush = (FUNCPTR)glFlush, - .finish = (FUNCPTR)glFinish, - .setShareGroup = setShareGroup, - .getProcAddress = getProcAddress -}; - -#include - -extern "C" { - -static void initGLESx() { - return; -} - -static void initContext(GLEScontext* ctx,ShareGroupPtr grp) { - if (!ctx->isInitialized()) { - ctx->setShareGroup(grp); - ctx->init(s_eglIface->eglGetGlLibrary()); - glBindTexture(GL_TEXTURE_2D,0); - glBindTexture(GL_TEXTURE_CUBE_MAP_OES,0); - } -} - -static GLEScontext* createGLESContext() { - return new GLEScmContext(); -} - -static void deleteGLESContext(GLEScontext* ctx) { - if(ctx) delete ctx; -} - -static void setShareGroup(GLEScontext* ctx,ShareGroupPtr grp) { - if(ctx) { - ctx->setShareGroup(grp); - } -} -static __translatorMustCastToProperFunctionPointerType getProcAddress(const char* procName) { - GET_CTX_RET(NULL) - ctx->getGlobalLock(); - static bool proc_table_initialized = false; - if (!proc_table_initialized) { - proc_table_initialized = true; - if (!s_glesExtensions) - s_glesExtensions = new ProcTableMap(); - else - s_glesExtensions->clear(); - (*s_glesExtensions)["glEGLImageTargetTexture2DOES"] = (__translatorMustCastToProperFunctionPointerType)glEGLImageTargetTexture2DOES; - (*s_glesExtensions)["glEGLImageTargetRenderbufferStorageOES"]=(__translatorMustCastToProperFunctionPointerType)glEGLImageTargetRenderbufferStorageOES; - (*s_glesExtensions)["glBlendEquationSeparateOES"] = (__translatorMustCastToProperFunctionPointerType)glBlendEquationSeparateOES; - (*s_glesExtensions)["glBlendFuncSeparateOES"] = (__translatorMustCastToProperFunctionPointerType)glBlendFuncSeparateOES; - (*s_glesExtensions)["glBlendEquationOES"] = (__translatorMustCastToProperFunctionPointerType)glBlendEquationOES; - - if (ctx->getCaps()->GL_ARB_MATRIX_PALETTE && ctx->getCaps()->GL_ARB_VERTEX_BLEND) { - (*s_glesExtensions)["glCurrentPaletteMatrixOES"] = (__translatorMustCastToProperFunctionPointerType)glCurrentPaletteMatrixOES; - (*s_glesExtensions)["glLoadPaletteFromModelViewMatrixOES"]=(__translatorMustCastToProperFunctionPointerType)glLoadPaletteFromModelViewMatrixOES; - (*s_glesExtensions)["glMatrixIndexPointerOES"] = (__translatorMustCastToProperFunctionPointerType)glMatrixIndexPointerOES; - (*s_glesExtensions)["glWeightPointerOES"] = (__translatorMustCastToProperFunctionPointerType)glWeightPointerOES; - } - (*s_glesExtensions)["glDepthRangefOES"] = (__translatorMustCastToProperFunctionPointerType)glDepthRangef; - (*s_glesExtensions)["glFrustumfOES"] = (__translatorMustCastToProperFunctionPointerType)glFrustumf; - (*s_glesExtensions)["glOrthofOES"] = (__translatorMustCastToProperFunctionPointerType)glOrthof; - (*s_glesExtensions)["glClipPlanefOES"] = (__translatorMustCastToProperFunctionPointerType)glClipPlanef; - (*s_glesExtensions)["glGetClipPlanefOES"] = (__translatorMustCastToProperFunctionPointerType)glGetClipPlanef; - (*s_glesExtensions)["glClearDepthfOES"] = (__translatorMustCastToProperFunctionPointerType)glClearDepthf; - (*s_glesExtensions)["glPointSizePointerOES"] = (__translatorMustCastToProperFunctionPointerType)glPointSizePointerOES; - (*s_glesExtensions)["glTexGenfOES"] = (__translatorMustCastToProperFunctionPointerType)glTexGenfOES; - (*s_glesExtensions)["glTexGenfvOES"] = (__translatorMustCastToProperFunctionPointerType)glTexGenfvOES; - (*s_glesExtensions)["glTexGeniOES"] = (__translatorMustCastToProperFunctionPointerType)glTexGeniOES; - (*s_glesExtensions)["glTexGenivOES"] = (__translatorMustCastToProperFunctionPointerType)glTexGenivOES; - (*s_glesExtensions)["glTexGenxOES"] = (__translatorMustCastToProperFunctionPointerType)glTexGenxOES; - (*s_glesExtensions)["glTexGenxvOES"] = (__translatorMustCastToProperFunctionPointerType)glTexGenxvOES; - (*s_glesExtensions)["glGetTexGenfvOES"] = (__translatorMustCastToProperFunctionPointerType)glGetTexGenfvOES; - (*s_glesExtensions)["glGetTexGenivOES"] = (__translatorMustCastToProperFunctionPointerType)glGetTexGenivOES; - (*s_glesExtensions)["glGetTexGenxvOES"] = (__translatorMustCastToProperFunctionPointerType)glGetTexGenxvOES; - if (ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT) { - (*s_glesExtensions)["glIsRenderbufferOES"] = (__translatorMustCastToProperFunctionPointerType)glIsRenderbufferOES; - (*s_glesExtensions)["glBindRenderbufferOES"] = (__translatorMustCastToProperFunctionPointerType)glBindRenderbufferOES; - (*s_glesExtensions)["glDeleteRenderbuffersOES"] = (__translatorMustCastToProperFunctionPointerType)glDeleteRenderbuffersOES; - (*s_glesExtensions)["glGenRenderbuffersOES"] = (__translatorMustCastToProperFunctionPointerType)glGenRenderbuffersOES; - (*s_glesExtensions)["glRenderbufferStorageOES"] = (__translatorMustCastToProperFunctionPointerType)glRenderbufferStorageOES; - (*s_glesExtensions)["glGetRenderbufferParameterivOES"] = (__translatorMustCastToProperFunctionPointerType)glGetRenderbufferParameterivOES; - (*s_glesExtensions)["glIsFramebufferOES"] = (__translatorMustCastToProperFunctionPointerType)glIsFramebufferOES; - (*s_glesExtensions)["glBindFramebufferOES"] = (__translatorMustCastToProperFunctionPointerType)glBindFramebufferOES; - (*s_glesExtensions)["glDeleteFramebuffersOES"] = (__translatorMustCastToProperFunctionPointerType)glDeleteFramebuffersOES; - (*s_glesExtensions)["glGenFramebuffersOES"] = (__translatorMustCastToProperFunctionPointerType)glGenFramebuffersOES; - (*s_glesExtensions)["glCheckFramebufferStatusOES"] = (__translatorMustCastToProperFunctionPointerType)glCheckFramebufferStatusOES; - (*s_glesExtensions)["glFramebufferTexture2DOES"] = (__translatorMustCastToProperFunctionPointerType)glFramebufferTexture2DOES; - (*s_glesExtensions)["glFramebufferRenderbufferOES"] = (__translatorMustCastToProperFunctionPointerType)glFramebufferRenderbufferOES; - (*s_glesExtensions)["glGetFramebufferAttachmentParameterivOES"] = (__translatorMustCastToProperFunctionPointerType)glGetFramebufferAttachmentParameterivOES; - (*s_glesExtensions)["glGenerateMipmapOES"] = (__translatorMustCastToProperFunctionPointerType)glGenerateMipmapOES; - } - (*s_glesExtensions)["glDrawTexsOES"] = (__translatorMustCastToProperFunctionPointerType)glDrawTexsOES; - (*s_glesExtensions)["glDrawTexiOES"] = (__translatorMustCastToProperFunctionPointerType)glDrawTexiOES; - (*s_glesExtensions)["glDrawTexfOES"] = (__translatorMustCastToProperFunctionPointerType)glDrawTexfOES; - (*s_glesExtensions)["glDrawTexxOES"] = (__translatorMustCastToProperFunctionPointerType)glDrawTexxOES; - (*s_glesExtensions)["glDrawTexsvOES"] = (__translatorMustCastToProperFunctionPointerType)glDrawTexsvOES; - (*s_glesExtensions)["glDrawTexivOES"] = (__translatorMustCastToProperFunctionPointerType)glDrawTexivOES; - (*s_glesExtensions)["glDrawTexfvOES"] = (__translatorMustCastToProperFunctionPointerType)glDrawTexfvOES; - (*s_glesExtensions)["glDrawTexxvOES"] = (__translatorMustCastToProperFunctionPointerType)glDrawTexxvOES; - } - __translatorMustCastToProperFunctionPointerType ret=NULL; - ProcTableMap::iterator val = s_glesExtensions->find(procName); - if (val!=s_glesExtensions->end()) - ret = val->second; - ctx->releaseGlobalLock(); - - return ret; -} - -GL_APICALL GLESiface* GL_APIENTRY __translator_getIfaces(EGLiface* eglIface); - -GLESiface* __translator_getIfaces(EGLiface* eglIface) { - s_eglIface = eglIface; - return &s_glesIface; -} - -} - -static ObjectLocalName TextureLocalName(GLenum target, unsigned int tex) { - GET_CTX_RET(0); - return (tex!=0? tex : ctx->getDefaultTextureName(target)); -} - -static TextureData* getTextureData(ObjectLocalName tex){ - GET_CTX_RET(NULL); - - if(!ctx->shareGroup()->isObject(TEXTURE,tex)) - { - return NULL; - } - - TextureData *texData = NULL; - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(TEXTURE,tex); - if(!objData.Ptr()){ - texData = new TextureData(); - ctx->shareGroup()->setObjectData(TEXTURE, tex, ObjectDataPtr(texData)); - } else { - texData = (TextureData*)objData.Ptr(); - } - return texData; -} - -static TextureData* getTextureTargetData(GLenum target){ - GET_CTX_RET(NULL); - unsigned int tex = ctx->getBindedTexture(target); - return getTextureData(TextureLocalName(target,tex)); -} - -GL_API GLboolean GL_APIENTRY glIsBuffer(GLuint buffer) { - GET_CTX_RET(GL_FALSE) - - if(buffer && ctx->shareGroup().Ptr()) { - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(VERTEXBUFFER,buffer); - return objData.Ptr() ? ((GLESbuffer*)objData.Ptr())->wasBinded():GL_FALSE; - } - return GL_FALSE; -} - -GL_API GLboolean GL_APIENTRY glIsEnabled( GLenum cap) { - GET_CTX_CM_RET(GL_FALSE) - RET_AND_SET_ERROR_IF(!GLEScmValidate::capability(cap,ctx->getMaxLights(),ctx->getMaxClipPlanes()),GL_INVALID_ENUM,GL_FALSE); - - if (cap == GL_POINT_SIZE_ARRAY_OES) - return ctx->isArrEnabled(cap); - else if (cap==GL_TEXTURE_GEN_STR_OES) - return (ctx->dispatcher().glIsEnabled(GL_TEXTURE_GEN_S) && - ctx->dispatcher().glIsEnabled(GL_TEXTURE_GEN_T) && - ctx->dispatcher().glIsEnabled(GL_TEXTURE_GEN_R)); - else - return ctx->dispatcher().glIsEnabled(cap); -} - -GL_API GLboolean GL_APIENTRY glIsTexture( GLuint texture) { - GET_CTX_RET(GL_FALSE) - - if(texture == 0) // Special case - return GL_FALSE; - - TextureData* tex = getTextureData(texture); - return tex ? tex->wasBound : GL_FALSE; -} - -GL_API GLenum GL_APIENTRY glGetError(void) { - GET_CTX_RET(GL_NO_ERROR) - GLenum err = ctx->getGLerror(); - if(err != GL_NO_ERROR) { - ctx->setGLerror(GL_NO_ERROR); - return err; - } - - return ctx->dispatcher().glGetError(); -} - -GL_API const GLubyte * GL_APIENTRY glGetString( GLenum name) { - - GET_CTX_RET(NULL) - switch(name) { - case GL_VENDOR: - return (const GLubyte*)ctx->getVendorString(); - case GL_RENDERER: - return (const GLubyte*)ctx->getRendererString(); - case GL_VERSION: - return (const GLubyte*)ctx->getVersionString(); - case GL_EXTENSIONS: - return (const GLubyte*)ctx->getExtensionString(); - default: - RET_AND_SET_ERROR_IF(true,GL_INVALID_ENUM,NULL); - } -} - -GL_API void GL_APIENTRY glActiveTexture( GLenum texture) { - GET_CTX_CM() - SET_ERROR_IF(!GLEScmValidate::textureEnum(texture,ctx->getMaxTexUnits()),GL_INVALID_ENUM); - ctx->setActiveTexture(texture); - ctx->dispatcher().glActiveTexture(texture); -} - -GL_API void GL_APIENTRY glAlphaFunc( GLenum func, GLclampf ref) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::alphaFunc(func),GL_INVALID_ENUM); - ctx->dispatcher().glAlphaFunc(func,ref); -} - - -GL_API void GL_APIENTRY glAlphaFuncx( GLenum func, GLclampx ref) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::alphaFunc(func),GL_INVALID_ENUM); - ctx->dispatcher().glAlphaFunc(func,X2F(ref)); -} - - -GL_API void GL_APIENTRY glBindBuffer( GLenum target, GLuint buffer) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::bufferTarget(target),GL_INVALID_ENUM); - - //if buffer wasn't generated before,generate one - if(buffer && ctx->shareGroup().Ptr() && !ctx->shareGroup()->isObject(VERTEXBUFFER,buffer)){ - ctx->shareGroup()->genName(VERTEXBUFFER,buffer); - ctx->shareGroup()->setObjectData(VERTEXBUFFER,buffer,ObjectDataPtr(new GLESbuffer())); - } - ctx->bindBuffer(target,buffer); - if (buffer) { - GLESbuffer* vbo = (GLESbuffer*)ctx->shareGroup()->getObjectData(VERTEXBUFFER,buffer).Ptr(); - vbo->setBinded(); - } -} - - -GL_API void GL_APIENTRY glBindTexture( GLenum target, GLuint texture) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::textureTarget(target),GL_INVALID_ENUM) - - //for handling default texture (0) - ObjectLocalName localTexName = TextureLocalName(target,texture); - - GLuint globalTextureName = localTexName; - if(ctx->shareGroup().Ptr()){ - globalTextureName = ctx->shareGroup()->getGlobalName(TEXTURE,localTexName); - //if texture wasn't generated before,generate one - if(!globalTextureName){ - ctx->shareGroup()->genName(TEXTURE,localTexName); - globalTextureName = ctx->shareGroup()->getGlobalName(TEXTURE,localTexName); - } - - TextureData* texData = getTextureData(localTexName); - if (texData->target==0) - texData->target = target; - //if texture was already bound to another target - SET_ERROR_IF(ctx->GLTextureTargetToLocal(texData->target) != ctx->GLTextureTargetToLocal(target), GL_INVALID_OPERATION); - texData->wasBound = true; - } - - ctx->setBindedTexture(target,texture); - ctx->dispatcher().glBindTexture(target,globalTextureName); -} - -GL_API void GL_APIENTRY glBlendFunc( GLenum sfactor, GLenum dfactor) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::blendSrc(sfactor) || !GLEScmValidate::blendDst(dfactor),GL_INVALID_ENUM) - ctx->dispatcher().glBlendFunc(sfactor,dfactor); -} - -GL_API void GL_APIENTRY glBufferData( GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::bufferTarget(target),GL_INVALID_ENUM); - SET_ERROR_IF(!ctx->isBindedBuffer(target),GL_INVALID_OPERATION); - ctx->setBufferData(target,size,data,usage); -} - -GL_API void GL_APIENTRY glBufferSubData( GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) { - GET_CTX() - SET_ERROR_IF(!ctx->isBindedBuffer(target),GL_INVALID_OPERATION); - SET_ERROR_IF(!GLEScmValidate::bufferTarget(target),GL_INVALID_ENUM); - SET_ERROR_IF(!ctx->setBufferSubData(target,offset,size,data),GL_INVALID_VALUE); -} - -GL_API void GL_APIENTRY glClear( GLbitfield mask) { - GET_CTX() - ctx->drawValidate(); - - ctx->dispatcher().glClear(mask); -} - -GL_API void GL_APIENTRY glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { - GET_CTX() - ctx->dispatcher().glClearColor(red,green,blue,alpha); -} - -GL_API void GL_APIENTRY glClearColorx( GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha) { - GET_CTX() - ctx->dispatcher().glClearColor(X2F(red),X2F(green),X2F(blue),X2F(alpha)); -} - - -GL_API void GL_APIENTRY glClearDepthf( GLclampf depth) { - GET_CTX() - ctx->dispatcher().glClearDepth(depth); -} - -GL_API void GL_APIENTRY glClearDepthx( GLclampx depth) { - GET_CTX() - ctx->dispatcher().glClearDepth(X2F(depth)); -} - -GL_API void GL_APIENTRY glClearStencil( GLint s) { - GET_CTX() - ctx->dispatcher().glClearStencil(s); -} - -GL_API void GL_APIENTRY glClientActiveTexture( GLenum texture) { - GET_CTX_CM() - SET_ERROR_IF(!GLEScmValidate::textureEnum(texture,ctx->getMaxTexUnits()),GL_INVALID_ENUM); - ctx->setClientActiveTexture(texture); - ctx->dispatcher().glClientActiveTexture(texture); - -} - -GL_API void GL_APIENTRY glClipPlanef( GLenum plane, const GLfloat *equation) { - GET_CTX() - GLdouble tmpEquation[4]; - - for(int i = 0; i < 4; i++) { - tmpEquation[i] = static_cast(equation[i]); - } - ctx->dispatcher().glClipPlane(plane,tmpEquation); -} - -GL_API void GL_APIENTRY glClipPlanex( GLenum plane, const GLfixed *equation) { - GET_CTX() - GLdouble tmpEquation[4]; - for(int i = 0; i < 4; i++) { - tmpEquation[i] = X2D(equation[i]); - } - ctx->dispatcher().glClipPlane(plane,tmpEquation); -} - -GL_API void GL_APIENTRY glColor4f( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { - GET_CTX() - ctx->dispatcher().glColor4f(red,green,blue,alpha); -} - -GL_API void GL_APIENTRY glColor4ub( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) { - GET_CTX() - ctx->dispatcher().glColor4ub(red,green,blue,alpha); -} - -GL_API void GL_APIENTRY glColor4x( GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) { - GET_CTX() - ctx->dispatcher().glColor4f(X2F(red),X2F(green),X2F(blue),X2F(alpha)); -} - -GL_API void GL_APIENTRY glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) { - GET_CTX() - ctx->dispatcher().glColorMask(red,green,blue,alpha); -} - -GL_API void GL_APIENTRY glColorPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::colorPointerParams(size,stride),GL_INVALID_VALUE); - SET_ERROR_IF(!GLEScmValidate::colorPointerType(type),GL_INVALID_ENUM); - ctx->setPointer(GL_COLOR_ARRAY,size,type,stride,pointer); -} - -GL_API void GL_APIENTRY glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) { - GET_CTX_CM() - SET_ERROR_IF(!GLEScmValidate::textureTargetEx(target),GL_INVALID_ENUM); - SET_ERROR_IF(!data,GL_INVALID_OPERATION); - - doCompressedTexImage2D(ctx, target, level, internalformat, - width, height, border, - imageSize, data, (void*)glTexImage2D); -} - -GL_API void GL_APIENTRY glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) { - GET_CTX_CM() - SET_ERROR_IF(!(GLEScmValidate::texCompImgFrmt(format) && GLEScmValidate::textureTargetEx(target)),GL_INVALID_ENUM); - SET_ERROR_IF(level < 0 || level > log2(ctx->getMaxTexSize()),GL_INVALID_VALUE) - SET_ERROR_IF(!data,GL_INVALID_OPERATION); - - GLenum uncompressedFrmt; - unsigned char* uncompressed = uncompressTexture(format,uncompressedFrmt,width,height,imageSize,data,level); - ctx->dispatcher().glTexSubImage2D(target,level,xoffset,yoffset,width,height,uncompressedFrmt,GL_UNSIGNED_BYTE,uncompressed); - delete uncompressed; -} - -GL_API void GL_APIENTRY glCopyTexImage2D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) { - GET_CTX() - SET_ERROR_IF(!(GLEScmValidate::pixelFrmt(ctx,internalformat) && GLEScmValidate::textureTargetEx(target)),GL_INVALID_ENUM); - SET_ERROR_IF(border != 0,GL_INVALID_VALUE); - ctx->dispatcher().glCopyTexImage2D(target,level,internalformat,x,y,width,height,border); -} - -GL_API void GL_APIENTRY glCopyTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::textureTargetEx(target),GL_INVALID_ENUM); - ctx->dispatcher().glCopyTexSubImage2D(target,level,xoffset,yoffset,x,y,width,height); -} - -GL_API void GL_APIENTRY glCullFace( GLenum mode) { - GET_CTX() - ctx->dispatcher().glCullFace(mode); -} - -GL_API void GL_APIENTRY glDeleteBuffers( GLsizei n, const GLuint *buffers) { - GET_CTX() - SET_ERROR_IF(n<0,GL_INVALID_VALUE); - if(ctx->shareGroup().Ptr()) { - for(int i=0; i < n; i++){ - ctx->shareGroup()->deleteName(VERTEXBUFFER,buffers[i]); - ctx->unbindBuffer(buffers[i]); - } - } -} - -GL_API void GL_APIENTRY glDeleteTextures( GLsizei n, const GLuint *textures) { - GET_CTX() - SET_ERROR_IF(n<0,GL_INVALID_VALUE); - if(ctx->shareGroup().Ptr()) { - for(int i=0; i < n; i++){ - if(textures[i] != 0) - { - TextureData* tData = getTextureData(textures[i]); - // delete the underlying OpenGL texture but only if this - // texture is not a target of EGLImage. - if (!tData || tData->sourceEGLImage == 0) { - const GLuint globalTextureName = ctx->shareGroup()->getGlobalName(TEXTURE,textures[i]); - ctx->dispatcher().glDeleteTextures(1,&globalTextureName); - } - ctx->shareGroup()->deleteName(TEXTURE,textures[i]); - - if(ctx->getBindedTexture(GL_TEXTURE_2D) == textures[i]) - ctx->setBindedTexture(GL_TEXTURE_2D,0); - if (ctx->getBindedTexture(GL_TEXTURE_CUBE_MAP) == textures[i]) - ctx->setBindedTexture(GL_TEXTURE_CUBE_MAP,0); - } - } - } -} - -GL_API void GL_APIENTRY glDepthFunc( GLenum func) { - GET_CTX() - ctx->dispatcher().glDepthFunc(func); -} - -GL_API void GL_APIENTRY glDepthMask( GLboolean flag) { - GET_CTX() - ctx->dispatcher().glDepthMask(flag); -} - -GL_API void GL_APIENTRY glDepthRangef( GLclampf zNear, GLclampf zFar) { - GET_CTX() - ctx->dispatcher().glDepthRange(zNear,zFar); -} - -GL_API void GL_APIENTRY glDepthRangex( GLclampx zNear, GLclampx zFar) { - GET_CTX() - ctx->dispatcher().glDepthRange(X2F(zNear),X2F(zFar)); -} - -GL_API void GL_APIENTRY glDisable( GLenum cap) { - GET_CTX() - if (cap==GL_TEXTURE_GEN_STR_OES) { - ctx->dispatcher().glDisable(GL_TEXTURE_GEN_S); - ctx->dispatcher().glDisable(GL_TEXTURE_GEN_T); - ctx->dispatcher().glDisable(GL_TEXTURE_GEN_R); - } - else ctx->dispatcher().glDisable(cap); - if (cap==GL_TEXTURE_2D || cap==GL_TEXTURE_CUBE_MAP_OES) - ctx->setTextureEnabled(cap,false); -} - -GL_API void GL_APIENTRY glDisableClientState( GLenum array) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::supportedArrays(array),GL_INVALID_ENUM) - - ctx->enableArr(array,false); - if(array != GL_POINT_SIZE_ARRAY_OES) ctx->dispatcher().glDisableClientState(array); -} - - -GL_API void GL_APIENTRY glDrawArrays( GLenum mode, GLint first, GLsizei count) { - GET_CTX_CM() - SET_ERROR_IF(count < 0,GL_INVALID_VALUE) - SET_ERROR_IF(!GLEScmValidate::drawMode(mode),GL_INVALID_ENUM) - - ctx->drawValidate(); - - if(!ctx->isArrEnabled(GL_VERTEX_ARRAY)) return; - - GLESConversionArrays tmpArrs; - ctx->setupArraysPointers(tmpArrs,first,count,0,NULL,true); - if(mode == GL_POINTS && ctx->isArrEnabled(GL_POINT_SIZE_ARRAY_OES)){ - ctx->drawPointsArrs(tmpArrs,first,count); - } - else - { - ctx->dispatcher().glDrawArrays(mode,first,count); - } -} - -GL_API void GL_APIENTRY glDrawElements( GLenum mode, GLsizei count, GLenum type, const GLvoid *elementsIndices) { - GET_CTX_CM() - SET_ERROR_IF(count < 0,GL_INVALID_VALUE) - SET_ERROR_IF((!GLEScmValidate::drawMode(mode) || !GLEScmValidate::drawType(type)),GL_INVALID_ENUM) - if(!ctx->isArrEnabled(GL_VERTEX_ARRAY)) return; - - ctx->drawValidate(); - - const GLvoid* indices = elementsIndices; - GLESConversionArrays tmpArrs; - if(ctx->isBindedBuffer(GL_ELEMENT_ARRAY_BUFFER)) { // if vbo is binded take the indices from the vbo - const unsigned char* buf = static_cast(ctx->getBindedBuffer(GL_ELEMENT_ARRAY_BUFFER)); - indices = buf + SafeUIntFromPointer(elementsIndices); - } - - ctx->setupArraysPointers(tmpArrs,0,count,type,indices,false); - if(mode == GL_POINTS && ctx->isArrEnabled(GL_POINT_SIZE_ARRAY_OES)){ - ctx->drawPointsElems(tmpArrs,count,type,indices); - } - else{ - ctx->dispatcher().glDrawElements(mode,count,type,indices); - } -} - -GL_API void GL_APIENTRY glEnable( GLenum cap) { - GET_CTX() - if (cap==GL_TEXTURE_GEN_STR_OES) { - ctx->dispatcher().glEnable(GL_TEXTURE_GEN_S); - ctx->dispatcher().glEnable(GL_TEXTURE_GEN_T); - ctx->dispatcher().glEnable(GL_TEXTURE_GEN_R); - } - else - ctx->dispatcher().glEnable(cap); - if (cap==GL_TEXTURE_2D || cap==GL_TEXTURE_CUBE_MAP_OES) - ctx->setTextureEnabled(cap,true); -} - -GL_API void GL_APIENTRY glEnableClientState( GLenum array) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::supportedArrays(array),GL_INVALID_ENUM) - - ctx->enableArr(array,true); - if(array != GL_POINT_SIZE_ARRAY_OES) ctx->dispatcher().glEnableClientState(array); -} - -GL_API void GL_APIENTRY glFinish( void) { - GET_CTX() - ctx->dispatcher().glFinish(); -} - -GL_API void GL_APIENTRY glFlush( void) { - GET_CTX() - ctx->dispatcher().glFlush(); -} - -GL_API void GL_APIENTRY glFogf( GLenum pname, GLfloat param) { - GET_CTX() - ctx->dispatcher().glFogf(pname,param); -} - -GL_API void GL_APIENTRY glFogfv( GLenum pname, const GLfloat *params) { - GET_CTX() - ctx->dispatcher().glFogfv(pname,params); -} - -GL_API void GL_APIENTRY glFogx( GLenum pname, GLfixed param) { - GET_CTX() - ctx->dispatcher().glFogf(pname,(pname == GL_FOG_MODE)? static_cast(param):X2F(param)); -} - -GL_API void GL_APIENTRY glFogxv( GLenum pname, const GLfixed *params) { - GET_CTX() - if(pname == GL_FOG_MODE) { - GLfloat tmpParam = static_cast(params[0]); - ctx->dispatcher().glFogfv(pname,&tmpParam); - } else { - GLfloat tmpParams[4]; - for(int i=0; i< 4; i++) { - tmpParams[i] = X2F(params[i]); - } - ctx->dispatcher().glFogfv(pname,tmpParams); - } - -} - -GL_API void GL_APIENTRY glFrontFace( GLenum mode) { - GET_CTX() - ctx->dispatcher().glFrontFace(mode); -} - -GL_API void GL_APIENTRY glFrustumf( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) { - GET_CTX() - ctx->dispatcher().glFrustum(left,right,bottom,top,zNear,zFar); -} - -GL_API void GL_APIENTRY glFrustumx( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) { - GET_CTX() - ctx->dispatcher().glFrustum(X2F(left),X2F(right),X2F(bottom),X2F(top),X2F(zNear),X2F(zFar)); -} - -GL_API void GL_APIENTRY glGenBuffers( GLsizei n, GLuint *buffers) { - GET_CTX() - SET_ERROR_IF(n<0,GL_INVALID_VALUE); - if(ctx->shareGroup().Ptr()) { - for(int i=0; ishareGroup()->genName(VERTEXBUFFER, 0, true); - //generating vbo object related to this buffer name - ctx->shareGroup()->setObjectData(VERTEXBUFFER,buffers[i],ObjectDataPtr(new GLESbuffer())); - } - } -} - -GL_API void GL_APIENTRY glGenTextures( GLsizei n, GLuint *textures) { - GET_CTX(); - if(ctx->shareGroup().Ptr()) { - for(int i=0; ishareGroup()->genName(TEXTURE, 0, true); - } - } -} - -GL_API void GL_APIENTRY glGetBooleanv( GLenum pname, GLboolean *params) { - GET_CTX() - - if(ctx->glGetBooleanv(pname, params)) - { - return; - } - - switch(pname) - { - case GL_FRAMEBUFFER_BINDING_OES: - case GL_RENDERBUFFER_BINDING_OES: - { - GLint name; - glGetIntegerv(pname,&name); - *params = name!=0 ? GL_TRUE: GL_FALSE; - } - break; - case GL_TEXTURE_GEN_STR_OES: - { - GLboolean state_s = GL_FALSE; - GLboolean state_t = GL_FALSE; - GLboolean state_r = GL_FALSE; - ctx->dispatcher().glGetBooleanv(GL_TEXTURE_GEN_S,&state_s); - ctx->dispatcher().glGetBooleanv(GL_TEXTURE_GEN_T,&state_t); - ctx->dispatcher().glGetBooleanv(GL_TEXTURE_GEN_R,&state_r); - *params = state_s && state_t && state_r ? GL_TRUE: GL_FALSE; - } - break; - case GL_NUM_COMPRESSED_TEXTURE_FORMATS: - *params = (GLboolean)getCompressedFormats(NULL); - break; - case GL_COMPRESSED_TEXTURE_FORMATS: - { - int nparams = getCompressedFormats(NULL); - if (nparams>0) { - int * iparams = new int[nparams]; - getCompressedFormats(iparams); - for (int i=0; idispatcher().glGetBooleanv(pname,params); - } -} - -GL_API void GL_APIENTRY glGetBufferParameteriv( GLenum target, GLenum pname, GLint *params) { - GET_CTX() - SET_ERROR_IF(!(GLEScmValidate::bufferTarget(target) && GLEScmValidate::bufferParam(pname)),GL_INVALID_ENUM); - SET_ERROR_IF(!ctx->isBindedBuffer(target),GL_INVALID_OPERATION); - switch(pname) { - case GL_BUFFER_SIZE: - ctx->getBufferSize(target,params); - break; - case GL_BUFFER_USAGE: - ctx->getBufferUsage(target,params); - break; - } - -} - -GL_API void GL_APIENTRY glGetClipPlanef( GLenum pname, GLfloat eqn[4]) { - GET_CTX() - GLdouble tmpEqn[4]; - - ctx->dispatcher().glGetClipPlane(pname,tmpEqn); - for(int i =0 ;i < 4; i++){ - eqn[i] = static_cast(tmpEqn[i]); - } -} - -GL_API void GL_APIENTRY glGetClipPlanex( GLenum pname, GLfixed eqn[4]) { - GET_CTX() - GLdouble tmpEqn[4]; - - ctx->dispatcher().glGetClipPlane(pname,tmpEqn); - for(int i =0 ;i < 4; i++){ - eqn[i] = F2X(tmpEqn[i]); - } -} - -GL_API void GL_APIENTRY glGetFixedv( GLenum pname, GLfixed *params) { - GET_CTX() - - if(ctx->glGetFixedv(pname, params)) - { - return; - } - - size_t nParams = glParamSize(pname); - GLfloat fParams[16]; - - switch(pname) - { - case GL_FRAMEBUFFER_BINDING_OES: - case GL_RENDERBUFFER_BINDING_OES: - case GL_TEXTURE_GEN_STR_OES: - glGetFloatv(pname,&fParams[0]); - break; - case GL_NUM_COMPRESSED_TEXTURE_FORMATS: - *params = I2X(getCompressedFormats(NULL)); - return; - break; - case GL_COMPRESSED_TEXTURE_FORMATS: - { - int nparams = getCompressedFormats(NULL); - if (nparams>0) { - int * iparams = new int[nparams]; - getCompressedFormats(iparams); - for (int i=0; idispatcher().glGetFloatv(pname,fParams); - } - - if (nParams) - { - for(size_t i =0 ; i < nParams;i++) { - params[i] = F2X(fParams[i]); - } - } -} - -GL_API void GL_APIENTRY glGetFloatv( GLenum pname, GLfloat *params) { - GET_CTX() - - if(ctx->glGetFloatv(pname, params)) - { - return; - } - - GLint i; - - switch (pname) { - case GL_FRAMEBUFFER_BINDING_OES: - case GL_RENDERBUFFER_BINDING_OES: - case GL_TEXTURE_GEN_STR_OES: - glGetIntegerv(pname,&i); - *params = (GLfloat)i; - break; - case GL_NUM_COMPRESSED_TEXTURE_FORMATS: - *params = (GLfloat)getCompressedFormats(NULL); - break; - case GL_COMPRESSED_TEXTURE_FORMATS: - { - int nparams = getCompressedFormats(NULL); - if (nparams>0) { - int * iparams = new int[nparams]; - getCompressedFormats(iparams); - for (int i=0; idispatcher().glGetFloatv(pname,params); - } -} - -GL_API void GL_APIENTRY glGetIntegerv( GLenum pname, GLint *params) { - GET_CTX() - - if(ctx->glGetIntegerv(pname, params)) - { - return; - } - - GLint i; - GLfloat f; - - switch(pname) - { - case GL_TEXTURE_GEN_STR_OES: - ctx->dispatcher().glGetIntegerv(GL_TEXTURE_GEN_S,¶ms[0]); - break; - case GL_FRAMEBUFFER_BINDING_OES: - if (ctx->shareGroup().Ptr()) { - ctx->dispatcher().glGetIntegerv(pname,&i); - *params = ctx->shareGroup()->getLocalName(FRAMEBUFFER,i); - } - break; - case GL_RENDERBUFFER_BINDING_OES: - if (ctx->shareGroup().Ptr()) { - ctx->dispatcher().glGetIntegerv(pname,&i); - *params = ctx->shareGroup()->getLocalName(RENDERBUFFER,i); - } - break; - case GL_NUM_COMPRESSED_TEXTURE_FORMATS: - *params = getCompressedFormats(NULL); - break; - case GL_COMPRESSED_TEXTURE_FORMATS: - getCompressedFormats(params); - break; - case GL_MAX_CLIP_PLANES: - ctx->dispatcher().glGetIntegerv(pname,params); - if(*params > 6) - { - // GLES spec requires only 6, and the ATI driver erronously - // returns 8 (although it supports only 6). This WAR is simple, - // compliant and good enough for developers. - *params = 6; - } - break; - case GL_ALPHA_TEST_REF: - // Both the ATI and nVidia OpenGL drivers return the wrong answer - // here. So return the right one. - ctx->dispatcher().glGetFloatv(pname,&f); - *params = (int)(f * (float)0x7fffffff); - break; - case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: - ctx->dispatcher().glGetIntegerv(pname,params); - if(*params > 16) - { - // GLES spec requires only 2, and the ATI driver erronously - // returns 32 (although it supports only 16). This WAR is simple, - // compliant and good enough for developers. - *params = 16; - } - break; - - default: - ctx->dispatcher().glGetIntegerv(pname,params); - } -} - -GL_API void GL_APIENTRY glGetLightfv( GLenum light, GLenum pname, GLfloat *params) { - GET_CTX() - ctx->dispatcher().glGetLightfv(light,pname,params); -} - -GL_API void GL_APIENTRY glGetLightxv( GLenum light, GLenum pname, GLfixed *params) { - GET_CTX() - GLfloat tmpParams[4]; - - ctx->dispatcher().glGetLightfv(light,pname,tmpParams); - switch (pname){ - case GL_AMBIENT: - case GL_DIFFUSE: - case GL_SPECULAR: - case GL_POSITION: - params[3] = F2X(tmpParams[3]); - case GL_SPOT_DIRECTION: - params[2] = F2X(tmpParams[2]); - case GL_SPOT_EXPONENT: - case GL_SPOT_CUTOFF: - case GL_CONSTANT_ATTENUATION: - case GL_LINEAR_ATTENUATION: - case GL_QUADRATIC_ATTENUATION: - params[1] = F2X(tmpParams[1]); - break; - default:{ - ctx->setGLerror(GL_INVALID_ENUM); - return; - } - - } - params[0] = F2X(tmpParams[0]); -} - -GL_API void GL_APIENTRY glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params) { - GET_CTX() - ctx->dispatcher().glGetMaterialfv(face,pname,params); -} - -GL_API void GL_APIENTRY glGetMaterialxv( GLenum face, GLenum pname, GLfixed *params) { - GET_CTX() - GLfloat tmpParams[4]; - ctx->dispatcher().glGetMaterialfv(face,pname,tmpParams); - switch(pname){ - case GL_AMBIENT: - case GL_DIFFUSE: - case GL_SPECULAR: - case GL_EMISSION: - case GL_AMBIENT_AND_DIFFUSE: - params[3] = tmpParams[3]; - params[2] = tmpParams[2]; - params[1] = tmpParams[1]; - case GL_SHININESS: - params[0] = tmpParams[0]; - break; - default:{ - ctx->setGLerror(GL_INVALID_ENUM); - return; - } - } -} - -GL_API void GL_APIENTRY glGetPointerv( GLenum pname, void **params) { - GET_CTX() - const GLESpointer* p = ctx->getPointer(pname); - if(p) { - if(p->isVBO()) - { - *params = SafePointerFromUInt(p->getBufferOffset()); - }else{ - *params = const_cast(p->getArrayData()); - } - } else { - ctx->setGLerror(GL_INVALID_ENUM); - } - -} - -GL_API void GL_APIENTRY glGetTexEnvfv( GLenum env, GLenum pname, GLfloat *params) { - GET_CTX() - ctx->dispatcher().glGetTexEnvfv(env,pname,params); -} - -GL_API void GL_APIENTRY glGetTexEnviv( GLenum env, GLenum pname, GLint *params) { - GET_CTX() - ctx->dispatcher().glGetTexEnviv(env,pname,params); -} - -GL_API void GL_APIENTRY glGetTexEnvxv( GLenum env, GLenum pname, GLfixed *params) { - GET_CTX() - GLfloat tmpParams[4]; - - ctx->dispatcher().glGetTexEnvfv(env,pname,tmpParams); - if(pname == GL_TEXTURE_ENV_MODE) { - params[0] = static_cast(tmpParams[0]); - } else { - for(int i=0 ; i < 4 ; i++) - params[i] = F2X(tmpParams[i]); - } -} - -GL_API void GL_APIENTRY glGetTexParameterfv( GLenum target, GLenum pname, GLfloat *params) { - GET_CTX() - if (pname==GL_TEXTURE_CROP_RECT_OES) { - TextureData *texData = getTextureTargetData(target); - SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION); - for (int i=0;i<4;++i) - params[i] = texData->crop_rect[i]; - } - else { - ctx->dispatcher().glGetTexParameterfv(target,pname,params); - } -} - -GL_API void GL_APIENTRY glGetTexParameteriv( GLenum target, GLenum pname, GLint *params) { - GET_CTX() - if (pname==GL_TEXTURE_CROP_RECT_OES) { - TextureData *texData = getTextureTargetData(target); - SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION); - for (int i=0;i<4;++i) - params[i] = texData->crop_rect[i]; - } - else { - ctx->dispatcher().glGetTexParameteriv(target,pname,params); - } -} - -GL_API void GL_APIENTRY glGetTexParameterxv( GLenum target, GLenum pname, GLfixed *params) { - GET_CTX() - if (pname==GL_TEXTURE_CROP_RECT_OES) { - TextureData *texData = getTextureTargetData(target); - SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION); - for (int i=0;i<4;++i) - params[i] = F2X(texData->crop_rect[i]); - } - else { - GLfloat tmpParam; - ctx->dispatcher().glGetTexParameterfv(target,pname,&tmpParam); - params[0] = static_cast(tmpParam); - } -} - -GL_API void GL_APIENTRY glHint( GLenum target, GLenum mode) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::hintTargetMode(target,mode),GL_INVALID_ENUM); - ctx->dispatcher().glHint(target,mode); -} - -GL_API void GL_APIENTRY glLightModelf( GLenum pname, GLfloat param) { - GET_CTX() - ctx->dispatcher().glLightModelf(pname,param); -} - -GL_API void GL_APIENTRY glLightModelfv( GLenum pname, const GLfloat *params) { - GET_CTX() - ctx->dispatcher().glLightModelfv(pname,params); -} - -GL_API void GL_APIENTRY glLightModelx( GLenum pname, GLfixed param) { - GET_CTX() - GLfloat tmpParam = static_cast(param); - ctx->dispatcher().glLightModelf(pname,tmpParam); -} - -GL_API void GL_APIENTRY glLightModelxv( GLenum pname, const GLfixed *params) { - GET_CTX() - GLfloat tmpParams[4]; - if(pname == GL_LIGHT_MODEL_TWO_SIDE) { - tmpParams[0] = X2F(params[0]); - } else if (pname == GL_LIGHT_MODEL_AMBIENT) { - for(int i=0;i<4;i++) { - tmpParams[i] = X2F(params[i]); - } - } - - ctx->dispatcher().glLightModelfv(pname,tmpParams); -} - -GL_API void GL_APIENTRY glLightf( GLenum light, GLenum pname, GLfloat param) { - GET_CTX() - ctx->dispatcher().glLightf(light,pname,param); -} - -GL_API void GL_APIENTRY glLightfv( GLenum light, GLenum pname, const GLfloat *params) { - GET_CTX() - ctx->dispatcher().glLightfv(light,pname,params); -} - -GL_API void GL_APIENTRY glLightx( GLenum light, GLenum pname, GLfixed param) { - GET_CTX() - ctx->dispatcher().glLightf(light,pname,X2F(param)); -} - -GL_API void GL_APIENTRY glLightxv( GLenum light, GLenum pname, const GLfixed *params) { - GET_CTX() - GLfloat tmpParams[4]; - - switch (pname) { - case GL_AMBIENT: - case GL_DIFFUSE: - case GL_SPECULAR: - case GL_EMISSION: - case GL_POSITION: - tmpParams[3] = X2F(params[3]); - case GL_SPOT_DIRECTION: - tmpParams[2] = X2F(params[2]); - tmpParams[1] = X2F(params[1]); - case GL_SPOT_EXPONENT: - case GL_SPOT_CUTOFF: - case GL_CONSTANT_ATTENUATION: - case GL_LINEAR_ATTENUATION: - case GL_QUADRATIC_ATTENUATION: - tmpParams[0] = X2F(params[0]); - break; - default: { - ctx->setGLerror(GL_INVALID_ENUM); - return; - } - } - ctx->dispatcher().glLightfv(light,pname,tmpParams); -} - -GL_API void GL_APIENTRY glLineWidth( GLfloat width) { - GET_CTX() - ctx->dispatcher().glLineWidth(width); -} - -GL_API void GL_APIENTRY glLineWidthx( GLfixed width) { - GET_CTX() - ctx->dispatcher().glLineWidth(X2F(width)); -} - -GL_API void GL_APIENTRY glLoadIdentity( void) { - GET_CTX() - ctx->dispatcher().glLoadIdentity(); -} - -GL_API void GL_APIENTRY glLoadMatrixf( const GLfloat *m) { - GET_CTX() - ctx->dispatcher().glLoadMatrixf(m); -} - -GL_API void GL_APIENTRY glLoadMatrixx( const GLfixed *m) { - GET_CTX() - GLfloat mat[16]; - for(int i=0; i< 16 ; i++) { - mat[i] = X2F(m[i]); - } - ctx->dispatcher().glLoadMatrixf(mat); -} - -GL_API void GL_APIENTRY glLogicOp( GLenum opcode) { - GET_CTX() - ctx->dispatcher().glLogicOp(opcode); -} - -GL_API void GL_APIENTRY glMaterialf( GLenum face, GLenum pname, GLfloat param) { - GET_CTX() - ctx->dispatcher().glMaterialf(face,pname,param); -} - -GL_API void GL_APIENTRY glMaterialfv( GLenum face, GLenum pname, const GLfloat *params) { - GET_CTX() - ctx->dispatcher().glMaterialfv(face,pname,params); -} - -GL_API void GL_APIENTRY glMaterialx( GLenum face, GLenum pname, GLfixed param) { - GET_CTX() - ctx->dispatcher().glMaterialf(face,pname,X2F(param)); -} - -GL_API void GL_APIENTRY glMaterialxv( GLenum face, GLenum pname, const GLfixed *params) { - GET_CTX() - GLfloat tmpParams[4]; - - for(int i=0; i< 4; i++) { - tmpParams[i] = X2F(params[i]); - } - ctx->dispatcher().glMaterialfv(face,pname,tmpParams); -} - -GL_API void GL_APIENTRY glMatrixMode( GLenum mode) { - GET_CTX() - ctx->dispatcher().glMatrixMode(mode); -} - -GL_API void GL_APIENTRY glMultMatrixf( const GLfloat *m) { - GET_CTX() - ctx->dispatcher().glMultMatrixf(m); -} - -GL_API void GL_APIENTRY glMultMatrixx( const GLfixed *m) { - GET_CTX() - GLfloat mat[16]; - for(int i=0; i< 16 ; i++) { - mat[i] = X2F(m[i]); - } - ctx->dispatcher().glMultMatrixf(mat); -} - -GL_API void GL_APIENTRY glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) { - GET_CTX_CM() - SET_ERROR_IF(!GLEScmValidate::textureEnum(target,ctx->getMaxTexUnits()),GL_INVALID_ENUM); - ctx->dispatcher().glMultiTexCoord4f(target,s,t,r,q); -} - -GL_API void GL_APIENTRY glMultiTexCoord4x( GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q) { - GET_CTX_CM() - SET_ERROR_IF(!GLEScmValidate::textureEnum(target,ctx->getMaxTexUnits()),GL_INVALID_ENUM); - ctx->dispatcher().glMultiTexCoord4f(target,X2F(s),X2F(t),X2F(r),X2F(q)); -} - -GL_API void GL_APIENTRY glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz) { - GET_CTX() - ctx->dispatcher().glNormal3f(nx,ny,nz); -} - -GL_API void GL_APIENTRY glNormal3x( GLfixed nx, GLfixed ny, GLfixed nz) { - GET_CTX() - ctx->dispatcher().glNormal3f(X2F(nx),X2F(ny),X2F(nz)); -} - -GL_API void GL_APIENTRY glNormalPointer( GLenum type, GLsizei stride, const GLvoid *pointer) { - GET_CTX() - SET_ERROR_IF(stride < 0,GL_INVALID_VALUE); - SET_ERROR_IF(!GLEScmValidate::normalPointerType(type),GL_INVALID_ENUM); - ctx->setPointer(GL_NORMAL_ARRAY,3,type,stride,pointer);//3 normal verctor -} - -GL_API void GL_APIENTRY glOrthof( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) { - GET_CTX() - ctx->dispatcher().glOrtho(left,right,bottom,top,zNear,zFar); -} - -GL_API void GL_APIENTRY glOrthox( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) { - GET_CTX() - ctx->dispatcher().glOrtho(X2F(left),X2F(right),X2F(bottom),X2F(top),X2F(zNear),X2F(zFar)); -} - -GL_API void GL_APIENTRY glPixelStorei( GLenum pname, GLint param) { - GET_CTX() - SET_ERROR_IF(!(pname == GL_PACK_ALIGNMENT || pname == GL_UNPACK_ALIGNMENT),GL_INVALID_ENUM); - SET_ERROR_IF(!((param==1)||(param==2)||(param==4)||(param==8)), GL_INVALID_VALUE); - ctx->setUnpackAlignment(param); - ctx->dispatcher().glPixelStorei(pname,param); -} - -GL_API void GL_APIENTRY glPointParameterf( GLenum pname, GLfloat param) { - GET_CTX() - ctx->dispatcher().glPointParameterf(pname,param); -} - -GL_API void GL_APIENTRY glPointParameterfv( GLenum pname, const GLfloat *params) { - GET_CTX() - ctx->dispatcher().glPointParameterfv(pname,params); -} - -GL_API void GL_APIENTRY glPointParameterx( GLenum pname, GLfixed param) -{ - GET_CTX() - ctx->dispatcher().glPointParameterf(pname,X2F(param)); -} - -GL_API void GL_APIENTRY glPointParameterxv( GLenum pname, const GLfixed *params) { - GET_CTX() - - GLfloat tmpParam = X2F(*params) ; - ctx->dispatcher().glPointParameterfv(pname,&tmpParam); -} - -GL_API void GL_APIENTRY glPointSize( GLfloat size) { - GET_CTX() - ctx->dispatcher().glPointSize(size); -} - -GL_API void GL_APIENTRY glPointSizePointerOES( GLenum type, GLsizei stride, const GLvoid *pointer) { - GET_CTX() - SET_ERROR_IF(stride < 0,GL_INVALID_VALUE); - SET_ERROR_IF(!GLEScmValidate::pointPointerType(type),GL_INVALID_ENUM); - ctx->setPointer(GL_POINT_SIZE_ARRAY_OES,1,type,stride,pointer); -} - -GL_API void GL_APIENTRY glPointSizex( GLfixed size) { - GET_CTX() - ctx->dispatcher().glPointSize(X2F(size)); -} - -GL_API void GL_APIENTRY glPolygonOffset( GLfloat factor, GLfloat units) { - GET_CTX() - ctx->dispatcher().glPolygonOffset(factor,units); -} - -GL_API void GL_APIENTRY glPolygonOffsetx( GLfixed factor, GLfixed units) { - GET_CTX() - ctx->dispatcher().glPolygonOffset(X2F(factor),X2F(units)); -} - -GL_API void GL_APIENTRY glPopMatrix(void) { - GET_CTX() - ctx->dispatcher().glPopMatrix(); -} - -GL_API void GL_APIENTRY glPushMatrix(void) { - GET_CTX() - ctx->dispatcher().glPushMatrix(); -} - -GL_API void GL_APIENTRY glReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) { - GET_CTX() - SET_ERROR_IF(!(GLEScmValidate::pixelFrmt(ctx,format) && GLEScmValidate::pixelType(ctx,type)),GL_INVALID_ENUM); - SET_ERROR_IF(!(GLEScmValidate::pixelOp(format,type)),GL_INVALID_OPERATION); - - ctx->dispatcher().glReadPixels(x,y,width,height,format,type,pixels); -} - -GL_API void GL_APIENTRY glRotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z) { - GET_CTX() - ctx->dispatcher().glRotatef(angle,x,y,z); -} - -GL_API void GL_APIENTRY glRotatex( GLfixed angle, GLfixed x, GLfixed y, GLfixed z) { - GET_CTX() - ctx->dispatcher().glRotatef(angle,X2F(x),X2F(y),X2F(z)); -} - -GL_API void GL_APIENTRY glSampleCoverage( GLclampf value, GLboolean invert) { - GET_CTX() - ctx->dispatcher().glSampleCoverage(value,invert); -} - -GL_API void GL_APIENTRY glSampleCoveragex( GLclampx value, GLboolean invert) { - GET_CTX() - ctx->dispatcher().glSampleCoverage(X2F(value),invert); -} - -GL_API void GL_APIENTRY glScalef( GLfloat x, GLfloat y, GLfloat z) { - GET_CTX() - ctx->dispatcher().glScalef(x,y,z); -} - -GL_API void GL_APIENTRY glScalex( GLfixed x, GLfixed y, GLfixed z) { - GET_CTX() - ctx->dispatcher().glScalef(X2F(x),X2F(y),X2F(z)); -} - -GL_API void GL_APIENTRY glScissor( GLint x, GLint y, GLsizei width, GLsizei height) { - GET_CTX() - ctx->dispatcher().glScissor(x,y,width,height); -} - -GL_API void GL_APIENTRY glShadeModel( GLenum mode) { - GET_CTX() - ctx->dispatcher().glShadeModel(mode); -} - -GL_API void GL_APIENTRY glStencilFunc( GLenum func, GLint ref, GLuint mask) { - GET_CTX() - ctx->dispatcher().glStencilFunc(func,ref,mask); -} - -GL_API void GL_APIENTRY glStencilMask( GLuint mask) { - GET_CTX() - ctx->dispatcher().glStencilMask(mask); -} - -GL_API void GL_APIENTRY glStencilOp( GLenum fail, GLenum zfail, GLenum zpass) { - GET_CTX() - SET_ERROR_IF(!(GLEScmValidate::stencilOp(fail) && GLEScmValidate::stencilOp(zfail) && GLEScmValidate::stencilOp(zpass)),GL_INVALID_ENUM); - ctx->dispatcher().glStencilOp(fail,zfail,zpass); -} - -GL_API void GL_APIENTRY glTexCoordPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texCoordPointerParams(size,stride),GL_INVALID_VALUE); - SET_ERROR_IF(!GLEScmValidate::texCoordPointerType(type),GL_INVALID_ENUM); - ctx->setPointer(GL_TEXTURE_COORD_ARRAY,size,type,stride,pointer); -} - -GL_API void GL_APIENTRY glTexEnvf( GLenum target, GLenum pname, GLfloat param) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texEnv(target,pname),GL_INVALID_ENUM); - ctx->dispatcher().glTexEnvf(target,pname,param); -} - -GL_API void GL_APIENTRY glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texEnv(target,pname),GL_INVALID_ENUM); - ctx->dispatcher().glTexEnvfv(target,pname,params); -} - -GL_API void GL_APIENTRY glTexEnvi( GLenum target, GLenum pname, GLint param) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texEnv(target,pname),GL_INVALID_ENUM); - ctx->dispatcher().glTexEnvi(target,pname,param); -} - -GL_API void GL_APIENTRY glTexEnviv( GLenum target, GLenum pname, const GLint *params) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texEnv(target,pname),GL_INVALID_ENUM); - ctx->dispatcher().glTexEnviv(target,pname,params); -} - -GL_API void GL_APIENTRY glTexEnvx( GLenum target, GLenum pname, GLfixed param) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texEnv(target,pname),GL_INVALID_ENUM); - GLfloat tmpParam = static_cast(param); - ctx->dispatcher().glTexEnvf(target,pname,tmpParam); -} - -GL_API void GL_APIENTRY glTexEnvxv( GLenum target, GLenum pname, const GLfixed *params) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texEnv(target,pname),GL_INVALID_ENUM); - - GLfloat tmpParams[4]; - if(pname == GL_TEXTURE_ENV_COLOR) { - for(int i =0;i<4;i++) { - tmpParams[i] = X2F(params[i]); - } - } else { - tmpParams[0] = static_cast(params[0]); - } - ctx->dispatcher().glTexEnvfv(target,pname,tmpParams); -} - -GL_API void GL_APIENTRY glTexImage2D( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) { - GET_CTX() - - SET_ERROR_IF(!(GLEScmValidate::textureTargetEx(target) && - GLEScmValidate::pixelFrmt(ctx,internalformat) && - GLEScmValidate::pixelFrmt(ctx,format) && - GLEScmValidate::pixelType(ctx,type)),GL_INVALID_ENUM); - - SET_ERROR_IF(!(GLEScmValidate::pixelOp(format,type) && internalformat == ((GLint)format)),GL_INVALID_OPERATION); - - bool needAutoMipmap = false; - - if (ctx->shareGroup().Ptr()){ - TextureData *texData = getTextureTargetData(target); - SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION); - if(texData) { - texData->width = width; - texData->height = height; - texData->border = border; - texData->internalFormat = internalformat; - texData->target = target; - - if (texData->sourceEGLImage != 0) { - // - // This texture was a target of EGLImage, - // but now it is re-defined so we need to detach - // from the EGLImage and re-generate global texture name - // for it. - // - if (texData->eglImageDetach) { - (*texData->eglImageDetach)(texData->sourceEGLImage); - } - unsigned int tex = ctx->getBindedTexture(target); - ctx->shareGroup()->replaceGlobalName(TEXTURE, - tex, - texData->oldGlobal); - ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, texData->oldGlobal); - texData->sourceEGLImage = 0; - texData->oldGlobal = 0; - } - - needAutoMipmap = texData->requiresAutoMipmap; - } - } - - ctx->dispatcher().glTexImage2D(target,level, - internalformat,width,height, - border,format,type,pixels); - - if(needAutoMipmap) - { - ctx->dispatcher().glGenerateMipmapEXT(target); - } -} - -static bool handleMipmapGeneration(GLenum target, GLenum pname, bool param) -{ - GET_CTX_RET(false) - - if(pname == GL_GENERATE_MIPMAP && !ctx->isAutoMipmapSupported()) - { - TextureData *texData = getTextureTargetData(target); - if(texData) - { - texData->requiresAutoMipmap = param; - } - return true; - } - - return false; -} - -GL_API void GL_APIENTRY glTexParameterf( GLenum target, GLenum pname, GLfloat param) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texParams(target,pname),GL_INVALID_ENUM); - - if(handleMipmapGeneration(target, pname, (bool)param)) - return; - - ctx->dispatcher().glTexParameterf(target,pname,param); -} - -GL_API void GL_APIENTRY glTexParameterfv( GLenum target, GLenum pname, const GLfloat *params) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texParams(target,pname),GL_INVALID_ENUM); - - if(handleMipmapGeneration(target, pname, (bool)(*params))) - return; - - if (pname==GL_TEXTURE_CROP_RECT_OES) { - TextureData *texData = getTextureTargetData(target); - SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION); - for (int i=0;i<4;++i) - texData->crop_rect[i] = params[i]; - } - else { - ctx->dispatcher().glTexParameterfv(target,pname,params); - } -} - -GL_API void GL_APIENTRY glTexParameteri( GLenum target, GLenum pname, GLint param) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texParams(target,pname),GL_INVALID_ENUM); - - if(handleMipmapGeneration(target, pname, (bool)param)) - return; - - ctx->dispatcher().glTexParameteri(target,pname,param); -} - -GL_API void GL_APIENTRY glTexParameteriv( GLenum target, GLenum pname, const GLint *params) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texParams(target,pname),GL_INVALID_ENUM); - - if(handleMipmapGeneration(target, pname, (bool)(*params))) - return; - - if (pname==GL_TEXTURE_CROP_RECT_OES) { - TextureData *texData = getTextureTargetData(target); - SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION); - for (int i=0;i<4;++i) - texData->crop_rect[i] = params[i]; - } - else { - ctx->dispatcher().glTexParameteriv(target,pname,params); - } -} - -GL_API void GL_APIENTRY glTexParameterx( GLenum target, GLenum pname, GLfixed param) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texParams(target,pname),GL_INVALID_ENUM); - - if(handleMipmapGeneration(target, pname, (bool)param)) - return; - - ctx->dispatcher().glTexParameterf(target,pname,static_cast(param)); -} - -GL_API void GL_APIENTRY glTexParameterxv( GLenum target, GLenum pname, const GLfixed *params) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texParams(target,pname),GL_INVALID_ENUM); - - if(handleMipmapGeneration(target, pname, (bool)(*params))) - return; - - if (pname==GL_TEXTURE_CROP_RECT_OES) { - TextureData *texData = getTextureTargetData(target); - SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION); - for (int i=0;i<4;++i) - texData->crop_rect[i] = X2F(params[i]); - } - else { - GLfloat param = static_cast(params[0]); - ctx->dispatcher().glTexParameterfv(target,pname,¶m); - } -} - -GL_API void GL_APIENTRY glTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) { - GET_CTX() - SET_ERROR_IF(!(GLEScmValidate::textureTargetEx(target) && - GLEScmValidate::pixelFrmt(ctx,format)&& - GLEScmValidate::pixelType(ctx,type)),GL_INVALID_ENUM); - SET_ERROR_IF(!GLEScmValidate::pixelOp(format,type),GL_INVALID_OPERATION); - SET_ERROR_IF(!pixels,GL_INVALID_OPERATION); - - ctx->dispatcher().glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels); - - if (ctx->shareGroup().Ptr()){ - TextureData *texData = getTextureTargetData(target); - SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION); - if(texData && texData->requiresAutoMipmap) - { - ctx->dispatcher().glGenerateMipmapEXT(target); - } - } -} - -GL_API void GL_APIENTRY glTranslatef( GLfloat x, GLfloat y, GLfloat z) { - GET_CTX() - ctx->dispatcher().glTranslatef(x,y,z); -} - -GL_API void GL_APIENTRY glTranslatex( GLfixed x, GLfixed y, GLfixed z) { - GET_CTX() - ctx->dispatcher().glTranslatef(X2F(x),X2F(y),X2F(z)); -} - -GL_API void GL_APIENTRY glVertexPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::vertexPointerParams(size,stride),GL_INVALID_VALUE); - SET_ERROR_IF(!GLEScmValidate::vertexPointerType(type),GL_INVALID_ENUM); - ctx->setPointer(GL_VERTEX_ARRAY,size,type,stride,pointer); -} - -GL_API void GL_APIENTRY glViewport( GLint x, GLint y, GLsizei width, GLsizei height) { - GET_CTX() - ctx->dispatcher().glViewport(x,y,width,height); -} - -GL_API void GL_APIENTRY glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image) -{ - GET_CTX(); - SET_ERROR_IF(!GLEScmValidate::textureTargetLimited(target),GL_INVALID_ENUM); - unsigned int imagehndl = SafeUIntFromPointer(image); - EglImage *img = s_eglIface->eglAttachEGLImage(imagehndl); - if (img) { - // Create the texture object in the underlying EGL implementation, - // flag to the OpenGL layer to skip the image creation and map the - // current binded texture object to the existing global object. - if (ctx->shareGroup().Ptr()) { - ObjectLocalName tex = TextureLocalName(target,ctx->getBindedTexture(target)); - unsigned int oldGlobal = ctx->shareGroup()->getGlobalName(TEXTURE, tex); - // Delete old texture object but only if it is not a target of a EGLImage - if (oldGlobal) { - TextureData* oldTexData = getTextureData(tex); - if (!oldTexData || oldTexData->sourceEGLImage == 0) { - ctx->dispatcher().glDeleteTextures(1, &oldGlobal); - } - } - // replace mapping and bind the new global object - ctx->shareGroup()->replaceGlobalName(TEXTURE, tex,img->globalTexName); - ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, img->globalTexName); - TextureData *texData = getTextureTargetData(target); - SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION); - texData->width = img->width; - texData->height = img->height; - texData->border = img->border; - texData->internalFormat = img->internalFormat; - texData->sourceEGLImage = imagehndl; - texData->eglImageDetach = s_eglIface->eglDetachEGLImage; - texData->oldGlobal = oldGlobal; - } - } -} - -GL_API void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image) -{ - GET_CTX(); - SET_ERROR_IF(target != GL_RENDERBUFFER_OES,GL_INVALID_ENUM); - unsigned int imagehndl = SafeUIntFromPointer(image); - EglImage *img = s_eglIface->eglAttachEGLImage(imagehndl); - SET_ERROR_IF(!img,GL_INVALID_VALUE); - SET_ERROR_IF(!ctx->shareGroup().Ptr(),GL_INVALID_OPERATION); - - // Get current bounded renderbuffer - // raise INVALID_OPERATIOn if no renderbuffer is bounded - GLuint rb = ctx->getRenderbufferBinding(); - SET_ERROR_IF(rb == 0,GL_INVALID_OPERATION); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(RENDERBUFFER,rb); - RenderbufferData *rbData = (RenderbufferData *)objData.Ptr(); - SET_ERROR_IF(!rbData,GL_INVALID_OPERATION); - - // - // flag in the renderbufferData that it is an eglImage target - // - rbData->sourceEGLImage = imagehndl; - rbData->eglImageDetach = s_eglIface->eglDetachEGLImage; - rbData->eglImageGlobalTexName = img->globalTexName; - - // - // if the renderbuffer is attached to a framebuffer - // change the framebuffer attachment in the undelying OpenGL - // to point to the eglImage texture object. - // - if (rbData->attachedFB) { - // update the framebuffer attachment point to the - // underlying texture of the img - GLuint prevFB = ctx->getFramebufferBinding(); - if (prevFB != rbData->attachedFB) { - ctx->dispatcher().glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, - rbData->attachedFB); - } - ctx->dispatcher().glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, - rbData->attachedPoint, - GL_TEXTURE_2D, - img->globalTexName,0); - if (prevFB != rbData->attachedFB) { - ctx->dispatcher().glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, - prevFB); - } - } -} - -/* GL_OES_blend_subtract*/ -GL_API void GL_APIENTRY glBlendEquationOES(GLenum mode) { - GET_CTX() - SET_ERROR_IF(!(GLEScmValidate::blendEquationMode(mode)), GL_INVALID_ENUM); - ctx->dispatcher().glBlendEquation(mode); -} - -/* GL_OES_blend_equation_separate */ -GL_API void GL_APIENTRY glBlendEquationSeparateOES (GLenum modeRGB, GLenum modeAlpha) { - GET_CTX() - SET_ERROR_IF(!(GLEScmValidate::blendEquationMode(modeRGB) && GLEScmValidate::blendEquationMode(modeAlpha)), GL_INVALID_ENUM); - ctx->dispatcher().glBlendEquationSeparate(modeRGB,modeAlpha); -} - -/* GL_OES_blend_func_separate */ -GL_API void GL_APIENTRY glBlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::blendSrc(srcRGB) || !GLEScmValidate::blendDst(dstRGB) || - !GLEScmValidate::blendSrc(srcAlpha) || ! GLEScmValidate::blendDst(dstAlpha) ,GL_INVALID_ENUM); - ctx->dispatcher().glBlendFuncSeparate(srcRGB,dstRGB,srcAlpha,dstAlpha); -} - -/* GL_OES_framebuffer_object */ -GL_API GLboolean GL_APIENTRY glIsRenderbufferOES(GLuint renderbuffer) { - GET_CTX_RET(GL_FALSE) - RET_AND_SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION,GL_FALSE); - if(renderbuffer && ctx->shareGroup().Ptr()){ - return ctx->shareGroup()->isObject(RENDERBUFFER,renderbuffer) ? GL_TRUE :GL_FALSE; - } - return ctx->dispatcher().glIsRenderbufferEXT(renderbuffer); -} - -GL_API void GLAPIENTRY glBindRenderbufferOES(GLenum target, GLuint renderbuffer) { - GET_CTX() - SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION); - SET_ERROR_IF(!GLEScmValidate::renderbufferTarget(target),GL_INVALID_ENUM); - - //if buffer wasn't generated before,generate one - if(renderbuffer && ctx->shareGroup().Ptr() && !ctx->shareGroup()->isObject(RENDERBUFFER,renderbuffer)){ - ctx->shareGroup()->genName(RENDERBUFFER,renderbuffer); - ctx->shareGroup()->setObjectData(RENDERBUFFER, - renderbuffer, - ObjectDataPtr(new RenderbufferData())); - } - - int globalBufferName = (renderbuffer != 0) ? ctx->shareGroup()->getGlobalName(RENDERBUFFER,renderbuffer) : 0; - ctx->dispatcher().glBindRenderbufferEXT(target,globalBufferName); - - // update renderbuffer binding state - ctx->setRenderbufferBinding(renderbuffer); -} - -GL_API void GLAPIENTRY glDeleteRenderbuffersOES(GLsizei n, const GLuint *renderbuffers) { - GET_CTX() - SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION); - for (int i=0;ishareGroup()->getGlobalName(RENDERBUFFER,renderbuffers[i]); - ctx->dispatcher().glDeleteRenderbuffersEXT(1,&globalBufferName); - } -} - -GL_API void GLAPIENTRY glGenRenderbuffersOES(GLsizei n, GLuint *renderbuffers) { - GET_CTX() - SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION); - SET_ERROR_IF(n<0,GL_INVALID_VALUE); - if(ctx->shareGroup().Ptr()) { - for(int i=0; ishareGroup()->genName(RENDERBUFFER, 0, true); - ctx->shareGroup()->setObjectData(RENDERBUFFER, - renderbuffers[i], - ObjectDataPtr(new RenderbufferData())); - } - } -} - -GL_API void GLAPIENTRY glRenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height){ - GET_CTX() - SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION); - SET_ERROR_IF(!GLEScmValidate::renderbufferTarget(target) || !GLEScmValidate::renderbufferInternalFrmt(ctx,internalformat) ,GL_INVALID_ENUM); - if (internalformat==GL_RGB565_OES) //RGB565 not supported by GL - internalformat = GL_RGB8_OES; - - // Get current bounded renderbuffer - // raise INVALID_OPERATIOn if no renderbuffer is bounded - GLuint rb = ctx->getRenderbufferBinding(); - SET_ERROR_IF(rb == 0,GL_INVALID_OPERATION); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(RENDERBUFFER,rb); - RenderbufferData *rbData = (RenderbufferData *)objData.Ptr(); - SET_ERROR_IF(!rbData,GL_INVALID_OPERATION); - - // - // if the renderbuffer was an eglImage target, detach from - // the eglImage. - // - if (rbData->sourceEGLImage != 0) { - if (rbData->eglImageDetach) { - (*rbData->eglImageDetach)(rbData->sourceEGLImage); - } - rbData->sourceEGLImage = 0; - rbData->eglImageGlobalTexName = 0; - } - - ctx->dispatcher().glRenderbufferStorageEXT(target,internalformat,width,height); -} - -GL_API void GLAPIENTRY glGetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params) { - GET_CTX() - SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION); - SET_ERROR_IF(!GLEScmValidate::renderbufferTarget(target) || !GLEScmValidate::renderbufferParams(pname) ,GL_INVALID_ENUM); - - // - // If this is a renderbuffer which is eglimage's target, we - // should query the underlying eglimage's texture object instead. - // - GLuint rb = ctx->getRenderbufferBinding(); - if (rb) { - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(RENDERBUFFER,rb); - RenderbufferData *rbData = (RenderbufferData *)objData.Ptr(); - if (rbData && rbData->sourceEGLImage != 0) { - GLenum texPname; - switch(pname) { - case GL_RENDERBUFFER_WIDTH_OES: - texPname = GL_TEXTURE_WIDTH; - break; - case GL_RENDERBUFFER_HEIGHT_OES: - texPname = GL_TEXTURE_HEIGHT; - break; - case GL_RENDERBUFFER_INTERNAL_FORMAT_OES: - texPname = GL_TEXTURE_INTERNAL_FORMAT; - break; - case GL_RENDERBUFFER_RED_SIZE_OES: - texPname = GL_TEXTURE_RED_SIZE; - break; - case GL_RENDERBUFFER_GREEN_SIZE_OES: - texPname = GL_TEXTURE_GREEN_SIZE; - break; - case GL_RENDERBUFFER_BLUE_SIZE_OES: - texPname = GL_TEXTURE_BLUE_SIZE; - break; - case GL_RENDERBUFFER_ALPHA_SIZE_OES: - texPname = GL_TEXTURE_ALPHA_SIZE; - break; - case GL_RENDERBUFFER_DEPTH_SIZE_OES: - texPname = GL_TEXTURE_DEPTH_SIZE; - break; - case GL_RENDERBUFFER_STENCIL_SIZE_OES: - default: - *params = 0; //XXX - return; - break; - } - - GLint prevTex; - ctx->dispatcher().glGetIntegerv(GL_TEXTURE_BINDING_2D, &prevTex); - ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, - rbData->eglImageGlobalTexName); - ctx->dispatcher().glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, - texPname, - params); - ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, prevTex); - return; - } - } - - ctx->dispatcher().glGetRenderbufferParameterivEXT(target,pname,params); -} - -GL_API GLboolean GLAPIENTRY glIsFramebufferOES(GLuint framebuffer) { - GET_CTX_RET(GL_FALSE) - RET_AND_SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION,GL_FALSE); - if (framebuffer && ctx->shareGroup().Ptr()) { - return ctx->shareGroup()->isObject(FRAMEBUFFER,framebuffer) ? GL_TRUE : GL_FALSE; - } - return ctx->dispatcher().glIsFramebufferEXT(framebuffer); -} - -GL_API void GLAPIENTRY glBindFramebufferOES(GLenum target, GLuint framebuffer) { - GET_CTX() - SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION); - SET_ERROR_IF(!GLEScmValidate::framebufferTarget(target) ,GL_INVALID_ENUM); - if (framebuffer && ctx->shareGroup().Ptr() && !ctx->shareGroup()->isObject(FRAMEBUFFER,framebuffer)) { - ctx->shareGroup()->genName(FRAMEBUFFER,framebuffer); - ctx->shareGroup()->setObjectData(FRAMEBUFFER, framebuffer, - ObjectDataPtr(new FramebufferData(framebuffer))); - } - int globalBufferName = (framebuffer!=0) ? ctx->shareGroup()->getGlobalName(FRAMEBUFFER,framebuffer) : 0; - ctx->dispatcher().glBindFramebufferEXT(target,globalBufferName); - - // update framebuffer binding state - ctx->setFramebufferBinding(framebuffer); -} - -GL_API void GLAPIENTRY glDeleteFramebuffersOES(GLsizei n, const GLuint *framebuffers) { - GET_CTX() - SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION); - for (int i=0;ishareGroup()->getGlobalName(FRAMEBUFFER,framebuffers[i]); - ctx->dispatcher().glDeleteFramebuffersEXT(1,&globalBufferName); - } -} - -GL_API void GLAPIENTRY glGenFramebuffersOES(GLsizei n, GLuint *framebuffers) { - GET_CTX() - SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION); - SET_ERROR_IF(n<0,GL_INVALID_VALUE); - if (ctx->shareGroup().Ptr()) { - for (int i=0;ishareGroup()->genName(FRAMEBUFFER, 0, true); - ctx->shareGroup()->setObjectData(FRAMEBUFFER, framebuffers[i], - ObjectDataPtr(new FramebufferData(framebuffers[i]))); - } - } -} - -GL_API GLenum GLAPIENTRY glCheckFramebufferStatusOES(GLenum target) { - GET_CTX_RET(0) - RET_AND_SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION,0); - RET_AND_SET_ERROR_IF(!GLEScmValidate::framebufferTarget(target) ,GL_INVALID_ENUM,0); - return ctx->dispatcher().glCheckFramebufferStatusEXT(target); -} - -GL_API void GLAPIENTRY glFramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { - GET_CTX() - SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION); - SET_ERROR_IF(!GLEScmValidate::framebufferTarget(target) || !GLEScmValidate::framebufferAttachment(attachment) || - !GLEScmValidate::textureTargetEx(textarget),GL_INVALID_ENUM); - SET_ERROR_IF(!ctx->shareGroup().Ptr(), GL_INVALID_OPERATION); - - GLuint globalTexName = 0; - if(texture) { - if (!ctx->shareGroup()->isObject(TEXTURE,texture)) { - ctx->shareGroup()->genName(TEXTURE,texture); - } - ObjectLocalName texname = TextureLocalName(textarget,texture); - globalTexName = ctx->shareGroup()->getGlobalName(TEXTURE,texname); - } - - ctx->dispatcher().glFramebufferTexture2DEXT(target,attachment,textarget,globalTexName,level); - - // Update the the current framebuffer object attachment state - GLuint fbName = ctx->getFramebufferBinding(); - ObjectDataPtr fbObj = ctx->shareGroup()->getObjectData(FRAMEBUFFER,fbName); - if (fbObj.Ptr() != NULL) { - FramebufferData *fbData = (FramebufferData *)fbObj.Ptr(); - fbData->setAttachment(attachment, textarget, - texture, ObjectDataPtr(NULL)); - } -} - -GL_API void GLAPIENTRY glFramebufferRenderbufferOES(GLenum target, GLenum attachment,GLenum renderbuffertarget, GLuint renderbuffer) { - GET_CTX() - SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION); - SET_ERROR_IF(!GLEScmValidate::framebufferTarget(target) || - !GLEScmValidate::framebufferAttachment(attachment) || - !GLEScmValidate::renderbufferTarget(renderbuffertarget), GL_INVALID_ENUM); - - SET_ERROR_IF(!ctx->shareGroup().Ptr(), GL_INVALID_OPERATION); - - GLuint globalBufferName = 0; - ObjectDataPtr obj; - - // generate the renderbuffer object if not yet exist - if (renderbuffer) { - if (!ctx->shareGroup()->isObject(RENDERBUFFER,renderbuffer)) { - ctx->shareGroup()->genName(RENDERBUFFER,renderbuffer); - obj = ObjectDataPtr(new RenderbufferData()); - ctx->shareGroup()->setObjectData(RENDERBUFFER, - renderbuffer, - ObjectDataPtr(new RenderbufferData())); - } - else { - obj = ctx->shareGroup()->getObjectData(RENDERBUFFER,renderbuffer); - } - globalBufferName = ctx->shareGroup()->getGlobalName(RENDERBUFFER,renderbuffer); - } - - // Update the the current framebuffer object attachment state - GLuint fbName = ctx->getFramebufferBinding(); - ObjectDataPtr fbObj = ctx->shareGroup()->getObjectData(FRAMEBUFFER,fbName); - if (fbObj.Ptr() != NULL) { - FramebufferData *fbData = (FramebufferData *)fbObj.Ptr(); - fbData->setAttachment(attachment, renderbuffertarget, renderbuffer, obj); - } - - if (renderbuffer && obj.Ptr() != NULL) { - RenderbufferData *rbData = (RenderbufferData *)obj.Ptr(); - if (rbData->sourceEGLImage != 0) { - // - // This renderbuffer object is an eglImage target - // attach the eglimage's texture instead the renderbuffer. - // - ctx->dispatcher().glFramebufferTexture2DEXT(target, - attachment, - GL_TEXTURE_2D, - rbData->eglImageGlobalTexName,0); - return; - } - } - - ctx->dispatcher().glFramebufferRenderbufferEXT(target,attachment,renderbuffertarget,globalBufferName); -} - -GL_API void GLAPIENTRY glGetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint *params) { - GET_CTX() - SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION); - SET_ERROR_IF(!GLEScmValidate::framebufferTarget(target) || !GLEScmValidate::framebufferAttachment(attachment) || - !GLEScmValidate::framebufferAttachmentParams(pname), GL_INVALID_ENUM); - - // - // Take the attachment attribute from our state - if available - // - GLuint fbName = ctx->getFramebufferBinding(); - if (fbName) { - ObjectDataPtr fbObj = ctx->shareGroup()->getObjectData(FRAMEBUFFER,fbName); - if (fbObj.Ptr() != NULL) { - FramebufferData *fbData = (FramebufferData *)fbObj.Ptr(); - GLenum target; - GLuint name = fbData->getAttachment(attachment, &target, NULL); - if (pname == GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES) { - *params = target; - return; - } - else if (pname == GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES) { - *params = name; - return; - } - } - } - - ctx->dispatcher().glGetFramebufferAttachmentParameterivEXT(target,attachment,pname,params); -} - -GL_API void GL_APIENTRY glGenerateMipmapOES(GLenum target) { - GET_CTX() - SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION); - SET_ERROR_IF(!GLEScmValidate::textureTargetLimited(target),GL_INVALID_ENUM); - ctx->dispatcher().glGenerateMipmapEXT(target); -} - -GL_API void GL_APIENTRY glCurrentPaletteMatrixOES(GLuint index) { - GET_CTX() - SET_ERROR_IF(!(ctx->getCaps()->GL_ARB_MATRIX_PALETTE && ctx->getCaps()->GL_ARB_VERTEX_BLEND),GL_INVALID_OPERATION); - ctx->dispatcher().glCurrentPaletteMatrixARB(index); -} - -GL_API void GL_APIENTRY glLoadPaletteFromModelViewMatrixOES() { - GET_CTX() - SET_ERROR_IF(!(ctx->getCaps()->GL_ARB_MATRIX_PALETTE && ctx->getCaps()->GL_ARB_VERTEX_BLEND),GL_INVALID_OPERATION); - GLint matrix[16]; - ctx->dispatcher().glGetIntegerv(GL_MODELVIEW_MATRIX,matrix); - ctx->dispatcher().glMatrixIndexuivARB(1,(GLuint*)matrix); - -} - -GL_API void GL_APIENTRY glMatrixIndexPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { - GET_CTX() - SET_ERROR_IF(!(ctx->getCaps()->GL_ARB_MATRIX_PALETTE && ctx->getCaps()->GL_ARB_VERTEX_BLEND),GL_INVALID_OPERATION); - ctx->dispatcher().glMatrixIndexPointerARB(size,type,stride,pointer); -} - -GL_API void GL_APIENTRY glWeightPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { - GET_CTX() - SET_ERROR_IF(!(ctx->getCaps()->GL_ARB_MATRIX_PALETTE && ctx->getCaps()->GL_ARB_VERTEX_BLEND),GL_INVALID_OPERATION); - ctx->dispatcher().glWeightPointerARB(size,type,stride,pointer); - -} - -GL_API void GL_APIENTRY glTexGenfOES (GLenum coord, GLenum pname, GLfloat param) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texGen(coord,pname),GL_INVALID_ENUM); - if (coord == GL_TEXTURE_GEN_STR_OES) { - ctx->dispatcher().glTexGenf(GL_S,pname,param); - ctx->dispatcher().glTexGenf(GL_T,pname,param); - ctx->dispatcher().glTexGenf(GL_R,pname,param); - } - else - ctx->dispatcher().glTexGenf(coord,pname,param); -} - -GL_API void GL_APIENTRY glTexGenfvOES (GLenum coord, GLenum pname, const GLfloat *params) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texGen(coord,pname),GL_INVALID_ENUM); - if (coord == GL_TEXTURE_GEN_STR_OES) { - ctx->dispatcher().glTexGenfv(GL_S,pname,params); - ctx->dispatcher().glTexGenfv(GL_T,pname,params); - ctx->dispatcher().glTexGenfv(GL_R,pname,params); - } - else - ctx->dispatcher().glTexGenfv(coord,pname,params); -} -GL_API void GL_APIENTRY glTexGeniOES (GLenum coord, GLenum pname, GLint param) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texGen(coord,pname),GL_INVALID_ENUM); - if (coord == GL_TEXTURE_GEN_STR_OES) { - ctx->dispatcher().glTexGeni(GL_S,pname,param); - ctx->dispatcher().glTexGeni(GL_T,pname,param); - ctx->dispatcher().glTexGeni(GL_R,pname,param); - } - else - ctx->dispatcher().glTexGeni(coord,pname,param); -} -GL_API void GL_APIENTRY glTexGenivOES (GLenum coord, GLenum pname, const GLint *params) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texGen(coord,pname),GL_INVALID_ENUM); - if (coord == GL_TEXTURE_GEN_STR_OES) { - ctx->dispatcher().glTexGeniv(GL_S,pname,params); - ctx->dispatcher().glTexGeniv(GL_T,pname,params); - ctx->dispatcher().glTexGeniv(GL_R,pname,params); - } - else - ctx->dispatcher().glTexGeniv(coord,pname,params); -} -GL_API void GL_APIENTRY glTexGenxOES (GLenum coord, GLenum pname, GLfixed param) { - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texGen(coord,pname),GL_INVALID_ENUM); - if (coord == GL_TEXTURE_GEN_STR_OES) { - ctx->dispatcher().glTexGenf(GL_S,pname,X2F(param)); - ctx->dispatcher().glTexGenf(GL_T,pname,X2F(param)); - ctx->dispatcher().glTexGenf(GL_R,pname,X2F(param)); - } - else - ctx->dispatcher().glTexGenf(coord,pname,X2F(param)); -} -GL_API void GL_APIENTRY glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed *params) { - GLfloat tmpParams[1]; - GET_CTX() - SET_ERROR_IF(!GLEScmValidate::texGen(coord,pname),GL_INVALID_ENUM); - tmpParams[0] = X2F(params[0]); - if (coord == GL_TEXTURE_GEN_STR_OES) { - ctx->dispatcher().glTexGenfv(GL_S,pname,tmpParams); - ctx->dispatcher().glTexGenfv(GL_T,pname,tmpParams); - ctx->dispatcher().glTexGenfv(GL_R,pname,tmpParams); - } - else - ctx->dispatcher().glTexGenfv(coord,pname,tmpParams); -} - -GL_API void GL_APIENTRY glGetTexGenfvOES (GLenum coord, GLenum pname, GLfloat *params) { - GET_CTX() - if (coord == GL_TEXTURE_GEN_STR_OES) - { - GLfloat state_s = GL_FALSE; - GLfloat state_t = GL_FALSE; - GLfloat state_r = GL_FALSE; - ctx->dispatcher().glGetTexGenfv(GL_S,pname,&state_s); - ctx->dispatcher().glGetTexGenfv(GL_T,pname,&state_t); - ctx->dispatcher().glGetTexGenfv(GL_R,pname,&state_r); - *params = state_s && state_t && state_r ? GL_TRUE: GL_FALSE; - } - else - ctx->dispatcher().glGetTexGenfv(coord,pname,params); - -} -GL_API void GL_APIENTRY glGetTexGenivOES (GLenum coord, GLenum pname, GLint *params) { - GET_CTX() - if (coord == GL_TEXTURE_GEN_STR_OES) - { - GLint state_s = GL_FALSE; - GLint state_t = GL_FALSE; - GLint state_r = GL_FALSE; - ctx->dispatcher().glGetTexGeniv(GL_S,pname,&state_s); - ctx->dispatcher().glGetTexGeniv(GL_T,pname,&state_t); - ctx->dispatcher().glGetTexGeniv(GL_R,pname,&state_r); - *params = state_s && state_t && state_r ? GL_TRUE: GL_FALSE; - } - else - ctx->dispatcher().glGetTexGeniv(coord,pname,params); -} - -GL_API void GL_APIENTRY glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed *params) { - GET_CTX() - GLfloat tmpParams[1]; - - if (coord == GL_TEXTURE_GEN_STR_OES) - { - GLfloat state_s = GL_FALSE; - GLfloat state_t = GL_FALSE; - GLfloat state_r = GL_FALSE; - ctx->dispatcher().glGetTexGenfv(GL_TEXTURE_GEN_S,pname,&state_s); - ctx->dispatcher().glGetTexGenfv(GL_TEXTURE_GEN_T,pname,&state_t); - ctx->dispatcher().glGetTexGenfv(GL_TEXTURE_GEN_R,pname,&state_r); - tmpParams[0] = state_s && state_t && state_r ? GL_TRUE: GL_FALSE; - } - else - ctx->dispatcher().glGetTexGenfv(coord,pname,tmpParams); - - params[0] = F2X(tmpParams[1]); -} - -template -void glDrawTexOES (T x, T y, T z, T width, T height) { - GET_CTX() - - SET_ERROR_IF((width<=0 || height<=0),GL_INVALID_VALUE); - - ctx->drawValidate(); - - int numClipPlanes; - - GLint viewport[4] = {}; - z = (z>1 ? 1 : (z<0 ? 0 : z)); - - T vertices[4*3] = { - x , y, z, - x , static_cast(y+height), z, - static_cast(x+width), static_cast(y+height), z, - static_cast(x+width), y, z - }; - GLfloat texels[ctx->getMaxTexUnits()][4*2]; - memset((void*)texels, 0, ctx->getMaxTexUnits()*4*2*sizeof(GLfloat)); - - ctx->dispatcher().glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT); - ctx->dispatcher().glPushAttrib(GL_TRANSFORM_BIT); - - //setup projection matrix to draw in viewport aligned coordinates - ctx->dispatcher().glMatrixMode(GL_PROJECTION); - ctx->dispatcher().glPushMatrix(); - ctx->dispatcher().glLoadIdentity(); - ctx->dispatcher().glGetIntegerv(GL_VIEWPORT,viewport); - ctx->dispatcher().glOrtho(viewport[0],viewport[0] + viewport[2],viewport[1],viewport[1]+viewport[3],0,-1); - //setup texture matrix - ctx->dispatcher().glMatrixMode(GL_TEXTURE); - ctx->dispatcher().glPushMatrix(); - ctx->dispatcher().glLoadIdentity(); - //setup modelview matrix - ctx->dispatcher().glMatrixMode(GL_MODELVIEW); - ctx->dispatcher().glPushMatrix(); - ctx->dispatcher().glLoadIdentity(); - //backup vbo's - int array_buffer,element_array_buffer; - glGetIntegerv(GL_ARRAY_BUFFER_BINDING,&array_buffer); - glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING,&element_array_buffer); - ctx->dispatcher().glBindBuffer(GL_ARRAY_BUFFER,0); - ctx->dispatcher().glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0); - - //disable clip planes - ctx->dispatcher().glGetIntegerv(GL_MAX_CLIP_PLANES,&numClipPlanes); - for (int i=0;idispatcher().glDisable(GL_CLIP_PLANE0+i); - - int nTexPtrs = 0; - for (int i=0;igetMaxTexUnits();++i) { - if (ctx->isTextureUnitEnabled(GL_TEXTURE0+i)) { - TextureData * texData = NULL; - unsigned int texname = ctx->getBindedTexture(GL_TEXTURE0+i,GL_TEXTURE_2D); - ObjectLocalName tex = TextureLocalName(GL_TEXTURE_2D,texname); - ctx->dispatcher().glClientActiveTexture(GL_TEXTURE0+i); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(TEXTURE,tex); - if (objData.Ptr()) { - texData = (TextureData*)objData.Ptr(); - //calculate texels - texels[i][0] = (float)(texData->crop_rect[0])/(float)(texData->width); - texels[i][1] = (float)(texData->crop_rect[1])/(float)(texData->height); - - texels[i][2] = (float)(texData->crop_rect[0])/(float)(texData->width); - texels[i][3] = (float)(texData->crop_rect[3]+texData->crop_rect[1])/(float)(texData->height); - - texels[i][4] = (float)(texData->crop_rect[2]+texData->crop_rect[0])/(float)(texData->width); - texels[i][5] = (float)(texData->crop_rect[3]+texData->crop_rect[1])/(float)(texData->height); - - texels[i][6] = (float)(texData->crop_rect[2]+texData->crop_rect[0])/(float)(texData->width); - texels[i][7] = (float)(texData->crop_rect[1])/(float)(texData->height); - - ctx->dispatcher().glTexCoordPointer(2,GL_FLOAT,0,texels[i]); - nTexPtrs++; - } - } - } - - if (nTexPtrs>0) { - //draw rectangle - only if we have some textures enabled & ready - ctx->dispatcher().glEnableClientState(GL_VERTEX_ARRAY); - ctx->dispatcher().glVertexPointer(3,TypeName,0,vertices); - ctx->dispatcher().glEnableClientState(GL_TEXTURE_COORD_ARRAY); - ctx->dispatcher().glDrawArrays(GL_TRIANGLE_FAN,0,4); - } - - //restore vbo's - ctx->dispatcher().glBindBuffer(GL_ARRAY_BUFFER,array_buffer); - ctx->dispatcher().glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,element_array_buffer); - - //restore matrix state - - ctx->dispatcher().glMatrixMode(GL_MODELVIEW); - ctx->dispatcher().glPopMatrix(); - ctx->dispatcher().glMatrixMode(GL_TEXTURE); - ctx->dispatcher().glPopMatrix(); - ctx->dispatcher().glMatrixMode(GL_PROJECTION); - ctx->dispatcher().glPopMatrix(); - - ctx->dispatcher().glPopAttrib(); - ctx->dispatcher().glPopClientAttrib(); -} - -GL_API void GL_APIENTRY glDrawTexsOES (GLshort x, GLshort y, GLshort z, GLshort width, GLshort height) { - glDrawTexOES(x,y,z,width,height); -} - -GL_API void GL_APIENTRY glDrawTexiOES (GLint x, GLint y, GLint z, GLint width, GLint height) { - glDrawTexOES(x,y,z,width,height); -} - -GL_API void GL_APIENTRY glDrawTexfOES (GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height) { - glDrawTexOES(x,y,z,width,height); -} - -GL_API void GL_APIENTRY glDrawTexxOES (GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height) { - glDrawTexOES(X2F(x),X2F(y),X2F(z),X2F(width),X2F(height)); -} - -GL_API void GL_APIENTRY glDrawTexsvOES (const GLshort * coords) { - glDrawTexOES(coords[0],coords[1],coords[2],coords[3],coords[4]); -} - -GL_API void GL_APIENTRY glDrawTexivOES (const GLint * coords) { - glDrawTexOES(coords[0],coords[1],coords[2],coords[3],coords[4]); -} - -GL_API void GL_APIENTRY glDrawTexfvOES (const GLfloat * coords) { - glDrawTexOES(coords[0],coords[1],coords[2],coords[3],coords[4]); -} - -GL_API void GL_APIENTRY glDrawTexxvOES (const GLfixed * coords) { - glDrawTexOES(X2F(coords[0]),X2F(coords[1]),X2F(coords[2]),X2F(coords[3]),X2F(coords[4])); -} diff --git a/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmUtils.cpp b/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmUtils.cpp deleted file mode 100644 index 891b4e3..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmUtils.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "GLEScmUtils.h" - - -size_t glParamSize(GLenum param) -{ - size_t s = 0; - - switch(param) - { - case GL_MAX_TEXTURE_SIZE: - //case GL_TEXTURE_GEN_MODE_OES: - case GL_TEXTURE_ENV_MODE: - case GL_FOG_MODE: - case GL_FOG_DENSITY: - case GL_FOG_START: - case GL_FOG_END: - case GL_SPOT_EXPONENT: - case GL_CONSTANT_ATTENUATION: - case GL_LINEAR_ATTENUATION: - case GL_QUADRATIC_ATTENUATION: - case GL_SHININESS: - case GL_LIGHT_MODEL_TWO_SIDE: - case GL_POINT_SIZE: - case GL_POINT_SIZE_MIN: - case GL_POINT_SIZE_MAX: - case GL_POINT_FADE_THRESHOLD_SIZE: - case GL_CULL_FACE_MODE: - case GL_FRONT_FACE: - case GL_SHADE_MODEL: - case GL_DEPTH_WRITEMASK: - case GL_DEPTH_CLEAR_VALUE: - case GL_STENCIL_FAIL: - case GL_STENCIL_PASS_DEPTH_FAIL: - case GL_STENCIL_PASS_DEPTH_PASS: - case GL_STENCIL_REF: - case GL_STENCIL_WRITEMASK: - case GL_MATRIX_MODE: - case GL_MODELVIEW_STACK_DEPTH: - case GL_PROJECTION_STACK_DEPTH: - case GL_TEXTURE_STACK_DEPTH: - case GL_ALPHA_TEST_FUNC: - case GL_ALPHA_TEST_REF: - case GL_BLEND_DST: - case GL_BLEND_SRC: - case GL_LOGIC_OP_MODE: - case GL_SCISSOR_TEST: - case GL_MAX_TEXTURE_UNITS: - s = 1; - break; - case GL_ALIASED_LINE_WIDTH_RANGE: - case GL_ALIASED_POINT_SIZE_RANGE: - case GL_DEPTH_RANGE: - case GL_MAX_VIEWPORT_DIMS: - case GL_SMOOTH_POINT_SIZE_RANGE: - case GL_SMOOTH_LINE_WIDTH_RANGE: - s= 2; - break; - case GL_SPOT_DIRECTION: - case GL_POINT_DISTANCE_ATTENUATION: - case GL_CURRENT_NORMAL: - s = 3; - break; - case GL_CURRENT_TEXTURE_COORDS: - case GL_CURRENT_COLOR: - case GL_FOG_COLOR: - case GL_AMBIENT: - case GL_DIFFUSE: - case GL_SPECULAR: - case GL_EMISSION: - case GL_POSITION: - case GL_LIGHT_MODEL_AMBIENT: - case GL_TEXTURE_ENV_COLOR: - case GL_SCISSOR_BOX: - case GL_VIEWPORT: - //case GL_TEXTURE_CROP_RECT_OES: - s = 4; - break; - case GL_MODELVIEW_MATRIX: - case GL_PROJECTION_MATRIX: - case GL_TEXTURE_MATRIX: - s = 16; - default: - s = 1; // assume 1 - } - return s; -} diff --git a/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmUtils.h b/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmUtils.h deleted file mode 100644 index 38ad6bc..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmUtils.h +++ /dev/null @@ -1,22 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef GLES_UTILS_H -#define GLES_UTILS_H -#include -#include - -size_t glParamSize(GLenum param); -#endif diff --git a/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmValidate.cpp b/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmValidate.cpp deleted file mode 100644 index 24e4dcf..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmValidate.cpp +++ /dev/null @@ -1,306 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "GLEScmValidate.h" -#include -#include -#include -#include -#include "GLEScmValidate.h" - - -bool GLEScmValidate::lightEnum(GLenum e,unsigned int maxLights) { - return e >=GL_LIGHT0 && e <= (GL_LIGHT0+maxLights); -} - -bool GLEScmValidate::clipPlaneEnum(GLenum e,unsigned int maxClipPlanes) { - return e >=GL_CLIP_PLANE0 && e <= (GL_CLIP_PLANE0+maxClipPlanes); -} - -bool GLEScmValidate::alphaFunc(GLenum f) { - switch(f) { - case GL_NEVER: - case GL_LESS: - case GL_EQUAL: - case GL_LEQUAL: - case GL_GREATER: - case GL_NOTEQUAL: - case GL_GEQUAL: - case GL_ALWAYS: - return true; - } - return false; -} - -bool GLEScmValidate::blendSrc(GLenum s) { - switch(s) { - case GL_ZERO: - case GL_ONE: - case GL_DST_COLOR: - case GL_ONE_MINUS_DST_COLOR: - case GL_SRC_ALPHA: - case GL_ONE_MINUS_SRC_ALPHA: - case GL_DST_ALPHA: - case GL_ONE_MINUS_DST_ALPHA: - case GL_SRC_ALPHA_SATURATE: - return true; - } - return false; -} - -bool GLEScmValidate::vertexPointerParams(GLint size,GLsizei stride) { - return ((size >=2) && (size <= 4)) && (stride >=0) ; -} - -bool GLEScmValidate::colorPointerParams(GLint size,GLsizei stride) { - return (size == 4) && (stride >=0) ; -} - -bool GLEScmValidate::texCoordPointerParams(GLint size,GLsizei stride) { - return ((size >=2) && (size <= 4)) && (stride >=0) ; -} - -bool GLEScmValidate::supportedArrays(GLenum arr) { - switch(arr) { - case GL_COLOR_ARRAY: - case GL_NORMAL_ARRAY: - case GL_POINT_SIZE_ARRAY_OES: - case GL_TEXTURE_COORD_ARRAY: - case GL_VERTEX_ARRAY: - return true; - } - return false; -} - -bool GLEScmValidate::hintTargetMode(GLenum target,GLenum mode) { - switch(target) { - case GL_FOG_HINT: - case GL_GENERATE_MIPMAP_HINT: - case GL_LINE_SMOOTH_HINT: - case GL_PERSPECTIVE_CORRECTION_HINT: - case GL_POINT_SMOOTH_HINT: - break; - default: return false; - } - switch(mode) { - case GL_FASTEST: - case GL_NICEST: - case GL_DONT_CARE: - break; - default: return false; - } - return true; -} - -bool GLEScmValidate::texParams(GLenum target,GLenum pname) { - switch(pname) { - case GL_TEXTURE_MIN_FILTER: - case GL_TEXTURE_MAG_FILTER: - case GL_TEXTURE_WRAP_S: - case GL_TEXTURE_WRAP_T: - case GL_TEXTURE_CROP_RECT_OES: - case GL_GENERATE_MIPMAP: - case GL_TEXTURE_MAX_ANISOTROPY_EXT: - break; - default: - return false; - } - return (target == GL_TEXTURE_2D)||(target == GL_TEXTURE_CUBE_MAP_OES); -} - -bool GLEScmValidate::texEnv(GLenum target,GLenum pname) { - switch(pname) { - case GL_TEXTURE_ENV_MODE: - case GL_TEXTURE_ENV_COLOR: - case GL_COMBINE_RGB: - case GL_COMBINE_ALPHA: - case GL_SRC0_RGB: - case GL_SRC1_RGB: - case GL_SRC2_RGB: - case GL_SRC0_ALPHA: - case GL_SRC1_ALPHA: - case GL_SRC2_ALPHA: - case GL_OPERAND0_RGB: - case GL_OPERAND1_RGB: - case GL_OPERAND2_RGB: - case GL_OPERAND0_ALPHA: - case GL_OPERAND1_ALPHA: - case GL_OPERAND2_ALPHA: - case GL_RGB_SCALE: - case GL_ALPHA_SCALE: - case GL_COORD_REPLACE_OES: - break; - default: - return false; - } - return (target == GL_TEXTURE_ENV || target == GL_POINT_SPRITE_OES); -} - -bool GLEScmValidate::capability(GLenum cap,int maxLights,int maxClipPlanes) { - switch(cap) { - case GL_ALPHA_TEST: - case GL_BLEND: - case GL_COLOR_ARRAY: - case GL_COLOR_LOGIC_OP: - case GL_COLOR_MATERIAL: - case GL_CULL_FACE: - case GL_DEPTH_TEST: - case GL_DITHER: - case GL_FOG: - case GL_LIGHTING: - case GL_LINE_SMOOTH: - case GL_MULTISAMPLE: - case GL_NORMAL_ARRAY: - case GL_NORMALIZE: - case GL_POINT_SIZE_ARRAY_OES: - case GL_POINT_SMOOTH: - case GL_POINT_SPRITE_OES: - case GL_POLYGON_OFFSET_FILL: - case GL_RESCALE_NORMAL: - case GL_SAMPLE_ALPHA_TO_COVERAGE: - case GL_SAMPLE_ALPHA_TO_ONE: - case GL_SAMPLE_COVERAGE: - case GL_SCISSOR_TEST: - case GL_STENCIL_TEST: - case GL_TEXTURE_2D: - case GL_TEXTURE_COORD_ARRAY: - case GL_VERTEX_ARRAY: - return true; - } - return GLEScmValidate::lightEnum(cap,maxLights) || GLEScmValidate::clipPlaneEnum(cap,maxClipPlanes); -} - - -bool GLEScmValidate::texCompImgFrmt(GLenum format) { - switch(format) { - case GL_PALETTE4_RGB8_OES: - case GL_PALETTE4_RGBA8_OES: - case GL_PALETTE4_R5_G6_B5_OES: - case GL_PALETTE4_RGBA4_OES: - case GL_PALETTE4_RGB5_A1_OES: - case GL_PALETTE8_RGB8_OES: - case GL_PALETTE8_RGBA8_OES: - case GL_PALETTE8_R5_G6_B5_OES: - case GL_PALETTE8_RGBA4_OES: - case GL_PALETTE8_RGB5_A1_OES: - return true; - } - return false; -} - -bool GLEScmValidate::blendDst(GLenum d) { - switch(d) { - case GL_ZERO: - case GL_ONE: - case GL_SRC_COLOR: - case GL_ONE_MINUS_SRC_COLOR: - case GL_SRC_ALPHA: - case GL_ONE_MINUS_SRC_ALPHA: - case GL_DST_ALPHA: - case GL_ONE_MINUS_DST_ALPHA: - return true; - } - return false; -} - -bool GLEScmValidate::renderbufferInternalFrmt(GLEScontext* ctx, GLenum internalformat) -{ - switch (internalformat) { - case GL_DEPTH_COMPONENT16_OES: - case GL_RGBA4_OES: - case GL_RGB5_A1_OES: - case GL_RGB565_OES: - case GL_STENCIL_INDEX1_OES: - case GL_STENCIL_INDEX4_OES: - case GL_STENCIL_INDEX8_OES: - case GL_RGB8_OES: - case GL_RGBA8_OES: - case GL_DEPTH_COMPONENT24_OES: - case GL_DEPTH_COMPONENT32_OES: - return true; - } - if (ctx->getCaps()->GL_EXT_PACKED_DEPTH_STENCIL && internalformat==GL_DEPTH24_STENCIL8_OES) - return true; - - return false; -} - -bool GLEScmValidate::stencilOp(GLenum param) { - switch (param) { - case GL_KEEP: - case GL_ZERO: - case GL_REPLACE: - case GL_INCR: - case GL_DECR: - case GL_INVERT: - case GL_INCR_WRAP_OES: - case GL_DECR_WRAP_OES: - return true; - } - return false; -} - -bool GLEScmValidate::texGen(GLenum coord, GLenum pname) { - return (coord == GL_TEXTURE_GEN_STR_OES && pname == GL_TEXTURE_GEN_MODE_OES); -} - -bool GLEScmValidate::colorPointerType(GLenum type){ - switch(type){ - case GL_UNSIGNED_BYTE: - case GL_FIXED: - case GL_FLOAT: - return true; - } - return false; -} - -bool GLEScmValidate::normalPointerType(GLenum type){ - - switch(type){ - case GL_BYTE: - case GL_SHORT: - case GL_FLOAT: - case GL_FIXED: - return true; - } - return false; -} - -bool GLEScmValidate::pointPointerType(GLenum type){ - return type == GL_FIXED || type == GL_FLOAT; -} - -bool GLEScmValidate::texCoordPointerType(GLenum type){ - switch(type){ - case GL_BYTE: - case GL_SHORT: - case GL_FLOAT: - case GL_FIXED: - return true; - } - return false; -} - -bool GLEScmValidate::vertexPointerType(GLenum type){ - switch(type){ - case GL_BYTE: - case GL_SHORT: - case GL_FLOAT: - case GL_FIXED: - return true; - } - return false; -} - diff --git a/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmValidate.h b/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmValidate.h deleted file mode 100644 index 9bc3393..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_CM/GLEScmValidate.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef GLES_CM_VALIDATE_H -#define GLES_CM_VALIDATE_H - -#include -#include -struct GLEScmValidate : public GLESvalidate -{ -static bool blendSrc(GLenum s); -static bool blendDst(GLenum d); -static bool lightEnum(GLenum e,unsigned int maxLIghts); -static bool clipPlaneEnum(GLenum e,unsigned int maxClipPlanes); -static bool alphaFunc(GLenum f); -static bool vertexPointerParams(GLint size,GLsizei stride); -static bool colorPointerParams(GLint size,GLsizei stride); -static bool supportedArrays(GLenum arr); -static bool hintTargetMode(GLenum target,GLenum mode); -static bool capability(GLenum cap,int maxLights,int maxClipPlanes); -static bool texParams(GLenum target,GLenum pname); -static bool texCoordPointerParams(GLint size,GLsizei stride); - -static bool texEnv(GLenum target,GLenum pname); -static bool texCompImgFrmt(GLenum format); - -static bool renderbufferInternalFrmt(GLEScontext * ctx, GLenum internalformat); -static bool stencilOp(GLenum param); -static bool texGen(GLenum coord,GLenum pname); - -static bool colorPointerType(GLenum type); -static bool normalPointerType(GLenum type); -static bool pointPointerType(GLenum type); -static bool texCoordPointerType(GLenum type); -static bool vertexPointerType(GLenum type); -}; - -#endif diff --git a/external/android-emugl/host/libs/Translator/GLES_V2/Android.mk b/external/android-emugl/host/libs/Translator/GLES_V2/Android.mk deleted file mode 100644 index 5b48bc9..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_V2/Android.mk +++ /dev/null @@ -1,17 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -host_common_SRC_FILES := \ - GLESv2Imp.cpp \ - GLESv2Context.cpp \ - GLESv2Validate.cpp \ - ShaderParser.cpp \ - ProgramData.cpp - - -### GLES_V2 host implementation (On top of OpenGL) ######################## -$(call emugl-begin-host-shared-library,lib$(BUILD_TARGET_SUFFIX)GLES_V2_translator) -$(call emugl-import, libGLcommon) - -LOCAL_SRC_FILES := $(host_common_SRC_FILES) - -$(call emugl-end-module) diff --git a/external/android-emugl/host/libs/Translator/GLES_V2/CMakeLists.txt b/external/android-emugl/host/libs/Translator/GLES_V2/CMakeLists.txt deleted file mode 100644 index dac892c..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_V2/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -set(SOURCES - GLESv2Imp.cpp - GLESv2Context.cpp - GLESv2Validate.cpp - ShaderParser.cpp - ProgramData.cpp) - -add_library(GLES_V2_translator SHARED ${SOURCES}) -target_link_libraries(GLES_V2_translator GLcommon) - -install( - TARGETS GLES_V2_translator - LIBRARY DESTINATION ${ANBOX_TRANSLATOR_INSTALL_DIR}) diff --git a/external/android-emugl/host/libs/Translator/GLES_V2/GLESv2Context.cpp b/external/android-emugl/host/libs/Translator/GLES_V2/GLESv2Context.cpp deleted file mode 100644 index b27bede..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_V2/GLESv2Context.cpp +++ /dev/null @@ -1,175 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#include "GLESv2Context.h" - -#include - -void GLESv2Context::init(GlLibrary* glLib) { - emugl::Mutex::AutoLock mutex(s_lock); - if(!m_initialized) { - s_glDispatch.dispatchFuncs(GLES_2_0, glLib); - GLEScontext::init(glLib); - for(int i=0; i < s_glSupport.maxVertexAttribs;i++){ - m_map[i] = new GLESpointer(); - } - setAttribute0value(0.0, 0.0, 0.0, 1.0); - - buildStrings((const char*)dispatcher().glGetString(GL_VENDOR), - (const char*)dispatcher().glGetString(GL_RENDERER), - (const char*)dispatcher().glGetString(GL_VERSION), - "OpenGL ES 2.0"); - } - m_initialized = true; -} - -GLESv2Context::GLESv2Context():GLEScontext(), m_att0Array(NULL), m_att0ArrayLength(0), m_att0NeedsDisable(false){}; - -GLESv2Context::~GLESv2Context() -{ - delete[] m_att0Array; -} - -void GLESv2Context::setAttribute0value(float x, float y, float z, float w) -{ - m_attribute0value[0] = x; - m_attribute0value[1] = y; - m_attribute0value[2] = z; - m_attribute0value[3] = w; -} - -void GLESv2Context::validateAtt0PreDraw(unsigned int count) -{ - m_att0NeedsDisable = false; - - if(count == 0) - return; - - int enabled = 0; - s_glDispatch.glGetVertexAttribiv(0, GL_VERTEX_ATTRIB_ARRAY_ENABLED, &enabled); - if(enabled) - return; - - if(count > m_att0ArrayLength) - { - delete [] m_att0Array; - m_att0Array = new GLfloat[4*count]; - m_att0ArrayLength = count; - } - - for(unsigned int i=0; igetSize(); - - if(needConvert(cArrs,first,count,type,indices,direct,p,array_id)){ - //conversion has occured - ArrayData currentArr = cArrs.getCurrentArray(); - setupArr(currentArr.data,array_id,currentArr.type,size,currentArr.stride, p->getNormalized()); - ++cArrs; - } else { - setupArr(p->getData(),array_id,p->getType(), - size,p->getStride(), p->getNormalized()); - } - } -} - -//setting client side arr -void GLESv2Context::setupArr(const GLvoid* arr,GLenum arrayType,GLenum dataType,GLint size,GLsizei stride,GLboolean normalized, int index){ - if(arr == NULL) return; - s_glDispatch.glVertexAttribPointer(arrayType,size,dataType,normalized,stride,arr); -} - -bool GLESv2Context::needConvert(GLESConversionArrays& cArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct,GLESpointer* p,GLenum array_id) { - - bool usingVBO = p->isVBO(); - GLenum arrType = p->getType(); - /* - conversion is not necessary in the following cases: - (*) array type is not fixed - */ - if(arrType != GL_FIXED) return false; - - if(!usingVBO) { - if (direct) { - convertDirect(cArrs,first,count,array_id,p); - } else { - convertIndirect(cArrs,count,type,indices,array_id,p); - } - } else { - if (direct) { - convertDirectVBO(cArrs,first,count,array_id,p) ; - } else { - convertIndirectVBO(cArrs,count,type,indices,array_id,p); - } - } - return true; -} - -void GLESv2Context::initExtensionString() { - *s_glExtensions = "GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_depth24 GL_OES_depth32 GL_OES_element_index_uint " - "GL_OES_texture_float GL_OES_texture_float_linear " - "GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth_texture "; - if (s_glSupport.GL_ARB_HALF_FLOAT_PIXEL || s_glSupport.GL_NV_HALF_FLOAT) - *s_glExtensions+="GL_OES_texture_half_float GL_OES_texture_half_float_linear "; - if (s_glSupport.GL_EXT_PACKED_DEPTH_STENCIL) - *s_glExtensions+="GL_OES_packed_depth_stencil "; - if (s_glSupport.GL_ARB_HALF_FLOAT_VERTEX) - *s_glExtensions+="GL_OES_vertex_half_float "; - if (s_glSupport.GL_OES_STANDARD_DERIVATIVES) - *s_glExtensions+="GL_OES_standard_derivatives "; - if (s_glSupport.GL_OES_TEXTURE_NPOT) - *s_glExtensions+="GL_OES_texture_npot "; - if (s_glSupport.GL_OES_RGB8_RGBA8) { - *s_glExtensions+="GL_OES_rgb8_rgba8 "; - } -} - -int GLESv2Context::getMaxTexUnits() { - return getCaps()->maxTexImageUnits; -} - -int GLESv2Context::getMaxCombinedTexUnits() { - // GLES spec requires only 2, and the ATI driver erronously - // returns 32 (although it supports only 16). This WAR is simple, - // compliant and good enough for developers. - if (getCaps()->maxCombinedTexImageUnits > 16) - return 16; - return getCaps()->maxCombinedTexImageUnits; -} diff --git a/external/android-emugl/host/libs/Translator/GLES_V2/GLESv2Context.h b/external/android-emugl/host/libs/Translator/GLES_V2/GLESv2Context.h deleted file mode 100644 index daacb0d..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_V2/GLESv2Context.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -* Copyright 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#ifndef GLES_V2_CONTEXT_H -#define GLES_V2_CONTEXT_H - -#include -#include -#include - -class GLESv2Context : public GLEScontext{ -public: - virtual void init(GlLibrary* glLib); - GLESv2Context(); - virtual ~GLESv2Context(); - void setupArraysPointers(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct); - int getMaxCombinedTexUnits(); - int getMaxTexUnits(); - - // This whole att0 thing is about a incompatibility between GLES and OpenGL. - // GLES allows a vertex shader attribute to be in location 0 and have a - // current value, while OpenGL is not very clear about this, which results - // in each implementation doing something different. - void setAttribute0value(float x, float y, float z, float w); - void validateAtt0PreDraw(unsigned int count); - void validateAtt0PostDraw(void); - const float* getAtt0(void) {return m_attribute0value;} - -protected: - bool needConvert(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct,GLESpointer* p,GLenum array_id); -private: - void setupArr(const GLvoid* arr,GLenum arrayType,GLenum dataType,GLint size,GLsizei stride,GLboolean normalized, int pointsIndex = -1); - void initExtensionString(); - - float m_attribute0value[4]; - GLfloat* m_att0Array; - unsigned int m_att0ArrayLength; - bool m_att0NeedsDisable; -}; - -#endif diff --git a/external/android-emugl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp b/external/android-emugl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp deleted file mode 100644 index 91ff0b1..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp +++ /dev/null @@ -1,2279 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License") -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#ifdef _WIN32 -#undef GL_APICALL -#define GL_API __declspec(dllexport) -#define GL_APICALL __declspec(dllexport) -#endif - -#define GL_GLEXT_PROTOTYPES -#include -#include - -#include -#include -#include "GLESv2Context.h" -#include "GLESv2Validate.h" -#include "ShaderParser.h" -#include "ProgramData.h" -#include -#include - -#include - -extern "C" { - -//decleration -static void initGLESx(); -static void initContext(GLEScontext* ctx,ShareGroupPtr grp); -static void deleteGLESContext(GLEScontext* ctx); -static void setShareGroup(GLEScontext* ctx,ShareGroupPtr grp); -static GLEScontext* createGLESContext(); -static __translatorMustCastToProperFunctionPointerType getProcAddress(const char* procName); - -} - -/************************************** GLES EXTENSIONS *********************************************************/ -//extentions descriptor -typedef std::map ProcTableMap; -ProcTableMap *s_glesExtensions = NULL; -/****************************************************************************************************************/ - -static EGLiface* s_eglIface = NULL; -static GLESiface s_glesIface = { - .initGLESx = initGLESx, - .createGLESContext = createGLESContext, - .initContext = initContext, - .deleteGLESContext = deleteGLESContext, - .flush = (FUNCPTR)glFlush, - .finish = (FUNCPTR)glFinish, - .setShareGroup = setShareGroup, - .getProcAddress = getProcAddress -}; - -#include - -extern "C" { - -static void initGLESx() { - return; -} - -static void initContext(GLEScontext* ctx,ShareGroupPtr grp) { - if (!ctx->isInitialized()) { - ctx->setShareGroup(grp); - ctx->init(s_eglIface->eglGetGlLibrary()); - glBindTexture(GL_TEXTURE_2D,0); - glBindTexture(GL_TEXTURE_CUBE_MAP,0); - } -} -static GLEScontext* createGLESContext() { - return new GLESv2Context(); -} - -static void deleteGLESContext(GLEScontext* ctx) { - delete ctx; -} - -static void setShareGroup(GLEScontext* ctx,ShareGroupPtr grp) { - if(ctx) { - ctx->setShareGroup(grp); - } -} - -static __translatorMustCastToProperFunctionPointerType getProcAddress(const char* procName) { - GET_CTX_RET(NULL) - ctx->getGlobalLock(); - static bool proc_table_initialized = false; - if (!proc_table_initialized) { - proc_table_initialized = true; - if (!s_glesExtensions) - s_glesExtensions = new ProcTableMap(); - else - s_glesExtensions->clear(); - (*s_glesExtensions)["glEGLImageTargetTexture2DOES"] = (__translatorMustCastToProperFunctionPointerType)glEGLImageTargetTexture2DOES; - (*s_glesExtensions)["glEGLImageTargetRenderbufferStorageOES"]=(__translatorMustCastToProperFunctionPointerType)glEGLImageTargetRenderbufferStorageOES; - } - __translatorMustCastToProperFunctionPointerType ret=NULL; - ProcTableMap::iterator val = s_glesExtensions->find(procName); - if (val!=s_glesExtensions->end()) - ret = val->second; - ctx->releaseGlobalLock(); - - return ret; -} - -GL_APICALL GLESiface* GL_APIENTRY __translator_getIfaces(EGLiface* eglIface); - -GLESiface* __translator_getIfaces(EGLiface* eglIface) { - s_eglIface = eglIface; - return & s_glesIface; -} - -} // extern "C" - -static void s_attachShader(GLEScontext* ctx, GLuint program, GLuint shader) { - if (ctx && program && shader && ctx->shareGroup().Ptr()) { - ObjectDataPtr shaderData = ctx->shareGroup()->getObjectData(SHADER,shader); - if (!shaderData.Ptr()) return; - ShaderParser* shaderParser = (ShaderParser*)shaderData.Ptr(); - shaderParser->setAttachedProgram(program); - } -} - -static void s_detachShader(GLEScontext* ctx, GLuint shader) { - if (ctx && shader && ctx->shareGroup().Ptr()) { - ObjectDataPtr shaderData = ctx->shareGroup()->getObjectData(SHADER,shader); - if (!shaderData.Ptr()) return; - ShaderParser* shaderParser = (ShaderParser*)shaderData.Ptr(); - shaderParser->setAttachedProgram(0); - if (shaderParser->getDeleteStatus()) { - ctx->shareGroup()->deleteName(SHADER, shader); - } - } -} - -static ObjectLocalName TextureLocalName(GLenum target,unsigned int tex) { - GET_CTX_RET(0); - return (tex!=0? tex : ctx->getDefaultTextureName(target)); -} - -static TextureData* getTextureData(ObjectLocalName tex) { - GET_CTX_RET(NULL); - TextureData *texData = NULL; - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(TEXTURE,tex); - if(!objData.Ptr()){ - texData = new TextureData(); - ctx->shareGroup()->setObjectData(TEXTURE, tex, ObjectDataPtr(texData)); - } else { - texData = (TextureData*)objData.Ptr(); - } - return texData; -} - -static TextureData* getTextureTargetData(GLenum target){ - GET_CTX_RET(NULL); - unsigned int tex = ctx->getBindedTexture(target); - return getTextureData(TextureLocalName(target,tex)); -} - -GL_APICALL void GL_APIENTRY glActiveTexture(GLenum texture){ - GET_CTX_V2(); - SET_ERROR_IF (!GLESv2Validate::textureEnum(texture,ctx->getMaxCombinedTexUnits()),GL_INVALID_ENUM); - ctx->setActiveTexture(texture); - ctx->dispatcher().glActiveTexture(texture); -} - -GL_APICALL void GL_APIENTRY glAttachShader(GLuint program, GLuint shader){ - GET_CTX(); - if(ctx->shareGroup().Ptr()) { - const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program); - SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE); - const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shader); - SET_ERROR_IF(globalShaderName==0, GL_INVALID_VALUE); - - ObjectDataPtr programData = ctx->shareGroup()->getObjectData(SHADER,program); - ObjectDataPtr shaderData = ctx->shareGroup()->getObjectData(SHADER,shader); - SET_ERROR_IF(!shaderData.Ptr() || !programData.Ptr() ,GL_INVALID_OPERATION); - SET_ERROR_IF(!(shaderData.Ptr()->getDataType() ==SHADER_DATA) || - !(programData.Ptr()->getDataType()==PROGRAM_DATA) ,GL_INVALID_OPERATION); - - GLenum shaderType = ((ShaderParser*)shaderData.Ptr())->getType(); - ProgramData* pData = (ProgramData*)programData.Ptr(); - SET_ERROR_IF((pData->getAttachedShader(shaderType)!=0), GL_INVALID_OPERATION); - pData->attachShader(shader,shaderType); - s_attachShader(ctx, program, shader); - ctx->dispatcher().glAttachShader(globalProgramName,globalShaderName); - } -} - -GL_APICALL void GL_APIENTRY glBindAttribLocation(GLuint program, GLuint index, const GLchar* name){ - GET_CTX(); - SET_ERROR_IF(!GLESv2Validate::attribName(name),GL_INVALID_OPERATION); - SET_ERROR_IF(!GLESv2Validate::attribIndex(index),GL_INVALID_VALUE); - if(ctx->shareGroup().Ptr()) { - const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program); - SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program); - SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION); - - ctx->dispatcher().glBindAttribLocation(globalProgramName,index,name); - } -} - -GL_APICALL void GL_APIENTRY glBindBuffer(GLenum target, GLuint buffer){ - GET_CTX(); - SET_ERROR_IF(!GLESv2Validate::bufferTarget(target),GL_INVALID_ENUM); - //if buffer wasn't generated before,generate one - if(buffer && ctx->shareGroup().Ptr() && !ctx->shareGroup()->isObject(VERTEXBUFFER,buffer)){ - ctx->shareGroup()->genName(VERTEXBUFFER,buffer); - ctx->shareGroup()->setObjectData(VERTEXBUFFER,buffer,ObjectDataPtr(new GLESbuffer())); - } - ctx->bindBuffer(target,buffer); - if (buffer) { - GLESbuffer* vbo = (GLESbuffer*)ctx->shareGroup()->getObjectData(VERTEXBUFFER,buffer).Ptr(); - vbo->setBinded(); - } -} - -GL_APICALL void GL_APIENTRY glBindFramebuffer(GLenum target, GLuint framebuffer){ - GET_CTX(); - SET_ERROR_IF(!GLESv2Validate::framebufferTarget(target),GL_INVALID_ENUM); - - GLuint globalFrameBufferName = framebuffer; - if(framebuffer && ctx->shareGroup().Ptr()){ - globalFrameBufferName = ctx->shareGroup()->getGlobalName(FRAMEBUFFER,framebuffer); - //if framebuffer wasn't generated before,generate one - if(!globalFrameBufferName){ - ctx->shareGroup()->genName(FRAMEBUFFER,framebuffer); - ctx->shareGroup()->setObjectData(FRAMEBUFFER, framebuffer, - ObjectDataPtr(new FramebufferData(framebuffer))); - globalFrameBufferName = ctx->shareGroup()->getGlobalName(FRAMEBUFFER,framebuffer); - } - } - ctx->dispatcher().glBindFramebufferEXT(target,globalFrameBufferName); - - // update framebuffer binding state - ctx->setFramebufferBinding(framebuffer); -} - -GL_APICALL void GL_APIENTRY glBindRenderbuffer(GLenum target, GLuint renderbuffer){ - GET_CTX(); - SET_ERROR_IF(!GLESv2Validate::renderbufferTarget(target),GL_INVALID_ENUM); - - GLuint globalRenderBufferName = renderbuffer; - if(renderbuffer && ctx->shareGroup().Ptr()){ - globalRenderBufferName = ctx->shareGroup()->getGlobalName(RENDERBUFFER,renderbuffer); - //if renderbuffer wasn't generated before,generate one - if(!globalRenderBufferName){ - ctx->shareGroup()->genName(RENDERBUFFER,renderbuffer); - ctx->shareGroup()->setObjectData(RENDERBUFFER, - renderbuffer, - ObjectDataPtr(new RenderbufferData())); - globalRenderBufferName = ctx->shareGroup()->getGlobalName(RENDERBUFFER,renderbuffer); - } - } - ctx->dispatcher().glBindRenderbufferEXT(target,globalRenderBufferName); - - // update renderbuffer binding state - ctx->setRenderbufferBinding(renderbuffer); -} - -GL_APICALL void GL_APIENTRY glBindTexture(GLenum target, GLuint texture){ - GET_CTX(); - SET_ERROR_IF(!GLESv2Validate::textureTarget(target),GL_INVALID_ENUM) - - //for handling default texture (0) - ObjectLocalName localTexName = TextureLocalName(target,texture); - - GLuint globalTextureName = localTexName; - if(ctx->shareGroup().Ptr()){ - globalTextureName = ctx->shareGroup()->getGlobalName(TEXTURE,localTexName); - //if texture wasn't generated before,generate one - if(!globalTextureName){ - ctx->shareGroup()->genName(TEXTURE,localTexName); - globalTextureName = ctx->shareGroup()->getGlobalName(TEXTURE,localTexName); - } - - TextureData* texData = getTextureData(localTexName); - if (texData->target==0) - texData->target = target; - //if texture was already bound to another target - SET_ERROR_IF(ctx->GLTextureTargetToLocal(texData->target) != ctx->GLTextureTargetToLocal(target), GL_INVALID_OPERATION); - texData->wasBound = true; - } - - ctx->setBindedTexture(target,texture); - ctx->dispatcher().glBindTexture(target,globalTextureName); -} - -GL_APICALL void GL_APIENTRY glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha){ - GET_CTX(); - ctx->dispatcher().glBlendColor(red,green,blue,alpha); -} - -GL_APICALL void GL_APIENTRY glBlendEquation( GLenum mode ){ - GET_CTX(); - SET_ERROR_IF(!GLESv2Validate::blendEquationMode(mode),GL_INVALID_ENUM) - ctx->dispatcher().glBlendEquation(mode); -} - -GL_APICALL void GL_APIENTRY glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha){ - GET_CTX(); - SET_ERROR_IF(!(GLESv2Validate::blendEquationMode(modeRGB) && GLESv2Validate::blendEquationMode(modeAlpha)),GL_INVALID_ENUM); - ctx->dispatcher().glBlendEquationSeparate(modeRGB,modeAlpha); -} - -GL_APICALL void GL_APIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor){ - GET_CTX(); - SET_ERROR_IF(!GLESv2Validate::blendSrc(sfactor) || !GLESv2Validate::blendDst(dfactor),GL_INVALID_ENUM) - ctx->dispatcher().glBlendFunc(sfactor,dfactor); -} - -GL_APICALL void GL_APIENTRY glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha){ - GET_CTX(); - SET_ERROR_IF( -!(GLESv2Validate::blendSrc(srcRGB) && GLESv2Validate::blendDst(dstRGB) && GLESv2Validate::blendSrc(srcAlpha) && GLESv2Validate::blendDst(dstAlpha)),GL_INVALID_ENUM); - ctx->dispatcher().glBlendFuncSeparate(srcRGB,dstRGB,srcAlpha,dstAlpha); -} - -GL_APICALL void GL_APIENTRY glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage){ - GET_CTX(); - SET_ERROR_IF(!GLESv2Validate::bufferTarget(target),GL_INVALID_ENUM); - SET_ERROR_IF(!GLESv2Validate::bufferUsage(usage),GL_INVALID_ENUM); - SET_ERROR_IF(!ctx->isBindedBuffer(target),GL_INVALID_OPERATION); - ctx->setBufferData(target,size,data,usage); -} - -GL_APICALL void GL_APIENTRY glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data){ - GET_CTX(); - SET_ERROR_IF(!ctx->isBindedBuffer(target),GL_INVALID_OPERATION); - SET_ERROR_IF(!GLESv2Validate::bufferTarget(target),GL_INVALID_ENUM); - SET_ERROR_IF(!ctx->setBufferSubData(target,offset,size,data),GL_INVALID_VALUE); -} - - -GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus(GLenum target){ - GET_CTX_RET(GL_FRAMEBUFFER_COMPLETE); - RET_AND_SET_ERROR_IF(!GLESv2Validate::framebufferTarget(target),GL_INVALID_ENUM,GL_FRAMEBUFFER_COMPLETE); - ctx->drawValidate(); - return ctx->dispatcher().glCheckFramebufferStatusEXT(target); -} - -GL_APICALL void GL_APIENTRY glClear(GLbitfield mask){ - GET_CTX(); - GLbitfield allowed_bits = GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT; - GLbitfield has_disallowed_bits = (mask & ~allowed_bits); - SET_ERROR_IF(has_disallowed_bits, GL_INVALID_VALUE); - ctx->drawValidate(); - - ctx->dispatcher().glClear(mask); -} -GL_APICALL void GL_APIENTRY glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha){ - GET_CTX(); - ctx->dispatcher().glClearColor(red,green,blue,alpha); -} -GL_APICALL void GL_APIENTRY glClearDepthf(GLclampf depth){ - GET_CTX(); - ctx->dispatcher().glClearDepth(depth); -} -GL_APICALL void GL_APIENTRY glClearStencil(GLint s){ - GET_CTX(); - ctx->dispatcher().glClearStencil(s); -} -GL_APICALL void GL_APIENTRY glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha){ - GET_CTX(); - ctx->dispatcher().glColorMask(red,green,blue,alpha); -} - -GL_APICALL void GL_APIENTRY glCompileShader(GLuint shader){ - GET_CTX(); - if(ctx->shareGroup().Ptr()) { - const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shader); - SET_ERROR_IF(globalShaderName==0, GL_INVALID_VALUE); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,shader); - SET_ERROR_IF(objData.Ptr()->getDataType()!= SHADER_DATA,GL_INVALID_OPERATION); - ShaderParser* sp = (ShaderParser*)objData.Ptr(); - ctx->dispatcher().glCompileShader(globalShaderName); - - GLsizei infoLogLength=0; - GLchar* infoLog; - ctx->dispatcher().glGetShaderiv(globalShaderName,GL_INFO_LOG_LENGTH,&infoLogLength); - infoLog = new GLchar[infoLogLength+1]; - ctx->dispatcher().glGetShaderInfoLog(globalShaderName,infoLogLength,NULL,infoLog); - sp->setInfoLog(infoLog); - } -} - -GL_APICALL void GL_APIENTRY glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data) -{ - GET_CTX(); - SET_ERROR_IF(!GLESv2Validate::textureTargetEx(target),GL_INVALID_ENUM); - SET_ERROR_IF(level < 0 || imageSize < 0, GL_INVALID_VALUE); - SET_ERROR_IF(!data,GL_INVALID_OPERATION); - - doCompressedTexImage2D(ctx, target, level, internalformat, - width, height, border, - imageSize, data, (void*)glTexImage2D); -} - -GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data){ - GET_CTX(); - SET_ERROR_IF(!GLESv2Validate::textureTargetEx(target),GL_INVALID_ENUM); - SET_ERROR_IF(!data,GL_INVALID_OPERATION); - ctx->dispatcher().glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data); -} - -GL_APICALL void GL_APIENTRY glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border){ - GET_CTX(); - SET_ERROR_IF(!(GLESv2Validate::pixelFrmt(ctx,internalformat) && GLESv2Validate::textureTargetEx(target)),GL_INVALID_ENUM); - SET_ERROR_IF((GLESv2Validate::textureIsCubeMap(target) && width != height), GL_INVALID_VALUE); - SET_ERROR_IF(border != 0,GL_INVALID_VALUE); - ctx->dispatcher().glCopyTexImage2D(target,level,internalformat,x,y,width,height,border); -} - -GL_APICALL void GL_APIENTRY glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height){ - GET_CTX(); - SET_ERROR_IF(!GLESv2Validate::textureTargetEx(target),GL_INVALID_ENUM); - ctx->dispatcher().glCopyTexSubImage2D(target,level,xoffset,yoffset,x,y,width,height); -} - -GL_APICALL GLuint GL_APIENTRY glCreateProgram(void){ - GET_CTX_RET(0); - const GLuint globalProgramName = ctx->dispatcher().glCreateProgram(); - if(ctx->shareGroup().Ptr() && globalProgramName) { - ProgramData* programInfo = new ProgramData(); - const GLuint localProgramName = ctx->shareGroup()->genName(SHADER, 0, true); - ctx->shareGroup()->replaceGlobalName(SHADER,localProgramName,globalProgramName); - ctx->shareGroup()->setObjectData(SHADER,localProgramName,ObjectDataPtr(programInfo)); - return localProgramName; - } - if(globalProgramName){ - ctx->dispatcher().glDeleteProgram(globalProgramName); - } - return 0; -} - -GL_APICALL GLuint GL_APIENTRY glCreateShader(GLenum type){ - GET_CTX_V2_RET(0); - RET_AND_SET_ERROR_IF(!GLESv2Validate::shaderType(type),GL_INVALID_ENUM,0); - const GLuint globalShaderName = ctx->dispatcher().glCreateShader(type); - if(ctx->shareGroup().Ptr() && globalShaderName) { - const GLuint localShaderName = ctx->shareGroup()->genName(SHADER, 0, true); - ShaderParser* sp = new ShaderParser(type); - ctx->shareGroup()->replaceGlobalName(SHADER,localShaderName,globalShaderName); - ctx->shareGroup()->setObjectData(SHADER,localShaderName,ObjectDataPtr(sp)); - return localShaderName; - } - if(globalShaderName){ - ctx->dispatcher().glDeleteShader(globalShaderName); - } - return 0; -} - -GL_APICALL void GL_APIENTRY glCullFace(GLenum mode){ - GET_CTX(); - ctx->dispatcher().glCullFace(mode); -} - -GL_APICALL void GL_APIENTRY glDeleteBuffers(GLsizei n, const GLuint* buffers){ - GET_CTX(); - SET_ERROR_IF(n<0,GL_INVALID_VALUE); - if(ctx->shareGroup().Ptr()) { - for(int i=0; i < n; i++){ - ctx->shareGroup()->deleteName(VERTEXBUFFER,buffers[i]); - } - } -} - -GL_APICALL void GL_APIENTRY glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers){ - GET_CTX(); - SET_ERROR_IF(n<0,GL_INVALID_VALUE); - if(ctx->shareGroup().Ptr()) { - for(int i=0; i < n; i++){ - const GLuint globalFrameBufferName = ctx->shareGroup()->getGlobalName(FRAMEBUFFER,framebuffers[i]); - ctx->shareGroup()->deleteName(FRAMEBUFFER,framebuffers[i]); - ctx->dispatcher().glDeleteFramebuffersEXT(1,&globalFrameBufferName); - } - } -} - -static void s_detachFromFramebuffer(GLuint bufferType, GLuint texture) { - GET_CTX(); - GLuint fbName = ctx->getFramebufferBinding(); - if (!fbName) return; - ObjectDataPtr fbObj = ctx->shareGroup()->getObjectData(FRAMEBUFFER,fbName); - if (fbObj.Ptr() == NULL) return; - FramebufferData *fbData = (FramebufferData *)fbObj.Ptr(); - GLenum target; - const GLenum kAttachments[] = {GL_COLOR_ATTACHMENT0, GL_DEPTH_ATTACHMENT, GL_STENCIL_ATTACHMENT}; - const size_t sizen = sizeof(kAttachments)/sizeof(GLenum); - for (size_t i = 0; i < sizen; ++i ) { - GLuint name = fbData->getAttachment(kAttachments[i], &target, NULL); - if (name != texture) continue; - if (TEXTURE == bufferType && GLESv2Validate::textureTargetEx(target)) { - glFramebufferTexture2D(GL_FRAMEBUFFER, kAttachments[i], target, 0, 0); - } else if (RENDERBUFFER == bufferType && GLESv2Validate::renderbufferTarget(target)) { - glFramebufferRenderbuffer(GL_FRAMEBUFFER, kAttachments[i], target, 0); - } - } -} - -GL_APICALL void GL_APIENTRY glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers){ - GET_CTX(); - SET_ERROR_IF(n<0,GL_INVALID_VALUE); - if(ctx->shareGroup().Ptr()) { - for(int i=0; i < n; i++){ - const GLuint globalRenderBufferName = ctx->shareGroup()->getGlobalName(RENDERBUFFER,renderbuffers[i]); - ctx->shareGroup()->deleteName(RENDERBUFFER,renderbuffers[i]); - ctx->dispatcher().glDeleteRenderbuffersEXT(1,&globalRenderBufferName); - s_detachFromFramebuffer(RENDERBUFFER, renderbuffers[i]); - } - } -} - -GL_APICALL void GL_APIENTRY glDeleteTextures(GLsizei n, const GLuint* textures){ - GET_CTX(); - SET_ERROR_IF(n<0,GL_INVALID_VALUE); - if(ctx->shareGroup().Ptr()) { - for(int i=0; i < n; i++){ - if (textures[i]!=0) { - TextureData* tData = getTextureData(textures[i]); - // delete the underlying OpenGL texture but only if this - // texture is not a target of EGLImage. - if (!tData || tData->sourceEGLImage == 0) { - const GLuint globalTextureName = ctx->shareGroup()->getGlobalName(TEXTURE,textures[i]); - ctx->dispatcher().glDeleteTextures(1,&globalTextureName); - } - ctx->shareGroup()->deleteName(TEXTURE,textures[i]); - - if (ctx->getBindedTexture(GL_TEXTURE_2D) == textures[i]) - ctx->setBindedTexture(GL_TEXTURE_2D,0); - if (ctx->getBindedTexture(GL_TEXTURE_CUBE_MAP) == textures[i]) - ctx->setBindedTexture(GL_TEXTURE_CUBE_MAP,0); - s_detachFromFramebuffer(TEXTURE, textures[i]); - } - } - } -} - -GL_APICALL void GL_APIENTRY glDeleteProgram(GLuint program){ - GET_CTX(); - if(program && ctx->shareGroup().Ptr()) { - const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program); - SET_ERROR_IF(!globalProgramName, GL_INVALID_VALUE); - - ObjectDataPtr programData = ctx->shareGroup()->getObjectData(SHADER,program); - ProgramData* pData = (ProgramData*)programData.Ptr(); - if (pData && pData->isInUse()) { - pData->setDeleteStatus(true); - return; - } - s_detachShader(ctx, pData->getAttachedVertexShader()); - s_detachShader(ctx, pData->getAttachedFragmentShader()); - - ctx->shareGroup()->deleteName(SHADER,program); - ctx->dispatcher().glDeleteProgram(globalProgramName); - } -} - -GL_APICALL void GL_APIENTRY glDeleteShader(GLuint shader){ - GET_CTX(); - if(shader && ctx->shareGroup().Ptr()) { - const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shader); - SET_ERROR_IF(!globalShaderName, GL_INVALID_VALUE); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,shader); - SET_ERROR_IF(!objData.Ptr() ,GL_INVALID_OPERATION); - SET_ERROR_IF(objData.Ptr()->getDataType()!=SHADER_DATA,GL_INVALID_OPERATION); - ShaderParser* sp = (ShaderParser*)objData.Ptr(); - if (sp->getAttachedProgram()) { - sp->setDeleteStatus(true); - } else { - ctx->shareGroup()->deleteName(SHADER,shader); - } - ctx->dispatcher().glDeleteShader(globalShaderName); - } - -} - -GL_APICALL void GL_APIENTRY glDepthFunc(GLenum func){ - GET_CTX(); - ctx->dispatcher().glDepthFunc(func); -} -GL_APICALL void GL_APIENTRY glDepthMask(GLboolean flag){ - GET_CTX(); - ctx->dispatcher().glDepthMask(flag); -} -GL_APICALL void GL_APIENTRY glDepthRangef(GLclampf zNear, GLclampf zFar){ - GET_CTX(); - ctx->dispatcher().glDepthRange(zNear,zFar); -} - -GL_APICALL void GL_APIENTRY glDetachShader(GLuint program, GLuint shader){ - GET_CTX(); - if(ctx->shareGroup().Ptr()) { - const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program); - SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE); - const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shader); - SET_ERROR_IF(globalShaderName==0, GL_INVALID_VALUE); - - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program); - SET_ERROR_IF(!objData.Ptr(),GL_INVALID_OPERATION); - SET_ERROR_IF(!(objData.Ptr()->getDataType()==PROGRAM_DATA) ,GL_INVALID_OPERATION); - - ProgramData* programData = (ProgramData*)objData.Ptr(); - SET_ERROR_IF(!programData->isAttached(shader),GL_INVALID_OPERATION); - programData->detachShader(shader); - - s_detachShader(ctx, shader); - - ctx->dispatcher().glDetachShader(globalProgramName,globalShaderName); - } -} - -GL_APICALL void GL_APIENTRY glDisable(GLenum cap){ - GET_CTX(); - ctx->dispatcher().glDisable(cap); -} - -GL_APICALL void GL_APIENTRY glDisableVertexAttribArray(GLuint index){ - GET_CTX(); - SET_ERROR_IF((!GLESv2Validate::arrayIndex(ctx,index)),GL_INVALID_VALUE); - ctx->enableArr(index,false); - ctx->dispatcher().glDisableVertexAttribArray(index); -} - -GL_APICALL void GL_APIENTRY glDrawArrays(GLenum mode, GLint first, GLsizei count){ - GET_CTX_V2(); - SET_ERROR_IF(count < 0,GL_INVALID_VALUE) - SET_ERROR_IF(!GLESv2Validate::drawMode(mode),GL_INVALID_ENUM); - - ctx->drawValidate(); - - GLESConversionArrays tmpArrs; - ctx->setupArraysPointers(tmpArrs,first,count,0,NULL,true); - - ctx->validateAtt0PreDraw(count); - - //Enable texture generation for GL_POINTS and gl_PointSize shader variable - //GLES2 assumes this is enabled by default, we need to set this state for GL - if (mode==GL_POINTS) { - ctx->dispatcher().glEnable(GL_POINT_SPRITE); - ctx->dispatcher().glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); - } - - ctx->dispatcher().glDrawArrays(mode,first,count); - - if (mode==GL_POINTS) { - ctx->dispatcher().glDisable(GL_VERTEX_PROGRAM_POINT_SIZE); - ctx->dispatcher().glDisable(GL_POINT_SPRITE); - } - - ctx->validateAtt0PostDraw(); -} - -GL_APICALL void GL_APIENTRY glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* elementsIndices){ - GET_CTX_V2(); - SET_ERROR_IF(count < 0,GL_INVALID_VALUE) - SET_ERROR_IF(!(GLESv2Validate::drawMode(mode) && GLESv2Validate::drawType(type)),GL_INVALID_ENUM); - - ctx->drawValidate(); - - const GLvoid* indices = elementsIndices; - if(ctx->isBindedBuffer(GL_ELEMENT_ARRAY_BUFFER)) { // if vbo is binded take the indices from the vbo - const unsigned char* buf = static_cast(ctx->getBindedBuffer(GL_ELEMENT_ARRAY_BUFFER)); - indices = buf + SafeUIntFromPointer(elementsIndices); - } - - GLESConversionArrays tmpArrs; - ctx->setupArraysPointers(tmpArrs,0,count,type,indices,false); - - unsigned int maxIndex = ctx->findMaxIndex(count, type, indices); - ctx->validateAtt0PreDraw(maxIndex); - - //See glDrawArrays - if (mode==GL_POINTS) { - ctx->dispatcher().glEnable(GL_POINT_SPRITE); - ctx->dispatcher().glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); - } - - ctx->dispatcher().glDrawElements(mode,count,type,indices); - - if (mode==GL_POINTS) { - ctx->dispatcher().glDisable(GL_VERTEX_PROGRAM_POINT_SIZE); - ctx->dispatcher().glDisable(GL_POINT_SPRITE); - } - - ctx->validateAtt0PostDraw(); -} - -GL_APICALL void GL_APIENTRY glEnable(GLenum cap){ - GET_CTX(); - ctx->dispatcher().glEnable(cap); -} - -GL_APICALL void GL_APIENTRY glEnableVertexAttribArray(GLuint index){ - GET_CTX(); - SET_ERROR_IF(!(GLESv2Validate::arrayIndex(ctx,index)),GL_INVALID_VALUE); - ctx->enableArr(index,true); - ctx->dispatcher().glEnableVertexAttribArray(index); -} - -GL_APICALL void GL_APIENTRY glFinish(void){ - GET_CTX(); - ctx->dispatcher().glFinish(); -} -GL_APICALL void GL_APIENTRY glFlush(void){ - GET_CTX(); - ctx->dispatcher().glFlush(); -} - - -GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer){ - GET_CTX(); - SET_ERROR_IF(!(GLESv2Validate::framebufferTarget(target) && - GLESv2Validate::renderbufferTarget(renderbuffertarget) && - GLESv2Validate::framebufferAttachment(attachment)),GL_INVALID_ENUM); - SET_ERROR_IF(!ctx->shareGroup().Ptr(), GL_INVALID_OPERATION); - - GLuint globalRenderbufferName = 0; - ObjectDataPtr obj; - - // generate the renderbuffer object if not yet exist - if(renderbuffer) { - if (!ctx->shareGroup()->isObject(RENDERBUFFER,renderbuffer)) { - ctx->shareGroup()->genName(RENDERBUFFER,renderbuffer); - obj = ObjectDataPtr(new RenderbufferData()); - ctx->shareGroup()->setObjectData(RENDERBUFFER, - renderbuffer, obj); - } - else { - obj = ctx->shareGroup()->getObjectData(RENDERBUFFER, renderbuffer); - } - - globalRenderbufferName = ctx->shareGroup()->getGlobalName(RENDERBUFFER,renderbuffer); - } - - // Update the the current framebuffer object attachment state - GLuint fbName = ctx->getFramebufferBinding(); - ObjectDataPtr fbObj = ctx->shareGroup()->getObjectData(FRAMEBUFFER,fbName); - if (fbObj.Ptr() != NULL) { - FramebufferData *fbData = (FramebufferData *)fbObj.Ptr(); - fbData->setAttachment(attachment, renderbuffertarget, renderbuffer, obj); - } - - if (renderbuffer && obj.Ptr() != NULL) { - RenderbufferData *rbData = (RenderbufferData *)obj.Ptr(); - if (rbData->sourceEGLImage != 0) { - // - // This renderbuffer object is an eglImage target - // attach the eglimage's texture instead the renderbuffer. - // - ctx->dispatcher().glFramebufferTexture2DEXT(target, - attachment, - GL_TEXTURE_2D, - rbData->eglImageGlobalTexName,0); - return; - } - } - - ctx->dispatcher().glFramebufferRenderbufferEXT(target,attachment,renderbuffertarget,globalRenderbufferName); -} - -GL_APICALL void GL_APIENTRY glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level){ - GET_CTX(); - SET_ERROR_IF(!(GLESv2Validate::framebufferTarget(target) && - GLESv2Validate::textureTargetEx(textarget) && - GLESv2Validate::framebufferAttachment(attachment)),GL_INVALID_ENUM); - SET_ERROR_IF(level != 0, GL_INVALID_VALUE); - SET_ERROR_IF(!ctx->shareGroup().Ptr(), GL_INVALID_OPERATION); - - GLuint globalTextureName = 0; - - if(texture) { - if (!ctx->shareGroup()->isObject(TEXTURE,texture)) { - ctx->shareGroup()->genName(TEXTURE,texture); - } - ObjectLocalName texname = TextureLocalName(textarget,texture); - globalTextureName = ctx->shareGroup()->getGlobalName(TEXTURE,texname); - } - - ctx->dispatcher().glFramebufferTexture2DEXT(target,attachment,textarget,globalTextureName,level); - - // Update the the current framebuffer object attachment state - GLuint fbName = ctx->getFramebufferBinding(); - ObjectDataPtr fbObj = ctx->shareGroup()->getObjectData(FRAMEBUFFER,fbName); - if (fbObj.Ptr() != NULL) { - FramebufferData *fbData = (FramebufferData *)fbObj.Ptr(); - fbData->setAttachment(attachment, textarget, - texture, ObjectDataPtr(NULL)); - } -} - - -GL_APICALL void GL_APIENTRY glFrontFace(GLenum mode){ - GET_CTX(); - ctx->dispatcher().glFrontFace(mode); -} - -GL_APICALL void GL_APIENTRY glGenBuffers(GLsizei n, GLuint* buffers){ - GET_CTX(); - SET_ERROR_IF(n<0,GL_INVALID_VALUE); - if(ctx->shareGroup().Ptr()) { - for(int i=0; ishareGroup()->genName(VERTEXBUFFER, 0, true); - //generating vbo object related to this buffer name - ctx->shareGroup()->setObjectData(VERTEXBUFFER,buffers[i],ObjectDataPtr(new GLESbuffer())); - } - } -} - -GL_APICALL void GL_APIENTRY glGenerateMipmap(GLenum target){ - GET_CTX(); - SET_ERROR_IF(!GLESvalidate::textureTarget(target), GL_INVALID_ENUM); - ctx->dispatcher().glGenerateMipmapEXT(target); -} - -GL_APICALL void GL_APIENTRY glGenFramebuffers(GLsizei n, GLuint* framebuffers){ - GET_CTX(); - SET_ERROR_IF(n<0,GL_INVALID_VALUE); - if(ctx->shareGroup().Ptr()) { - for(int i=0; ishareGroup()->genName(FRAMEBUFFER, 0 ,true); - ctx->shareGroup()->setObjectData(FRAMEBUFFER, framebuffers[i], - ObjectDataPtr(new FramebufferData(framebuffers[i]))); - } - } -} - -GL_APICALL void GL_APIENTRY glGenRenderbuffers(GLsizei n, GLuint* renderbuffers){ - GET_CTX(); - SET_ERROR_IF(n<0,GL_INVALID_VALUE); - if(ctx->shareGroup().Ptr()) { - for(int i=0; ishareGroup()->genName(RENDERBUFFER, 0, true); - ctx->shareGroup()->setObjectData(RENDERBUFFER, - renderbuffers[i], - ObjectDataPtr(new RenderbufferData())); - } - } -} - -GL_APICALL void GL_APIENTRY glGenTextures(GLsizei n, GLuint* textures){ - GET_CTX(); - SET_ERROR_IF(n<0,GL_INVALID_VALUE); - if(ctx->shareGroup().Ptr()) { - for(int i=0; ishareGroup()->genName(TEXTURE, 0, true); - } - } -} - -GL_APICALL void GL_APIENTRY glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name){ - GET_CTX(); - if(ctx->shareGroup().Ptr()) { - const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program); - SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program); - SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION); - ctx->dispatcher().glGetActiveAttrib(globalProgramName,index,bufsize,length,size,type,name); - } -} - -GL_APICALL void GL_APIENTRY glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name){ - GET_CTX(); - if(ctx->shareGroup().Ptr()) { - const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program); - SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program); - SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION); - ctx->dispatcher().glGetActiveUniform(globalProgramName,index,bufsize,length,size,type,name); - } -} - -GL_APICALL void GL_APIENTRY glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders){ - GET_CTX(); - if(ctx->shareGroup().Ptr()) { - const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program); - SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE); - ctx->dispatcher().glGetAttachedShaders(globalProgramName,maxcount,count,shaders); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program); - SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION); - GLint numShaders=0; - ctx->dispatcher().glGetProgramiv(globalProgramName,GL_ATTACHED_SHADERS,&numShaders); - for(int i=0 ; i < maxcount && ishareGroup()->getLocalName(SHADER,shaders[i]); - } - } -} - -GL_APICALL int GL_APIENTRY glGetAttribLocation(GLuint program, const GLchar* name){ - GET_CTX_RET(-1); - if(ctx->shareGroup().Ptr()) { - const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program); - RET_AND_SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE,-1); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program); - RET_AND_SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION,-1); - ProgramData* pData = (ProgramData *)objData.Ptr(); - RET_AND_SET_ERROR_IF(pData->getLinkStatus() != GL_TRUE,GL_INVALID_OPERATION,-1); - return ctx->dispatcher().glGetAttribLocation(globalProgramName,name); - } - return -1; -} - -GL_APICALL void GL_APIENTRY glGetBooleanv(GLenum pname, GLboolean* params){ - GET_CTX(); - - if (ctx->glGetBooleanv(pname,params)) - { - return; - } - - switch(pname) - { - case GL_SHADER_COMPILER: - case GL_SHADER_BINARY_FORMATS: - case GL_NUM_SHADER_BINARY_FORMATS: - case GL_MAX_VERTEX_UNIFORM_VECTORS: - case GL_MAX_VARYING_VECTORS: - case GL_MAX_FRAGMENT_UNIFORM_VECTORS: - if(ctx->getCaps()->GL_ARB_ES2_COMPATIBILITY) - ctx->dispatcher().glGetBooleanv(pname,params); - else - { - GLint iparam; - glGetIntegerv(pname,&iparam); - *params = (iparam != 0); - } - break; - - default: - ctx->dispatcher().glGetBooleanv(pname,params); - } -} - -GL_APICALL void GL_APIENTRY glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params){ - GET_CTX(); - SET_ERROR_IF(!(GLESv2Validate::bufferTarget(target) && GLESv2Validate::bufferParam(pname)),GL_INVALID_ENUM); - SET_ERROR_IF(!ctx->isBindedBuffer(target),GL_INVALID_OPERATION); - switch(pname) { - case GL_BUFFER_SIZE: - ctx->getBufferSize(target,params); - break; - case GL_BUFFER_USAGE: - ctx->getBufferUsage(target,params); - break; - } -} - - -GL_APICALL GLenum GL_APIENTRY glGetError(void){ - GET_CTX_RET(GL_NO_ERROR) - GLenum err = ctx->getGLerror(); - if(err != GL_NO_ERROR) { - ctx->setGLerror(GL_NO_ERROR); - return err; - } - return ctx->dispatcher().glGetError(); -} - -GL_APICALL void GL_APIENTRY glGetFloatv(GLenum pname, GLfloat* params){ - GET_CTX(); - - if (ctx->glGetFloatv(pname,params)) { - return; - } - - GLint i; - - switch (pname) { - case GL_CURRENT_PROGRAM: - case GL_FRAMEBUFFER_BINDING: - case GL_RENDERBUFFER_BINDING: - glGetIntegerv(pname,&i); - *params = (GLfloat)i; - break; - case GL_NUM_COMPRESSED_TEXTURE_FORMATS: - *params = (GLfloat)getCompressedFormats(NULL); - break; - case GL_COMPRESSED_TEXTURE_FORMATS: - { - int nparams = getCompressedFormats(NULL); - if (nparams>0) { - int * iparams = new int[nparams]; - getCompressedFormats(iparams); - for (int i=0; igetCaps()->GL_ARB_ES2_COMPATIBILITY) - ctx->dispatcher().glGetFloatv(pname,params); - else - { - glGetIntegerv(pname,&i); - *params = (GLfloat)i; - } - break; - - case GL_STENCIL_BACK_VALUE_MASK: - case GL_STENCIL_BACK_WRITEMASK: - case GL_STENCIL_VALUE_MASK: - case GL_STENCIL_WRITEMASK: - { - GLint myint = 0; - glGetIntegerv(pname, &myint); - // Two casts are used: since mask is unsigned integer, - // the first cast converts to unsigned integer; - // the second cast converts to float. - *params = (GLfloat)((GLuint)(myint)); - } - break; - - default: - ctx->dispatcher().glGetFloatv(pname,params); - } -} - -GL_APICALL void GL_APIENTRY glGetIntegerv(GLenum pname, GLint* params){ - int destroyCtx = 0; - GET_CTX(); - - if (!ctx) { - ctx = createGLESContext(); - if (ctx) - destroyCtx = 1; - } - if (ctx->glGetIntegerv(pname,params)) - { - if (destroyCtx) - { - deleteGLESContext(ctx); - return; - } - } - - bool es2 = ctx->getCaps()->GL_ARB_ES2_COMPATIBILITY; - GLint i; - - switch (pname) { - case GL_CURRENT_PROGRAM: - if (ctx->shareGroup().Ptr()) { - ctx->dispatcher().glGetIntegerv(pname,&i); - *params = ctx->shareGroup()->getLocalName(SHADER,i); - } - break; - case GL_FRAMEBUFFER_BINDING: - if (ctx->shareGroup().Ptr()) { - ctx->dispatcher().glGetIntegerv(pname,&i); - *params = ctx->shareGroup()->getLocalName(FRAMEBUFFER,i); - } - break; - case GL_RENDERBUFFER_BINDING: - if (ctx->shareGroup().Ptr()) { - ctx->dispatcher().glGetIntegerv(pname,&i); - *params = ctx->shareGroup()->getLocalName(RENDERBUFFER,i); - } - break; - - case GL_NUM_COMPRESSED_TEXTURE_FORMATS: - *params = getCompressedFormats(NULL); - break; - case GL_COMPRESSED_TEXTURE_FORMATS: - getCompressedFormats(params); - break; - - case GL_SHADER_COMPILER: - if(es2) - ctx->dispatcher().glGetIntegerv(pname,params); - else - *params = 1; - break; - - case GL_SHADER_BINARY_FORMATS: - if(es2) - ctx->dispatcher().glGetIntegerv(pname,params); - break; - - case GL_NUM_SHADER_BINARY_FORMATS: - if(es2) - ctx->dispatcher().glGetIntegerv(pname,params); - else - *params = 0; - break; - - case GL_MAX_VERTEX_UNIFORM_VECTORS: - if(es2) - ctx->dispatcher().glGetIntegerv(pname,params); - else - *params = 128; - break; - - case GL_MAX_VARYING_VECTORS: - if(es2) - ctx->dispatcher().glGetIntegerv(pname,params); - else - *params = 8; - break; - - case GL_MAX_FRAGMENT_UNIFORM_VECTORS: - if(es2) - ctx->dispatcher().glGetIntegerv(pname,params); - else - *params = 16; - break; - - case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: - ctx->dispatcher().glGetIntegerv(pname,params); - if(*params > 16) - { - // GLES spec requires only 2, and the ATI driver erronously - // returns 32 (although it supports only 16). This WAR is simple, - // compliant and good enough for developers. - *params = 16; - } - break; - default: - ctx->dispatcher().glGetIntegerv(pname,params); - } - if (destroyCtx) - deleteGLESContext(ctx); -} - -GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params){ - GET_CTX(); - SET_ERROR_IF(!(GLESv2Validate::framebufferTarget(target) && - GLESv2Validate::framebufferAttachment(attachment) && - GLESv2Validate::framebufferAttachmentParams(pname)),GL_INVALID_ENUM); - - // - // Take the attachment attribute from our state - if available - // - GLuint fbName = ctx->getFramebufferBinding(); - SET_ERROR_IF (!fbName, GL_INVALID_OPERATION); - if (fbName) { - ObjectDataPtr fbObj = ctx->shareGroup()->getObjectData(FRAMEBUFFER,fbName); - if (fbObj.Ptr() != NULL) { - FramebufferData *fbData = (FramebufferData *)fbObj.Ptr(); - GLenum target; - GLuint name = fbData->getAttachment(attachment, &target, NULL); - if (!name) { - SET_ERROR_IF(pname != GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE && - pname != GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, GL_INVALID_ENUM); - } - if (pname == GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) { - if (target == GL_TEXTURE_2D) { - *params = GL_TEXTURE; - return; - } - else if (target == GL_RENDERBUFFER) { - *params = GL_RENDERBUFFER; - return; - } else { - *params = GL_NONE; - } - } - else if (pname == GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) { - *params = name; - return; - } - } - } - - ctx->dispatcher().glGetFramebufferAttachmentParameterivEXT(target,attachment,pname,params); -} - -GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params){ - GET_CTX(); - SET_ERROR_IF(!(GLESv2Validate::renderbufferTarget(target) && GLESv2Validate::renderbufferParams(pname)),GL_INVALID_ENUM); - - // - // If this is a renderbuffer which is eglimage's target, we - // should query the underlying eglimage's texture object instead. - // - GLuint rb = ctx->getRenderbufferBinding(); - if (rb) { - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(RENDERBUFFER,rb); - RenderbufferData *rbData = (RenderbufferData *)objData.Ptr(); - if (rbData && rbData->sourceEGLImage != 0) { - GLenum texPname; - switch(pname) { - case GL_RENDERBUFFER_WIDTH: - texPname = GL_TEXTURE_WIDTH; - break; - case GL_RENDERBUFFER_HEIGHT: - texPname = GL_TEXTURE_HEIGHT; - break; - case GL_RENDERBUFFER_INTERNAL_FORMAT: - texPname = GL_TEXTURE_INTERNAL_FORMAT; - break; - case GL_RENDERBUFFER_RED_SIZE: - texPname = GL_TEXTURE_RED_SIZE; - break; - case GL_RENDERBUFFER_GREEN_SIZE: - texPname = GL_TEXTURE_GREEN_SIZE; - break; - case GL_RENDERBUFFER_BLUE_SIZE: - texPname = GL_TEXTURE_BLUE_SIZE; - break; - case GL_RENDERBUFFER_ALPHA_SIZE: - texPname = GL_TEXTURE_ALPHA_SIZE; - break; - case GL_RENDERBUFFER_DEPTH_SIZE: - texPname = GL_TEXTURE_DEPTH_SIZE; - break; - case GL_RENDERBUFFER_STENCIL_SIZE: - default: - *params = 0; //XXX - return; - break; - } - - GLint prevTex; - ctx->dispatcher().glGetIntegerv(GL_TEXTURE_BINDING_2D, &prevTex); - ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, - rbData->eglImageGlobalTexName); - ctx->dispatcher().glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, - texPname, - params); - ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, prevTex); - return; - } - } - - ctx->dispatcher().glGetRenderbufferParameterivEXT(target,pname,params); -} - - -GL_APICALL void GL_APIENTRY glGetProgramiv(GLuint program, GLenum pname, GLint* params){ - GET_CTX(); - SET_ERROR_IF(!GLESv2Validate::programParam(pname),GL_INVALID_ENUM); - if(ctx->shareGroup().Ptr()) { - const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program); - SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE); - switch(pname) { - case GL_DELETE_STATUS: - { - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program); - SET_ERROR_IF(!objData.Ptr() ,GL_INVALID_OPERATION); - SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION); - ProgramData* programData = (ProgramData*)objData.Ptr(); - params[0] = programData->getDeleteStatus() ? GL_TRUE : GL_FALSE; - } - break; - case GL_LINK_STATUS: - { - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program); - SET_ERROR_IF(!objData.Ptr() ,GL_INVALID_OPERATION); - SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION); - ProgramData* programData = (ProgramData*)objData.Ptr(); - params[0] = programData->getLinkStatus(); - } - break; - //validate status should not return GL_TRUE if link failed - case GL_VALIDATE_STATUS: - { - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program); - SET_ERROR_IF(!objData.Ptr() ,GL_INVALID_OPERATION); - SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION); - ProgramData* programData = (ProgramData*)objData.Ptr(); - if (programData->getLinkStatus()==GL_TRUE) - ctx->dispatcher().glGetProgramiv(globalProgramName,pname,params); - else - params[0] = GL_FALSE; - } - break; - case GL_INFO_LOG_LENGTH: - { - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program); - SET_ERROR_IF(!objData.Ptr() ,GL_INVALID_OPERATION); - SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION); - ProgramData* programData = (ProgramData*)objData.Ptr(); - GLint logLength = strlen(programData->getInfoLog()); - params[0] = (logLength>0) ? logLength+1 : 0; - } - break; - default: - ctx->dispatcher().glGetProgramiv(globalProgramName,pname,params); - } - } -} - -GL_APICALL void GL_APIENTRY glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog){ - GET_CTX(); - if(ctx->shareGroup().Ptr()) { - const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program); - SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program); - SET_ERROR_IF(!objData.Ptr() ,GL_INVALID_OPERATION); - SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION); - ProgramData* programData = (ProgramData*)objData.Ptr(); - - if (bufsize==0) { - if (length) { - *length = 0; - } - return; - } - - GLsizei logLength; - logLength = strlen(programData->getInfoLog()); - - GLsizei returnLength=0; - if (infolog) { - returnLength = bufsize-1 < logLength ? bufsize-1 : logLength; - strncpy(infolog,programData->getInfoLog(),returnLength+1); - infolog[returnLength] = '\0'; - } - if (length) { - *length = returnLength; - } - } -} - -GL_APICALL void GL_APIENTRY glGetShaderiv(GLuint shader, GLenum pname, GLint* params){ - GET_CTX(); - if(ctx->shareGroup().Ptr()) { - const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shader); - if (pname == GL_DELETE_STATUS) { - SET_ERROR_IF(globalShaderName == 0, GL_INVALID_VALUE); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,shader); - SET_ERROR_IF(!objData.Ptr() ,GL_INVALID_VALUE); - SET_ERROR_IF(objData.Ptr()->getDataType()!=SHADER_DATA,GL_INVALID_VALUE); - ShaderParser* sp = (ShaderParser*)objData.Ptr(); - params[0] = (sp->getDeleteStatus()) ? GL_TRUE : GL_FALSE; - return; - } - SET_ERROR_IF(globalShaderName==0, GL_INVALID_VALUE); - switch(pname) { - case GL_INFO_LOG_LENGTH: - { - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,shader); - SET_ERROR_IF(!objData.Ptr() ,GL_INVALID_OPERATION); - SET_ERROR_IF(objData.Ptr()->getDataType()!=SHADER_DATA,GL_INVALID_OPERATION); - ShaderParser* sp = (ShaderParser*)objData.Ptr(); - GLint logLength = strlen(sp->getInfoLog()); - params[0] = (logLength>0) ? logLength+1 : 0; - } - break; - default: - ctx->dispatcher().glGetShaderiv(globalShaderName,pname,params); - } - } -} - - -GL_APICALL void GL_APIENTRY glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog){ - GET_CTX(); - if(ctx->shareGroup().Ptr()) { - const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shader); - SET_ERROR_IF(globalShaderName==0, GL_INVALID_VALUE); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,shader); - SET_ERROR_IF(!objData.Ptr() ,GL_INVALID_OPERATION); - SET_ERROR_IF(objData.Ptr()->getDataType()!=SHADER_DATA,GL_INVALID_OPERATION); - ShaderParser* sp = (ShaderParser*)objData.Ptr(); - - if (bufsize==0) { - if (length) { - *length = 0; - } - return; - } - - GLsizei logLength; - logLength = strlen(sp->getInfoLog()); - - GLsizei returnLength=0; - if (infolog) { - returnLength = bufsize-1 getInfoLog(),returnLength+1); - infolog[returnLength] = '\0'; - } - if (length) { - *length = returnLength; - } - } -} - -GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision){ - GET_CTX_V2(); - SET_ERROR_IF(!(GLESv2Validate::shaderType(shadertype) && GLESv2Validate::precisionType(precisiontype)),GL_INVALID_ENUM); - - switch (precisiontype) { - case GL_LOW_INT: - case GL_MEDIUM_INT: - case GL_HIGH_INT: - range[0] = range[1] = 16; - *precision = 0; - break; - - case GL_LOW_FLOAT: - case GL_MEDIUM_FLOAT: - case GL_HIGH_FLOAT: - if(ctx->dispatcher().glGetShaderPrecisionFormat != NULL) { - ctx->dispatcher().glGetShaderPrecisionFormat(shadertype,precisiontype,range,precision); - } else { - range[0] = range[1] = 127; - *precision = 24; - } - break; - } -} - -GL_APICALL void GL_APIENTRY glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source){ - GET_CTX(); - if(ctx->shareGroup().Ptr()) { - const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shader); - SET_ERROR_IF(globalShaderName == 0,GL_INVALID_VALUE); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,shader); - SET_ERROR_IF(!objData.Ptr(),GL_INVALID_OPERATION); - SET_ERROR_IF(objData.Ptr()->getDataType()!=SHADER_DATA,GL_INVALID_OPERATION); - const char* src = ((ShaderParser*)objData.Ptr())->getOriginalSrc(); - int srcLength = 0; - if (src) { - srcLength = strlen(src); - } - - int returnLength = bufsizegetVendorString(); - case GL_RENDERER: - return (const GLubyte*)ctx->getRendererString(); - case GL_VERSION: - return (const GLubyte*)ctx->getVersionString(); - case GL_SHADING_LANGUAGE_VERSION: - return SHADING; - case GL_EXTENSIONS: - return (const GLubyte*)ctx->getExtensionString(); - default: - RET_AND_SET_ERROR_IF(true,GL_INVALID_ENUM,NULL); - } -} - -GL_APICALL void GL_APIENTRY glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params){ - GET_CTX(); - SET_ERROR_IF(!(GLESv2Validate::textureTarget(target) && GLESv2Validate::textureParams(pname)),GL_INVALID_ENUM); - ctx->dispatcher().glGetTexParameterfv(target,pname,params); - -} -GL_APICALL void GL_APIENTRY glGetTexParameteriv(GLenum target, GLenum pname, GLint* params){ - GET_CTX(); - SET_ERROR_IF(!(GLESv2Validate::textureTarget(target) && GLESv2Validate::textureParams(pname)),GL_INVALID_ENUM); - ctx->dispatcher().glGetTexParameteriv(target,pname,params); -} - -GL_APICALL void GL_APIENTRY glGetUniformfv(GLuint program, GLint location, GLfloat* params){ - GET_CTX(); - SET_ERROR_IF(location < 0,GL_INVALID_OPERATION); - if(ctx->shareGroup().Ptr()) { - const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program); - SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program); - SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION); - ProgramData* pData = (ProgramData *)objData.Ptr(); - SET_ERROR_IF(pData->getLinkStatus() != GL_TRUE,GL_INVALID_OPERATION); - ctx->dispatcher().glGetUniformfv(globalProgramName,location,params); - } -} - -GL_APICALL void GL_APIENTRY glGetUniformiv(GLuint program, GLint location, GLint* params){ - GET_CTX(); - SET_ERROR_IF(location < 0,GL_INVALID_OPERATION); - if(ctx->shareGroup().Ptr()) { - const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program); - SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program); - SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION); - ProgramData* pData = (ProgramData *)objData.Ptr(); - SET_ERROR_IF(pData->getLinkStatus() != GL_TRUE,GL_INVALID_OPERATION); - ctx->dispatcher().glGetUniformiv(globalProgramName,location,params); - } -} - -GL_APICALL int GL_APIENTRY glGetUniformLocation(GLuint program, const GLchar* name){ - GET_CTX_RET(-1); - if(ctx->shareGroup().Ptr()) { - const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program); - RET_AND_SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE,-1); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program); - RET_AND_SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION,-1); - ProgramData* pData = (ProgramData *)objData.Ptr(); - RET_AND_SET_ERROR_IF(pData->getLinkStatus() != GL_TRUE,GL_INVALID_OPERATION,-1); - return ctx->dispatcher().glGetUniformLocation(globalProgramName,name); - } - return -1; -} - -static bool s_invalidVertexAttribIndex(GLuint index) { - GLint param=0; - glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, ¶m); - return (param < 0 || index >= (GLuint)param); -} - -GL_APICALL void GL_APIENTRY glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params){ - GET_CTX_V2(); - SET_ERROR_IF(s_invalidVertexAttribIndex(index), GL_INVALID_VALUE); - const GLESpointer* p = ctx->getPointer(index); - if(p) { - switch(pname){ - case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: - *params = 0; - break; - case GL_VERTEX_ATTRIB_ARRAY_ENABLED: - *params = p->isEnable(); - break; - case GL_VERTEX_ATTRIB_ARRAY_SIZE: - *params = p->getSize(); - break; - case GL_VERTEX_ATTRIB_ARRAY_STRIDE: - *params = p->getStride(); - break; - case GL_VERTEX_ATTRIB_ARRAY_TYPE: - *params = p->getType(); - break; - case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: - *params = p->isNormalize(); - break; - case GL_CURRENT_VERTEX_ATTRIB: - if(index == 0) - { - const float* att0 = ctx->getAtt0(); - for(int i=0; i<4; i++) - params[i] = att0[i]; - } - else - ctx->dispatcher().glGetVertexAttribfv(index,pname,params); - break; - default: - ctx->setGLerror(GL_INVALID_ENUM); - } - } else { - ctx->setGLerror(GL_INVALID_VALUE); - } -} - -GL_APICALL void GL_APIENTRY glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params){ - GET_CTX_V2(); - SET_ERROR_IF(s_invalidVertexAttribIndex(index), GL_INVALID_VALUE); - const GLESpointer* p = ctx->getPointer(index); - if(p) { - switch(pname){ - case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: - *params = 0; - break; - case GL_VERTEX_ATTRIB_ARRAY_ENABLED: - *params = p->isEnable(); - break; - case GL_VERTEX_ATTRIB_ARRAY_SIZE: - *params = p->getSize(); - break; - case GL_VERTEX_ATTRIB_ARRAY_STRIDE: - *params = p->getStride(); - break; - case GL_VERTEX_ATTRIB_ARRAY_TYPE: - *params = p->getType(); - break; - case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: - *params = p->isNormalize(); - break; - case GL_CURRENT_VERTEX_ATTRIB: - if(index == 0) - { - const float* att0 = ctx->getAtt0(); - for(int i=0; i<4; i++) - params[i] = (GLint)att0[i]; - } - else - ctx->dispatcher().glGetVertexAttribiv(index,pname,params); - break; - default: - ctx->setGLerror(GL_INVALID_ENUM); - } - } else { - ctx->setGLerror(GL_INVALID_VALUE); - } -} - -GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer){ - GET_CTX(); - SET_ERROR_IF(pname != GL_VERTEX_ATTRIB_ARRAY_POINTER,GL_INVALID_ENUM); - SET_ERROR_IF((!GLESv2Validate::arrayIndex(ctx,index)),GL_INVALID_VALUE); - - const GLESpointer* p = ctx->getPointer(index); - if(p) { - *pointer = const_cast( p->getBufferData()); - } else { - ctx->setGLerror(GL_INVALID_VALUE); - } -} - -GL_APICALL void GL_APIENTRY glHint(GLenum target, GLenum mode){ - GET_CTX(); - SET_ERROR_IF(!GLESv2Validate::hintTargetMode(target,mode),GL_INVALID_ENUM); - ctx->dispatcher().glHint(target,mode); -} - -GL_APICALL GLboolean GL_APIENTRY glIsEnabled(GLenum cap){ - GET_CTX_RET(GL_FALSE); - RET_AND_SET_ERROR_IF(!GLESv2Validate::capability(cap),GL_INVALID_ENUM,GL_FALSE); - return ctx->dispatcher().glIsEnabled(cap); -} - -GL_APICALL GLboolean GL_APIENTRY glIsBuffer(GLuint buffer){ - GET_CTX_RET(GL_FALSE) - if(buffer && ctx->shareGroup().Ptr()) { - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(VERTEXBUFFER,buffer); - return objData.Ptr() ? ((GLESbuffer*)objData.Ptr())->wasBinded():GL_FALSE; - } - return GL_FALSE; -} - -GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer(GLuint framebuffer){ - GET_CTX_RET(GL_FALSE) - if(framebuffer && ctx->shareGroup().Ptr()){ - return (ctx->shareGroup()->isObject(FRAMEBUFFER,framebuffer) && - ctx->getFramebufferBinding() == framebuffer) ? GL_TRUE :GL_FALSE; - } - return GL_FALSE; -} - -GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer(GLuint renderbuffer){ - GET_CTX_RET(GL_FALSE) - if(renderbuffer && ctx->shareGroup().Ptr()){ - return (ctx->shareGroup()->isObject(RENDERBUFFER,renderbuffer) && - ctx->getRenderbufferBinding() == renderbuffer) ? GL_TRUE :GL_FALSE; - } - return GL_FALSE; -} - -GL_APICALL GLboolean GL_APIENTRY glIsTexture(GLuint texture){ - GET_CTX_RET(GL_FALSE) - if (texture==0) - return GL_FALSE; - TextureData* tex = getTextureData(texture); - return tex ? tex->wasBound : GL_FALSE; -} - -GL_APICALL GLboolean GL_APIENTRY glIsProgram(GLuint program){ - GET_CTX_RET(GL_FALSE) - if(program && ctx->shareGroup().Ptr() && - ctx->shareGroup()->isObject(SHADER,program)) { - const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program); - return ctx->dispatcher().glIsProgram(globalProgramName); - } - return GL_FALSE; -} - -GL_APICALL GLboolean GL_APIENTRY glIsShader(GLuint shader){ - GET_CTX_RET(GL_FALSE) - if(shader && ctx->shareGroup().Ptr() && - ctx->shareGroup()->isObject(SHADER,shader)) { - const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shader); - return ctx->dispatcher().glIsShader(globalShaderName); - } - return GL_FALSE; -} - -GL_APICALL void GL_APIENTRY glLineWidth(GLfloat width){ - GET_CTX(); - ctx->dispatcher().glLineWidth(width); -} - -GL_APICALL void GL_APIENTRY glLinkProgram(GLuint program){ - GET_CTX(); - GLint linkStatus = GL_FALSE; - if(ctx->shareGroup().Ptr()) { - const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program); - SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE); - - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program); - SET_ERROR_IF(!objData.Ptr(), GL_INVALID_OPERATION); - SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA, GL_INVALID_OPERATION); - ProgramData* programData = (ProgramData*)objData.Ptr(); - GLint fragmentShader = programData->getAttachedFragmentShader(); - GLint vertexShader = programData->getAttachedVertexShader(); - if (vertexShader != 0 && fragmentShader!=0) { - /* validating that the fragment & vertex shaders were compiled successfuly*/ - GLint fCompileStatus = GL_FALSE; - GLint vCompileStatus = GL_FALSE; - GLuint fragmentShaderGlobal = ctx->shareGroup()->getGlobalName(SHADER,fragmentShader); - GLuint vertexShaderGlobal = ctx->shareGroup()->getGlobalName(SHADER,vertexShader); - ctx->dispatcher().glGetShaderiv(fragmentShaderGlobal,GL_COMPILE_STATUS,&fCompileStatus); - ctx->dispatcher().glGetShaderiv(vertexShaderGlobal,GL_COMPILE_STATUS,&vCompileStatus); - - if(fCompileStatus != 0 && vCompileStatus != 0){ - ctx->dispatcher().glLinkProgram(globalProgramName); - ctx->dispatcher().glGetProgramiv(globalProgramName,GL_LINK_STATUS,&linkStatus); - } - } - programData->setLinkStatus(linkStatus); - - GLsizei infoLogLength=0; - GLchar* infoLog; - ctx->dispatcher().glGetProgramiv(globalProgramName,GL_INFO_LOG_LENGTH,&infoLogLength); - infoLog = new GLchar[infoLogLength+1]; - ctx->dispatcher().glGetProgramInfoLog(globalProgramName,infoLogLength,NULL,infoLog); - programData->setInfoLog(infoLog); - } -} - -GL_APICALL void GL_APIENTRY glPixelStorei(GLenum pname, GLint param){ - GET_CTX(); - SET_ERROR_IF(!GLESv2Validate::pixelStoreParam(pname),GL_INVALID_ENUM); - SET_ERROR_IF(!((param==1)||(param==2)||(param==4)||(param==8)), GL_INVALID_VALUE); - ctx->setUnpackAlignment(param); - ctx->dispatcher().glPixelStorei(pname,param); -} - -GL_APICALL void GL_APIENTRY glPolygonOffset(GLfloat factor, GLfloat units){ - GET_CTX(); - ctx->dispatcher().glPolygonOffset(factor,units); -} - -GL_APICALL void GL_APIENTRY glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels){ - GET_CTX(); - SET_ERROR_IF(!(GLESv2Validate::readPixelFrmt(format) && GLESv2Validate::pixelType(ctx,type)),GL_INVALID_ENUM); - SET_ERROR_IF((width < 0 || height < 0),GL_INVALID_VALUE); - SET_ERROR_IF(!(GLESv2Validate::pixelOp(format,type)),GL_INVALID_OPERATION); - SET_ERROR_IF(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE, GL_INVALID_FRAMEBUFFER_OPERATION); - ctx->dispatcher().glReadPixels(x,y,width,height,format,type,pixels); -} - - -GL_APICALL void GL_APIENTRY glReleaseShaderCompiler(void){ -// this function doesn't work on Mac OS with MacOSX10.9sdk -#ifndef __APPLE__ - - /* Use this function with mesa will cause potential bug. Specifically, - * calling this function between glCompileShader() and glLinkProgram() will - * release resources that would be potentially used by glLinkProgram, - * resulting in a segmentation fault. - */ - const char* env = ::getenv("ANDROID_GL_LIB"); - if (env && !strcmp(env, "mesa")) { - return; - } - - GET_CTX(); - - if(ctx->dispatcher().glReleaseShaderCompiler != NULL) - { - ctx->dispatcher().glReleaseShaderCompiler(); - } -#endif // !__APPLE__ -} - -GL_APICALL void GL_APIENTRY glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height){ - GET_CTX(); - GLenum internal = internalformat; - switch (internalformat) { - case GL_RGB565: - internal = GL_RGB; - break; - case GL_RGB5_A1: - internal = GL_RGBA; - break; - default: - internal = internalformat; - break; - } - - // Get current bounded renderbuffer - // raise INVALID_OPERATIOn if no renderbuffer is bounded - GLuint rb = ctx->getRenderbufferBinding(); - SET_ERROR_IF(rb == 0,GL_INVALID_OPERATION); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(RENDERBUFFER,rb); - RenderbufferData *rbData = (RenderbufferData *)objData.Ptr(); - SET_ERROR_IF(!rbData,GL_INVALID_OPERATION); - - // - // if the renderbuffer was an eglImage target, detach from - // the eglImage. - // - if (rbData->sourceEGLImage != 0) { - if (rbData->eglImageDetach) { - (*rbData->eglImageDetach)(rbData->sourceEGLImage); - } - rbData->sourceEGLImage = 0; - rbData->eglImageGlobalTexName = 0; - } - - ctx->dispatcher().glRenderbufferStorageEXT(target,internal,width,height); -} - -GL_APICALL void GL_APIENTRY glSampleCoverage(GLclampf value, GLboolean invert){ - GET_CTX(); - ctx->dispatcher().glSampleCoverage(value,invert); -} - -GL_APICALL void GL_APIENTRY glScissor(GLint x, GLint y, GLsizei width, GLsizei height){ - GET_CTX(); - ctx->dispatcher().glScissor(x,y,width,height); -} - -GL_APICALL void GL_APIENTRY glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length){ - GET_CTX(); - - SET_ERROR_IF( (ctx->dispatcher().glShaderBinary == NULL), GL_INVALID_OPERATION); - - if(ctx->shareGroup().Ptr()){ - for(int i=0; i < n ; i++){ - const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shaders[i]); - SET_ERROR_IF(globalShaderName == 0,GL_INVALID_VALUE); - ctx->dispatcher().glShaderBinary(1,&globalShaderName,binaryformat,binary,length); - } - } -} - -GL_APICALL void GL_APIENTRY glShaderSource(GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length){ - GET_CTX_V2(); - SET_ERROR_IF(count < 0,GL_INVALID_VALUE); - if(ctx->shareGroup().Ptr()){ - const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shader); - SET_ERROR_IF(globalShaderName == 0,GL_INVALID_VALUE); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,shader); - SET_ERROR_IF(!objData.Ptr(),GL_INVALID_OPERATION); - SET_ERROR_IF(objData.Ptr()->getDataType()!=SHADER_DATA,GL_INVALID_OPERATION); - ShaderParser* sp = (ShaderParser*)objData.Ptr(); - sp->setSrc(ctx->glslVersion(),count,string,length); - ctx->dispatcher().glShaderSource(globalShaderName,1,sp->parsedLines(),NULL); - } -} - -GL_APICALL void GL_APIENTRY glStencilFunc(GLenum func, GLint ref, GLuint mask){ - GET_CTX(); - ctx->dispatcher().glStencilFunc(func,ref,mask); -} -GL_APICALL void GL_APIENTRY glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask){ - GET_CTX(); - ctx->dispatcher().glStencilFuncSeparate(face,func,ref,mask); -} -GL_APICALL void GL_APIENTRY glStencilMask(GLuint mask){ - GET_CTX(); - ctx->dispatcher().glStencilMask(mask); -} - -GL_APICALL void GL_APIENTRY glStencilMaskSeparate(GLenum face, GLuint mask){ - GET_CTX(); - ctx->dispatcher().glStencilMaskSeparate(face,mask); -} - -GL_APICALL void GL_APIENTRY glStencilOp(GLenum fail, GLenum zfail, GLenum zpass){ - GET_CTX(); - ctx->dispatcher().glStencilOp(fail,zfail,zpass); -} - -GL_APICALL void GL_APIENTRY glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass){ - GET_CTX(); - switch (face) { - case GL_FRONT: - case GL_BACK: - case GL_FRONT_AND_BACK: - break; - default: - SET_ERROR_IF(1, GL_INVALID_ENUM); - } - ctx->dispatcher().glStencilOpSeparate(face, fail,zfail,zpass); -} - -#define GL_RGBA32F 0x8814 -#define GL_RGB32F 0x8815 -GL_APICALL void GL_APIENTRY glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels){ - GET_CTX(); - SET_ERROR_IF(!(GLESv2Validate::textureTargetEx(target) && - GLESv2Validate::pixelFrmt(ctx,format)&& - GLESv2Validate::pixelType(ctx,type)),GL_INVALID_ENUM); - - SET_ERROR_IF(!GLESv2Validate::pixelFrmt(ctx,internalformat), GL_INVALID_VALUE); - SET_ERROR_IF((GLESv2Validate::textureIsCubeMap(target) && width != height), GL_INVALID_VALUE); - SET_ERROR_IF((format == GL_DEPTH_COMPONENT || internalformat == GL_DEPTH_COMPONENT) && - (type != GL_UNSIGNED_SHORT && type != GL_UNSIGNED_INT), GL_INVALID_OPERATION); - - SET_ERROR_IF((type == GL_UNSIGNED_SHORT || type == GL_UNSIGNED_INT) && - (format != GL_DEPTH_COMPONENT || internalformat != GL_DEPTH_COMPONENT), GL_INVALID_OPERATION); - - SET_ERROR_IF(!(GLESv2Validate::pixelOp(format,type) && internalformat == ((GLint)format)),GL_INVALID_OPERATION); - SET_ERROR_IF(border != 0,GL_INVALID_VALUE); - - if (ctx->shareGroup().Ptr()){ - TextureData *texData = getTextureTargetData(target); - if(texData) { - texData->width = width; - texData->height = height; - texData->border = border; - texData->internalFormat = internalformat; - texData->target = target; - - if (texData->sourceEGLImage != 0) { - // - // This texture was a target of EGLImage, - // but now it is re-defined so we need to detach - // from the EGLImage and re-generate global texture name - // for it. - // - if (texData->eglImageDetach) { - (*texData->eglImageDetach)(texData->sourceEGLImage); - } - unsigned int tex = ctx->getBindedTexture(target); - ctx->shareGroup()->replaceGlobalName(TEXTURE, - tex, - texData->oldGlobal); - ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, texData->oldGlobal); - texData->sourceEGLImage = 0; - texData->oldGlobal = 0; - } - } - } - - if (type==GL_HALF_FLOAT_OES) - type = GL_HALF_FLOAT_NV; - if (pixels==NULL && type==GL_UNSIGNED_SHORT_5_5_5_1) - type = GL_UNSIGNED_SHORT; - if (type == GL_FLOAT) - internalformat = (format == GL_RGBA) ? GL_RGBA32F : GL_RGB32F; - ctx->dispatcher().glTexImage2D(target,level,internalformat,width,height,border,format,type,pixels); -} - - -GL_APICALL void GL_APIENTRY glTexParameterf(GLenum target, GLenum pname, GLfloat param){ - GET_CTX(); - SET_ERROR_IF(!(GLESv2Validate::textureTarget(target) && GLESv2Validate::textureParams(pname)),GL_INVALID_ENUM); - ctx->dispatcher().glTexParameterf(target,pname,param); -} -GL_APICALL void GL_APIENTRY glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params){ - GET_CTX(); - SET_ERROR_IF(!(GLESv2Validate::textureTarget(target) && GLESv2Validate::textureParams(pname)),GL_INVALID_ENUM); - ctx->dispatcher().glTexParameterfv(target,pname,params); -} -GL_APICALL void GL_APIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param){ - GET_CTX(); - SET_ERROR_IF(!(GLESv2Validate::textureTarget(target) && GLESv2Validate::textureParams(pname)),GL_INVALID_ENUM); - ctx->dispatcher().glTexParameteri(target,pname,param); -} -GL_APICALL void GL_APIENTRY glTexParameteriv(GLenum target, GLenum pname, const GLint* params){ - GET_CTX(); - SET_ERROR_IF(!(GLESv2Validate::textureTarget(target) && GLESv2Validate::textureParams(pname)),GL_INVALID_ENUM); - ctx->dispatcher().glTexParameteriv(target,pname,params); -} - -GL_APICALL void GL_APIENTRY glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels){ - GET_CTX(); - SET_ERROR_IF(!(GLESv2Validate::textureTargetEx(target)), GL_INVALID_ENUM); - SET_ERROR_IF(width < 0 || height < 0, GL_INVALID_VALUE); - SET_ERROR_IF(!(GLESv2Validate::pixelFrmt(ctx,format)&& - GLESv2Validate::pixelType(ctx,type)),GL_INVALID_ENUM); - SET_ERROR_IF(!GLESv2Validate::pixelOp(format,type),GL_INVALID_OPERATION); - SET_ERROR_IF(!pixels,GL_INVALID_OPERATION); - if (type==GL_HALF_FLOAT_OES) - type = GL_HALF_FLOAT_NV; - - ctx->dispatcher().glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels); - -} - -GL_APICALL void GL_APIENTRY glUniform1f(GLint location, GLfloat x){ - GET_CTX(); - ctx->dispatcher().glUniform1f(location,x); -} -GL_APICALL void GL_APIENTRY glUniform1fv(GLint location, GLsizei count, const GLfloat* v){ - GET_CTX(); - ctx->dispatcher().glUniform1fv(location,count,v); -} - -GL_APICALL void GL_APIENTRY glUniform1i(GLint location, GLint x){ - GET_CTX(); - ctx->dispatcher().glUniform1i(location,x); -} -GL_APICALL void GL_APIENTRY glUniform1iv(GLint location, GLsizei count, const GLint* v){ - GET_CTX(); - ctx->dispatcher().glUniform1iv(location,count,v); -} -GL_APICALL void GL_APIENTRY glUniform2f(GLint location, GLfloat x, GLfloat y){ - GET_CTX(); - ctx->dispatcher().glUniform2f(location,x,y); -} -GL_APICALL void GL_APIENTRY glUniform2fv(GLint location, GLsizei count, const GLfloat* v){ - GET_CTX(); - ctx->dispatcher().glUniform2fv(location,count,v); -} -GL_APICALL void GL_APIENTRY glUniform2i(GLint location, GLint x, GLint y){ - GET_CTX(); - ctx->dispatcher().glUniform2i(location,x,y); -} -GL_APICALL void GL_APIENTRY glUniform2iv(GLint location, GLsizei count, const GLint* v){ - GET_CTX(); - ctx->dispatcher().glUniform2iv(location,count,v); -} -GL_APICALL void GL_APIENTRY glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z){ - GET_CTX(); - ctx->dispatcher().glUniform3f(location,x,y,z); -} -GL_APICALL void GL_APIENTRY glUniform3fv(GLint location, GLsizei count, const GLfloat* v){ - GET_CTX(); - ctx->dispatcher().glUniform3fv(location,count,v); -} -GL_APICALL void GL_APIENTRY glUniform3i(GLint location, GLint x, GLint y, GLint z){ - GET_CTX(); - ctx->dispatcher().glUniform3i(location,x,y,z); -} - -GL_APICALL void GL_APIENTRY glUniform3iv(GLint location, GLsizei count, const GLint* v){ - GET_CTX(); - ctx->dispatcher().glUniform3iv(location,count,v); -} - -GL_APICALL void GL_APIENTRY glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w){ - GET_CTX(); - ctx->dispatcher().glUniform4f(location,x,y,z,w); -} - -GL_APICALL void GL_APIENTRY glUniform4fv(GLint location, GLsizei count, const GLfloat* v){ - GET_CTX(); - ctx->dispatcher().glUniform4fv(location,count,v); -} - -GL_APICALL void GL_APIENTRY glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w){ - GET_CTX(); - ctx->dispatcher().glUniform4i(location,x,y,z,w); -} - -GL_APICALL void GL_APIENTRY glUniform4iv(GLint location, GLsizei count, const GLint* v){ - GET_CTX(); - ctx->dispatcher().glUniform4iv(location,count,v); -} - -GL_APICALL void GL_APIENTRY glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value){ - GET_CTX(); - SET_ERROR_IF(transpose != GL_FALSE,GL_INVALID_VALUE); - ctx->dispatcher().glUniformMatrix2fv(location,count,transpose,value); -} - -GL_APICALL void GL_APIENTRY glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value){ - GET_CTX(); - SET_ERROR_IF(transpose != GL_FALSE,GL_INVALID_VALUE); - ctx->dispatcher().glUniformMatrix3fv(location,count,transpose,value); -} - -GL_APICALL void GL_APIENTRY glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value){ - GET_CTX(); - SET_ERROR_IF(transpose != GL_FALSE,GL_INVALID_VALUE); - ctx->dispatcher().glUniformMatrix4fv(location,count,transpose,value); -} - -static void s_unUseCurrentProgram() { - GET_CTX(); - GLint localCurrentProgram = 0; - glGetIntegerv(GL_CURRENT_PROGRAM, &localCurrentProgram); - if (!localCurrentProgram) return; - - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,localCurrentProgram); - if (!objData) return; - SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION); - ProgramData* programData = (ProgramData*)objData.Ptr(); - programData->setInUse(false); - if (programData->getDeleteStatus()) { glDeleteProgram(localCurrentProgram); } -} - -GL_APICALL void GL_APIENTRY glUseProgram(GLuint program){ - GET_CTX(); - if(ctx->shareGroup().Ptr()) { - const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program); - SET_ERROR_IF(program!=0 && globalProgramName==0,GL_INVALID_VALUE); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program); - SET_ERROR_IF(objData.Ptr() && (objData.Ptr()->getDataType()!=PROGRAM_DATA),GL_INVALID_OPERATION); - - s_unUseCurrentProgram(); - - ProgramData* programData = (ProgramData*)objData.Ptr(); - if (programData) programData->setInUse(true); - - ctx->dispatcher().glUseProgram(globalProgramName); - } -} - -GL_APICALL void GL_APIENTRY glValidateProgram(GLuint program){ - GET_CTX(); - if(ctx->shareGroup().Ptr()) { - const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program); - SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program); - SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION); - ProgramData* programData = (ProgramData*)objData.Ptr(); - ctx->dispatcher().glValidateProgram(globalProgramName); - - GLsizei infoLogLength=0; - GLchar* infoLog; - ctx->dispatcher().glGetProgramiv(globalProgramName,GL_INFO_LOG_LENGTH,&infoLogLength); - infoLog = new GLchar[infoLogLength+1]; - ctx->dispatcher().glGetProgramInfoLog(globalProgramName,infoLogLength,NULL,infoLog); - programData->setInfoLog(infoLog); - } -} - -GL_APICALL void GL_APIENTRY glVertexAttrib1f(GLuint indx, GLfloat x){ - GET_CTX_V2(); - ctx->dispatcher().glVertexAttrib1f(indx,x); - if(indx == 0) - ctx->setAttribute0value(x, 0.0, 0.0, 1.0); -} - -GL_APICALL void GL_APIENTRY glVertexAttrib1fv(GLuint indx, const GLfloat* values){ - GET_CTX_V2(); - ctx->dispatcher().glVertexAttrib1fv(indx,values); - if(indx == 0) - ctx->setAttribute0value(values[0], 0.0, 0.0, 1.0); -} - -GL_APICALL void GL_APIENTRY glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y){ - GET_CTX_V2(); - ctx->dispatcher().glVertexAttrib2f(indx,x,y); - if(indx == 0) - ctx->setAttribute0value(x, y, 0.0, 1.0); -} - -GL_APICALL void GL_APIENTRY glVertexAttrib2fv(GLuint indx, const GLfloat* values){ - GET_CTX_V2(); - ctx->dispatcher().glVertexAttrib2fv(indx,values); - if(indx == 0) - ctx->setAttribute0value(values[0], values[1], 0.0, 1.0); -} - -GL_APICALL void GL_APIENTRY glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z){ - GET_CTX_V2(); - ctx->dispatcher().glVertexAttrib3f(indx,x,y,z); - if(indx == 0) - ctx->setAttribute0value(x, y, z, 1.0); -} - -GL_APICALL void GL_APIENTRY glVertexAttrib3fv(GLuint indx, const GLfloat* values){ - GET_CTX_V2(); - ctx->dispatcher().glVertexAttrib3fv(indx,values); - if(indx == 0) - ctx->setAttribute0value(values[0], values[1], values[2], 1.0); -} - -GL_APICALL void GL_APIENTRY glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w){ - GET_CTX_V2(); - ctx->dispatcher().glVertexAttrib4f(indx,x,y,z,w); - if(indx == 0) - ctx->setAttribute0value(x, y, z, w); -} - -GL_APICALL void GL_APIENTRY glVertexAttrib4fv(GLuint indx, const GLfloat* values){ - GET_CTX_V2(); - ctx->dispatcher().glVertexAttrib4fv(indx,values); - if(indx == 0) - ctx->setAttribute0value(values[0], values[1], values[2], values[3]); -} - -GL_APICALL void GL_APIENTRY glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr){ - GET_CTX(); - SET_ERROR_IF((!GLESv2Validate::arrayIndex(ctx,indx)),GL_INVALID_VALUE); - if (type == GL_HALF_FLOAT_OES) type = GL_HALF_FLOAT; - ctx->setPointer(indx,size,type,stride,ptr,normalized); -} - -GL_APICALL void GL_APIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height){ - GET_CTX(); - ctx->dispatcher().glViewport(x,y,width,height); -} - -GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image) -{ - GET_CTX(); - SET_ERROR_IF(!GLESv2Validate::textureTargetLimited(target),GL_INVALID_ENUM); - unsigned int imagehndl = SafeUIntFromPointer(image); - EglImage *img = s_eglIface->eglAttachEGLImage(imagehndl); - if (img) { - // Create the texture object in the underlying EGL implementation, - // flag to the OpenGL layer to skip the image creation and map the - // current binded texture object to the existing global object. - if (ctx->shareGroup().Ptr()) { - ObjectLocalName tex = TextureLocalName(target,ctx->getBindedTexture(target)); - unsigned int oldGlobal = ctx->shareGroup()->getGlobalName(TEXTURE, tex); - // Delete old texture object but only if it is not a target of a EGLImage - if (oldGlobal) { - TextureData* oldTexData = getTextureData(tex); - if (!oldTexData || oldTexData->sourceEGLImage == 0) { - ctx->dispatcher().glDeleteTextures(1, &oldGlobal); - } - } - // replace mapping and bind the new global object - ctx->shareGroup()->replaceGlobalName(TEXTURE, tex,img->globalTexName); - ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, img->globalTexName); - TextureData *texData = getTextureTargetData(target); - SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION); - texData->width = img->width; - texData->height = img->height; - texData->border = img->border; - texData->internalFormat = img->internalFormat; - texData->sourceEGLImage = imagehndl; - texData->eglImageDetach = s_eglIface->eglDetachEGLImage; - texData->oldGlobal = oldGlobal; - } - } -} - -GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image) -{ - GET_CTX(); - SET_ERROR_IF(target != GL_RENDERBUFFER_OES,GL_INVALID_ENUM); - unsigned int imagehndl = SafeUIntFromPointer(image); - EglImage *img = s_eglIface->eglAttachEGLImage(imagehndl); - SET_ERROR_IF(!img,GL_INVALID_VALUE); - SET_ERROR_IF(!ctx->shareGroup().Ptr(),GL_INVALID_OPERATION); - - // Get current bounded renderbuffer - // raise INVALID_OPERATIOn if no renderbuffer is bounded - GLuint rb = ctx->getRenderbufferBinding(); - SET_ERROR_IF(rb == 0,GL_INVALID_OPERATION); - ObjectDataPtr objData = ctx->shareGroup()->getObjectData(RENDERBUFFER,rb); - RenderbufferData *rbData = (RenderbufferData *)objData.Ptr(); - SET_ERROR_IF(!rbData,GL_INVALID_OPERATION); - - // - // flag in the renderbufferData that it is an eglImage target - // - rbData->sourceEGLImage = imagehndl; - rbData->eglImageDetach = s_eglIface->eglDetachEGLImage; - rbData->eglImageGlobalTexName = img->globalTexName; - - // - // if the renderbuffer is attached to a framebuffer - // change the framebuffer attachment in the undelying OpenGL - // to point to the eglImage texture object. - // - if (rbData->attachedFB) { - // update the framebuffer attachment point to the - // underlying texture of the img - GLuint prevFB = ctx->getFramebufferBinding(); - if (prevFB != rbData->attachedFB) { - ctx->dispatcher().glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, - rbData->attachedFB); - } - ctx->dispatcher().glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, - rbData->attachedPoint, - GL_TEXTURE_2D, - img->globalTexName,0); - if (prevFB != rbData->attachedFB) { - ctx->dispatcher().glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, - prevFB); - } - } -} diff --git a/external/android-emugl/host/libs/Translator/GLES_V2/GLESv2Validate.cpp b/external/android-emugl/host/libs/Translator/GLES_V2/GLESv2Validate.cpp deleted file mode 100644 index b3555a8..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_V2/GLESv2Validate.cpp +++ /dev/null @@ -1,198 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "GLESv2Validate.h" -#include - -bool GLESv2Validate::blendEquationMode(GLenum mode){ - return mode == GL_FUNC_ADD || - mode == GL_FUNC_SUBTRACT || - mode == GL_FUNC_REVERSE_SUBTRACT; -} - -bool GLESv2Validate::blendSrc(GLenum s) { - switch(s) { - case GL_ZERO: - case GL_ONE: - case GL_SRC_COLOR: - case GL_ONE_MINUS_SRC_COLOR: - case GL_DST_COLOR: - case GL_ONE_MINUS_DST_COLOR: - case GL_SRC_ALPHA: - case GL_ONE_MINUS_SRC_ALPHA: - case GL_DST_ALPHA: - case GL_ONE_MINUS_DST_ALPHA: - case GL_CONSTANT_COLOR: - case GL_ONE_MINUS_CONSTANT_COLOR: - case GL_CONSTANT_ALPHA: - case GL_ONE_MINUS_CONSTANT_ALPHA: - case GL_SRC_ALPHA_SATURATE: - return true; - } - return false; -} - - -bool GLESv2Validate::blendDst(GLenum d) { - switch(d) { - case GL_ZERO: - case GL_ONE: - case GL_SRC_COLOR: - case GL_ONE_MINUS_SRC_COLOR: - case GL_DST_COLOR: - case GL_ONE_MINUS_DST_COLOR: - case GL_SRC_ALPHA: - case GL_ONE_MINUS_SRC_ALPHA: - case GL_DST_ALPHA: - case GL_ONE_MINUS_DST_ALPHA: - case GL_CONSTANT_COLOR: - case GL_ONE_MINUS_CONSTANT_COLOR: - case GL_CONSTANT_ALPHA: - case GL_ONE_MINUS_CONSTANT_ALPHA: - return true; - } - return false; -} - -bool GLESv2Validate::textureParams(GLenum param){ - switch(param) { - case GL_TEXTURE_MIN_FILTER: - case GL_TEXTURE_MAG_FILTER: - case GL_TEXTURE_WRAP_S: - case GL_TEXTURE_WRAP_T: - case GL_TEXTURE_MAX_ANISOTROPY_EXT: - return true; - default: - return false; - } -} - -bool GLESv2Validate::hintTargetMode(GLenum target,GLenum mode){ - - switch(mode) { - case GL_FASTEST: - case GL_NICEST: - case GL_DONT_CARE: - break; - default: return false; - } - return target == GL_GENERATE_MIPMAP_HINT || target == GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES; -} - -bool GLESv2Validate::capability(GLenum cap){ - switch(cap){ - case GL_BLEND: - case GL_CULL_FACE: - case GL_DEPTH_TEST: - case GL_DITHER: - case GL_POLYGON_OFFSET_FILL: - case GL_SAMPLE_ALPHA_TO_COVERAGE: - case GL_SAMPLE_COVERAGE: - case GL_SCISSOR_TEST: - case GL_STENCIL_TEST: - return true; - } - return false; -} - -bool GLESv2Validate::pixelStoreParam(GLenum param){ - return param == GL_PACK_ALIGNMENT || param == GL_UNPACK_ALIGNMENT; -} - -bool GLESv2Validate::readPixelFrmt(GLenum format){ - switch(format) { - case GL_ALPHA: - case GL_LUMINANCE_ALPHA: - case GL_RGB: - case GL_RGBA: - return true; - } - return false; -} - - -bool GLESv2Validate::shaderType(GLenum type){ - return type == GL_VERTEX_SHADER || type == GL_FRAGMENT_SHADER; -} - -bool GLESv2Validate::precisionType(GLenum type){ - switch(type){ - case GL_LOW_FLOAT: - case GL_MEDIUM_FLOAT: - case GL_HIGH_FLOAT: - case GL_LOW_INT: - case GL_MEDIUM_INT: - case GL_HIGH_INT: - return true; - } - return false; -} - -bool GLESv2Validate::arrayIndex(GLEScontext * ctx,GLuint index) { - return index < (GLuint)ctx->getCaps()->maxVertexAttribs; -} - -bool GLESv2Validate::pixelType(GLEScontext * ctx,GLenum type) { - if(type == GL_UNSIGNED_SHORT || type == GL_UNSIGNED_INT) - return true; - - return GLESvalidate::pixelType(ctx, type); -} - -bool GLESv2Validate::pixelFrmt(GLEScontext* ctx,GLenum format) { - if(format == GL_DEPTH_COMPONENT) - return true; - - return GLESvalidate::pixelFrmt(ctx, format); -} - -bool GLESv2Validate::attribName(const GLchar* name){ - const GLchar* found = strstr(name,"gl_"); - return (!found) || - (found != name) ; // attrib name does not start with gl_ -} - -bool GLESv2Validate::attribIndex(int index){ - return index >=0 && index < GL_MAX_VERTEX_ATTRIBS; -} - -bool GLESv2Validate::programParam(GLenum pname){ - switch(pname){ - case GL_DELETE_STATUS: - case GL_LINK_STATUS: - case GL_VALIDATE_STATUS: - case GL_INFO_LOG_LENGTH: - case GL_ATTACHED_SHADERS: - case GL_ACTIVE_ATTRIBUTES: - case GL_ACTIVE_ATTRIBUTE_MAX_LENGTH: - case GL_ACTIVE_UNIFORMS: - case GL_ACTIVE_UNIFORM_MAX_LENGTH: - return true; - } - return false; -} - -bool GLESv2Validate::textureIsCubeMap(GLenum target){ - switch(target){ - case GL_TEXTURE_CUBE_MAP_POSITIVE_X: - case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: - case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: - return true; - } - return false; -} diff --git a/external/android-emugl/host/libs/Translator/GLES_V2/GLESv2Validate.h b/external/android-emugl/host/libs/Translator/GLES_V2/GLESv2Validate.h deleted file mode 100644 index 6678778..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_V2/GLESv2Validate.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -* Copyright 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#ifndef GLES_V2_VALIDATE_H -#define GLES_V2_VALIDATE_H - -#include -#include -#include - -struct GLESv2Validate:public GLESvalidate{ -static bool blendEquationMode(GLenum mode); -static bool blendSrc(GLenum s); -static bool blendDst(GLenum d); -static bool textureParams(GLenum param); -static bool hintTargetMode(GLenum target,GLenum mode); -static bool capability(GLenum cap); -static bool pixelStoreParam(GLenum param); -static bool readPixelFrmt(GLenum format); -static bool shaderType(GLenum type); -static bool precisionType(GLenum type); -static bool arrayIndex(GLEScontext * ctx,GLuint index); -static bool pixelType(GLEScontext * ctx,GLenum type); -static bool pixelFrmt(GLEScontext* ctx,GLenum format); -static bool attribName(const GLchar* name); -static bool attribIndex(int index); -static bool programParam(GLenum pname); -static bool textureIsCubeMap(GLenum target); -}; - -#endif diff --git a/external/android-emugl/host/libs/Translator/GLES_V2/ProgramData.cpp b/external/android-emugl/host/libs/Translator/GLES_V2/ProgramData.cpp deleted file mode 100644 index b008e91..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_V2/ProgramData.cpp +++ /dev/null @@ -1,98 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include -#include -#include "ProgramData.h" - -ProgramData::ProgramData() : ObjectData(PROGRAM_DATA), - AttachedVertexShader(0), - AttachedFragmentShader(0), - LinkStatus(GL_FALSE), - IsInUse(false), - DeleteStatus(false) { - infoLog = new GLchar[1]; - infoLog[0] = '\0'; -} - -ProgramData::~ProgramData () { - delete[] infoLog; -}; - -void ProgramData::setInfoLog(GLchar* log) { - delete[] infoLog; - infoLog = log; -} - -GLchar* ProgramData::getInfoLog() { - return infoLog; -} - -GLuint ProgramData::getAttachedVertexShader() { - return AttachedVertexShader; -} - -GLuint ProgramData::getAttachedFragmentShader() { - return AttachedFragmentShader; -} - -GLuint ProgramData::getAttachedShader(GLenum type) { - GLuint shader = 0; - switch (type) { - case GL_VERTEX_SHADER: - shader = AttachedVertexShader; - break; - case GL_FRAGMENT_SHADER: - shader = AttachedFragmentShader; - break; - } - return shader; -} - -bool ProgramData::attachShader(GLuint shader,GLenum type) { - if (type==GL_VERTEX_SHADER && AttachedVertexShader==0) { - AttachedVertexShader=shader; - return true; - } - else if (type==GL_FRAGMENT_SHADER && AttachedFragmentShader==0) { - AttachedFragmentShader=shader; - return true; - } - return false; -} - -bool ProgramData::isAttached(GLuint shader) { - return (AttachedFragmentShader==shader || AttachedVertexShader==shader); -} - -bool ProgramData::detachShader(GLuint shader) { - if (AttachedVertexShader==shader) { - AttachedVertexShader = 0; - return true; - } - else if (AttachedFragmentShader==shader) { - AttachedFragmentShader = 0; - return true; - } - return false; -} - -void ProgramData::setLinkStatus(GLint status) { - LinkStatus = status; -} - -GLint ProgramData::getLinkStatus() { - return LinkStatus; -} diff --git a/external/android-emugl/host/libs/Translator/GLES_V2/ProgramData.h b/external/android-emugl/host/libs/Translator/GLES_V2/ProgramData.h deleted file mode 100644 index 7ce5801..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_V2/ProgramData.h +++ /dev/null @@ -1,51 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef PROGRAM_DATA_H -#define PROGRAM_DATA_H - -class ProgramData:public ObjectData{ -public: - ProgramData(); - virtual ~ProgramData(); - - GLuint getAttachedVertexShader(); - GLuint getAttachedFragmentShader(); - GLuint getAttachedShader(GLenum type); - - bool attachShader(GLuint shader,GLenum type); - bool isAttached(GLuint shader); - bool detachShader(GLuint shader); - - void setLinkStatus(GLint status); - GLint getLinkStatus(); - - void setInfoLog(GLchar *log); - GLchar* getInfoLog(); - - bool isInUse() const { return IsInUse; } - void setInUse(bool inUse) { IsInUse = inUse; } - - bool getDeleteStatus() const { return DeleteStatus; } - void setDeleteStatus(bool status) { DeleteStatus = status; } -private: - GLuint AttachedVertexShader; - GLuint AttachedFragmentShader; - GLint LinkStatus; - GLchar* infoLog; - bool IsInUse; - bool DeleteStatus; -}; -#endif diff --git a/external/android-emugl/host/libs/Translator/GLES_V2/ShaderParser.cpp b/external/android-emugl/host/libs/Translator/GLES_V2/ShaderParser.cpp deleted file mode 100644 index 39b23a5..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_V2/ShaderParser.cpp +++ /dev/null @@ -1,350 +0,0 @@ -/* -* Copyright 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#include "ShaderParser.h" -#include -#include - -ShaderParser::ShaderParser():ObjectData(SHADER_DATA), - m_type(0), - m_originalSrc(NULL), - m_parsedLines(NULL), - m_deleteStatus(false), - m_program(0) { - m_infoLog = new GLchar[1]; - m_infoLog[0] = '\0'; -}; - -ShaderParser::ShaderParser(GLenum type):ObjectData(SHADER_DATA), - m_type(type), - m_originalSrc(NULL), - m_parsedLines(NULL), - m_deleteStatus(false), - m_program(0) { - - m_infoLog = new GLchar[1]; - m_infoLog[0] = '\0'; -}; - -void ShaderParser::setSrc(const Version& ver,GLsizei count,const GLchar* const* strings,const GLint* length){ - m_src.clear(); - for(int i = 0;i (&m_parsedLines); -}; - -const char* ShaderParser::getOriginalSrc(){ - return m_originalSrc; -} - -void ShaderParser::parseLineNumbers() -{ - m_parsedSrc += "#line 1\n"; -} - -void ShaderParser::parseOriginalSrc() { - m_parsedSrc+=m_src; -} - -void ShaderParser::parseGLSLversion() { - - // - // find in shader the #version token if exist. - // That token should be the first non-comment or blank token - // - const char *src = m_src.c_str(); - const int minGLSLVersion = 120; - int glslVersion = minGLSLVersion; - enum { - PARSE_NONE, - PARSE_IN_C_COMMENT, - PARSE_IN_LINE_COMMENT - } parseState = PARSE_NONE; - const char *c = src; - - #define IS_VALID_VERSION(v) ( (v) == 100 || (v) == 300 || (v) == 310 ) - - while( c && *c != '\0') { - if (parseState == PARSE_IN_C_COMMENT) { - if (*c == '*' && *(c+1) == '/') { - parseState = PARSE_NONE; - c += 2; - } - else c++; - } - else if (parseState == PARSE_IN_LINE_COMMENT) { - if (*c == '\n') { - parseState = PARSE_NONE; - } - c++; - } - else if (*c == '/' && *(c+1) == '/') { - parseState = PARSE_IN_LINE_COMMENT; - c += 2; - } - else if (*c == '/' && *(c+1) == '*') { - parseState = PARSE_IN_C_COMMENT; - c += 2; - } - else if (*c == ' ' || *c == '\t' || *c == '\r' || *c == '\n') { - c++; - } - else { - // - // We have reached the first non-blank character outside - // a comment, this must be a #version token or else #version - // token does not exist in this shader source. - // - if (!strncmp(c,"#version",8)) { - int ver; - if (sscanf(c+8,"%d",&ver) == 1) { - // - // parsed version string correctly, blank out the - // version token from the source, we will add it later at - // the begining of the shader. - // - char *cc = (char *)c; - for (int i=0; i<8; i++,cc++) *cc = ' '; - while (*cc < '0' || *cc > '9') { *cc = ' '; cc++; } - while (*cc >= '0' && *cc <= '9') { *cc = ' '; cc++; } - - // Use the version from the source but only if - // it is larger than our minGLSLVersion - if (!IS_VALID_VERSION(ver) || ver > minGLSLVersion) glslVersion = ver; - } - } - - // - // break the loop, no need to go further on the source. - break; - } - } - - // - // allow to force GLSL version through environment variable - // - const char *forceVersion = getenv("GOOGLE_GLES_FORCE_GLSL_VERSION"); - if (forceVersion) { - int ver; - if (sscanf(forceVersion,"%d",&ver) == 1) { - glslVersion = ver; - } - } - - // - // if glslVersion is defined, add it to the parsed source - // - if (glslVersion > 0) { - char vstr[16]; - sprintf(vstr,"%d",glslVersion); - m_parsedSrc += std::string("#version ") + - std::string(vstr) + - std::string("\n"); - } -} - -void ShaderParser::parseBuiltinConstants() -{ - m_parsedSrc += - "const int _translator_gl_MaxVertexUniformVectors = 256;\n" - "const int _translator_gl_MaxFragmentUniformVectors = 256;\n" - "const int _translator_gl_MaxVaryingVectors = 15;\n" - "#define gl_MaxVertexUniformVectors _translator_gl_MaxVertexUniformVectors\n" - "#define gl_MaxFragmentUniformVectors _translator_gl_MaxFragmentUniformVectors\n" - "#define gl_MaxVaryingVectors _translator_gl_MaxVaryingVectors\n"; - -} - -void ShaderParser::parseOmitPrecision(){ - - //defines we need to add in order to Omit precisions qualifiers - static const GLchar defines[] = { - "#define GLES 1\n" - "#define lowp \n" - "#define mediump \n" - "#define highp \n" - }; - m_parsedSrc+=defines; - - // - // parse the source and blank out precision statements - // which has the following syntax: - // precision {qualifier} {type}; - // where {qualifier} is one of lowp,mediump or hightp - // type is any valid GLES defined type (we do not check that here!) - // NOTE: This is needed in order to workaround driver bug in - // Intel/Linux where the compiler does not get statement like - // "float;", otherwise we could just define a macro named - // precision to be empty. - // - const char *src = m_src.c_str(); - - enum { - PRECISION, - QUALIFIER, - SEMICOLON - } statementState = PRECISION; - const char *precision = NULL; - - enum { - PARSE_NONE, - PARSE_IN_C_COMMENT, - PARSE_IN_LINE_COMMENT - } parseState = PARSE_NONE; - const char *c = src; - const char *t = NULL; - - #define IS_DELIMITER(c) ( (c) == ' ' || (c) == '\t' || (c) == '\r' || (c) == '\n' ) - #define IS_TOKEN_START(c) ( ((c) >= 'a' && (c) <='z') || ((c) >= 'A' && (c) <= 'Z') ) - #define IS_TOKEN_DELIMITER(c) ( IS_DELIMITER(c) || (c) == ';' ) - - while( c && *c != '\0') { - if (parseState == PARSE_IN_C_COMMENT) { - if (*c == '*' && *(c+1) == '/') { - parseState = PARSE_NONE; - c += 2; - } - else c++; - } - else if (parseState == PARSE_IN_LINE_COMMENT) { - if (*c == '\n') { - parseState = PARSE_NONE; - } - c++; - } - else if (*c == '/' && *(c+1) == '/') { - parseState = PARSE_IN_LINE_COMMENT; - c += 2; - } - else if (*c == '/' && *(c+1) == '*') { - parseState = PARSE_IN_C_COMMENT; - c += 2; - } - else if (t && IS_TOKEN_DELIMITER(*c)) { - int tokenLen = c - t; - switch (statementState) { - case PRECISION: - if (tokenLen == 9 && !strncmp(t,"precision",9)) { - statementState = QUALIFIER; - precision = t; - } - break; - case QUALIFIER: - if ((tokenLen == 4 && !strncmp(t,"lowp",4)) || - (tokenLen == 7 && !strncmp(t,"mediump",7)) || - (tokenLen == 5 && !strncmp(t,"highp",5))) { - statementState = SEMICOLON; - } - else { - statementState = PRECISION; - } - break; - case SEMICOLON: - if (*c == ';') { - for (char *r = (char *)precision; r<=c ; ++r) { - *r = ' '; //blank the character - } - } - statementState = PRECISION; //search for the next precision line - break; - default: - break; - } - c++; - t = NULL; - } - else if (IS_DELIMITER(*c)) { - c++; - } - else { - if (!t && IS_TOKEN_START(*c)) { - t = c; - } - c++; - } - } -} - -void ShaderParser::parseExtendDefaultPrecision(){ - - //the precision lines which we need to add to the shader - static const GLchar extend[] = { - "#define GLES 1\n" - "precision lowp sampler2D;\n" - "precision lowp samplerCube;\n" - }; - - m_parsedSrc+=extend; -} - -void ShaderParser::clearParsedSrc(){ - m_parsedSrc.clear(); -} - -GLenum ShaderParser::getType() { - return m_type; -} - -void ShaderParser::setInfoLog(GLchar* infoLog) -{ - delete[] m_infoLog; - m_infoLog = infoLog; -} - -GLchar* ShaderParser::getInfoLog() -{ - return m_infoLog; -} - -ShaderParser::~ShaderParser(){ - clearParsedSrc(); - if (m_originalSrc) - free(m_originalSrc); - delete[] m_infoLog; -} diff --git a/external/android-emugl/host/libs/Translator/GLES_V2/ShaderParser.h b/external/android-emugl/host/libs/Translator/GLES_V2/ShaderParser.h deleted file mode 100644 index 8cd3940..0000000 --- a/external/android-emugl/host/libs/Translator/GLES_V2/ShaderParser.h +++ /dev/null @@ -1,61 +0,0 @@ -/* -* Copyright 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#ifndef SHADER_PARSER_H -#define SHADER_PARSER_H - -#include "GLESv2Context.h" -#include -#include -#include - -class ShaderParser:public ObjectData{ -public: - ShaderParser(); - ShaderParser(GLenum type); - void setSrc(const Version& ver,GLsizei count,const GLchar* const* strings,const GLint* length); - const char* getOriginalSrc(); - const GLchar** parsedLines(); - GLenum getType(); - ~ShaderParser(); - - void setInfoLog(GLchar * infoLog); - GLchar* getInfoLog(); - - void setDeleteStatus(bool val) { m_deleteStatus = val; } - bool getDeleteStatus() const { return m_deleteStatus; } - - void setAttachedProgram(GLuint program) { m_program = program; } - GLuint getAttachedProgram() const { return m_program; } -private: - void parseOriginalSrc(); - void parseGLSLversion(); - void parseBuiltinConstants(); - void parseOmitPrecision(); - void parseExtendDefaultPrecision(); - void parseLineNumbers(); - void clearParsedSrc(); - - GLenum m_type; - char* m_originalSrc; - std::string m_src; - std::string m_parsedSrc; - GLchar* m_parsedLines; - GLchar* m_infoLog; - bool m_deleteStatus; - GLuint m_program; -}; -#endif diff --git a/external/android-emugl/host/libs/Translator/GLcommon/Android.mk b/external/android-emugl/host/libs/Translator/GLcommon/Android.mk deleted file mode 100644 index 93cc30d..0000000 --- a/external/android-emugl/host/libs/Translator/GLcommon/Android.mk +++ /dev/null @@ -1,43 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -host_common_SRC_FILES := \ - GLDispatch.cpp \ - GLutils.cpp \ - GLEScontext.cpp \ - GLESvalidate.cpp \ - GLESpointer.cpp \ - GLESbuffer.cpp \ - RangeManip.cpp \ - TextureUtils.cpp \ - PaletteTexture.cpp \ - etc1.cpp \ - objectNameManager.cpp \ - FramebufferData.cpp - -host_GL_COMMON_LINKER_FLAGS := -host_common_LDLIBS := -host_common_LDFLAGS := - -ifeq ($(BUILD_TARGET_OS),linux) -# host_common_LDFLAGS += -Wl,--whole-archive - host_common_LDLIBS += -ldl - host_common_LDFLAGS += -Wl,-Bsymbolic -endif - -ifeq ($(BUILD_TARGET_OS),windows) - host_common_LDLIBS += -lgdi32 - host_common_LDFLAGS += -Wl,--add-stdcall-alias -endif - -### EGL host implementation ######################## - -$(call emugl-begin-host-static-library,libGLcommon) - -LOCAL_SRC_FILES := $(host_common_SRC_FILES) -$(call emugl-export,LDLIBS,$(host_common_LDLIBS)) -$(call emugl-export,LDFLAGS,$(host_common_LDFLAGS)) -$(call emugl-export,C_INCLUDES,$(LOCAL_PATH)/../include $(EMUGL_PATH)/shared) -$(call emugl-export,STATIC_LIBRARIES, libemugl_common) - -$(call emugl-end-module) - diff --git a/external/android-emugl/host/libs/Translator/GLcommon/CMakeLists.txt b/external/android-emugl/host/libs/Translator/GLcommon/CMakeLists.txt deleted file mode 100644 index 9f553f9..0000000 --- a/external/android-emugl/host/libs/Translator/GLcommon/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -set(SOURCES - GLDispatch.cpp - GLutils.cpp - GLEScontext.cpp - GLESvalidate.cpp - GLESpointer.cpp - GLESbuffer.cpp - RangeManip.cpp - TextureUtils.cpp - PaletteTexture.cpp - etc1.cpp - objectNameManager.cpp - FramebufferData.cpp) - -add_library(GLcommon STATIC ${SOURCES}) -target_link_libraries(GLcommon - emugl_common) diff --git a/external/android-emugl/host/libs/Translator/GLcommon/FramebufferData.cpp b/external/android-emugl/host/libs/Translator/GLcommon/FramebufferData.cpp deleted file mode 100644 index 2e35c8d..0000000 --- a/external/android-emugl/host/libs/Translator/GLcommon/FramebufferData.cpp +++ /dev/null @@ -1,215 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include -#include -#include -#include - -RenderbufferData::RenderbufferData() : sourceEGLImage(0), - eglImageDetach(NULL), - attachedFB(0), - attachedPoint(0), - eglImageGlobalTexName(0) { -} - -RenderbufferData::~RenderbufferData() { - if (sourceEGLImage && eglImageDetach) (*eglImageDetach)(sourceEGLImage); -} - - -FramebufferData::FramebufferData(GLuint name):m_dirty(false) { - m_fbName = name; - for (int i=0; iattachedFB = m_fbName; - rbData->attachedPoint = attachment; - } - - m_dirty = true; - } -} - -GLuint FramebufferData::getAttachment(GLenum attachment, - GLenum *outTarget, - ObjectDataPtr *outObj) { - int idx = attachmentPointIndex(attachment); - if (outTarget) *outTarget = m_attachPoints[idx].target; - if (outObj) *outObj = m_attachPoints[idx].obj; - return m_attachPoints[idx].name; -} - -int FramebufferData::attachmentPointIndex(GLenum attachment) -{ - switch(attachment) { - case GL_COLOR_ATTACHMENT0_OES: - return 0; - case GL_DEPTH_ATTACHMENT_OES: - return 1; - case GL_STENCIL_ATTACHMENT_OES: - return 2; - default: - return MAX_ATTACH_POINTS; - } -} - -void FramebufferData::detachObject(int idx) { - if (m_attachPoints[idx].target == GL_RENDERBUFFER_OES && m_attachPoints[idx].obj.Ptr() != NULL) { - RenderbufferData *rbData = (RenderbufferData *)m_attachPoints[idx].obj.Ptr(); - rbData->attachedFB = 0; - rbData->attachedPoint = 0; - } - - if(m_attachPoints[idx].owned) - { - switch(m_attachPoints[idx].target) - { - case GL_RENDERBUFFER_OES: - GLEScontext::dispatcher().glDeleteRenderbuffersEXT(1, &(m_attachPoints[idx].name)); - break; - case GL_TEXTURE_2D: - GLEScontext::dispatcher().glDeleteTextures(1, &(m_attachPoints[idx].name)); - break; - } - } - - m_attachPoints[idx].target = 0; - m_attachPoints[idx].name = 0; - m_attachPoints[idx].obj = ObjectDataPtr(NULL); - m_attachPoints[idx].owned = false; -} - -void FramebufferData::validate(GLEScontext* ctx) -{ - if(!getAttachment(GL_COLOR_ATTACHMENT0_OES, NULL, NULL)) - { - // GLES does not require the framebuffer to have a color attachment. - // OpenGL does. Therefore, if no color is attached, create a dummy - // color texture and attach it. - // This dummy color texture will is owned by the FramebufferObject, - // and will be released by it when its object is detached. - - GLint type = GL_NONE; - GLint name = 0; - - ctx->dispatcher().glGetFramebufferAttachmentParameterivEXT(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT_OES, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &type); - if(type != GL_NONE) - { - ctx->dispatcher().glGetFramebufferAttachmentParameterivEXT(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT_OES, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, &name); - } - else - { - ctx->dispatcher().glGetFramebufferAttachmentParameterivEXT(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT_OES, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &type); - if(type != GL_NONE) - { - ctx->dispatcher().glGetFramebufferAttachmentParameterivEXT(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT_OES, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, &name); - } - else - { - // No color, depth or stencil attachments - do nothing - return; - } - } - - // Find the existing attachment(s) dimensions - GLint width = 0; - GLint height = 0; - - if(type == GL_RENDERBUFFER) - { - GLint prev; - ctx->dispatcher().glGetIntegerv(GL_RENDERBUFFER_BINDING, &prev); - ctx->dispatcher().glBindRenderbufferEXT(GL_RENDERBUFFER, name); - ctx->dispatcher().glGetRenderbufferParameterivEXT(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &width); - ctx->dispatcher().glGetRenderbufferParameterivEXT(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &height); - ctx->dispatcher().glBindRenderbufferEXT(GL_RENDERBUFFER, prev); - } - else if(type == GL_TEXTURE) - { - GLint prev; - ctx->dispatcher().glGetIntegerv(GL_TEXTURE_BINDING_2D, &prev); - ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, name); - ctx->dispatcher().glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width); - ctx->dispatcher().glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &height); - ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, prev); - } - - // Create the color attachment and attch it - unsigned int tex = ctx->shareGroup()->genGlobalName(TEXTURE); - GLint prev; - ctx->dispatcher().glGetIntegerv(GL_TEXTURE_BINDING_2D, &prev); - ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, tex); - - ctx->dispatcher().glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - ctx->dispatcher().glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - ctx->dispatcher().glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); - ctx->dispatcher().glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); - ctx->dispatcher().glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); - - ctx->dispatcher().glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, tex, 0); - setAttachment(GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, tex, ObjectDataPtr(NULL), true); - - ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, prev); - } - - if(m_dirty) - { - // This is a workaround for a bug found in several OpenGL - // drivers (e.g. ATI's) - after the framebuffer attachments - // have changed, and before the next draw, unbind and rebind - // the framebuffer to sort things out. - ctx->dispatcher().glBindFramebufferEXT(GL_FRAMEBUFFER,0); - ctx->dispatcher().glBindFramebufferEXT(GL_FRAMEBUFFER,ctx->shareGroup()->getGlobalName(FRAMEBUFFER,m_fbName)); - - m_dirty = false; - } -} - diff --git a/external/android-emugl/host/libs/Translator/GLcommon/GLDispatch.cpp b/external/android-emugl/host/libs/Translator/GLcommon/GLDispatch.cpp deleted file mode 100644 index ff491a5..0000000 --- a/external/android-emugl/host/libs/Translator/GLcommon/GLDispatch.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#include "GLcommon/GLDispatch.h" -#include "GLcommon/GLLibrary.h" - -#include "emugl/common/lazy_instance.h" -#include "emugl/common/shared_library.h" - -#include "OpenglCodecCommon/ErrorLog.h" - -#ifdef __linux__ -#include -#elif defined(WIN32) -#include -#endif - -#include - -typedef GlLibrary::GlFunctionPointer GL_FUNC_PTR; - -static GL_FUNC_PTR getGLFuncAddress(const char *funcName, GlLibrary* glLib) { - return glLib->findSymbol(funcName); -} - -#define LOAD_GL_FUNC(return_type, func_name, signature, args) do { \ - if (!func_name) { \ - void* address = (void *)getGLFuncAddress(#func_name, glLib); \ - if (address) { \ - func_name = (__typeof__(func_name))(address); \ - } else { \ - fprintf(stderr, "Could not load func %s\n", #func_name); \ - func_name = (__typeof__(func_name))(dummy_##func_name); \ - } \ - } \ - } while (0); - -#define LOAD_GLEXT_FUNC(return_type, func_name, signature, args) do { \ - if (!func_name) { \ - void* address = (void *)getGLFuncAddress(#func_name, glLib); \ - if (address) { \ - func_name = (__typeof__(func_name))(address); \ - } \ - } \ - } while (0); - - -// Define dummy functions, only for non-extensions. - -#define RETURN_void return -#define RETURN_GLboolean return GL_FALSE -#define RETURN_GLint return 0 -#define RETURN_GLuint return 0U -#define RETURN_GLenum return 0 -#define RETURN_int return 0 -#define RETURN_GLconstubyteptr return NULL - -#define RETURN_(x) RETURN_ ## x - -#define DEFINE_DUMMY_FUNCTION(return_type, func_name, signature, args) \ -static return_type dummy_##func_name signature { \ - RETURN_(return_type); \ -} - -#define DEFINE_DUMMY_EXTENSION_FUNCTION(return_type, func_name, signature, args) \ - // nothing here - -LIST_GLES_FUNCTIONS(DEFINE_DUMMY_FUNCTION, DEFINE_DUMMY_EXTENSION_FUNCTION) - -// Initializing static GLDispatch members*/ - -emugl::Mutex GLDispatch::s_lock; - -#define GL_DISPATCH_DEFINE_POINTER(return_type, function_name, signature, args) \ - GL_APICALL return_type (GL_APIENTRY *GLDispatch::function_name) signature = NULL; - -LIST_GLES_FUNCTIONS(GL_DISPATCH_DEFINE_POINTER, GL_DISPATCH_DEFINE_POINTER) - -// Constructor. -GLDispatch::GLDispatch() : m_isLoaded(false) {} - -void GLDispatch::dispatchFuncs(GLESVersion version, GlLibrary* glLib) { - emugl::Mutex::AutoLock mutex(s_lock); - if(m_isLoaded) - return; - - /* Loading OpenGL functions which are needed for implementing BOTH GLES 1.1 & GLES 2.0*/ - LIST_GLES_COMMON_FUNCTIONS(LOAD_GL_FUNC) - LIST_GLES_EXTENSIONS_FUNCTIONS(LOAD_GLEXT_FUNC) - - /* Loading OpenGL functions which are needed ONLY for implementing GLES 1.1*/ - if(version == GLES_1_1){ - LIST_GLES1_ONLY_FUNCTIONS(LOAD_GL_FUNC) - LIST_GLES1_EXTENSIONS_FUNCTIONS(LOAD_GLEXT_FUNC) - } else if (version == GLES_2_0){ - LIST_GLES2_ONLY_FUNCTIONS(LOAD_GL_FUNC) - LIST_GLES2_EXTENSIONS_FUNCTIONS(LOAD_GLEXT_FUNC) - } - - /* Load glGetStringi() if it is available, so use LOAD_GLEXT_FUNC */ - LIST_GLES3_ONLY_FUNCTIONS(LOAD_GLEXT_FUNC) - - m_isLoaded = true; -} diff --git a/external/android-emugl/host/libs/Translator/GLcommon/GLESbuffer.cpp b/external/android-emugl/host/libs/Translator/GLcommon/GLESbuffer.cpp deleted file mode 100644 index 5dcdd65..0000000 --- a/external/android-emugl/host/libs/Translator/GLcommon/GLESbuffer.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include -#include - -bool GLESbuffer::setBuffer(GLuint size,GLuint usage,const GLvoid* data) { - m_size = size; - m_usage = usage; - if(m_data) { - delete [] m_data; - m_data = NULL; - } - m_data = new unsigned char[size]; - if(m_data) { - if(data) { - memcpy(m_data,data,size); - } - m_conversionManager.clear(); - m_conversionManager.addRange(Range(0,m_size)); - return true; - } - return false; -} - -bool GLESbuffer::setSubBuffer(GLint offset,GLuint size,const GLvoid* data) { - if(offset + size > m_size) return false; - memcpy(m_data+offset,data,size); - m_conversionManager.addRange(Range(offset,size)); - m_conversionManager.merge(); - return true; -} - -void GLESbuffer::getConversions(const RangeList& rIn,RangeList& rOut) { - m_conversionManager.delRanges(rIn,rOut); - rOut.merge(); -} - -GLESbuffer::~GLESbuffer() { - if(m_data) { - delete [] m_data; - } -} diff --git a/external/android-emugl/host/libs/Translator/GLcommon/GLEScontext.cpp b/external/android-emugl/host/libs/Translator/GLcommon/GLEScontext.cpp deleted file mode 100644 index 9cdc427..0000000 --- a/external/android-emugl/host/libs/Translator/GLcommon/GLEScontext.cpp +++ /dev/null @@ -1,865 +0,0 @@ -/* -* Copyright 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//decleration -static void convertFixedDirectLoop(const char* dataIn,unsigned int strideIn,void* dataOut,unsigned int nBytes,unsigned int strideOut,int attribSize); -static void convertFixedIndirectLoop(const char* dataIn,unsigned int strideIn,void* dataOut,GLsizei count,GLenum indices_type,const GLvoid* indices,unsigned int strideOut,int attribSize); -static void convertByteDirectLoop(const char* dataIn,unsigned int strideIn,void* dataOut,unsigned int nBytes,unsigned int strideOut,int attribSize); -static void convertByteIndirectLoop(const char* dataIn,unsigned int strideIn,void* dataOut,GLsizei count,GLenum indices_type,const GLvoid* indices,unsigned int strideOut,int attribSize); - -GLESConversionArrays::~GLESConversionArrays() { - for(std::map::iterator it = m_arrays.begin(); it != m_arrays.end();it++) { - if((*it).second.allocated){ - if((*it).second.type == GL_FLOAT){ - GLfloat* p = (GLfloat *)((*it).second.data); - if(p) delete[] p; - } else if((*it).second.type == GL_SHORT){ - GLshort* p = (GLshort *)((*it).second.data); - if(p) delete[] p; - } - } - } -} - -void GLESConversionArrays::allocArr(unsigned int size,GLenum type){ - if(type == GL_FIXED){ - m_arrays[m_current].data = new GLfloat[size]; - m_arrays[m_current].type = GL_FLOAT; - } else if(type == GL_BYTE){ - m_arrays[m_current].data = new GLshort[size]; - m_arrays[m_current].type = GL_SHORT; - } - m_arrays[m_current].stride = 0; - m_arrays[m_current].allocated = true; -} - -void GLESConversionArrays::setArr(void* data,unsigned int stride,GLenum type){ - m_arrays[m_current].type = type; - m_arrays[m_current].data = data; - m_arrays[m_current].stride = stride; - m_arrays[m_current].allocated = false; -} - -void* GLESConversionArrays::getCurrentData(){ - return m_arrays[m_current].data; -} - -ArrayData& GLESConversionArrays::getCurrentArray(){ - return m_arrays[m_current]; -} - -unsigned int GLESConversionArrays::getCurrentIndex(){ - return m_current; -} - -ArrayData& GLESConversionArrays::operator[](int i){ - return m_arrays[i]; -} - -void GLESConversionArrays::operator++(){ - m_current++; -} - -GLDispatch GLEScontext::s_glDispatch; -emugl::Mutex GLEScontext::s_lock; -std::string* GLEScontext::s_glExtensions= NULL; -std::string GLEScontext::s_glVendor; -std::string GLEScontext::s_glRenderer; -std::string GLEScontext::s_glVersion; -GLSupport GLEScontext::s_glSupport; - -Version::Version():m_major(0), - m_minor(0), - m_release(0){}; - -Version::Version(int major,int minor,int release):m_major(major), - m_minor(minor), - m_release(release){}; - -Version::Version(const Version& ver):m_major(ver.m_major), - m_minor(ver.m_minor), - m_release(ver.m_release){} - -Version::Version(const char* versionString){ - m_release = 0; - if((!versionString) || - ((!(sscanf(versionString,"%d.%d" ,&m_major,&m_minor) == 2)) && - (!(sscanf(versionString,"%d.%d.%d",&m_major,&m_minor,&m_release) == 3)))){ - m_major = m_minor = 0; // the version is not in the right format - } -} - -Version& Version::operator=(const Version& ver){ - m_major = ver.m_major; - m_minor = ver.m_minor; - m_release = ver.m_release; - return *this; -} - -bool Version::operator<(const Version& ver) const{ - if(m_major < ver.m_major) return true; - if(m_major == ver.m_major){ - if(m_minor < ver.m_minor) return true; - if(m_minor == ver.m_minor){ - return m_release < ver.m_release; - } - } - return false; -} - -static std::string getHostExtensionsString(GLDispatch* dispatch) { - // glGetString(GL_EXTENSIONS) is deprecated in GL 3.0, one has to use - // glGetStringi(GL_EXTENSIONS, index) instead to get individual extension - // names. Recent desktop drivers implement glGetStringi() but have a - // version of glGetString() that returns NULL, so deal with this by - // doing the following: - // - // - If glGetStringi() is available, and glGetIntegerv(GL_NUM_EXTENSIONS &num_exts) - // gives a nonzero value, use it to build the extensions - // string, using simple spaces to separate the names. - // - // - Otherwise, fallback to getGetString(). If it returns NULL, return - // an empty string. - // - - std::string result; - int num_exts = 0; - - if (dispatch->glGetStringi) { - dispatch->glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts); - GLenum err = dispatch->glGetError(); - if (err == GL_NO_ERROR) { - for (int n = 0; n < num_exts; n++) { - const char* ext = reinterpret_cast( - dispatch->glGetStringi(GL_EXTENSIONS, n)); - if (ext != NULL) { - if (!result.empty()) { - result += " "; - } - result += ext; - } - } - } - } - - // If glGetIntegerv does not affect the value, - // our system does not actually support - // GL 3.0 style extension getting. - if (!dispatch->glGetStringi || num_exts == 0) { - const char* extensions = reinterpret_cast( - dispatch->glGetString(GL_EXTENSIONS)); - if (extensions) { - result = extensions; - } - } - - // For the sake of initCapsLocked() add a starting and trailing space. - if (!result.empty()) { - if (result[0] != ' ') { - result.insert(0, 1, ' '); - } - if (result[result.size() - 1U] != ' ') { - result += ' '; - } - } - return result; -} - -static GLuint getIndex(GLenum indices_type, const GLvoid* indices, unsigned int i) { - switch (indices_type) { - case GL_UNSIGNED_BYTE: - return static_cast(indices)[i]; - case GL_UNSIGNED_SHORT: - return static_cast(indices)[i]; - case GL_UNSIGNED_INT: - return static_cast(indices)[i]; - default: - ERR("**** ERROR unknown type 0x%x (%s,%d)\n", indices_type, __FUNCTION__,__LINE__); - return 0; - } -} - -void GLEScontext::init(GlLibrary* glLib) { - - if (!s_glExtensions) { - initCapsLocked(reinterpret_cast( - getHostExtensionsString(&s_glDispatch).c_str())); - // NOTE: the string below corresponds to the extensions reported - // by this context, which is initialized in each GLESv1 or GLESv2 - // context implementation, based on the parsing of the host - // extensions string performed by initCapsLocked(). I.e. it will - // be populated after calling this ::init() method. - s_glExtensions = new std::string(""); - } - - if (!m_initialized) { - initExtensionString(); - - int maxTexUnits = getMaxTexUnits(); - m_texState = new textureUnitState[maxTexUnits]; - for (int i=0;i(m_shareGroup->getObjectData(VERTEXBUFFER,bufferName).Ptr()); - m_map[arrType]->setBuffer(size,type,stride,vbo,bufferName,offset,normalize); - return static_cast(vbo->getData()) + offset; - } - m_map[arrType]->setArray(size,type,stride,data,normalize); - return data; -} - -void GLEScontext::enableArr(GLenum arr,bool enable) { - m_map[arr]->enable(enable); -} - -bool GLEScontext::isArrEnabled(GLenum arr) { - return m_map[arr]->isEnable(); -} - -const GLESpointer* GLEScontext::getPointer(GLenum arrType) { - if (m_map.find(arrType) != m_map.end()) return m_map[arrType]; - return NULL; -} - -static void convertFixedDirectLoop(const char* dataIn,unsigned int strideIn,void* dataOut,unsigned int nBytes,unsigned int strideOut,int attribSize) { - - for(unsigned int i = 0; i < nBytes;i+=strideOut) { - const GLfixed* fixed_data = (const GLfixed *)dataIn; - //filling attrib - for(int j=0;j(&static_cast(dataOut)[i])[j] = X2F(fixed_data[j]); - } - dataIn += strideIn; - } -} - -static void convertFixedIndirectLoop(const char* dataIn,unsigned int strideIn,void* dataOut,GLsizei count,GLenum indices_type,const GLvoid* indices,unsigned int strideOut,int attribSize) { - for(int i = 0 ;i < count ;i++) { - GLuint index = getIndex(indices_type, indices, i); - - const GLfixed* fixed_data = (GLfixed *)(dataIn + index*strideIn); - GLfloat* float_data = reinterpret_cast(static_cast(dataOut) + index*strideOut); - - for(int j=0;j(&static_cast(dataOut)[i])[j] = B2S(byte_data[j]); - } - dataIn += strideIn; - } -} - -static void convertByteIndirectLoop(const char* dataIn,unsigned int strideIn,void* dataOut,GLsizei count,GLenum indices_type,const GLvoid* indices,unsigned int strideOut,int attribSize) { - for(int i = 0 ;i < count ;i++) { - GLuint index = getIndex(indices_type, indices, i); - const GLbyte* bytes_data = (GLbyte *)(dataIn + index*strideIn); - GLshort* short_data = reinterpret_cast(static_cast(dataOut) + index*strideOut); - - for(int j=0;jgetSize()*4; //4 is the sizeof GLfixed or GLfloat in bytes - int stride = p->getStride()?p->getStride():attribSize; - int start = p->getBufferOffset()+first*attribSize; - if(!p->getStride()) { - list.addRange(Range(start,count*attribSize)); - } else { - for(int i = 0 ;i < count; i++,start+=stride) { - list.addRange(Range(start,attribSize)); - } - } -} - -static void indirectToBytesRanges(const GLvoid* indices,GLenum indices_type,GLsizei count,GLESpointer* p,RangeList& list) { - - int attribSize = p->getSize() * 4; //4 is the sizeof GLfixed or GLfloat in bytes - int stride = p->getStride()?p->getStride():attribSize; - int start = p->getBufferOffset(); - for(int i=0 ; i < count; i++) { - GLuint index = getIndex(indices_type, indices, i); - list.addRange(Range(start+index*stride,attribSize)); - - } -} - -int bytesRangesToIndices(RangeList& ranges,GLESpointer* p,GLuint* indices) { - - int attribSize = p->getSize() * 4; //4 is the sizeof GLfixed or GLfloat in bytes - int stride = p->getStride()?p->getStride():attribSize; - int offset = p->getBufferOffset(); - - int n = 0; - for(int i=0;igetType(); - int attribSize = p->getSize(); - unsigned int size = attribSize*count + first; - unsigned int bytes = type == GL_FIXED ? sizeof(GLfixed):sizeof(GLbyte); - cArrs.allocArr(size,type); - int stride = p->getStride()?p->getStride():bytes*attribSize; - const char* data = (const char*)p->getArrayData() + (first*stride); - - if(type == GL_FIXED) { - convertFixedDirectLoop(data,stride,cArrs.getCurrentData(),size*sizeof(GLfloat),attribSize*sizeof(GLfloat),attribSize); - } else if(type == GL_BYTE) { - convertByteDirectLoop(data,stride,cArrs.getCurrentData(),size*sizeof(GLshort),attribSize*sizeof(GLshort),attribSize); - } -} - -void GLEScontext::convertDirectVBO(GLESConversionArrays& cArrs,GLint first,GLsizei count,GLenum array_id,GLESpointer* p) { - - RangeList ranges; - RangeList conversions; - GLuint* indices = NULL; - int attribSize = p->getSize(); - int stride = p->getStride()?p->getStride():sizeof(GLfixed)*attribSize; - char* data = (char*)p->getBufferData() + (first*stride); - - if(p->bufferNeedConversion()) { - directToBytesRanges(first,count,p,ranges); //converting indices range to buffer bytes ranges by offset - p->getBufferConversions(ranges,conversions); // getting from the buffer the relevant ranges that still needs to be converted - - if(conversions.size()) { // there are some elements to convert - indices = new GLuint[count]; - int nIndices = bytesRangesToIndices(conversions,p,indices); //converting bytes ranges by offset to indices in this array - convertFixedIndirectLoop(data,stride,data,nIndices,GL_UNSIGNED_INT,indices,stride,attribSize); - } - } - if(indices) delete[] indices; - cArrs.setArr(data,p->getStride(),GL_FLOAT); -} - -unsigned int GLEScontext::findMaxIndex(GLsizei count,GLenum type,const GLvoid* indices) { - //finding max index - unsigned int max = 0; - if(type == GL_UNSIGNED_BYTE) { - GLubyte* b_indices =(GLubyte *)indices; - for(int i=0;i max) max = b_indices[i]; - } - } else if (type == GL_UNSIGNED_SHORT) { - GLushort* us_indices =(GLushort *)indices; - for(int i=0;i max) max = us_indices[i]; - } - } else { // type == GL_UNSIGNED_INT - GLuint* ui_indices =(GLuint *)indices; - for(int i=0;i max) max = ui_indices[i]; - } - } - return max; -} - -void GLEScontext::convertIndirect(GLESConversionArrays& cArrs,GLsizei count,GLenum indices_type,const GLvoid* indices,GLenum array_id,GLESpointer* p) { - GLenum type = p->getType(); - int maxElements = findMaxIndex(count,indices_type,indices) + 1; - - int attribSize = p->getSize(); - int size = attribSize * maxElements; - unsigned int bytes = type == GL_FIXED ? sizeof(GLfixed):sizeof(GLbyte); - cArrs.allocArr(size,type); - int stride = p->getStride()?p->getStride():bytes*attribSize; - - const char* data = (const char*)p->getArrayData(); - if(type == GL_FIXED) { - convertFixedIndirectLoop(data,stride,cArrs.getCurrentData(),count,indices_type,indices,attribSize*sizeof(GLfloat),attribSize); - } else if(type == GL_BYTE){ - convertByteIndirectLoop(data,stride,cArrs.getCurrentData(),count,indices_type,indices,attribSize*sizeof(GLshort),attribSize); - } -} - -void GLEScontext::convertIndirectVBO(GLESConversionArrays& cArrs,GLsizei count,GLenum indices_type,const GLvoid* indices,GLenum array_id,GLESpointer* p) { - RangeList ranges; - RangeList conversions; - GLuint* conversionIndices = NULL; - int attribSize = p->getSize(); - int stride = p->getStride()?p->getStride():sizeof(GLfixed)*attribSize; - char* data = static_cast(p->getBufferData()); - if(p->bufferNeedConversion()) { - indirectToBytesRanges(indices,indices_type,count,p,ranges); //converting indices range to buffer bytes ranges by offset - p->getBufferConversions(ranges,conversions); // getting from the buffer the relevant ranges that still needs to be converted - if(conversions.size()) { // there are some elements to convert - conversionIndices = new GLuint[count]; - int nIndices = bytesRangesToIndices(conversions,p,conversionIndices); //converting bytes ranges by offset to indices in this array - convertFixedIndirectLoop(data,stride,data,nIndices,GL_UNSIGNED_INT,conversionIndices,stride,attribSize); - } - } - if(conversionIndices) delete[] conversionIndices; - cArrs.setArr(data,p->getStride(),GL_FLOAT); -} - - - -void GLEScontext::bindBuffer(GLenum target,GLuint buffer) { - if(target == GL_ARRAY_BUFFER) { - m_arrayBuffer = buffer; - } else { - m_elementBuffer = buffer; - } -} - -void GLEScontext::unbindBuffer(GLuint buffer) { - if(m_arrayBuffer == buffer) - { - m_arrayBuffer = 0; - } - if(m_elementBuffer == buffer) - { - m_elementBuffer = 0; - } -} - -//checks if any buffer is binded to target -bool GLEScontext::isBindedBuffer(GLenum target) { - if(target == GL_ARRAY_BUFFER) { - return m_arrayBuffer != 0; - } else { - return m_elementBuffer != 0; - } -} - -GLuint GLEScontext::getBuffer(GLenum target) { - return target == GL_ARRAY_BUFFER ? m_arrayBuffer:m_elementBuffer; -} - -GLvoid* GLEScontext::getBindedBuffer(GLenum target) { - GLuint bufferName = getBuffer(target); - if(!bufferName) return NULL; - - GLESbuffer* vbo = static_cast(m_shareGroup->getObjectData(VERTEXBUFFER,bufferName).Ptr()); - return vbo->getData(); -} - -void GLEScontext::getBufferSize(GLenum target,GLint* param) { - GLuint bufferName = getBuffer(target); - GLESbuffer* vbo = static_cast(m_shareGroup->getObjectData(VERTEXBUFFER,bufferName).Ptr()); - *param = vbo->getSize(); -} - -void GLEScontext::getBufferUsage(GLenum target,GLint* param) { - GLuint bufferName = getBuffer(target); - GLESbuffer* vbo = static_cast(m_shareGroup->getObjectData(VERTEXBUFFER,bufferName).Ptr()); - *param = vbo->getUsage(); -} - -bool GLEScontext::setBufferData(GLenum target,GLsizeiptr size,const GLvoid* data,GLenum usage) { - GLuint bufferName = getBuffer(target); - if(!bufferName) return false; - GLESbuffer* vbo = static_cast(m_shareGroup->getObjectData(VERTEXBUFFER,bufferName).Ptr()); - return vbo->setBuffer(size,usage,data); -} - -bool GLEScontext::setBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid* data) { - - GLuint bufferName = getBuffer(target); - if(!bufferName) return false; - GLESbuffer* vbo = static_cast(m_shareGroup->getObjectData(VERTEXBUFFER,bufferName).Ptr()); - return vbo->setSubBuffer(offset,size,data); -} - -const char * GLEScontext::getExtensionString() { - const char * ret; - s_lock.lock(); - if (s_glExtensions) - ret = s_glExtensions->c_str(); - else - ret=""; - s_lock.unlock(); - return ret; -} - -const char * GLEScontext::getVendorString() const { - return s_glVendor.c_str(); -} - -const char * GLEScontext::getRendererString() const { - return s_glRenderer.c_str(); -} - -const char * GLEScontext::getVersionString() const { - return s_glVersion.c_str(); -} - -void GLEScontext::getGlobalLock() { - s_lock.lock(); -} - -void GLEScontext::releaseGlobalLock() { - s_lock.unlock(); -} - - -void GLEScontext::initCapsLocked(const GLubyte * extensionString) -{ - const char* cstring = (const char*)extensionString; - - s_glDispatch.glGetIntegerv(GL_MAX_VERTEX_ATTRIBS,&s_glSupport.maxVertexAttribs); - s_glDispatch.glGetIntegerv(GL_MAX_CLIP_PLANES,&s_glSupport.maxClipPlane); - s_glDispatch.glGetIntegerv(GL_MAX_LIGHTS,&s_glSupport.maxLights); - s_glDispatch.glGetIntegerv(GL_MAX_TEXTURE_SIZE,&s_glSupport.maxTexSize); - s_glDispatch.glGetIntegerv(GL_MAX_TEXTURE_UNITS,&s_glSupport.maxTexUnits); - s_glDispatch.glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS,&s_glSupport.maxTexImageUnits); - s_glDispatch.glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &s_glSupport.maxCombinedTexImageUnits); - const GLubyte* glslVersion = s_glDispatch.glGetString(GL_SHADING_LANGUAGE_VERSION); - s_glSupport.glslVersion = Version((const char*)(glslVersion)); - const GLubyte* glVersion = s_glDispatch.glGetString(GL_VERSION); - - if (strstr(cstring,"GL_EXT_bgra ")!=NULL) - s_glSupport.GL_EXT_TEXTURE_FORMAT_BGRA8888 = true; - - if (strstr(cstring,"GL_EXT_framebuffer_object ")!=NULL) - s_glSupport.GL_EXT_FRAMEBUFFER_OBJECT = true; - - if (strstr(cstring,"GL_ARB_vertex_blend ")!=NULL) - s_glSupport.GL_ARB_VERTEX_BLEND = true; - - if (strstr(cstring,"GL_ARB_matrix_palette ")!=NULL) - s_glSupport.GL_ARB_MATRIX_PALETTE = true; - - if (strstr(cstring,"GL_EXT_packed_depth_stencil ")!=NULL ) - s_glSupport.GL_EXT_PACKED_DEPTH_STENCIL = true; - - if (strstr(cstring,"GL_OES_read_format ")!=NULL) - s_glSupport.GL_OES_READ_FORMAT = true; - - if (strstr(cstring,"GL_ARB_half_float_pixel ")!=NULL) - s_glSupport.GL_ARB_HALF_FLOAT_PIXEL = true; - - if (strstr(cstring,"GL_NV_half_float ")!=NULL) - s_glSupport.GL_NV_HALF_FLOAT = true; - - if (strstr(cstring,"GL_ARB_half_float_vertex ")!=NULL) - s_glSupport.GL_ARB_HALF_FLOAT_VERTEX = true; - - if (strstr(cstring,"GL_SGIS_generate_mipmap ")!=NULL) - s_glSupport.GL_SGIS_GENERATE_MIPMAP = true; - - if (strstr(cstring,"GL_ARB_ES2_compatibility ")!=NULL) - s_glSupport.GL_ARB_ES2_COMPATIBILITY = true; - - if (strstr(cstring,"GL_OES_standard_derivatives ")!=NULL) - s_glSupport.GL_OES_STANDARD_DERIVATIVES = true; - - if (strstr(cstring,"GL_ARB_texture_non_power_of_two")!=NULL) - s_glSupport.GL_OES_TEXTURE_NPOT = true; - - if (!(Version((const char*)glVersion) < Version("3.0")) || strstr(cstring,"GL_OES_rgb8_rgba8")!=NULL) - s_glSupport.GL_OES_RGB8_RGBA8 = true; - -} - -void GLEScontext::buildStrings(const char* baseVendor, - const char* baseRenderer, const char* baseVersion, const char* version) -{ - static const char VENDOR[] = {"Google ("}; - static const char RENDERER[] = {"Android Emulator OpenGL ES Translator ("}; - const size_t VENDOR_LEN = sizeof(VENDOR) - 1; - const size_t RENDERER_LEN = sizeof(RENDERER) - 1; - - // Sanitize the strings as some OpenGL implementations return NULL - // when asked the basic questions (this happened at least once on a client - // machine) - if (!baseVendor) { - baseVendor = "N/A"; - } - if (!baseRenderer) { - baseRenderer = "N/A"; - } - if (!baseVersion) { - baseVersion = "N/A"; - } - if (!version) { - version = "N/A"; - } - - size_t baseVendorLen = strlen(baseVendor); - s_glVendor.clear(); - s_glVendor.reserve(baseVendorLen + VENDOR_LEN + 1); - s_glVendor.append(VENDOR, VENDOR_LEN); - s_glVendor.append(baseVendor, baseVendorLen); - s_glVendor.append(")", 1); - - size_t baseRendererLen = strlen(baseRenderer); - s_glRenderer.clear(); - s_glRenderer.reserve(baseRendererLen + RENDERER_LEN + 1); - s_glRenderer.append(RENDERER, RENDERER_LEN); - s_glRenderer.append(baseRenderer, baseRendererLen); - s_glRenderer.append(")", 1); - - size_t baseVersionLen = strlen(baseVersion); - size_t versionLen = strlen(version); - s_glVersion.clear(); - s_glVersion.reserve(baseVersionLen + versionLen + 3); - s_glVersion.append(version, versionLen); - s_glVersion.append(" (", 2); - s_glVersion.append(baseVersion, baseVersionLen); - s_glVersion.append(")", 1); -} - -bool GLEScontext::isTextureUnitEnabled(GLenum unit) { - for (int i=0;i0 && glGetIntegerv(pname,iParams)) { - while(numParams >= 0) - { - params[numParams] = I2X(iParams[numParams]); - numParams--; - } - result = true; - } - delete [] iParams; - - return result; -} - -bool GLEScontext::glGetFloatv(GLenum pname, GLfloat *params) -{ - bool result = false; - GLint numParams = 1; - - GLint* iParams = new GLint[numParams]; - if (numParams>0 && glGetIntegerv(pname,iParams)) { - while(numParams >= 0) - { - params[numParams] = (GLfloat)iParams[numParams]; - numParams--; - } - result = true; - } - delete [] iParams; - - return result; -} - -bool GLEScontext::glGetIntegerv(GLenum pname, GLint *params) -{ - switch(pname) - { - case GL_ARRAY_BUFFER_BINDING: - *params = m_arrayBuffer; - break; - - case GL_ELEMENT_ARRAY_BUFFER_BINDING: - *params = m_elementBuffer; - break; - - case GL_TEXTURE_BINDING_CUBE_MAP: - *params = m_texState[m_activeTexture][TEXTURE_CUBE_MAP].texture; - break; - - case GL_TEXTURE_BINDING_2D: - *params = m_texState[m_activeTexture][TEXTURE_2D].texture; - break; - - case GL_ACTIVE_TEXTURE: - *params = m_activeTexture+GL_TEXTURE0; - break; - - case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES: - *params = GL_UNSIGNED_BYTE; - break; - - case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES: - *params = GL_RGBA; - break; - - case GL_MAX_TEXTURE_SIZE: - *params = getMaxTexSize(); - break; - default: - return false; - } - - return true; -} - -TextureTarget GLEScontext::GLTextureTargetToLocal(GLenum target) { - TextureTarget value=TEXTURE_2D; - switch (target) { - case GL_TEXTURE_CUBE_MAP: - case GL_TEXTURE_CUBE_MAP_POSITIVE_X: - case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: - case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: - value = TEXTURE_CUBE_MAP; - break; - case GL_TEXTURE_2D: - value = TEXTURE_2D; - break; - } - return value; -} - -unsigned int GLEScontext::getBindedTexture(GLenum target) { - TextureTarget pos = GLTextureTargetToLocal(target); - return m_texState[m_activeTexture][pos].texture; -} - -unsigned int GLEScontext::getBindedTexture(GLenum unit, GLenum target) { - TextureTarget pos = GLTextureTargetToLocal(target); - return m_texState[unit-GL_TEXTURE0][pos].texture; -} - -void GLEScontext::setBindedTexture(GLenum target, unsigned int tex) { - TextureTarget pos = GLTextureTargetToLocal(target); - m_texState[m_activeTexture][pos].texture = tex; -} - -void GLEScontext::setTextureEnabled(GLenum target, GLenum enable) { - TextureTarget pos = GLTextureTargetToLocal(target); - m_texState[m_activeTexture][pos].enabled = enable; -} - -#define INTERNAL_NAME(x) (x +0x100000000ll); - -ObjectLocalName GLEScontext::getDefaultTextureName(GLenum target) { - ObjectLocalName name = 0; - switch (GLTextureTargetToLocal(target)) { - case TEXTURE_2D: - name = INTERNAL_NAME(0); - break; - case TEXTURE_CUBE_MAP: - name = INTERNAL_NAME(1); - break; - default: - name = 0; - break; - } - return name; -} - -void GLEScontext::drawValidate(void) -{ - if(m_framebuffer == 0) - return; - - ObjectDataPtr fbObj = m_shareGroup->getObjectData(FRAMEBUFFER,m_framebuffer); - if (fbObj.Ptr() == NULL) - return; - - FramebufferData *fbData = (FramebufferData *)fbObj.Ptr(); - - fbData->validate(this); -} diff --git a/external/android-emugl/host/libs/Translator/GLcommon/GLESpointer.cpp b/external/android-emugl/host/libs/Translator/GLcommon/GLESpointer.cpp deleted file mode 100644 index 372257e..0000000 --- a/external/android-emugl/host/libs/Translator/GLcommon/GLESpointer.cpp +++ /dev/null @@ -1,109 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include -#include - -GLESpointer::GLESpointer():m_size(4), - m_type(GL_FLOAT), - m_stride(0), - m_enabled(false), - m_normalize(false), - m_data(NULL), - m_buffer(NULL), - m_bufferName(0), - m_buffOffset(0), - m_isVBO(false){}; - - -GLenum GLESpointer:: getType() const { - return m_type; -} - -GLint GLESpointer::getSize() const { - return m_size; -} - -GLsizei GLESpointer::getStride() const { - return m_stride; -} - -const GLvoid* GLESpointer::getArrayData() const { - return m_data; -} - -GLvoid* GLESpointer::getBufferData() const { - return m_buffer ? static_cast(m_buffer->getData()) + m_buffOffset : NULL; -} - -const GLvoid* GLESpointer::getData() const{ - return m_isVBO ? getBufferData():getArrayData(); -} - -void GLESpointer::redirectPointerData(){ - m_data = getBufferData(); -} - -GLuint GLESpointer::getBufferName() const { - return m_bufferName; -} - -unsigned int GLESpointer::getBufferOffset() const { - - return m_buffOffset; -} - -bool GLESpointer::isEnable() const { - return m_enabled; -} - -bool GLESpointer::isNormalize() const { - return m_normalize; -} - -bool GLESpointer::isVBO() const { - return m_isVBO; -} - -void GLESpointer::enable(bool b) { - m_enabled = b; -} - -void GLESpointer::setArray(GLint size,GLenum type,GLsizei stride,const GLvoid* data,bool normalize) { - m_size = size; - m_type = type; - m_stride = stride; - m_data = data; - m_buffer = NULL; - m_bufferName = 0; - m_normalize = normalize; - m_isVBO = false; -} - -void GLESpointer::setBuffer(GLint size,GLenum type,GLsizei stride,GLESbuffer* buf,GLuint bufferName,int offset,bool normalize) { - m_size = size; - m_type = type; - m_stride = stride; - m_data = NULL; - m_buffer = buf; - m_bufferName = bufferName; - m_buffOffset = offset; - m_normalize = normalize; - m_isVBO = true; -} - -void GLESpointer::getBufferConversions(const RangeList& rl,RangeList& rlOut) { - m_buffer->getConversions(rl,rlOut); -} diff --git a/external/android-emugl/host/libs/Translator/GLcommon/GLESvalidate.cpp b/external/android-emugl/host/libs/Translator/GLcommon/GLESvalidate.cpp deleted file mode 100644 index a6d99f7..0000000 --- a/external/android-emugl/host/libs/Translator/GLcommon/GLESvalidate.cpp +++ /dev/null @@ -1,194 +0,0 @@ -/* -* Copyright 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#include -#include -#include -#include -#include -#include - - -bool GLESvalidate::textureEnum(GLenum e,unsigned int maxTex) { - return e >= GL_TEXTURE0 && e < (GL_TEXTURE0 + maxTex); -} - -bool GLESvalidate::pixelType(GLEScontext * ctx, GLenum type) { - if ((ctx && ctx->getCaps()->GL_EXT_PACKED_DEPTH_STENCIL) && - (type == GL_UNSIGNED_INT_24_8_OES) ) - return true; - - if (ctx && - (ctx->getCaps()->GL_ARB_HALF_FLOAT_PIXEL || ctx->getCaps()->GL_NV_HALF_FLOAT) && - (type == GL_HALF_FLOAT_OES)) - return true; - - switch(type) { - case GL_UNSIGNED_BYTE: - case GL_UNSIGNED_SHORT_5_6_5: - case GL_UNSIGNED_SHORT_4_4_4_4: - case GL_UNSIGNED_SHORT_5_5_5_1: - case GL_FLOAT: - return true; - } - return false; -} - -bool GLESvalidate::pixelOp(GLenum format,GLenum type) { - switch(type) { - case GL_UNSIGNED_SHORT_4_4_4_4: - case GL_UNSIGNED_SHORT_5_5_5_1: - return format == GL_RGBA; - case GL_UNSIGNED_SHORT_5_6_5: - return format == GL_RGB; - } - return true; -} - -bool GLESvalidate::pixelFrmt(GLEScontext* ctx ,GLenum format) { - if (ctx && ctx->getCaps()->GL_EXT_TEXTURE_FORMAT_BGRA8888 && format == GL_BGRA_EXT) - return true; - if (ctx && ctx->getCaps()->GL_EXT_PACKED_DEPTH_STENCIL && format == GL_DEPTH_STENCIL_OES) - return true; - switch(format) { - case GL_ALPHA: - case GL_RGB: - case GL_RGBA: - case GL_LUMINANCE: - case GL_LUMINANCE_ALPHA: - return true; - } - return false; -} - -bool GLESvalidate::bufferTarget(GLenum target) { - return target == GL_ARRAY_BUFFER || target == GL_ELEMENT_ARRAY_BUFFER; -} - -bool GLESvalidate::bufferUsage(GLenum usage) { - switch(usage) { - case GL_STREAM_DRAW: - case GL_STATIC_DRAW: - case GL_DYNAMIC_DRAW: - return true; - } - return false; -} - -bool GLESvalidate::bufferParam(GLenum param) { - return (param == GL_BUFFER_SIZE) || (param == GL_BUFFER_USAGE); -} - -bool GLESvalidate::drawMode(GLenum mode) { - switch(mode) { - case GL_POINTS: - case GL_LINE_STRIP: - case GL_LINE_LOOP: - case GL_LINES: - case GL_TRIANGLE_STRIP: - case GL_TRIANGLE_FAN: - case GL_TRIANGLES: - return true; - } - return false; -} - -bool GLESvalidate::drawType(GLenum mode) { - return mode == GL_UNSIGNED_BYTE || - mode == GL_UNSIGNED_SHORT || - mode == GL_UNSIGNED_INT; -} - -bool GLESvalidate::textureTarget(GLenum target) { - return target==GL_TEXTURE_2D || target==GL_TEXTURE_CUBE_MAP; -} - -bool GLESvalidate::textureTargetLimited(GLenum target) { - return target==GL_TEXTURE_2D; -} - -bool GLESvalidate::textureTargetEx(GLenum target) { - switch(target) { - case GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES: - case GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES: - case GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES: - case GL_TEXTURE_2D: - return true; - } - return false; -} - -bool GLESvalidate::blendEquationMode(GLenum mode){ - return mode == GL_FUNC_ADD || - mode == GL_FUNC_SUBTRACT || - mode == GL_FUNC_REVERSE_SUBTRACT; -} - -bool GLESvalidate::framebufferTarget(GLenum target){ - return target == GL_FRAMEBUFFER; -} - -bool GLESvalidate::framebufferAttachment(GLenum attachment){ - switch(attachment){ - case GL_COLOR_ATTACHMENT0: - case GL_DEPTH_ATTACHMENT: - case GL_STENCIL_ATTACHMENT: - return true; - } - return false; -} - -bool GLESvalidate::framebufferAttachmentParams(GLenum pname){ - switch(pname){ - case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: - case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: - case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: - case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: - return true; - } - return false; -} - -bool GLESvalidate::renderbufferTarget(GLenum target){ - return target == GL_RENDERBUFFER; -} - -bool GLESvalidate::renderbufferParams(GLenum pname){ - switch(pname){ - case GL_RENDERBUFFER_WIDTH: - case GL_RENDERBUFFER_HEIGHT: - case GL_RENDERBUFFER_INTERNAL_FORMAT: - case GL_RENDERBUFFER_RED_SIZE: - case GL_RENDERBUFFER_GREEN_SIZE: - case GL_RENDERBUFFER_BLUE_SIZE: - case GL_RENDERBUFFER_ALPHA_SIZE: - case GL_RENDERBUFFER_DEPTH_SIZE: - case GL_RENDERBUFFER_STENCIL_SIZE: - return true; - } - return false; -} - -bool GLESvalidate::texImgDim(GLsizei width,GLsizei height,int maxTexSize) { - - if( width < 0 || height < 0 || width > maxTexSize || height > maxTexSize) - return false; - return isPowerOf2(width) && isPowerOf2(height); -} - diff --git a/external/android-emugl/host/libs/Translator/GLcommon/GLutils.cpp b/external/android-emugl/host/libs/Translator/GLcommon/GLutils.cpp deleted file mode 100644 index 46e292c..0000000 --- a/external/android-emugl/host/libs/Translator/GLcommon/GLutils.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include - -bool isPowerOf2(int num) { - return (num & (num -1)) == 0; -} diff --git a/external/android-emugl/host/libs/Translator/GLcommon/PaletteTexture.cpp b/external/android-emugl/host/libs/Translator/GLcommon/PaletteTexture.cpp deleted file mode 100644 index c99ed07..0000000 --- a/external/android-emugl/host/libs/Translator/GLcommon/PaletteTexture.cpp +++ /dev/null @@ -1,170 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "GLcommon/PaletteTexture.h" -#include - - - -struct Color -{ - Color(unsigned char r, unsigned char g,unsigned char b, unsigned char a):red(r),green(g),blue(b),alpha(a){}; - unsigned char red; - unsigned char green; - unsigned char blue; - unsigned char alpha; -}; - -void getPaletteInfo(GLenum internalFormat,unsigned int& indexSizeBits,unsigned int& colorSizeBytes,GLenum& colorFrmt) { - - colorFrmt = GL_RGB; - switch(internalFormat) - { - case GL_PALETTE4_RGB8_OES: - indexSizeBits = 4; - colorSizeBytes = 3; - break; - - case GL_PALETTE4_RGBA8_OES: - indexSizeBits = 4; - colorSizeBytes = 4; - colorFrmt = GL_RGBA; - break; - - case GL_PALETTE4_RGBA4_OES: - case GL_PALETTE4_RGB5_A1_OES: - colorFrmt = GL_RGBA; - /* fall-through */ - case GL_PALETTE4_R5_G6_B5_OES: - indexSizeBits = 4; - colorSizeBytes = 2; - break; - - case GL_PALETTE8_RGB8_OES: - indexSizeBits = 8; - colorSizeBytes = 3; - break; - - case GL_PALETTE8_RGBA8_OES: - indexSizeBits = 8; - colorSizeBytes = 4; - colorFrmt = GL_RGBA; - break; - - case GL_PALETTE8_RGBA4_OES: - case GL_PALETTE8_RGB5_A1_OES: - colorFrmt = GL_RGBA; - /* fall-through */ - case GL_PALETTE8_R5_G6_B5_OES: - indexSizeBits = 8; - colorSizeBytes = 2; - break; - } -} - - -Color paletteColor(const unsigned char* pallete,unsigned int index,GLenum format) -{ - short s; - switch(format) { - //RGB - case GL_PALETTE4_RGB8_OES: - case GL_PALETTE8_RGB8_OES: - return Color(pallete[index],pallete[index+1],pallete[index+2],0); - case GL_PALETTE8_R5_G6_B5_OES: - case GL_PALETTE4_R5_G6_B5_OES: - s = *((short *)(pallete+index)); - return Color((s >> 11)*255/31,((s >> 5) & 0x3f)*255/63 ,(s & 0x1f)*255/31,0); - - //RGBA - case GL_PALETTE4_RGBA8_OES: - case GL_PALETTE8_RGBA8_OES: - return Color(pallete[index],pallete[index+1],pallete[index+2],pallete[index+3]); - case GL_PALETTE4_RGBA4_OES: - case GL_PALETTE8_RGBA4_OES: - s = *((short *)(pallete+index)); - return Color(((s >> 12) & 0xf)*255/15,((s >> 8) & 0xf)*255/15,((s >> 4) & 0xf)*255/15 ,(s & 0xf)*255/15); - case GL_PALETTE4_RGB5_A1_OES: - case GL_PALETTE8_RGB5_A1_OES: - s = *((short *)(pallete+index)); - return Color(((s >> 11) & 0x1f)*255/31,((s >> 6) & 0x1f)*255/31,((s >> 1) & 0x1f)*255/31 ,(s & 0x1) * 255); - default: - return Color(255,255,255,255); - } -} - -unsigned char* uncompressTexture(GLenum internalformat,GLenum& formatOut,GLsizei width,GLsizei height,GLsizei imageSize, const GLvoid* data,GLint level) { - - unsigned int indexSizeBits; //the size of the color index in the pallete - unsigned int colorSizeBytes; //the size of each color cell in the pallete - - getPaletteInfo(internalformat,indexSizeBits,colorSizeBytes,formatOut); - if(!data) - { - return NULL; - } - - const unsigned char* palette = static_cast(data); - - //the pallete positioned in the begininng of the data - // so we jump over it to get to the colos indices in the palette - - int nColors = 2 << (indexSizeBits -1); //2^indexSizeBits - int paletteSizeBytes = nColors*colorSizeBytes; - const unsigned char* imageIndices = palette + paletteSizeBytes; - - //jumping to the the correct mipmap level - for(int i=0;i> 1; - height = height >> 1; - } - - int colorSizeOut = (formatOut == GL_RGB? 3:4); - int nPixels = width*height; - unsigned char* pixelsOut = new unsigned char[nPixels*colorSizeOut]; - if(!pixelsOut) return NULL; - - int leftBytes = ((palette + imageSize) /* the end of data pointer*/ - - imageIndices); - int leftPixels = (leftBytes * 8 )/indexSizeBits; - - int maxIndices = (leftPixels < nPixels) ? leftPixels:nPixels; - - //filling the pixels array - for(int i =0 ; i < maxIndices ; i++) { - int paletteIndex = 0; - int indexOut = i*colorSizeOut; - if(indexSizeBits == 4) { - paletteIndex = (i%2) == 0 ? - imageIndices[i/2] >> 4: //upper bits - imageIndices[i/2] & 0xf; //lower bits - } else { - paletteIndex = imageIndices[i]; - } - - paletteIndex*=colorSizeBytes; - Color c = paletteColor(palette,paletteIndex,internalformat); - - pixelsOut[indexOut] = c.red; - pixelsOut[indexOut+1] = c.green; - pixelsOut[indexOut+2] = c.blue; - if(formatOut == GL_RGBA) { - pixelsOut[indexOut+3] = c.alpha; - } - } - return pixelsOut; -} - diff --git a/external/android-emugl/host/libs/Translator/GLcommon/RangeManip.cpp b/external/android-emugl/host/libs/Translator/GLcommon/RangeManip.cpp deleted file mode 100644 index 2d6f119..0000000 --- a/external/android-emugl/host/libs/Translator/GLcommon/RangeManip.cpp +++ /dev/null @@ -1,127 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include - - -bool Range::rangeIntersection(const Range& r,Range& rOut) const { - if(m_start > r.getEnd() || r.getStart() > m_end) return false; - int max_start = (m_start > r.getStart())? m_start:r.getStart(); - int min_end = (m_end < r.getEnd())?m_end:r.getEnd(); - int size = min_end - max_start; - if(size) { - rOut.setRange(max_start,min_end-max_start); - return true; - } - return false; -} - -bool Range::rangeUnion(const Range& r,Range& rOut) const { - if(m_start > r.getEnd() || r.getStart() > m_end) return false; - int min_start = (m_start < r.getStart())?m_start:r.getStart(); - int max_end = (m_end > r.getEnd())?m_end:r.getEnd(); - int size = max_end - min_start; - if(size) { - rOut.setRange(min_start,max_end-min_start); - return true; - } - return false; -} - -void RangeList::addRange(const Range& r) { - if(r.getSize()) - list.push_back(r); -} - -void RangeList::addRanges(const RangeList& rl) { - for(int i =0; i< rl.size();i++) { - addRange(rl.list[i]); - } -} - -void RangeList::delRanges(const RangeList& rl,RangeList& deleted) { - for(int i =0; i< rl.size();i++) { - delRange(rl.list[i],deleted); - } -} - -bool RangeList::empty() const{ - return list.empty(); -} - -int RangeList::size() const{ - return list.size(); -} -void RangeList::clear() { - return list.clear(); -} - -void RangeList::erase(unsigned int i) { - if(i > list.size()) return; - list.erase(list.begin() +i); -} - -void RangeList::delRange(const Range& r,RangeList& deleted) { - if(r.getSize() == 0) return; - - Range intersection; - Range temp; - // compare new rect to each and any of the rects on the list - for (int i=0;i<(int)list.size();i++) { // i must be signed for i-- below - // if there is intersection - if (r.rangeIntersection(list[i],intersection)) { - Range old=list[i]; - // remove old as it is about to be split - erase(i); - i--; - if (intersection!=old) { // otherwise split: - //intersection on right side - if(old.getStart() != intersection.getStart()) { - list.insert(list.begin(),Range(old.getStart(),intersection.getStart() - old.getStart())); - } - - //intersection on left side - if(old.getEnd() != intersection.getEnd()) { - list.insert(list.begin(),Range(intersection.getEnd(),old.getEnd() - intersection.getEnd())); - } - } - deleted.addRange(intersection); - } - } -} - -void RangeList::merge() { - if(list.empty()) return; - - Range temp; - bool changed; - - do { // re-run if changed in last run - changed=0; - // run for each combinations of two rects in the list - for (int i=0;i<(((int)list.size())-1) && !changed ;i++) - { - for (int j=i+1;j<(int)list.size() && !changed ;j++) - { - if (list[i].rangeUnion(list[j],temp)) { - // are them exactly one on left of the other - list[i] = temp; - erase(j); - changed=1; - } - } - } - } while (changed); -} diff --git a/external/android-emugl/host/libs/Translator/GLcommon/TextureUtils.cpp b/external/android-emugl/host/libs/Translator/GLcommon/TextureUtils.cpp deleted file mode 100644 index 81152f6..0000000 --- a/external/android-emugl/host/libs/Translator/GLcommon/TextureUtils.cpp +++ /dev/null @@ -1,109 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include -#include -#include -#include -#include -#include - -int getCompressedFormats(int* formats){ - if(formats){ - //Palette - formats[0] = GL_PALETTE4_RGBA8_OES; - formats[1] = GL_PALETTE4_RGBA4_OES; - formats[2] = GL_PALETTE8_RGBA8_OES; - formats[3] = GL_PALETTE8_RGBA4_OES; - formats[4] = GL_PALETTE4_RGB8_OES; - formats[5] = GL_PALETTE8_RGB8_OES; - formats[6] = GL_PALETTE4_RGB5_A1_OES; - formats[7] = GL_PALETTE8_RGB5_A1_OES; - formats[8] = GL_PALETTE4_R5_G6_B5_OES; - formats[9] = GL_PALETTE8_R5_G6_B5_OES; - //ETC - formats[MAX_SUPPORTED_PALETTE] = GL_ETC1_RGB8_OES; - } - return MAX_SUPPORTED_PALETTE + MAX_ETC_SUPPORTED; -} - -void doCompressedTexImage2D(GLEScontext * ctx, GLenum target, GLint level, - GLenum internalformat, GLsizei width, - GLsizei height, GLint border, - GLsizei imageSize, const GLvoid* data, void * funcPtr) -{ - /* XXX: This is just a hack to fix the resolve of glTexImage2D problem - It will be removed when we'll no longer link against ligGL */ - typedef void (GLAPIENTRY *glTexImage2DPtr_t ) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); - glTexImage2DPtr_t glTexImage2DPtr; - glTexImage2DPtr = (glTexImage2DPtr_t)funcPtr; - - switch (internalformat) { - case GL_ETC1_RGB8_OES: - { - GLint format = GL_RGB; - GLint type = GL_UNSIGNED_BYTE; - - GLsizei compressedSize = etc1_get_encoded_data_size(width, height); - SET_ERROR_IF((compressedSize > imageSize), GL_INVALID_VALUE); - - const int32_t align = ctx->getUnpackAlignment()-1; - const int32_t bpr = ((width * 3) + align) & ~align; - const size_t size = bpr * height; - - etc1_byte* pOut = new etc1_byte[size]; - int res = etc1_decode_image((const etc1_byte*)data, pOut, width, height, 3, bpr); - SET_ERROR_IF(res!=0, GL_INVALID_VALUE); - glTexImage2DPtr(target,level,format,width,height,border,format,type,pOut); - delete [] pOut; - } - break; - - case GL_PALETTE4_RGB8_OES: - case GL_PALETTE4_RGBA8_OES: - case GL_PALETTE4_R5_G6_B5_OES: - case GL_PALETTE4_RGBA4_OES: - case GL_PALETTE4_RGB5_A1_OES: - case GL_PALETTE8_RGB8_OES: - case GL_PALETTE8_RGBA8_OES: - case GL_PALETTE8_R5_G6_B5_OES: - case GL_PALETTE8_RGBA4_OES: - case GL_PALETTE8_RGB5_A1_OES: - { - SET_ERROR_IF(level > log2(ctx->getMaxTexSize()) || - border !=0 || level > 0 || - !GLESvalidate::texImgDim(width,height,ctx->getMaxTexSize()+2),GL_INVALID_VALUE) - - int nMipmaps = -level + 1; - GLsizei tmpWidth = width; - GLsizei tmpHeight = height; - - for(int i = 0; i < nMipmaps ; i++) - { - GLenum uncompressedFrmt; - unsigned char* uncompressed = uncompressTexture(internalformat,uncompressedFrmt,width,height,imageSize,data,i); - glTexImage2DPtr(target,i,uncompressedFrmt,tmpWidth,tmpHeight,border,uncompressedFrmt,GL_UNSIGNED_BYTE,uncompressed); - tmpWidth/=2; - tmpHeight/=2; - delete[] uncompressed; - } - } - break; - - default: - SET_ERROR_IF(1, GL_INVALID_ENUM); - break; - } -} diff --git a/external/android-emugl/host/libs/Translator/GLcommon/etc1.cpp b/external/android-emugl/host/libs/Translator/GLcommon/etc1.cpp deleted file mode 100644 index 97d1085..0000000 --- a/external/android-emugl/host/libs/Translator/GLcommon/etc1.cpp +++ /dev/null @@ -1,670 +0,0 @@ -// Copyright 2009 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include - -#include - -/* From http://www.khronos.org/registry/gles/extensions/OES/OES_compressed_ETC1_RGB8_texture.txt - - The number of bits that represent a 4x4 texel block is 64 bits if - is given by ETC1_RGB8_OES. - - The data for a block is a number of bytes, - - {q0, q1, q2, q3, q4, q5, q6, q7} - - where byte q0 is located at the lowest memory address and q7 at - the highest. The 64 bits specifying the block is then represented - by the following 64 bit integer: - - int64bit = 256*(256*(256*(256*(256*(256*(256*q0+q1)+q2)+q3)+q4)+q5)+q6)+q7; - - ETC1_RGB8_OES: - - a) bit layout in bits 63 through 32 if diffbit = 0 - - 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 - ----------------------------------------------- - | base col1 | base col2 | base col1 | base col2 | - | R1 (4bits)| R2 (4bits)| G1 (4bits)| G2 (4bits)| - ----------------------------------------------- - - 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 - --------------------------------------------------- - | base col1 | base col2 | table | table |diff|flip| - | B1 (4bits)| B2 (4bits)| cw 1 | cw 2 |bit |bit | - --------------------------------------------------- - - - b) bit layout in bits 63 through 32 if diffbit = 1 - - 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 - ----------------------------------------------- - | base col1 | dcol 2 | base col1 | dcol 2 | - | R1' (5 bits) | dR2 | G1' (5 bits) | dG2 | - ----------------------------------------------- - - 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 - --------------------------------------------------- - | base col 1 | dcol 2 | table | table |diff|flip| - | B1' (5 bits) | dB2 | cw 1 | cw 2 |bit |bit | - --------------------------------------------------- - - - c) bit layout in bits 31 through 0 (in both cases) - - 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 - ----------------------------------------------- - | most significant pixel index bits | - | p| o| n| m| l| k| j| i| h| g| f| e| d| c| b| a| - ----------------------------------------------- - - 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 - -------------------------------------------------- - | least significant pixel index bits | - | p| o| n| m| l| k| j| i| h| g| f| e| d| c | b | a | - -------------------------------------------------- - - - Add table 3.17.2: Intensity modifier sets for ETC1 compressed textures: - - table codeword modifier table - ------------------ ---------------------- - 0 -8 -2 2 8 - 1 -17 -5 5 17 - 2 -29 -9 9 29 - 3 -42 -13 13 42 - 4 -60 -18 18 60 - 5 -80 -24 24 80 - 6 -106 -33 33 106 - 7 -183 -47 47 183 - - - Add table 3.17.3 Mapping from pixel index values to modifier values for - ETC1 compressed textures: - - pixel index value - --------------- - msb lsb resulting modifier value - ----- ----- ------------------------- - 1 1 -b (large negative value) - 1 0 -a (small negative value) - 0 0 a (small positive value) - 0 1 b (large positive value) - - - */ - -static const int kModifierTable[] = { -/* 0 */2, 8, -2, -8, -/* 1 */5, 17, -5, -17, -/* 2 */9, 29, -9, -29, -/* 3 */13, 42, -13, -42, -/* 4 */18, 60, -18, -60, -/* 5 */24, 80, -24, -80, -/* 6 */33, 106, -33, -106, -/* 7 */47, 183, -47, -183 }; - -static const int kLookup[8] = { 0, 1, 2, 3, -4, -3, -2, -1 }; - -static inline etc1_byte clamp(int x) { - return (etc1_byte) (x >= 0 ? (x < 255 ? x : 255) : 0); -} - -static -inline int convert4To8(int b) { - int c = b & 0xf; - return (c << 4) | c; -} - -static -inline int convert5To8(int b) { - int c = b & 0x1f; - return (c << 3) | (c >> 2); -} - -static -inline int convert6To8(int b) { - int c = b & 0x3f; - return (c << 2) | (c >> 4); -} - -static -inline int divideBy255(int d) { - return (d + 128 + (d >> 8)) >> 8; -} - -static -inline int convert8To4(int b) { - int c = b & 0xff; - return divideBy255(c * 15); -} - -static -inline int convert8To5(int b) { - int c = b & 0xff; - return divideBy255(c * 31); -} - -static -inline int convertDiff(int base, int diff) { - return convert5To8((0x1f & base) + kLookup[0x7 & diff]); -} - -static -void decode_subblock(etc1_byte* pOut, int r, int g, int b, const int* table, - etc1_uint32 low, bool second, bool flipped) { - int baseX = 0; - int baseY = 0; - if (second) { - if (flipped) { - baseY = 2; - } else { - baseX = 2; - } - } - for (int i = 0; i < 8; i++) { - int x, y; - if (flipped) { - x = baseX + (i >> 1); - y = baseY + (i & 1); - } else { - x = baseX + (i >> 2); - y = baseY + (i & 3); - } - int k = y + (x * 4); - int offset = ((low >> k) & 1) | ((low >> (k + 15)) & 2); - int delta = table[offset]; - etc1_byte* q = pOut + 3 * (x + 4 * y); - *q++ = clamp(r + delta); - *q++ = clamp(g + delta); - *q++ = clamp(b + delta); - } -} - -// Input is an ETC1 compressed version of the data. -// Output is a 4 x 4 square of 3-byte pixels in form R, G, B - -void etc1_decode_block(const etc1_byte* pIn, etc1_byte* pOut) { - etc1_uint32 high = (pIn[0] << 24) | (pIn[1] << 16) | (pIn[2] << 8) | pIn[3]; - etc1_uint32 low = (pIn[4] << 24) | (pIn[5] << 16) | (pIn[6] << 8) | pIn[7]; - int r1, r2, g1, g2, b1, b2; - if (high & 2) { - // differential - int rBase = high >> 27; - int gBase = high >> 19; - int bBase = high >> 11; - r1 = convert5To8(rBase); - r2 = convertDiff(rBase, high >> 24); - g1 = convert5To8(gBase); - g2 = convertDiff(gBase, high >> 16); - b1 = convert5To8(bBase); - b2 = convertDiff(bBase, high >> 8); - } else { - // not differential - r1 = convert4To8(high >> 28); - r2 = convert4To8(high >> 24); - g1 = convert4To8(high >> 20); - g2 = convert4To8(high >> 16); - b1 = convert4To8(high >> 12); - b2 = convert4To8(high >> 8); - } - int tableIndexA = 7 & (high >> 5); - int tableIndexB = 7 & (high >> 2); - const int* tableA = kModifierTable + tableIndexA * 4; - const int* tableB = kModifierTable + tableIndexB * 4; - bool flipped = (high & 1) != 0; - decode_subblock(pOut, r1, g1, b1, tableA, low, false, flipped); - decode_subblock(pOut, r2, g2, b2, tableB, low, true, flipped); -} - -typedef struct { - etc1_uint32 high; - etc1_uint32 low; - etc1_uint32 score; // Lower is more accurate -} etc_compressed; - -static -inline void take_best(etc_compressed* a, const etc_compressed* b) { - if (a->score > b->score) { - *a = *b; - } -} - -static -void etc_average_colors_subblock(const etc1_byte* pIn, etc1_uint32 inMask, - etc1_byte* pColors, bool flipped, bool second) { - int r = 0; - int g = 0; - int b = 0; - - if (flipped) { - int by = 0; - if (second) { - by = 2; - } - for (int y = 0; y < 2; y++) { - int yy = by + y; - for (int x = 0; x < 4; x++) { - int i = x + 4 * yy; - if (inMask & (1 << i)) { - const etc1_byte* p = pIn + i * 3; - r += *(p++); - g += *(p++); - b += *(p++); - } - } - } - } else { - int bx = 0; - if (second) { - bx = 2; - } - for (int y = 0; y < 4; y++) { - for (int x = 0; x < 2; x++) { - int xx = bx + x; - int i = xx + 4 * y; - if (inMask & (1 << i)) { - const etc1_byte* p = pIn + i * 3; - r += *(p++); - g += *(p++); - b += *(p++); - } - } - } - } - pColors[0] = (etc1_byte)((r + 4) >> 3); - pColors[1] = (etc1_byte)((g + 4) >> 3); - pColors[2] = (etc1_byte)((b + 4) >> 3); -} - -static -inline int square(int x) { - return x * x; -} - -static etc1_uint32 chooseModifier(const etc1_byte* pBaseColors, - const etc1_byte* pIn, etc1_uint32 *pLow, int bitIndex, - const int* pModifierTable) { - etc1_uint32 bestScore = ~0; - int bestIndex = 0; - int pixelR = pIn[0]; - int pixelG = pIn[1]; - int pixelB = pIn[2]; - int r = pBaseColors[0]; - int g = pBaseColors[1]; - int b = pBaseColors[2]; - for (int i = 0; i < 4; i++) { - int modifier = pModifierTable[i]; - int decodedG = clamp(g + modifier); - etc1_uint32 score = (etc1_uint32) (6 * square(decodedG - pixelG)); - if (score >= bestScore) { - continue; - } - int decodedR = clamp(r + modifier); - score += (etc1_uint32) (3 * square(decodedR - pixelR)); - if (score >= bestScore) { - continue; - } - int decodedB = clamp(b + modifier); - score += (etc1_uint32) square(decodedB - pixelB); - if (score < bestScore) { - bestScore = score; - bestIndex = i; - } - } - etc1_uint32 lowMask = (((bestIndex >> 1) << 16) | (bestIndex & 1)) - << bitIndex; - *pLow |= lowMask; - return bestScore; -} - -static -void etc_encode_subblock_helper(const etc1_byte* pIn, etc1_uint32 inMask, - etc_compressed* pCompressed, bool flipped, bool second, - const etc1_byte* pBaseColors, const int* pModifierTable) { - int score = pCompressed->score; - if (flipped) { - int by = 0; - if (second) { - by = 2; - } - for (int y = 0; y < 2; y++) { - int yy = by + y; - for (int x = 0; x < 4; x++) { - int i = x + 4 * yy; - if (inMask & (1 << i)) { - score += chooseModifier(pBaseColors, pIn + i * 3, - &pCompressed->low, yy + x * 4, pModifierTable); - } - } - } - } else { - int bx = 0; - if (second) { - bx = 2; - } - for (int y = 0; y < 4; y++) { - for (int x = 0; x < 2; x++) { - int xx = bx + x; - int i = xx + 4 * y; - if (inMask & (1 << i)) { - score += chooseModifier(pBaseColors, pIn + i * 3, - &pCompressed->low, y + xx * 4, pModifierTable); - } - } - } - } - pCompressed->score = score; -} - -static bool inRange4bitSigned(int color) { - return color >= -4 && color <= 3; -} - -static void etc_encodeBaseColors(etc1_byte* pBaseColors, - const etc1_byte* pColors, etc_compressed* pCompressed) { - int r1, g1, b1, r2, g2, b2; // 8 bit base colors for sub-blocks - bool differential; - { - int r51 = convert8To5(pColors[0]); - int g51 = convert8To5(pColors[1]); - int b51 = convert8To5(pColors[2]); - int r52 = convert8To5(pColors[3]); - int g52 = convert8To5(pColors[4]); - int b52 = convert8To5(pColors[5]); - - r1 = convert5To8(r51); - g1 = convert5To8(g51); - b1 = convert5To8(b51); - - int dr = r52 - r51; - int dg = g52 - g51; - int db = b52 - b51; - - differential = inRange4bitSigned(dr) && inRange4bitSigned(dg) - && inRange4bitSigned(db); - if (differential) { - r2 = convert5To8(r51 + dr); - g2 = convert5To8(g51 + dg); - b2 = convert5To8(b51 + db); - pCompressed->high |= (r51 << 27) | ((7 & dr) << 24) | (g51 << 19) - | ((7 & dg) << 16) | (b51 << 11) | ((7 & db) << 8) | 2; - } - } - - if (!differential) { - int r41 = convert8To4(pColors[0]); - int g41 = convert8To4(pColors[1]); - int b41 = convert8To4(pColors[2]); - int r42 = convert8To4(pColors[3]); - int g42 = convert8To4(pColors[4]); - int b42 = convert8To4(pColors[5]); - r1 = convert4To8(r41); - g1 = convert4To8(g41); - b1 = convert4To8(b41); - r2 = convert4To8(r42); - g2 = convert4To8(g42); - b2 = convert4To8(b42); - pCompressed->high |= (r41 << 28) | (r42 << 24) | (g41 << 20) | (g42 - << 16) | (b41 << 12) | (b42 << 8); - } - pBaseColors[0] = r1; - pBaseColors[1] = g1; - pBaseColors[2] = b1; - pBaseColors[3] = r2; - pBaseColors[4] = g2; - pBaseColors[5] = b2; -} - -static -void etc_encode_block_helper(const etc1_byte* pIn, etc1_uint32 inMask, - const etc1_byte* pColors, etc_compressed* pCompressed, bool flipped) { - pCompressed->score = ~0; - pCompressed->high = (flipped ? 1 : 0); - pCompressed->low = 0; - - etc1_byte pBaseColors[6]; - - etc_encodeBaseColors(pBaseColors, pColors, pCompressed); - - int originalHigh = pCompressed->high; - - const int* pModifierTable = kModifierTable; - for (int i = 0; i < 8; i++, pModifierTable += 4) { - etc_compressed temp; - temp.score = 0; - temp.high = originalHigh | (i << 5); - temp.low = 0; - etc_encode_subblock_helper(pIn, inMask, &temp, flipped, false, - pBaseColors, pModifierTable); - take_best(pCompressed, &temp); - } - pModifierTable = kModifierTable; - etc_compressed firstHalf = *pCompressed; - for (int i = 0; i < 8; i++, pModifierTable += 4) { - etc_compressed temp; - temp.score = firstHalf.score; - temp.high = firstHalf.high | (i << 2); - temp.low = firstHalf.low; - etc_encode_subblock_helper(pIn, inMask, &temp, flipped, true, - pBaseColors + 3, pModifierTable); - if (i == 0) { - *pCompressed = temp; - } else { - take_best(pCompressed, &temp); - } - } -} - -static void writeBigEndian(etc1_byte* pOut, etc1_uint32 d) { - pOut[0] = (etc1_byte)(d >> 24); - pOut[1] = (etc1_byte)(d >> 16); - pOut[2] = (etc1_byte)(d >> 8); - pOut[3] = (etc1_byte) d; -} - -// Input is a 4 x 4 square of 3-byte pixels in form R, G, B -// inmask is a 16-bit mask where bit (1 << (x + y * 4)) tells whether the corresponding (x,y) -// pixel is valid or not. Invalid pixel color values are ignored when compressing. -// Output is an ETC1 compressed version of the data. - -void etc1_encode_block(const etc1_byte* pIn, etc1_uint32 inMask, - etc1_byte* pOut) { - etc1_byte colors[6]; - etc1_byte flippedColors[6]; - etc_average_colors_subblock(pIn, inMask, colors, false, false); - etc_average_colors_subblock(pIn, inMask, colors + 3, false, true); - etc_average_colors_subblock(pIn, inMask, flippedColors, true, false); - etc_average_colors_subblock(pIn, inMask, flippedColors + 3, true, true); - - etc_compressed a, b; - etc_encode_block_helper(pIn, inMask, colors, &a, false); - etc_encode_block_helper(pIn, inMask, flippedColors, &b, true); - take_best(&a, &b); - writeBigEndian(pOut, a.high); - writeBigEndian(pOut + 4, a.low); -} - -// Return the size of the encoded image data (does not include size of PKM header). - -etc1_uint32 etc1_get_encoded_data_size(etc1_uint32 width, etc1_uint32 height) { - return (((width + 3) & ~3) * ((height + 3) & ~3)) >> 1; -} - -// Encode an entire image. -// pIn - pointer to the image data. Formatted such that the Red component of -// pixel (x,y) is at pIn + pixelSize * x + stride * y + redOffset; -// pOut - pointer to encoded data. Must be large enough to store entire encoded image. - -int etc1_encode_image(const etc1_byte* pIn, etc1_uint32 width, etc1_uint32 height, - etc1_uint32 pixelSize, etc1_uint32 stride, etc1_byte* pOut) { - if (pixelSize < 2 || pixelSize > 3) { - return -1; - } - static const unsigned short kYMask[] = { 0x0, 0xf, 0xff, 0xfff, 0xffff }; - static const unsigned short kXMask[] = { 0x0, 0x1111, 0x3333, 0x7777, - 0xffff }; - etc1_byte block[ETC1_DECODED_BLOCK_SIZE]; - etc1_byte encoded[ETC1_ENCODED_BLOCK_SIZE]; - - etc1_uint32 encodedWidth = (width + 3) & ~3; - etc1_uint32 encodedHeight = (height + 3) & ~3; - - for (etc1_uint32 y = 0; y < encodedHeight; y += 4) { - etc1_uint32 yEnd = height - y; - if (yEnd > 4) { - yEnd = 4; - } - int ymask = kYMask[yEnd]; - for (etc1_uint32 x = 0; x < encodedWidth; x += 4) { - etc1_uint32 xEnd = width - x; - if (xEnd > 4) { - xEnd = 4; - } - int mask = ymask & kXMask[xEnd]; - for (etc1_uint32 cy = 0; cy < yEnd; cy++) { - etc1_byte* q = block + (cy * 4) * 3; - const etc1_byte* p = pIn + pixelSize * x + stride * (y + cy); - if (pixelSize == 3) { - memcpy(q, p, xEnd * 3); - } else { - for (etc1_uint32 cx = 0; cx < xEnd; cx++) { - int pixel = (p[1] << 8) | p[0]; - *q++ = convert5To8(pixel >> 11); - *q++ = convert6To8(pixel >> 5); - *q++ = convert5To8(pixel); - p += pixelSize; - } - } - } - etc1_encode_block(block, mask, encoded); - memcpy(pOut, encoded, sizeof(encoded)); - pOut += sizeof(encoded); - } - } - return 0; -} - -// Decode an entire image. -// pIn - pointer to encoded data. -// pOut - pointer to the image data. Will be written such that the Red component of -// pixel (x,y) is at pIn + pixelSize * x + stride * y + redOffset. Must be -// large enough to store entire image. - - -int etc1_decode_image(const etc1_byte* pIn, etc1_byte* pOut, - etc1_uint32 width, etc1_uint32 height, - etc1_uint32 pixelSize, etc1_uint32 stride) { - if (pixelSize < 2 || pixelSize > 3) { - return -1; - } - etc1_byte block[ETC1_DECODED_BLOCK_SIZE]; - - etc1_uint32 encodedWidth = (width + 3) & ~3; - etc1_uint32 encodedHeight = (height + 3) & ~3; - - for (etc1_uint32 y = 0; y < encodedHeight; y += 4) { - etc1_uint32 yEnd = height - y; - if (yEnd > 4) { - yEnd = 4; - } - for (etc1_uint32 x = 0; x < encodedWidth; x += 4) { - etc1_uint32 xEnd = width - x; - if (xEnd > 4) { - xEnd = 4; - } - etc1_decode_block(pIn, block); - pIn += ETC1_ENCODED_BLOCK_SIZE; - for (etc1_uint32 cy = 0; cy < yEnd; cy++) { - const etc1_byte* q = block + (cy * 4) * 3; - etc1_byte* p = pOut + pixelSize * x + stride * (y + cy); - if (pixelSize == 3) { - memcpy(p, q, xEnd * 3); - } else { - for (etc1_uint32 cx = 0; cx < xEnd; cx++) { - etc1_byte r = *q++; - etc1_byte g = *q++; - etc1_byte b = *q++; - etc1_uint32 pixel = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3); - *p++ = (etc1_byte) pixel; - *p++ = (etc1_byte) (pixel >> 8); - } - } - } - } - } - return 0; -} - -static const char kMagic[] = { 'P', 'K', 'M', ' ', '1', '0' }; - -static const etc1_uint32 ETC1_PKM_FORMAT_OFFSET = 6; -static const etc1_uint32 ETC1_PKM_ENCODED_WIDTH_OFFSET = 8; -static const etc1_uint32 ETC1_PKM_ENCODED_HEIGHT_OFFSET = 10; -static const etc1_uint32 ETC1_PKM_WIDTH_OFFSET = 12; -static const etc1_uint32 ETC1_PKM_HEIGHT_OFFSET = 14; - -static const etc1_uint32 ETC1_RGB_NO_MIPMAPS = 0; - -static void writeBEUint16(etc1_byte* pOut, etc1_uint32 data) { - pOut[0] = (etc1_byte) (data >> 8); - pOut[1] = (etc1_byte) data; -} - -static etc1_uint32 readBEUint16(const etc1_byte* pIn) { - return (pIn[0] << 8) | pIn[1]; -} - -// Format a PKM header - -void etc1_pkm_format_header(etc1_byte* pHeader, etc1_uint32 width, etc1_uint32 height) { - memcpy(pHeader, kMagic, sizeof(kMagic)); - etc1_uint32 encodedWidth = (width + 3) & ~3; - etc1_uint32 encodedHeight = (height + 3) & ~3; - writeBEUint16(pHeader + ETC1_PKM_FORMAT_OFFSET, ETC1_RGB_NO_MIPMAPS); - writeBEUint16(pHeader + ETC1_PKM_ENCODED_WIDTH_OFFSET, encodedWidth); - writeBEUint16(pHeader + ETC1_PKM_ENCODED_HEIGHT_OFFSET, encodedHeight); - writeBEUint16(pHeader + ETC1_PKM_WIDTH_OFFSET, width); - writeBEUint16(pHeader + ETC1_PKM_HEIGHT_OFFSET, height); -} - -// Check if a PKM header is correctly formatted. - -etc1_bool etc1_pkm_is_valid(const etc1_byte* pHeader) { - if (memcmp(pHeader, kMagic, sizeof(kMagic))) { - return false; - } - etc1_uint32 format = readBEUint16(pHeader + ETC1_PKM_FORMAT_OFFSET); - etc1_uint32 encodedWidth = readBEUint16(pHeader + ETC1_PKM_ENCODED_WIDTH_OFFSET); - etc1_uint32 encodedHeight = readBEUint16(pHeader + ETC1_PKM_ENCODED_HEIGHT_OFFSET); - etc1_uint32 width = readBEUint16(pHeader + ETC1_PKM_WIDTH_OFFSET); - etc1_uint32 height = readBEUint16(pHeader + ETC1_PKM_HEIGHT_OFFSET); - return format == ETC1_RGB_NO_MIPMAPS && - encodedWidth >= width && encodedWidth - width < 4 && - encodedHeight >= height && encodedHeight - height < 4; -} - -// Read the image width from a PKM header - -etc1_uint32 etc1_pkm_get_width(const etc1_byte* pHeader) { - return readBEUint16(pHeader + ETC1_PKM_WIDTH_OFFSET); -} - -// Read the image height from a PKM header - -etc1_uint32 etc1_pkm_get_height(const etc1_byte* pHeader){ - return readBEUint16(pHeader + ETC1_PKM_HEIGHT_OFFSET); -} diff --git a/external/android-emugl/host/libs/Translator/GLcommon/objectNameManager.cpp b/external/android-emugl/host/libs/Translator/GLcommon/objectNameManager.cpp deleted file mode 100644 index 3612211..0000000 --- a/external/android-emugl/host/libs/Translator/GLcommon/objectNameManager.cpp +++ /dev/null @@ -1,369 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include -#include -#include - - -NameSpace::NameSpace(NamedObjectType p_type, - GlobalNameSpace *globalNameSpace) : - m_nextName(0), - m_type(p_type), - m_globalNameSpace(globalNameSpace) {} - -NameSpace::~NameSpace() -{ - for (NamesMap::iterator n = m_localToGlobalMap.begin(); - n != m_localToGlobalMap.end(); - n++) { - m_globalNameSpace->deleteName(m_type, (*n).second); - } -} - -ObjectLocalName -NameSpace::genName(ObjectLocalName p_localName, - bool genGlobal, bool genLocal) -{ - ObjectLocalName localName = p_localName; - if (genLocal) { - do { - localName = ++m_nextName; - } while(localName == 0 || - m_localToGlobalMap.find(localName) != - m_localToGlobalMap.end() ); - } - - if (genGlobal) { - unsigned int globalName = m_globalNameSpace->genName(m_type); - m_localToGlobalMap[localName] = globalName; - } - - return localName; -} - - -unsigned int -NameSpace::genGlobalName(void) -{ - return m_globalNameSpace->genName(m_type); -} - -unsigned int -NameSpace::getGlobalName(ObjectLocalName p_localName) -{ - NamesMap::iterator n( m_localToGlobalMap.find(p_localName) ); - if (n != m_localToGlobalMap.end()) { - // object found - return its global name map - return (*n).second; - } - - // object does not exist; - return 0; -} - -ObjectLocalName -NameSpace::getLocalName(unsigned int p_globalName) -{ - for(NamesMap::iterator it = m_localToGlobalMap.begin(); it != m_localToGlobalMap.end();it++){ - if((*it).second == p_globalName){ - // object found - return its local name - return (*it).first; - } - } - - // object does not exist; - return 0; -} - -void -NameSpace::deleteName(ObjectLocalName p_localName) -{ - NamesMap::iterator n( m_localToGlobalMap.find(p_localName) ); - if (n != m_localToGlobalMap.end()) { - m_globalNameSpace->deleteName(m_type, (*n).second); - m_localToGlobalMap.erase(p_localName); - } -} - -bool -NameSpace::isObject(ObjectLocalName p_localName) -{ - return (m_localToGlobalMap.find(p_localName) != m_localToGlobalMap.end() ); -} - -void -NameSpace::replaceGlobalName(ObjectLocalName p_localName, unsigned int p_globalName) -{ - NamesMap::iterator n( m_localToGlobalMap.find(p_localName) ); - if (n != m_localToGlobalMap.end()) { - m_globalNameSpace->deleteName(m_type, (*n).second); - (*n).second = p_globalName; - } -} - - -GlobalNameSpace::GlobalNameSpace() : m_lock() {} - -GlobalNameSpace::~GlobalNameSpace() {} - -unsigned int -GlobalNameSpace::genName(NamedObjectType p_type) -{ - if ( p_type >= NUM_OBJECT_TYPES ) return 0; - unsigned int name = 0; - - emugl::Mutex::AutoLock _lock(m_lock); - switch (p_type) { - case VERTEXBUFFER: - GLEScontext::dispatcher().glGenBuffers(1,&name); - break; - case TEXTURE: - GLEScontext::dispatcher().glGenTextures(1,&name); - break; - case RENDERBUFFER: - GLEScontext::dispatcher().glGenRenderbuffersEXT(1,&name); - break; - case FRAMEBUFFER: - GLEScontext::dispatcher().glGenFramebuffersEXT(1,&name); - break; - case SHADER: //objects in shader namepace are not handled - default: - name = 0; - } - return name; -} - -void -GlobalNameSpace::deleteName(NamedObjectType p_type, unsigned int p_name) -{ -} - -typedef std::pair ObjectIDPair; -typedef std::map ObjectDataMap; - -ShareGroup::ShareGroup(GlobalNameSpace *globalNameSpace) : m_lock() { - for (int i=0; i < NUM_OBJECT_TYPES; i++) { - m_nameSpace[i] = new NameSpace((NamedObjectType)i, globalNameSpace); - } - - m_objectsData = NULL; -} - -ShareGroup::~ShareGroup() -{ - emugl::Mutex::AutoLock _lock(m_lock); - for (int t = 0; t < NUM_OBJECT_TYPES; t++) { - delete m_nameSpace[t]; - } - - delete (ObjectDataMap *)m_objectsData; -} - -ObjectLocalName -ShareGroup::genName(NamedObjectType p_type, - ObjectLocalName p_localName, - bool genLocal) -{ - if (p_type >= NUM_OBJECT_TYPES) return 0; - - emugl::Mutex::AutoLock _lock(m_lock); - ObjectLocalName localName = - m_nameSpace[p_type]->genName(p_localName, true, genLocal); - return localName; -} - -unsigned int -ShareGroup::genGlobalName(NamedObjectType p_type) -{ - if (p_type >= NUM_OBJECT_TYPES) return 0; - - emugl::Mutex::AutoLock _lock(m_lock); - return m_nameSpace[p_type]->genGlobalName(); -} - -unsigned int -ShareGroup::getGlobalName(NamedObjectType p_type, - ObjectLocalName p_localName) -{ - if (p_type >= NUM_OBJECT_TYPES) return 0; - - emugl::Mutex::AutoLock _lock(m_lock); - return m_nameSpace[p_type]->getGlobalName(p_localName); -} - -ObjectLocalName -ShareGroup::getLocalName(NamedObjectType p_type, - unsigned int p_globalName) -{ - if (p_type >= NUM_OBJECT_TYPES) return 0; - - emugl::Mutex::AutoLock _lock(m_lock); - return m_nameSpace[p_type]->getLocalName(p_globalName); -} - -void -ShareGroup::deleteName(NamedObjectType p_type, ObjectLocalName p_localName) -{ - if (p_type >= NUM_OBJECT_TYPES) return; - - emugl::Mutex::AutoLock _lock(m_lock); - m_nameSpace[p_type]->deleteName(p_localName); - ObjectDataMap *map = (ObjectDataMap *)m_objectsData; - if (map) { - map->erase( ObjectIDPair(p_type, p_localName) ); - } -} - -bool -ShareGroup::isObject(NamedObjectType p_type, ObjectLocalName p_localName) -{ - if (p_type >= NUM_OBJECT_TYPES) return 0; - - emugl::Mutex::AutoLock _lock(m_lock); - return m_nameSpace[p_type]->isObject(p_localName); -} - -void -ShareGroup::replaceGlobalName(NamedObjectType p_type, - ObjectLocalName p_localName, - unsigned int p_globalName) -{ - if (p_type >= NUM_OBJECT_TYPES) return; - - emugl::Mutex::AutoLock _lock(m_lock); - m_nameSpace[p_type]->replaceGlobalName(p_localName, p_globalName); -} - -void -ShareGroup::setObjectData(NamedObjectType p_type, - ObjectLocalName p_localName, - ObjectDataPtr data) -{ - if (p_type >= NUM_OBJECT_TYPES) return; - - emugl::Mutex::AutoLock _lock(m_lock); - - ObjectDataMap *map = (ObjectDataMap *)m_objectsData; - if (!map) { - map = new ObjectDataMap(); - m_objectsData = map; - } - - ObjectIDPair id( p_type, p_localName ); - map->insert( std::pair(id, data) ); -} - -ObjectDataPtr -ShareGroup::getObjectData(NamedObjectType p_type, - ObjectLocalName p_localName) -{ - ObjectDataPtr ret; - - if (p_type >= NUM_OBJECT_TYPES) return ret; - - emugl::Mutex::AutoLock _lock(m_lock); - - ObjectDataMap *map = (ObjectDataMap *)m_objectsData; - if (map) { - ObjectDataMap::iterator i = - map->find( ObjectIDPair(p_type, p_localName) ); - if (i != map->end()) ret = (*i).second; - } - return ret; -} - -ObjectNameManager::ObjectNameManager(GlobalNameSpace *globalNameSpace) : - m_lock(), m_globalNameSpace(globalNameSpace) {} - -ObjectNameManager::~ObjectNameManager() {} - -ShareGroupPtr -ObjectNameManager::createShareGroup(void *p_groupName) -{ - emugl::Mutex::AutoLock _lock(m_lock); - - ShareGroupPtr shareGroupReturn; - - ShareGroupsMap::iterator s( m_groups.find(p_groupName) ); - if (s != m_groups.end()) { - shareGroupReturn = (*s).second; - } - else { - // - // Group does not exist, create new group - // - shareGroupReturn = ShareGroupPtr(new ShareGroup(m_globalNameSpace)); - m_groups.insert( - std::pair( - p_groupName, shareGroupReturn)); - } - - return shareGroupReturn; -} - -ShareGroupPtr -ObjectNameManager::getShareGroup(void *p_groupName) -{ - emugl::Mutex::AutoLock _lock(m_lock); - - ShareGroupPtr shareGroupReturn(NULL); - - ShareGroupsMap::iterator s( m_groups.find(p_groupName) ); - if (s != m_groups.end()) { - shareGroupReturn = (*s).second; - } - - return shareGroupReturn; -} - -ShareGroupPtr -ObjectNameManager::attachShareGroup(void *p_groupName, - void *p_existingGroupName) -{ - emugl::Mutex::AutoLock _lock(m_lock); - - ShareGroupsMap::iterator s( m_groups.find(p_existingGroupName) ); - if (s == m_groups.end()) { - // ShareGroup did not found !!! - return ShareGroupPtr(NULL); - } - - ShareGroupPtr shareGroupReturn((*s).second); - if (m_groups.find(p_groupName) == m_groups.end()) { - m_groups.insert( - std::pair( - p_groupName, shareGroupReturn)); - } - return shareGroupReturn; -} - -void -ObjectNameManager::deleteShareGroup(void *p_groupName) -{ - emugl::Mutex::AutoLock _lock(m_lock); - - ShareGroupsMap::iterator s( m_groups.find(p_groupName) ); - if (s != m_groups.end()) { - m_groups.erase(s); - } -} - -void *ObjectNameManager::getGlobalContext() -{ - emugl::Mutex::AutoLock _lock(m_lock); - return (m_groups.size() > 0) ? (*m_groups.begin()).first : NULL; -} - diff --git a/external/android-emugl/host/libs/Translator/include/GLcommon/FramebufferData.h b/external/android-emugl/host/libs/Translator/include/GLcommon/FramebufferData.h deleted file mode 100644 index 46cb651..0000000 --- a/external/android-emugl/host/libs/Translator/include/GLcommon/FramebufferData.h +++ /dev/null @@ -1,72 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef _FRAMEBUFFER_DATA_H -#define _FRAMEBUFFER_DATA_H - -#include "objectNameManager.h" -#include -#include - -class RenderbufferData : public ObjectData -{ -public: - RenderbufferData(); - ~RenderbufferData(); - - unsigned int sourceEGLImage; - void (*eglImageDetach)(unsigned int imageId); - GLuint attachedFB; - GLenum attachedPoint; - GLuint eglImageGlobalTexName; - -}; - -const int MAX_ATTACH_POINTS = 3; - -class FramebufferData : public ObjectData -{ -public: - explicit FramebufferData(GLuint name); - ~FramebufferData(); - - void setAttachment(GLenum attachment, - GLenum target, - GLuint name, - ObjectDataPtr obj, - bool takeOwnership = false); - - GLuint getAttachment(GLenum attachment, - GLenum *outTarget, - ObjectDataPtr *outObj); - - void validate(class GLEScontext* ctx); - -private: - inline int attachmentPointIndex(GLenum attachment); - void detachObject(int idx); - -private: - GLuint m_fbName; - struct attachPoint { - GLenum target; // OGL if owned, GLES otherwise - GLuint name; // OGL if owned, GLES otherwise - ObjectDataPtr obj; - bool owned; - } m_attachPoints[MAX_ATTACH_POINTS+1]; - bool m_dirty; -}; - -#endif diff --git a/external/android-emugl/host/libs/Translator/include/GLcommon/GLDispatch.h b/external/android-emugl/host/libs/Translator/include/GLcommon/GLDispatch.h deleted file mode 100644 index 4ee08cd..0000000 --- a/external/android-emugl/host/libs/Translator/include/GLcommon/GLDispatch.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef GL_DISPATCHH -#define GL_DISPATCHH - -#include -#include - -#include "OpenGLESDispatch/gldefs.h" -#include "OpenGLESDispatch/gles_functions.h" -#include "GLutils.h" - -#include "emugl/common/mutex.h" - -#define GLAPIENTRY GL_APIENTRY -typedef void(*FUNCPTR)(); - -class GlLibrary; - -#define GLES_DECLARE_METHOD(return_type, function_name, signature, args) \ - static GL_APICALL return_type (GL_APIENTRY *function_name) signature; - -class GLDispatch { -public: - // Constructor. - GLDispatch(); - - void dispatchFuncs(GLESVersion version, GlLibrary* glLib); - - LIST_GLES_FUNCTIONS(GLES_DECLARE_METHOD, GLES_DECLARE_METHOD) - -private: - bool m_isLoaded; - static emugl::Mutex s_lock; -}; - -#endif // GL_DISPATCH_H diff --git a/external/android-emugl/host/libs/Translator/include/GLcommon/GLESbuffer.h b/external/android-emugl/host/libs/Translator/include/GLcommon/GLESbuffer.h deleted file mode 100644 index 38429d1..0000000 --- a/external/android-emugl/host/libs/Translator/include/GLcommon/GLESbuffer.h +++ /dev/null @@ -1,47 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef GLES_BUFFER_H -#define GLES_BUFFER_H - -#include -#include -#include -#include - -class GLESbuffer: public ObjectData { -public: - GLESbuffer():ObjectData(BUFFER_DATA),m_size(0),m_usage(GL_STATIC_DRAW),m_data(NULL),m_wasBound(false){} - GLuint getSize(){return m_size;}; - GLuint getUsage(){return m_usage;}; - GLvoid* getData(){ return m_data;} - bool setBuffer(GLuint size,GLuint usage,const GLvoid* data); - bool setSubBuffer(GLint offset,GLuint size,const GLvoid* data); - void getConversions(const RangeList& rIn,RangeList& rOut); - bool fullyConverted(){return m_conversionManager.size() == 0;}; - void setBinded(){m_wasBound = true;}; - bool wasBinded(){return m_wasBound;}; - ~GLESbuffer(); - -private: - GLuint m_size; - GLuint m_usage; - unsigned char* m_data; - RangeList m_conversionManager; - bool m_wasBound; -}; - -typedef emugl::SmartPtr GLESbufferPtr; -#endif diff --git a/external/android-emugl/host/libs/Translator/include/GLcommon/GLEScontext.h b/external/android-emugl/host/libs/Translator/include/GLcommon/GLEScontext.h deleted file mode 100644 index 037f902..0000000 --- a/external/android-emugl/host/libs/Translator/include/GLcommon/GLEScontext.h +++ /dev/null @@ -1,222 +0,0 @@ -/* -* Copyright 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#ifndef GLES_CONTEXT_H -#define GLES_CONTEXT_H - -#include "GLDispatch.h" -#include "GLESpointer.h" -#include "objectNameManager.h" -#include "emugl/common/mutex.h" -#include - -typedef std::map ArraysMap; - -enum TextureTarget { -TEXTURE_2D, -TEXTURE_CUBE_MAP, -NUM_TEXTURE_TARGETS -}; - -typedef struct _textureTargetState { - GLuint texture; - GLboolean enabled; -} textureTargetState; - -typedef textureTargetState textureUnitState[NUM_TEXTURE_TARGETS]; - -class Version{ -public: - Version(); - Version(int major,int minor,int release); - Version(const char* versionString); - Version(const Version& ver); - bool operator<(const Version& ver) const; - Version& operator=(const Version& ver); -private: - int m_major; - int m_minor; - int m_release; -}; - -struct GLSupport { - GLSupport():maxLights(0),maxVertexAttribs(0),maxClipPlane(0),maxTexUnits(0), \ - maxTexImageUnits(0),maxTexSize(0) , maxCombinedTexImageUnits(0), \ - GL_EXT_TEXTURE_FORMAT_BGRA8888(false), GL_EXT_FRAMEBUFFER_OBJECT(false), \ - GL_ARB_VERTEX_BLEND(false), GL_ARB_MATRIX_PALETTE(false), \ - GL_EXT_PACKED_DEPTH_STENCIL(false) , GL_OES_READ_FORMAT(false), \ - GL_ARB_HALF_FLOAT_PIXEL(false), GL_NV_HALF_FLOAT(false), \ - GL_ARB_HALF_FLOAT_VERTEX(false),GL_SGIS_GENERATE_MIPMAP(false), - GL_ARB_ES2_COMPATIBILITY(false),GL_OES_STANDARD_DERIVATIVES(false), - GL_OES_TEXTURE_NPOT(false), GL_OES_RGB8_RGBA8(false) {} ; - int maxLights; - int maxVertexAttribs; - int maxClipPlane; - int maxTexUnits; - int maxTexImageUnits; - int maxTexSize; - int maxCombinedTexImageUnits; - Version glslVersion; - bool GL_EXT_TEXTURE_FORMAT_BGRA8888; - bool GL_EXT_FRAMEBUFFER_OBJECT; - bool GL_ARB_VERTEX_BLEND; - bool GL_ARB_MATRIX_PALETTE; - bool GL_EXT_PACKED_DEPTH_STENCIL; - bool GL_OES_READ_FORMAT; - bool GL_ARB_HALF_FLOAT_PIXEL; - bool GL_NV_HALF_FLOAT; - bool GL_ARB_HALF_FLOAT_VERTEX; - bool GL_SGIS_GENERATE_MIPMAP; - bool GL_ARB_ES2_COMPATIBILITY; - bool GL_OES_STANDARD_DERIVATIVES; - bool GL_OES_TEXTURE_NPOT; - bool GL_OES_RGB8_RGBA8; - -}; - -struct ArrayData{ - ArrayData():data(NULL), - type(0), - stride(0), - allocated(false){}; - - void* data; - GLenum type; - unsigned int stride; - bool allocated; -}; - -class GLESConversionArrays -{ -public: - GLESConversionArrays():m_current(0){}; - void setArr(void* data,unsigned int stride,GLenum type); - void allocArr(unsigned int size,GLenum type); - ArrayData& operator[](int i); - void* getCurrentData(); - ArrayData& getCurrentArray(); - unsigned int getCurrentIndex(); - void operator++(); - - ~GLESConversionArrays(); -private: - std::map m_arrays; - unsigned int m_current; -}; - -class GLEScontext{ -public: - virtual void init(GlLibrary* glLib); - GLEScontext(); - GLenum getGLerror(); - void setGLerror(GLenum err); - void setShareGroup(ShareGroupPtr grp){m_shareGroup = grp;}; - ShareGroupPtr shareGroup() const { return m_shareGroup; } - virtual void setActiveTexture(GLenum tex); - unsigned int getBindedTexture(GLenum target); - unsigned int getBindedTexture(GLenum unit,GLenum target); - void setBindedTexture(GLenum target,unsigned int tex); - bool isTextureUnitEnabled(GLenum unit); - void setTextureEnabled(GLenum target, GLenum enable); - ObjectLocalName getDefaultTextureName(GLenum target); - bool isInitialized() { return m_initialized; }; - void setUnpackAlignment(GLint param){ m_unpackAlignment = param; }; - GLint getUnpackAlignment(){ return m_unpackAlignment; }; - - bool isArrEnabled(GLenum); - void enableArr(GLenum arr,bool enable); - const GLvoid* setPointer(GLenum arrType,GLint size,GLenum type,GLsizei stride,const GLvoid* data,bool normalize = false); - virtual const GLESpointer* getPointer(GLenum arrType); - virtual void setupArraysPointers(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct) = 0; - void bindBuffer(GLenum target,GLuint buffer); - void unbindBuffer(GLuint buffer); - bool isBuffer(GLuint buffer); - bool isBindedBuffer(GLenum target); - GLvoid* getBindedBuffer(GLenum target); - void getBufferSize(GLenum target,GLint* param); - void getBufferUsage(GLenum target,GLint* param); - bool setBufferData(GLenum target,GLsizeiptr size,const GLvoid* data,GLenum usage); - bool setBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid* data); - const char * getExtensionString(); - const char * getVendorString() const; - const char * getRendererString() const; - const char * getVersionString() const; - void getGlobalLock(); - void releaseGlobalLock(); - virtual GLSupport* getCaps(){return &s_glSupport;}; - virtual ~GLEScontext(); - virtual int getMaxTexUnits() = 0; - virtual void drawValidate(void); - - void setRenderbufferBinding(GLuint rb) { m_renderbuffer = rb; } - GLuint getRenderbufferBinding() const { return m_renderbuffer; } - void setFramebufferBinding(GLuint fb) { m_framebuffer = fb; } - GLuint getFramebufferBinding() const { return m_framebuffer; } - - static GLDispatch& dispatcher(){return s_glDispatch;}; - - static int getMaxLights(){return s_glSupport.maxLights;} - static int getMaxClipPlanes(){return s_glSupport.maxClipPlane;} - static int getMaxTexSize(){return s_glSupport.maxTexSize;} - static Version glslVersion(){return s_glSupport.glslVersion;} - static bool isAutoMipmapSupported(){return s_glSupport.GL_SGIS_GENERATE_MIPMAP;} - static TextureTarget GLTextureTargetToLocal(GLenum target); - static unsigned int findMaxIndex(GLsizei count,GLenum type,const GLvoid* indices); - - virtual bool glGetIntegerv(GLenum pname, GLint *params); - virtual bool glGetBooleanv(GLenum pname, GLboolean *params); - virtual bool glGetFloatv(GLenum pname, GLfloat *params); - virtual bool glGetFixedv(GLenum pname, GLfixed *params); - -protected: - static void buildStrings(const char* baseVendor, const char* baseRenderer, const char* baseVersion, const char* version); - virtual bool needConvert(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct,GLESpointer* p,GLenum array_id) = 0; - void convertDirect(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum array_id,GLESpointer* p); - void convertDirectVBO(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum array_id,GLESpointer* p); - void convertIndirect(GLESConversionArrays& fArrs,GLsizei count,GLenum type,const GLvoid* indices,GLenum array_id,GLESpointer* p); - void convertIndirectVBO(GLESConversionArrays& fArrs,GLsizei count,GLenum indices_type,const GLvoid* indices,GLenum array_id,GLESpointer* p); - void initCapsLocked(const GLubyte * extensionString); - virtual void initExtensionString() =0; - - static emugl::Mutex s_lock; - static GLDispatch s_glDispatch; - bool m_initialized; - unsigned int m_activeTexture; - GLint m_unpackAlignment; - ArraysMap m_map; - static std::string* s_glExtensions; - static GLSupport s_glSupport; - -private: - - virtual void setupArr(const GLvoid* arr,GLenum arrayType,GLenum dataType,GLint size,GLsizei stride, GLboolean normalized, int pointsIndex = -1) = 0 ; - GLuint getBuffer(GLenum target); - - ShareGroupPtr m_shareGroup; - GLenum m_glError; - textureUnitState* m_texState; - unsigned int m_arrayBuffer; - unsigned int m_elementBuffer; - GLuint m_renderbuffer; - GLuint m_framebuffer; - - static std::string s_glVendor; - static std::string s_glRenderer; - static std::string s_glVersion; -}; - -#endif - diff --git a/external/android-emugl/host/libs/Translator/include/GLcommon/GLESmacros.h b/external/android-emugl/host/libs/Translator/include/GLcommon/GLESmacros.h deleted file mode 100644 index c66602c..0000000 --- a/external/android-emugl/host/libs/Translator/include/GLcommon/GLESmacros.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef GLES_MACROS_H -#define GLES_MACROS_H - -#define GET_CTX() \ - if(!s_eglIface) return; \ - GLEScontext *ctx = s_eglIface->getGLESContext(); \ - if(!ctx) return; - -#define GET_CTX_CM() \ - if(!s_eglIface) return; \ - GLEScmContext *ctx = static_cast(s_eglIface->getGLESContext()); \ - if(!ctx) return; - -#define GET_CTX_V2() \ - if(!s_eglIface) return; \ - GLESv2Context *ctx = static_cast(s_eglIface->getGLESContext()); \ - if(!ctx) return; - -#define GET_CTX_RET(failure_ret) \ - if(!s_eglIface) return failure_ret; \ - GLEScontext *ctx = s_eglIface->getGLESContext(); \ - if(!ctx) return failure_ret; - -#define GET_CTX_CM_RET(failure_ret) \ - if(!s_eglIface) return failure_ret; \ - GLEScmContext *ctx = static_cast(s_eglIface->getGLESContext()); \ - if(!ctx) return failure_ret; - -#define GET_CTX_V2_RET(failure_ret) \ - if(!s_eglIface) return failure_ret; \ - GLESv2Context *ctx = static_cast(s_eglIface->getGLESContext()); \ - if(!ctx) return failure_ret; - - -#define SET_ERROR_IF(condition,err) if((condition)) { \ - ctx->setGLerror(err); \ - return; \ - } - - -#define RET_AND_SET_ERROR_IF(condition,err,ret) if((condition)) { \ - ctx->setGLerror(err); \ - return ret; \ - } - -#endif diff --git a/external/android-emugl/host/libs/Translator/include/GLcommon/GLESpointer.h b/external/android-emugl/host/libs/Translator/include/GLcommon/GLESpointer.h deleted file mode 100644 index 851fe45..0000000 --- a/external/android-emugl/host/libs/Translator/include/GLcommon/GLESpointer.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef GLES_POINTER_H -#define GLES_POINTER_H - -#include -#include "GLESbuffer.h" - -class GLESpointer -{ - -public: - GLESpointer(); - GLenum getType() const; - GLint getSize() const; - GLsizei getStride() const; - const GLvoid* getArrayData() const; - GLvoid* getBufferData() const; - GLuint getBufferName() const; - GLboolean getNormalized() const { return m_normalize ? GL_TRUE : GL_FALSE; } - const GLvoid* getData() const; - unsigned int getBufferOffset() const; - void redirectPointerData(); - void getBufferConversions(const RangeList& rl,RangeList& rlOut); - bool bufferNeedConversion(){ return !m_buffer->fullyConverted();} - void setArray (GLint size,GLenum type,GLsizei stride,const GLvoid* data,bool normalize = false); - void setBuffer(GLint size,GLenum type,GLsizei stride,GLESbuffer* buf,GLuint bufferName,int offset,bool normalize = false); - bool isEnable() const; - bool isNormalize() const; - bool isVBO() const; - void enable(bool b); - -private: - GLint m_size; - GLenum m_type; - GLsizei m_stride; - bool m_enabled; - bool m_normalize; - const GLvoid* m_data; - GLESbuffer* m_buffer; - GLuint m_bufferName; - unsigned int m_buffOffset; - bool m_isVBO; -}; -#endif diff --git a/external/android-emugl/host/libs/Translator/include/GLcommon/GLESvalidate.h b/external/android-emugl/host/libs/Translator/include/GLcommon/GLESvalidate.h deleted file mode 100644 index 92c1f33..0000000 --- a/external/android-emugl/host/libs/Translator/include/GLcommon/GLESvalidate.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef GLES_VALIDATE_H -#define GLES_VALIDATE_H - -#include -#include "GLEScontext.h" -struct GLESvalidate -{ -static bool textureEnum(GLenum e,unsigned int maxTex); -static bool pixelType(GLEScontext * ctx,GLenum type); -static bool pixelOp(GLenum format,GLenum type); -static bool pixelFrmt(GLEScontext* ctx , GLenum format); -static bool bufferTarget(GLenum target); -static bool bufferUsage(GLenum usage); -static bool bufferParam(GLenum param); -static bool drawMode(GLenum mode); -static bool drawType(GLenum mode); -static bool textureTarget(GLenum target); -static bool textureTargetLimited(GLenum target); -static bool textureTargetEx(GLenum target); -static bool texImgDim(GLsizei width,GLsizei height,int maxTexSize); -static bool blendEquationMode(GLenum mode); -static bool framebufferTarget(GLenum target); -static bool framebufferAttachment(GLenum attachment); -static bool framebufferAttachmentParams(GLenum pname); -static bool renderbufferTarget(GLenum target); -static bool renderbufferParams(GLenum pname); -}; - -#endif diff --git a/external/android-emugl/host/libs/Translator/include/GLcommon/GLLibrary.h b/external/android-emugl/host/libs/Translator/include/GLcommon/GLLibrary.h deleted file mode 100644 index 0a33096..0000000 --- a/external/android-emugl/host/libs/Translator/include/GLcommon/GLLibrary.h +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (C) 2015 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef GLCOMMON_GL_LIBRARY_H -#define GLCOMMON_GL_LIBRARY_H - -// An interface class used to model the desktop GL library to use at runtime. -// Use GlLibrary::getHostInstance() to retrieve the instance corresponding -// to the host's default system GL library. -class GlLibrary { -public: - // Generic pointer-to-function type. - typedef void (*GlFunctionPointer)(void); - - // Empty constructor. - GlLibrary() {} - - // Empty destructor. - virtual ~GlLibrary() {} - - // Find the function named |name| in the library and return its address. - virtual GlFunctionPointer findSymbol(const char* name) = 0; -}; - -#endif // GLCOMMON_GL_LIBRARY_H diff --git a/external/android-emugl/host/libs/Translator/include/GLcommon/GLconversion_macros.h b/external/android-emugl/host/libs/Translator/include/GLcommon/GLconversion_macros.h deleted file mode 100644 index 83e99b4..0000000 --- a/external/android-emugl/host/libs/Translator/include/GLcommon/GLconversion_macros.h +++ /dev/null @@ -1,31 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef _GL_FIXED_OPS_H -#define _GL_FIXED_OPS_H - -#define X2F(x) (((float)(x))/65536.0f) -#define X2D(x) (((double)(x))/65536.0) -#define X2I(x) ((x) /65536) -#define B2S(x) ((short)x) - - -#define F2X(d) ((d) > 32767.65535 ? 32767 * 65536 + 65535 : \ - (d) < -32768.65535 ? -32768 * 65536 + 65535 : \ - ((GLfixed) ((d) * 65536))) - -#define I2X(d) ((d)*65536) - -#endif diff --git a/external/android-emugl/host/libs/Translator/include/GLcommon/GLutils.h b/external/android-emugl/host/libs/Translator/include/GLcommon/GLutils.h deleted file mode 100644 index 28750d6..0000000 --- a/external/android-emugl/host/libs/Translator/include/GLcommon/GLutils.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef GL_UTILS_H -#define GL_UTILS_H - -#include -#include -#include - -typedef enum { - GLES_1_1 = 1, - GLES_2_0 = 2, - MAX_GLES_VERSION //Must be last -} GLESVersion; - -bool isPowerOf2(int num); - -// defines many types as 'void*' while they're really -// implemented as unsigned integers. These convenience template functions -// help casting between them safely without generating compiler warnings. -inline void* SafePointerFromUInt(unsigned int handle) { - return (void*)(uintptr_t)(handle); -} - -inline unsigned int SafeUIntFromPointer(const void* ptr) { -#if 1 - // Ignore the assert below to avoid crashing when running older - // system images, which might have buggy encoder libraries. Print - // an error message though. - if ((uintptr_t)(ptr) != (unsigned int)(uintptr_t)(ptr)) { - fprintf(stderr, "EmuGL:WARNING: bad generic pointer %p\n", ptr); - } -#else - // Assertion error if the pointer contains a value that does not fit - // in an unsigned integer! - assert((uintptr_t)(ptr) == (unsigned int)(uintptr_t)(ptr)); -#endif - return (unsigned int)(uintptr_t)(ptr); -} - -#endif diff --git a/external/android-emugl/host/libs/Translator/include/GLcommon/PaletteTexture.h b/external/android-emugl/host/libs/Translator/include/GLcommon/PaletteTexture.h deleted file mode 100644 index 90b206d..0000000 --- a/external/android-emugl/host/libs/Translator/include/GLcommon/PaletteTexture.h +++ /dev/null @@ -1,25 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef __PALETTE_TEXTURE_H__ -#define __PALETTE_TEXTURE_H__ - -#include - -#define MAX_SUPPORTED_PALETTE 10 - -unsigned char* uncompressTexture(GLenum internalformat,GLenum& formatOut,GLsizei width,GLsizei height,GLsizei imageSize, const GLvoid* data,GLint level); - -#endif diff --git a/external/android-emugl/host/libs/Translator/include/GLcommon/RangeManip.h b/external/android-emugl/host/libs/Translator/include/GLcommon/RangeManip.h deleted file mode 100644 index e3162b8..0000000 --- a/external/android-emugl/host/libs/Translator/include/GLcommon/RangeManip.h +++ /dev/null @@ -1,69 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef RANGE_H -#define RANGE_H - -#include - -class Range { - -public: - Range():m_start(0),m_end(0),m_size(0){}; - Range(int start,int size):m_start(start),m_end(start+size),m_size(size){}; - Range(const Range& r):m_start(r.m_start),m_end(r.m_end),m_size(r.m_size){}; - void setRange(int start,int size){m_start = start; m_end = start+size; m_size = size;}; - inline int getStart() const{return m_start;}; - inline int getEnd() const{return m_end;}; - inline int getSize() const{return m_size;}; - Range& operator=(const Range& r) { - m_start = r.m_start; - m_end = r.m_end; - m_size = r.m_size; - return *this; - } - bool operator ==(const Range& r) const { - return m_start == r.m_start && m_size == r.m_size && m_end == r.m_end; - } - bool operator !=(const Range& r) const {return !((*this) == r);}; - bool rangeIntersection(const Range& r,Range& rOut) const ; - bool rangeUnion(const Range& r,Range& rOut) const ; - -private: - int m_start; - int m_end; - int m_size; -}; - -class RangeList { -public: - void addRange(const Range& r); - void addRanges(const RangeList& rl); - void delRange(const Range& r,RangeList& deleted); - void delRanges(const RangeList& rl,RangeList& deleted); - bool empty() const; - void merge(); - int size() const; - void clear(); - Range& operator[](unsigned int i){return list[i];}; -private: - void erase(unsigned int i); - std::vector list; -}; - - - - -#endif diff --git a/external/android-emugl/host/libs/Translator/include/GLcommon/TextureUtils.h b/external/android-emugl/host/libs/Translator/include/GLcommon/TextureUtils.h deleted file mode 100644 index 9b0c4ea..0000000 --- a/external/android-emugl/host/libs/Translator/include/GLcommon/TextureUtils.h +++ /dev/null @@ -1,31 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef _TEXTURE_UTILS_H -#define _TEXTURE_UTILS_H - -#include -#include -#include "GLEScontext.h" -#include "PaletteTexture.h" -#include "etc1.h" - -int getCompressedFormats(int* formats); -void doCompressedTexImage2D(GLEScontext * ctx, GLenum target, GLint level, - GLenum internalformat, GLsizei width, - GLsizei height, GLint border, - GLsizei imageSize, const GLvoid* data, void * funcPtr); - -#endif diff --git a/external/android-emugl/host/libs/Translator/include/GLcommon/TranslatorIfaces.h b/external/android-emugl/host/libs/Translator/include/GLcommon/TranslatorIfaces.h deleted file mode 100644 index 4beffaa..0000000 --- a/external/android-emugl/host/libs/Translator/include/GLcommon/TranslatorIfaces.h +++ /dev/null @@ -1,120 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef TRANSLATOR_IFACES_H -#define TRANSLATOR_IFACES_H - -#include "GLcommon/objectNameManager.h" - -#include -#include - -extern "C" { - -/* This is a generic function pointer type, whose name indicates it must - * be cast to the proper type *and calling convention* before use. - */ -typedef void (*__translatorMustCastToProperFunctionPointerType)(void); - -typedef struct { - const char* name; - __translatorMustCastToProperFunctionPointerType address; -}ExtentionDescriptor; - -class TextureData : public ObjectData -{ -public: - ~TextureData() { - if (sourceEGLImage && eglImageDetach) (*eglImageDetach)(sourceEGLImage); - } - TextureData(): ObjectData(TEXTURE_DATA), - width(0), - height(0), - border(0), - internalFormat(GL_RGBA), - sourceEGLImage(0), - wasBound(false), - requiresAutoMipmap(false), - target(0), - oldGlobal(0) { - memset(crop_rect,0,4*sizeof(int)); - }; - - unsigned int width; - unsigned int height; - unsigned int border; - unsigned int internalFormat; - unsigned int sourceEGLImage; - bool wasBound; - bool requiresAutoMipmap; - int crop_rect[4]; - void (*eglImageDetach)(unsigned int imageId); - GLenum target; - GLuint oldGlobal; -}; - -struct EglImage -{ - ~EglImage(){}; - unsigned int imageId; - unsigned int globalTexName; - unsigned int width; - unsigned int height; - unsigned int internalFormat; - unsigned int border; -}; - -typedef emugl::SmartPtr ImagePtr; -typedef std::map< unsigned int, ImagePtr> ImagesHndlMap; - -class GLEScontext; - -typedef struct { - void (*initGLESx)(); - GLEScontext* (*createGLESContext)(); - void (*initContext)(GLEScontext*,ShareGroupPtr); - void (*deleteGLESContext)(GLEScontext*); - void (*flush)(); - void (*finish)(); - void (*setShareGroup)(GLEScontext*,ShareGroupPtr); - __translatorMustCastToProperFunctionPointerType (*getProcAddress)(const char*); -}GLESiface; - -class GlLibrary; - -// A structure containing function pointers implemented by the EGL -// translator library, and called from the GLES 1.x and 2.0 translator -// libraries. -struct EGLiface { - // Get the current GLESContext instance for the current thread. - GLEScontext* (*getGLESContext)(); - - // Create a new global EglImage object named |imageId| and return a - // pointer to its new instance. - EglImage* (*eglAttachEGLImage)(unsigned int imageId); - - // Release a global EglImage instance named |imageId|. - void (*eglDetachEGLImage)(unsigned int imageId); - - // Return instance of GlLibrary class to use for dispatch. - // at runtime. This is implemented in the EGL library because on Windows - // all functions returned by wglGetProcAddress() are context-dependent! - GlLibrary* (*eglGetGlLibrary)(); -}; - -typedef GLESiface* (*__translator_getGLESIfaceFunc)(const EGLiface*); - -} -#endif diff --git a/external/android-emugl/host/libs/Translator/include/GLcommon/etc1.h b/external/android-emugl/host/libs/Translator/include/GLcommon/etc1.h deleted file mode 100644 index 15ee9ac..0000000 --- a/external/android-emugl/host/libs/Translator/include/GLcommon/etc1.h +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2009 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef __etc1_h__ -#define __etc1_h__ - -#define MAX_ETC_SUPPORTED 1 - -#define ETC1_ENCODED_BLOCK_SIZE 8 -#define ETC1_DECODED_BLOCK_SIZE 48 - -#ifndef ETC1_RGB8_OES -#define ETC1_RGB8_OES 0x8D64 -#endif - -typedef unsigned char etc1_byte; -typedef int etc1_bool; -typedef unsigned int etc1_uint32; - -#ifdef __cplusplus -extern "C" { -#endif - -// Encode a block of pixels. -// -// pIn is a pointer to a ETC_DECODED_BLOCK_SIZE array of bytes that represent a -// 4 x 4 square of 3-byte pixels in form R, G, B. Byte (3 * (x + 4 * y) is the R -// value of pixel (x, y). -// -// validPixelMask is a 16-bit mask where bit (1 << (x + y * 4)) indicates whether -// the corresponding (x,y) pixel is valid. Invalid pixel color values are ignored when compressing. -// -// pOut is an ETC1 compressed version of the data. - -void etc1_encode_block(const etc1_byte* pIn, etc1_uint32 validPixelMask, etc1_byte* pOut); - -// Decode a block of pixels. -// -// pIn is an ETC1 compressed version of the data. -// -// pOut is a pointer to a ETC_DECODED_BLOCK_SIZE array of bytes that represent a -// 4 x 4 square of 3-byte pixels in form R, G, B. Byte (3 * (x + 4 * y) is the R -// value of pixel (x, y). - -void etc1_decode_block(const etc1_byte* pIn, etc1_byte* pOut); - -// Return the size of the encoded image data (does not include size of PKM header). - -etc1_uint32 etc1_get_encoded_data_size(etc1_uint32 width, etc1_uint32 height); - -// Encode an entire image. -// pIn - pointer to the image data. Formatted such that -// pixel (x,y) is at pIn + pixelSize * x + stride * y; -// pOut - pointer to encoded data. Must be large enough to store entire encoded image. -// pixelSize can be 2 or 3. 2 is an GL_UNSIGNED_SHORT_5_6_5 image, 3 is a GL_BYTE RGB image. -// returns non-zero if there is an error. - -int etc1_encode_image(const etc1_byte* pIn, etc1_uint32 width, etc1_uint32 height, - etc1_uint32 pixelSize, etc1_uint32 stride, etc1_byte* pOut); - -// Decode an entire image. -// pIn - pointer to encoded data. -// pOut - pointer to the image data. Will be written such that -// pixel (x,y) is at pIn + pixelSize * x + stride * y. Must be -// large enough to store entire image. -// pixelSize can be 2 or 3. 2 is an GL_UNSIGNED_SHORT_5_6_5 image, 3 is a GL_BYTE RGB image. -// returns non-zero if there is an error. - -int etc1_decode_image(const etc1_byte* pIn, etc1_byte* pOut, - etc1_uint32 width, etc1_uint32 height, - etc1_uint32 pixelSize, etc1_uint32 stride); - -// Size of a PKM header, in bytes. - -#define ETC_PKM_HEADER_SIZE 16 - -// Format a PKM header - -void etc1_pkm_format_header(etc1_byte* pHeader, etc1_uint32 width, etc1_uint32 height); - -// Check if a PKM header is correctly formatted. - -etc1_bool etc1_pkm_is_valid(const etc1_byte* pHeader); - -// Read the image width from a PKM header - -etc1_uint32 etc1_pkm_get_width(const etc1_byte* pHeader); - -// Read the image height from a PKM header - -etc1_uint32 etc1_pkm_get_height(const etc1_byte* pHeader); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/external/android-emugl/host/libs/Translator/include/GLcommon/objectNameManager.h b/external/android-emugl/host/libs/Translator/include/GLcommon/objectNameManager.h deleted file mode 100644 index 4d4d038..0000000 --- a/external/android-emugl/host/libs/Translator/include/GLcommon/objectNameManager.h +++ /dev/null @@ -1,269 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef _OBJECT_NAME_MANAGER_H -#define _OBJECT_NAME_MANAGER_H - -#include -#include "emugl/common/mutex.h" -#include "emugl/common/smart_ptr.h" - -enum NamedObjectType { - VERTEXBUFFER = 0, - TEXTURE = 1, - RENDERBUFFER = 2, - FRAMEBUFFER = 3, - SHADER = 4, - NUM_OBJECT_TYPES = 5 // Must be last -}; - -enum ObjectDataType { - SHADER_DATA, - PROGRAM_DATA, - TEXTURE_DATA, - BUFFER_DATA, - UNDEFINED_DATA -}; - -class ObjectData -{ -public: - ObjectData() : m_dataType(UNDEFINED_DATA) {}; - ObjectData(ObjectDataType type): m_dataType(type) {}; - ObjectDataType getDataType() { return m_dataType; }; - virtual ~ObjectData() {}; -private: - ObjectDataType m_dataType; -}; -typedef emugl::SmartPtr ObjectDataPtr; -typedef unsigned long long ObjectLocalName; -typedef std::map NamesMap; - -// -// Class NameSpace - this class manages allocations and deletions of objects -// from a single "local" namespace (private to context group). -// For each allocated object name, a "global" name is -// generated as well to be used in the space where all -// contexts are shared. -// -// NOTE: this class does not used by the EGL/GLES layer directly, -// the EGL/GLES layer creates objects using the ShareGroup class -// interface (see below). -class GlobalNameSpace; -class NameSpace -{ - friend class ShareGroup; - friend class GlobalNameSpace; - -private: - NameSpace(NamedObjectType p_type, GlobalNameSpace *globalNameSpace); - ~NameSpace(); - - // - // genName - creates new object in the namespace and returns its name. - // if genLocal is false then the specified p_localName will be used. - // This function also generate a global name for the object, - // the value of the global name can be retrieved using the - // getGlobalName function. - // - ObjectLocalName genName(ObjectLocalName p_localName, bool genGlobal, bool genLocal); - - // genGlobalName() - This function creates a global name - // with no associated local name, for the - // translator internal use. - unsigned int genGlobalName(void); - - // - // getGlobalName - returns the global name of an object or 0 if the object - // does not exist. - // - unsigned int getGlobalName(ObjectLocalName p_localName); - - // - // getLocaalName - returns the local name of an object or 0 if the object - // does not exist. - // - ObjectLocalName getLocalName(unsigned int p_globalName); - - // - // deleteName - deletes and object from the namespace as well as its - // global name from the global name space. - // - void deleteName(ObjectLocalName p_localName); - - // - // isObject - returns true if the named object exist. - // - bool isObject(ObjectLocalName p_localName); - - // - // replaces an object to map to an existing global object - // - void replaceGlobalName(ObjectLocalName p_localName, unsigned int p_globalName); - -private: - ObjectLocalName m_nextName; - NamesMap m_localToGlobalMap; - const NamedObjectType m_type; - GlobalNameSpace *m_globalNameSpace; -}; - -class GlobalNameSpace -{ -public: - GlobalNameSpace(); - ~GlobalNameSpace(); - unsigned int genName(NamedObjectType p_type); - void deleteName(NamedObjectType p_type, unsigned int p_name); - -private: - emugl::Mutex m_lock; -}; - -// -// class ShareGroup - -// That class manages objects of one "local" context share group, typically -// there will be one inctance of ShareGroup for each user OpenGL context -// unless the user context share with another user context. In that case they -// both will share the same ShareGroup instance. -// calls into that class gets serialized through a lock so it is thread safe. -// -class ShareGroup -{ - friend class ObjectNameManager; - friend class emugl::SmartPtr; // to allow destructing when ShareGroupPtr refcount reaches zero - -public: - - // - // genName - generates new object name and returns its name value. - // if genLocal is false, p_localName will be used as the name. - // This function also generates a "global" name for the object - // which can be queried using the getGlobalName function. - // - ObjectLocalName genName(NamedObjectType p_type, ObjectLocalName p_localName = 0, bool genLocal= false); - - // genGlobalName() - This function creates a global name - // with no associated local name, for the - // translator internal use. - unsigned int genGlobalName(NamedObjectType p_type); - - // - // getGlobalName - retrieves the "global" name of an object or 0 if the - // object does not exist. - // - unsigned int getGlobalName(NamedObjectType p_type, ObjectLocalName p_localName); - - // - // getLocalName - retrieves the "local" name of an object or 0 if the - // object does not exist. - // - ObjectLocalName getLocalName(NamedObjectType p_type, unsigned int p_globalName); - - // - // deleteName - deletes and object from the namespace as well as its - // global name from the global name space. - // - void deleteName(NamedObjectType p_type, ObjectLocalName p_localName); - - // - // replaceGlobalName - replaces an object to map to an existing global - // named object. (used when creating EGLImage siblings) - // - void replaceGlobalName(NamedObjectType p_type, ObjectLocalName p_localName, unsigned int p_globalName); - - // - // isObject - returns true if the named object exist. - // - bool isObject(NamedObjectType p_type, ObjectLocalName p_localName); - - // - // Assign object global data to a names object - // - void setObjectData(NamedObjectType p_type, ObjectLocalName p_localName, ObjectDataPtr data); - - // - // Retrieve object global data - // - ObjectDataPtr getObjectData(NamedObjectType p_type, ObjectLocalName p_localName); - -private: - explicit ShareGroup(GlobalNameSpace *globalNameSpace); - ~ShareGroup(); - -private: - emugl::Mutex m_lock; - NameSpace *m_nameSpace[NUM_OBJECT_TYPES]; - void *m_objectsData; -}; - -typedef emugl::SmartPtr ShareGroupPtr; -typedef std::multimap ShareGroupsMap; - -// -// ObjectNameManager - -// This class manages the set of all ShareGroups instances, -// each ShareGroup instance can be accessed through one or more 'groupName' -// values. the type of 'groupName' is void *, the intent is that the EGL -// layer will use the user context handle as the name for its ShareGroup -// object. Multiple names can be attached to a ShareGroup object to support -// user context sharing. -// -class ObjectNameManager -{ -public: - explicit ObjectNameManager(GlobalNameSpace *globalNameSpace); - ~ObjectNameManager(); - - // - // createShareGroup - create a new ShareGroup object and attach it with - // the "name" specified by p_groupName. - // - ShareGroupPtr createShareGroup(void *p_groupName); - - // - // attachShareGroup - find the ShareGroup object attached to the name - // specified in p_existingGroupName and attach p_groupName to the same - // ShareGroup instance. - // - ShareGroupPtr attachShareGroup(void *p_groupName, void *p_existingGroupName); - - // - // getShareGroup - retreive a ShareGroup object based on its "name" - // - ShareGroupPtr getShareGroup(void *p_groupName); - - // - // deleteShareGroup - deletes the attachment of the p_groupName to its - // attached ShareGroup. When the last name of ShareGroup is - // deleted the ShareGroup object is destroyed. - // - void deleteShareGroup(void *p_groupName); - - // - // getGlobalContext() - this function returns a name of an existing - // ShareGroup. The intent is that the EGL layer will - // use that function to get the GL context which each - // new context needs to share with. - // - void *getGlobalContext(); - -private: - ShareGroupsMap m_groups; - emugl::Mutex m_lock; - GlobalNameSpace *m_globalNameSpace; -}; - -#endif diff --git a/external/android-emugl/host/libs/libOpenGLESDispatch/GLESv1Dispatch.cpp b/external/android-emugl/host/libs/libOpenGLESDispatch/GLESv1Dispatch.cpp index b7e43dd..52be3d4 100644 --- a/external/android-emugl/host/libs/libOpenGLESDispatch/GLESv1Dispatch.cpp +++ b/external/android-emugl/host/libs/libOpenGLESDispatch/GLESv1Dispatch.cpp @@ -25,24 +25,40 @@ extern EGLDispatch s_egl; static emugl::SharedLibrary *s_gles1_lib = NULL; -// An unimplemented function which prints out an error message. -// To make it consistent with the guest, all GLES1 functions not supported by -// the driver should be redirected to this function. - static void gles1_unimplemented() { fprintf(stderr, "Called unimplemented GLESv1 API\n"); } -// -// This function is called only once during initialiation before -// any thread has been created - hence it should NOT be thread safe. -// +static void gles1_dummy() {} + +#define ASSIGN_DUMMY(return_type, function_name, signature, call_args) do { \ + dispatch_table-> function_name = reinterpret_cast(gles1_dummy); \ + } while(0); + + +#define LOOKUP_SYMBOL(return_type,function_name,signature,callargs) \ + dispatch_table-> function_name = reinterpret_cast< function_name ## _t >( \ + s_gles1_lib->findSymbol(#function_name)); + +#define LOOKUP_EXT_SYMBOL(return_type,function_name,signature,callargs) \ + dispatch_table-> function_name = reinterpret_cast< function_name ## _t >( \ + s_egl.eglGetProcAddress(#function_name)); namespace { constexpr const char *glesv1_lib_env_var{"ANBOX_GLESv1_LIB"}; } bool gles1_dispatch_init(const char *path, GLESv1Dispatch* dispatch_table) { + if (!dispatch_table) + return false; + + // If no path is given we assign dummy functions to all GL calls + // we would have loaded from a real implementation. + if (!path) { + LIST_GLES1_FUNCTIONS(ASSIGN_DUMMY, ASSIGN_DUMMY); + return true; + } + const char* libName = getenv(glesv1_lib_env_var); if (!libName) libName = path; @@ -57,17 +73,6 @@ bool gles1_dispatch_init(const char *path, GLESv1Dispatch* dispatch_table) { return false; } - // - // init the GLES dispatch table - // -#define LOOKUP_SYMBOL(return_type,function_name,signature,callargs) \ - dispatch_table-> function_name = reinterpret_cast< function_name ## _t >( \ - s_gles1_lib->findSymbol(#function_name)); - -#define LOOKUP_EXT_SYMBOL(return_type,function_name,signature,callargs) \ - dispatch_table-> function_name = reinterpret_cast< function_name ## _t >( \ - s_egl.eglGetProcAddress(#function_name)); - LIST_GLES1_FUNCTIONS(LOOKUP_SYMBOL,LOOKUP_EXT_SYMBOL) dispatch_table->initialized = true; diff --git a/external/android-emugl/host/libs/renderControl_dec/renderControl.in b/external/android-emugl/host/libs/renderControl_dec/renderControl.in index a632a0a..2a95ef8 100644 --- a/external/android-emugl/host/libs/renderControl_dec/renderControl.in +++ b/external/android-emugl/host/libs/renderControl_dec/renderControl.in @@ -33,5 +33,5 @@ GL_ENTRY(int, rcGetDisplayHeight, uint32_t displayId) GL_ENTRY(int, rcGetDisplayDpiX, uint32_t displayId) GL_ENTRY(int, rcGetDisplayDpiY, uint32_t displayId) GL_ENTRY(int, rcGetDisplayVsyncPeriod, uint32_t displayId) -GL_ENTRY(void, rcPostLayer, const char* name, uint32_t colorBuffer, int32_t sourceCropLeft, int32_t sourceCropTop, int32_t sourceCropRight, int32_t sourceCropBottom, int32_t displayFrameLeft, int32_t displayFrameTop, int32_t displayFrameRight, int32_t displayFrameBottom) +GL_ENTRY(void, rcPostLayer, const char* name, uint32_t colorBuffer, float alpha, int32_t sourceCropLeft, int32_t sourceCropTop, int32_t sourceCropRight, int32_t sourceCropBottom, int32_t displayFrameLeft, int32_t displayFrameTop, int32_t displayFrameRight, int32_t displayFrameBottom) GL_ENTRY(void, rcPostAllLayersDone) diff --git a/external/backtrace-cpp/.gitignore b/external/backtrace-cpp/.gitignore new file mode 100644 index 0000000..70fb602 --- /dev/null +++ b/external/backtrace-cpp/.gitignore @@ -0,0 +1,2 @@ +build*/ +*.pyc diff --git a/external/backtrace-cpp/.travis.yml b/external/backtrace-cpp/.travis.yml new file mode 100644 index 0000000..a5d4775 --- /dev/null +++ b/external/backtrace-cpp/.travis.yml @@ -0,0 +1,25 @@ +language: cpp +compiler: + - gcc + - clang + +addons: + apt: + packages: + - valgrind + +install: + - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps" + - mkdir ${DEPS_DIR} && cd ${DEPS_DIR} + - CMAKE_URL="http://www.cmake.org/files/v3.3/cmake-3.3.2-Linux-x86_64.tar.gz" + - mkdir cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake + - export PATH=${DEPS_DIR}/cmake/bin:${PATH} + - pip install --user conan && export PATH=$PATH:$HOME/.local/bin + - cd ${TRAVIS_BUILD_DIR} + - mkdir build && cd build + - cmake .. -DBACKWARD_TESTS=ON + - cmake --build . + +script: + - valgrind ctest .. --verbose + - cd ${TRAVIS_BUILD_DIR} && conan test_package --build=outdated diff --git a/external/backtrace-cpp/BackwardConfig.cmake b/external/backtrace-cpp/BackwardConfig.cmake new file mode 100644 index 0000000..1effcd8 --- /dev/null +++ b/external/backtrace-cpp/BackwardConfig.cmake @@ -0,0 +1,143 @@ +# +# BackwardMacros.cmake +# Copyright 2013 Google Inc. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +############################################################################### +# OPTIONS +############################################################################### + +set(STACK_WALKING_UNWIND TRUE CACHE BOOL + "Use compiler's unwind API") +set(STACK_WALKING_BACKTRACE FALSE CACHE BOOL + "Use backtrace from (e)glibc for stack walking") + +set(STACK_DETAILS_AUTO_DETECT TRUE CACHE BOOL + "Auto detect backward's stack details dependencies") + +set(STACK_DETAILS_BACKTRACE_SYMBOL FALSE CACHE BOOL + "Use backtrace from (e)glibc for symbols resolution") +set(STACK_DETAILS_DW FALSE CACHE BOOL + "Use libdw to read debug info") +set(STACK_DETAILS_BFD FALSE CACHE BOOL + "Use libbfd to read debug info") + +############################################################################### +# CONFIGS +############################################################################### +if (${STACK_DETAILS_AUTO_DETECT}) + include(FindPackageHandleStandardArgs) + + # find libdw + find_path(LIBDW_INCLUDE_DIR NAMES "elfutils/libdw.h" "elfutils/libdwfl.h") + find_library(LIBDW_LIBRARY dw) + set(LIBDW_INCLUDE_DIRS ${LIBDW_INCLUDE_DIR} ) + set(LIBDW_LIBRARIES ${LIBDW_LIBRARY} ) + find_package_handle_standard_args(libdw DEFAULT_MSG + LIBDW_LIBRARY LIBDW_INCLUDE_DIR) + mark_as_advanced(LIBDW_INCLUDE_DIR LIBDW_LIBRARY) + + # find libbfd + find_path(LIBBFD_INCLUDE_DIR NAMES "bfd.h") + find_path(LIBDL_INCLUDE_DIR NAMES "dlfcn.h") + find_library(LIBBFD_LIBRARY bfd) + find_library(LIBDL_LIBRARY dl) + set(LIBBFD_INCLUDE_DIRS ${LIBBFD_INCLUDE_DIR} ${LIBDL_INCLUDE_DIR}) + set(LIBBFD_LIBRARIES ${LIBBFD_LIBRARY} ${LIBDL_LIBRARY}) + find_package_handle_standard_args(libbfd DEFAULT_MSG + LIBBFD_LIBRARY LIBBFD_INCLUDE_DIR + LIBDL_LIBRARY LIBDL_INCLUDE_DIR) + mark_as_advanced(LIBBFD_INCLUDE_DIR LIBBFD_LIBRARY + LIBDL_INCLUDE_DIR LIBDL_LIBRARY) + + if (LIBDW_FOUND) + LIST(APPEND _BACKWARD_INCLUDE_DIRS ${LIBDW_INCLUDE_DIRS}) + LIST(APPEND BACKWARD_LIBRARIES ${LIBDW_LIBRARIES}) + set(STACK_DETAILS_DW TRUE) + set(STACK_DETAILS_BFD FALSE) + set(STACK_DETAILS_BACKTRACE_SYMBOL FALSE) + elseif(LIBBFD_FOUND) + LIST(APPEND _BACKWARD_INCLUDE_DIRS ${LIBBFD_INCLUDE_DIRS}) + LIST(APPEND BACKWARD_LIBRARIES ${LIBBFD_LIBRARIES}) + set(STACK_DETAILS_DW FALSE) + set(STACK_DETAILS_BFD TRUE) + set(STACK_DETAILS_BACKTRACE_SYMBOL FALSE) + else() + set(STACK_DETAILS_DW FALSE) + set(STACK_DETAILS_BFD FALSE) + set(STACK_DETAILS_BACKTRACE_SYMBOL TRUE) + endif() +else() + if (STACK_DETAILS_DW) + LIST(APPEND BACKWARD_LIBRARIES dw) + endif() + + if (STACK_DETAILS_BFD) + LIST(APPEND BACKWARD_LIBRARIES bfd dl) + endif() +endif() + +macro(map_definitions var_prefix define_prefix) + foreach(def ${ARGN}) + if (${${var_prefix}${def}}) + LIST(APPEND BACKWARD_DEFINITIONS "${define_prefix}${def}=1") + else() + LIST(APPEND BACKWARD_DEFINITIONS "${define_prefix}${def}=0") + endif() + endforeach() +endmacro() + +if (NOT BACKWARD_DEFINITIONS) + map_definitions("STACK_WALKING_" "BACKWARD_HAS_" UNWIND BACKTRACE) + map_definitions("STACK_DETAILS_" "BACKWARD_HAS_" BACKTRACE_SYMBOL DW BFD) +endif() + +foreach(def ${BACKWARD_DEFINITIONS}) + message(STATUS "${def}") +endforeach() + +find_path(BACKWARD_INCLUDE_DIR backward.hpp PATHS ${CMAKE_CURRENT_LIST_DIR}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Backward + REQUIRED_VARS + BACKWARD_INCLUDE_DIR + BACKWARD_LIBRARIES +) +list(APPEND _BACKWARD_INCLUDE_DIRS ${BACKWARD_INCLUDE_DIR}) + +macro(add_backward target) + target_include_directories(${target} PRIVATE ${_BACKWARD_INCLUDE_DIRS}) + set_property(TARGET ${target} APPEND PROPERTY COMPILE_DEFINITIONS ${BACKWARD_DEFINITIONS}) + set_property(TARGET ${target} APPEND PROPERTY LINK_LIBRARIES ${BACKWARD_LIBRARIES}) +endmacro() +set(BACKWARD_INCLUDE_DIRS ${_BACKWARD_INCLUDE_DIRS} CACHE INTERNAL "_BACKWARD_INCLUDE_DIRS") +set(BACKWARD_DEFINITIONS ${BACKWARD_DEFINITIONS} CACHE INTERNAL "BACKWARD_DEFINITIONS") +set(BACKWARD_LIBRARIES ${BACKWARD_LIBRARIES} CACHE INTERNAL "BACKWARD_LIBRARIES") +mark_as_advanced(_BACKWARD_INCLUDE_DIRS BACKWARD_DEFINITIONS BACKWARD_LIBRARIES) + +if (NOT TARGET Backward::Backward) + add_library(Backward::Backward INTERFACE IMPORTED) + set_target_properties(Backward::Backward PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_BACKWARD_INCLUDE_DIRS}" + INTERFACE_LINK_LIBRARIES "${BACKWARD_LIBRARIES}" + INTERFACE_COMPILE_DEFINITIONS "${BACKWARD_DEFINITIONS}" + ) +endif() \ No newline at end of file diff --git a/external/backtrace-cpp/CMakeLists.txt b/external/backtrace-cpp/CMakeLists.txt new file mode 100644 index 0000000..c9ae155 --- /dev/null +++ b/external/backtrace-cpp/CMakeLists.txt @@ -0,0 +1,115 @@ +# +# CMakeLists.txt +# Copyright 2013 Google Inc. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +cmake_minimum_required(VERSION 2.8.12) +project(backward CXX) + +include(BackwardConfig.cmake) + +set(CMAKE_CXX_STANDARD_REQUIRED True) +set(CMAKE_CXX_STANDARD 11) + +############################################################################### +# COMPILER FLAGS +############################################################################### + +if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic-errors") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") +endif() + +# ANBOX: allow old-style casts +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=old-style-cast") + +############################################################################### +# BACKWARD OBJECT +############################################################################### + +add_library(backward_object OBJECT backward.cpp) +target_compile_definitions(backward_object PRIVATE ${BACKWARD_DEFINITIONS}) +target_include_directories(backward_object PRIVATE ${BACKWARD_INCLUDE_DIRS}) +set(BACKWARD_ENABLE $ CACHE STRING + "Link with this object to setup backward automatically") + + +############################################################################### +# BACKWARD LIBRARY (Includes backward.cpp) +############################################################################### +option(BACKWARD_SHARED "Build dynamic backward-cpp shared lib" OFF) + +if(BACKWARD_SHARED) + set(libtype SHARED) +endif() +add_library(backward ${libtype} backward.cpp) +target_compile_definitions(backward PUBLIC ${BACKWARD_DEFINITIONS}) +target_include_directories(backward PUBLIC ${BACKWARD_INCLUDE_DIRS}) + +############################################################################### +# TESTS +############################################################################### + +if(BACKWARD_TESTS) + enable_testing() + + add_library(test_main SHARED test/_test_main.cpp) + + macro(backward_add_test src) + get_filename_component(name ${src} NAME_WE) + set(test_name "test_${name}") + + add_executable(${test_name} ${src} ${ARGN}) + + target_link_libraries(${test_name} PRIVATE Backward::Backward test_main) + + add_test(NAME ${name} COMMAND ${test_name}) + endmacro() + + # Tests without backward.cpp + set(TESTS + test + stacktrace + rectrace + select_signals + ) + + foreach(test ${TESTS}) + backward_add_test(test/${test}.cpp) + endforeach() + + # Tests with backward.cpp + set(TESTS + suicide + ) + + foreach(test ${TESTS}) + backward_add_test(test/${test}.cpp ${BACKWARD_ENABLE}) + endforeach() +endif() + +install( + FILES "backward.hpp" + DESTINATION ${CMAKE_INSTALL_PREFIX}/include +) +install( + FILES "BackwardConfig.cmake" + DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/backward +) diff --git a/external/backtrace-cpp/LICENSE.txt b/external/backtrace-cpp/LICENSE.txt new file mode 100644 index 0000000..269e8ab --- /dev/null +++ b/external/backtrace-cpp/LICENSE.txt @@ -0,0 +1,21 @@ +Copyright 2013 Google Inc. All Rights Reserved. + +The MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/external/backtrace-cpp/README.md b/external/backtrace-cpp/README.md new file mode 100644 index 0000000..9fb6cd9 --- /dev/null +++ b/external/backtrace-cpp/README.md @@ -0,0 +1,378 @@ +Backward-cpp [![badge](https://img.shields.io/badge/conan.io-backward%2F0.0.0-green.svg?logo=data:image/png;base64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAA1VBMVEUAAABhlctjlstkl8tlmMtlmMxlmcxmmcxnmsxpnMxpnM1qnc1sn85voM91oM11oc1xotB2oc56pNF6pNJ2ptJ8ptJ8ptN9ptN8p9N5qNJ9p9N9p9R8qtOBqdSAqtOAqtR%2BrNSCrNJ/rdWDrNWCsNWCsNaJs9eLs9iRvNuVvdyVv9yXwd2Zwt6axN6dxt%2Bfx%2BChyeGiyuGjyuCjyuGly%2BGlzOKmzOGozuKoz%2BKqz%2BOq0OOv1OWw1OWw1eWx1eWy1uay1%2Baz1%2Baz1%2Bez2Oe02Oe12ee22ujUGwH3AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfgBQkREyOxFIh/AAAAiklEQVQI12NgAAMbOwY4sLZ2NtQ1coVKWNvoc/Eq8XDr2wB5Ig62ekza9vaOqpK2TpoMzOxaFtwqZua2Bm4makIM7OzMAjoaCqYuxooSUqJALjs7o4yVpbowvzSUy87KqSwmxQfnsrPISyFzWeWAXCkpMaBVIC4bmCsOdgiUKwh3JojLgAQ4ZCE0AMm2D29tZwe6AAAAAElFTkSuQmCC)](http://www.conan.io/source/backward/0.0.0/Manu343726/testing) [![Build Status](https://travis-ci.org/bombela/backward-cpp.svg?branch=master)](https://travis-ci.org/cwbombela/backward-cpp) +============ + +Backward is a beautiful stack trace pretty printer for C++. + +If you are bored to see this: + +![default trace](doc/rude.png) + +Backward will spice it up for you: + +![pretty stackstrace](doc/pretty.png) + +There is not much to say. Of course it will be able to display the code +snippets only if the source files are accessible (else see trace #4 in the +example). + +All "Source" lines and code snippet prefixed by a pipe "|" are frames inline +the next frame. +You can see that for the trace #1 in the example, the function +`you_shall_not_pass()` was inlined in the function `...read2::do_test()` by the +compiler. + +##Installation + +#### Install backward.hpp + +Backward is a header only library. So installing Backward is easy, simply drop +a copy of `backward.hpp` along with your other source files in your C++ project. +You can also use a git submodule or really any other way that best fits your +environment, as long as you can include `backward.hpp`. + +#### Install backward.cpp + +If you want Backward to automatically print a stack trace on most common fatal +errors (segfault, abort, un-handled exception...), simply add a copy of +`backward.cpp` to your project, and don't forget to tell your build system. + +The code in `backward.cpp` is trivial anyway, you can simply copy what it's +doing at your convenience. + +##Configuration & Dependencies + +### Integration with CMake + +If you are using CMake and want to use its configuration abilities to save +you the trouble, you can easily integrate Backward, depending on how you obtained +the library. + +#### As a subdirectory: + +In this case you have a subdirectory containing the whole repository of Backward +(eg.: using git-submodules), in this case you can do: + +``` +add_subdirectory(/path/to/backward-cpp) + +# This will add backward.cpp to your target +add_executable(mytarget mysource.cpp ${BACKWARD_ENABLE}) + +# This will add libraries, definitions and include directories needed by backward +# by setting each property on the target. +add_backward(mytarget) +``` + +#### Modifying CMAKE_MODULE_PATH + +In this case you can have Backward installed as a subdirectory: + +``` +list(APPEND CMAKE_MODULE_PATH /path/to/backward-cpp) +find_package(Backward) + +# This will add libraries, definitions and include directories needed by backward +# through an IMPORTED target. +target_link_libraries(mytarget PUBLIC Backward::Backward) +``` + +Notice that this is equivalent to using the the approach that uses `add_subdirectory()`, +however it uses cmake's [imported target](https://cmake.org/Wiki/CMake/Tutorials/Exporting_and_Importing_Targets) mechanism. + +#### Installation through a regular package manager + +In this case you have obtained Backward through a package manager. + +Packages currently available: +- [conda-forge](https://anaconda.org/conda-forge/backward-cpp) + +``` +find_package(Backward) + +# This will add libraries, definitions and include directories needed by backward +# through an IMPORTED target. +target_link_libraries(mytarget PUBLIC Backward::Backward) +``` + +### Compile with debug info + +You need to compile your project with generation of debug symbols enabled, +usually `-g` with clang++ and g++. + +Note that you can use `-g` with any level of optimization, with modern debug +information encoding like DWARF, it only takes space in the binary (it's not +loaded in memory until your debugger or Backward makes use of it, don't worry), +and it doesn't impact the code generation (at least on GNU/Linux x86\_64 for +what I know). + +If you are missing debug information, the stack trace will lack details about +your sources. + +### Libraries to read the debug info + +Backward support pretty printed stack traces on GNU/Linux only, it will compile +fine under other platforms but will not do anything. **Pull requests are +welcome :)** + +Also, by default you will get a really basic stack trace, based on the +`backtrace_symbols` API: + +![default trace](doc/nice.png) + +You will need to install some dependencies to get the ultimate stack trace. Two +libraries are currently supported, the only difference is which one is the +easiest for you to install, so pick your poison: + +#### libbfd from the [GNU/binutils](http://www.gnu.org/software/binutils/) + + apt-get install binutils-dev (or equivalent) + +And do not forget to link with the lib: `g++/clang++ -lbfd ...` + +Then define the following before every inclusion of `backward.hpp` (don't +forget to update `backward.cpp` as well): + + #define BACKWARD_HAS_BFD 1 + +#### libdw from the [elfutils](https://fedorahosted.org/elfutils/) + + apt-get install libdw-dev (or equivalent) + +And do not forget to link with the lib and inform Backward to use it: + + #define BACKWARD_HAS_DW 1 + +Of course you can simply add the define (`-DBACKWARD_HAS_...=1`) and the +linkage details in your build system and even auto-detect which library is +installed, it's up to you. + +That'ss it, you are all set, you should be getting nice stack traces like the +one at the beginning of this document. + +## API + +If you don't want to limit yourself to the defaults offered by `backward.cpp`, +and you want to take some random stack traces for whatever reason and pretty +print them the way you love or you decide to send them all to your buddies over +the Internet, you will appreciate the simplicity of Backward's API. + +### Stacktrace + +The StackTrace class lets you take a "snapshot" of the current stack. +You can use it like this: + +```c++ +using namespace backward; +StackTrace st; st.load_here(32); +Printer p; p.print(st); +``` + +The public methods are: + +```c++ +class StackTrace { public: + // Take a snapshot of the current stack, with at most "trace_cnt_max" + // traces in it. The first trace is the most recent (ie the current + // frame). You can also provide a trace address to load_from() assuming + // the address is a valid stack frame (useful for signal handling traces). + // Both function return size(). + size_t load_here(size_t trace_cnt_max) + size_t load_from(void* address, size_t trace_cnt_max) + + // The number of traces loaded. This can be less than "trace_cnt_max". + size_t size() const + + // A unique id for the thread in which the trace was taken. The value + // 0 means the stack trace comes from the main thread. + size_t thread_id() const + + // Retrieve a trace by index. 0 is the most recent trace, size()-1 is + // the oldest one. + Trace operator[](size_t trace_idx) +}; +``` + +### TraceResolver + +The `TraceResolver` does the heavy lifting, and intends to transform a simple +`Trace` from its address into a fully detailed `ResolvedTrace` with the +filename of the source, line numbers, inlined functions and so on. + +You can use it like this: + +```c++ +using namespace backward; +StackTrace st; st.load_here(32); + +TraceResolver tr; tr.load_stacktrace(st); +for (size_t i = 0; i < st.size(); ++i) { + ResolvedTrace trace = tr.resolve(st[i]); + std::cout << "#" << i + << " " << trace.object_filename + << " " << trace.object_function + << " [" << trace.addr << "]" + << std::endl; +} +``` + +The public methods are: + +```c++ +class TraceResolver { public: + // Pre-load whatever is necessary from the stack trace. + template + void load_stacktrace(ST&) + + // Resolve a trace. It takes a ResolvedTrace, because a `Trace` is + // implicitly convertible to it. + ResolvedTrace resolve(ResolvedTrace t) +}; +``` + +### SnippetFactory + +The SnippetFactory is a simple helper class to automatically load and cache +source files in order to extract code snippets. + +```c++ +class SnippetFactory { public: + // A snippet is a list of line numbers and line contents. + typedef std::vector > lines_t; + + // Return a snippet starting at line_start with up to context_size lines. + lines_t get_snippet(const std::string& filename, + size_t line_start, size_t context_size) + + // Return a combined snippet from two different locations and combine them. + // context_size / 2 lines will be extracted from each location. + lines_t get_combined_snippet( + const std::string& filename_a, size_t line_a, + const std::string& filename_b, size_t line_b, + size_t context_size) + + // Tries to return a unified snippet if the two locations from the same + // file are close enough to fit inside one context_size, else returns + // the equivalent of get_combined_snippet(). + lines_t get_coalesced_snippet(const std::string& filename, + size_t line_a, size_t line_b, size_t context_size) +``` + +### Printer + +A simpler way to pretty print a stack trace to the terminal. It will +automatically resolve the traces for you: + +```c++ +using namespace backward; +StackTrace st; st.load_here(32); +Printer p; +p.object = true; +p.color = false; +p.address = true; +p.print(st, stderr); +``` + +You can set a few options: + +```c++ +class Printer { public: + // Print a little snippet of code if possible. + bool snippet = true; + + // Colorize the trace (only set a color when printing on a terminal) + bool color = true; + + // Add the addresses of every source location to the trace. + bool address = false; + + // Even if there is a source location, prints the object the trace comes + // from as well. + bool object = false; + + // Resolve and print a stack trace. It takes a C FILE* object, only because + // it is possible to access the underalying OS-level file descriptor, which + // is then used to determine if the output is a terminal to print in color. + template + FILE* print(StackTrace& st, FILE* os = stderr) +``` + + +### SignalHandling + +A simple helper class that registers for you the most common signals and other +callbacks to segfault, hardware exception, un-handled exception etc. + +`backward.cpp` simply uses it like that: + +```c++ +backward::SignalHandling sh; +``` + +Creating the object registers all the different signals and hooks. Destroying +this object doesn't do anything. It exposes only one method: + +```c++ +bool loaded() const // true if loaded with success +``` + +### Trace object + +To keep the memory footprint of a loaded `StackTrace` on the low-side, there a +hierarchy of trace object, from a minimal `Trace `to a `ResolvedTrace`. + +#### Simple trace + +```c++ +struct Trace { + void* addr; // address of the trace + size_t idx; // its index (0 == most recent) +}; +``` + +#### Resolved trace + +A `ResolvedTrace` should contains a maximum of details about the location of +the trace in the source code. Note that not all fields might be set. + +```c++ +struct ResolvedTrace: public Trace { + + struct SourceLoc { + std::string function; + std::string filename; + size_t line; + size_t col; + }; + + // In which binary object this trace is located. + std::string object_filename; + + // The function in the object that contains the trace. This is not the same + // as source.function which can be an function inlined in object_function. + std::string object_function; + + // The source location of this trace. It is possible for filename to be + // empty and for line/col to be invalid (value 0) if this information + // couldn't be deduced, for example if there is no debug information in the + // binary object. + SourceLoc source; + + // An optional list of "inliners". All of these sources locations where + // inlined in the source location of the trace (the attribute right above). + // This is especially useful when you compile with optimizations turned on. + typedef std::vector source_locs_t; + source_locs_t inliners; +}; +``` + +## Contact and copyright + +François-Xavier Bourlet + +Copyright 2013 Google Inc. All Rights Reserved. +MIT License. + +### Disclaimer + +Although this project is owned by Google Inc. this is not a Google supported or +affiliated project. diff --git a/external/backtrace-cpp/backward.cpp b/external/backtrace-cpp/backward.cpp new file mode 100644 index 0000000..4c68284 --- /dev/null +++ b/external/backtrace-cpp/backward.cpp @@ -0,0 +1,32 @@ +// Pick your poison. +// +// On GNU/Linux, you have few choices to get the most out of your stack trace. +// +// By default you get: +// - object filename +// - function name +// +// In order to add: +// - source filename +// - line and column numbers +// - source code snippet (assuming the file is accessible) + +// Install one of the following library then uncomment one of the macro (or +// better, add the detection of the lib and the macro definition in your build +// system) + +// - apt-get install libdw-dev ... +// - g++/clang++ -ldw ... +// #define BACKWARD_HAS_DW 1 + +// - apt-get install binutils-dev ... +// - g++/clang++ -lbfd ... +// #define BACKWARD_HAS_BFD 1 + +#include "backward.hpp" + +namespace backward { + +backward::SignalHandling sh; + +} // namespace backward diff --git a/external/backtrace-cpp/backward.hpp b/external/backtrace-cpp/backward.hpp new file mode 100644 index 0000000..37be193 --- /dev/null +++ b/external/backtrace-cpp/backward.hpp @@ -0,0 +1,1997 @@ +/* + * backward.hpp + * Copyright 2013 Google Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#ifndef H_6B9572DA_A64B_49E6_B234_051480991C89 +#define H_6B9572DA_A64B_49E6_B234_051480991C89 + +#ifndef __cplusplus +# error "It's not going to compile without a C++ compiler..." +#endif + +#if defined(BACKWARD_CXX11) +#elif defined(BACKWARD_CXX98) +#else +# if __cplusplus >= 201103L +# define BACKWARD_CXX11 +# define BACKWARD_ATLEAST_CXX11 +# define BACKWARD_ATLEAST_CXX98 +# else +# define BACKWARD_CXX98 +# define BACKWARD_ATLEAST_CXX98 +# endif +#endif + +// You can define one of the following (or leave it to the auto-detection): +// +// #define BACKWARD_SYSTEM_LINUX +// - specialization for linux +// +// #define BACKWARD_SYSTEM_UNKNOWN +// - placebo implementation, does nothing. +// +#if defined(BACKWARD_SYSTEM_LINUX) +#elif defined(BACKWARD_SYSTEM_UNKNOWN) +#else +# if defined(__linux) +# define BACKWARD_SYSTEM_LINUX +# else +# define BACKWARD_SYSTEM_UNKNOWN +# endif +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(BACKWARD_SYSTEM_LINUX) + +// On linux, backtrace can back-trace or "walk" the stack using the following +// libraries: +// +// #define BACKWARD_HAS_UNWIND 1 +// - unwind comes from libgcc, but I saw an equivalent inside clang itself. +// - with unwind, the stacktrace is as accurate as it can possibly be, since +// this is used by the C++ runtine in gcc/clang for stack unwinding on +// exception. +// - normally libgcc is already linked to your program by default. +// +// #define BACKWARD_HAS_BACKTRACE == 1 +// - backtrace seems to be a little bit more portable than libunwind, but on +// linux, it uses unwind anyway, but abstract away a tiny information that is +// sadly really important in order to get perfectly accurate stack traces. +// - backtrace is part of the (e)glib library. +// +// The default is: +// #define BACKWARD_HAS_UNWIND == 1 +// +// Note that only one of the define should be set to 1 at a time. +// +# if BACKWARD_HAS_UNWIND == 1 +# elif BACKWARD_HAS_BACKTRACE == 1 +# else +# undef BACKWARD_HAS_UNWIND +# define BACKWARD_HAS_UNWIND 1 +# undef BACKWARD_HAS_BACKTRACE +# define BACKWARD_HAS_BACKTRACE 0 +# endif + +// On linux, backward can extract detailed information about a stack trace +// using one of the following libraries: +// +// #define BACKWARD_HAS_DW 1 +// - libdw gives you the most juicy details out of your stack traces: +// - object filename +// - function name +// - source filename +// - line and column numbers +// - source code snippet (assuming the file is accessible) +// - variables name and values (if not optimized out) +// - You need to link with the lib "dw": +// - apt-get install libdw-dev +// - g++/clang++ -ldw ... +// +// #define BACKWARD_HAS_BFD 1 +// - With libbfd, you get a fair amount of details: +// - object filename +// - function name +// - source filename +// - line numbers +// - source code snippet (assuming the file is accessible) +// - You need to link with the lib "bfd": +// - apt-get install binutils-dev +// - g++/clang++ -lbfd ... +// +// #define BACKWARD_HAS_BACKTRACE_SYMBOL 1 +// - backtrace provides minimal details for a stack trace: +// - object filename +// - function name +// - backtrace is part of the (e)glib library. +// +// The default is: +// #define BACKWARD_HAS_BACKTRACE_SYMBOL == 1 +// +// Note that only one of the define should be set to 1 at a time. +// +# if BACKWARD_HAS_DW == 1 +# elif BACKWARD_HAS_BFD == 1 +# elif BACKWARD_HAS_BACKTRACE_SYMBOL == 1 +# else +# undef BACKWARD_HAS_DW +# define BACKWARD_HAS_DW 0 +# undef BACKWARD_HAS_BFD +# define BACKWARD_HAS_BFD 0 +# undef BACKWARD_HAS_BACKTRACE_SYMBOL +# define BACKWARD_HAS_BACKTRACE_SYMBOL 1 +# endif + + +# if BACKWARD_HAS_UNWIND == 1 + +# include +// while gcc's unwind.h defines something like that: +// extern _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *); +// extern _Unwind_Ptr _Unwind_GetIPInfo (struct _Unwind_Context *, int *); +// +// clang's unwind.h defines something like this: +// uintptr_t _Unwind_GetIP(struct _Unwind_Context* __context); +// +// Even if the _Unwind_GetIPInfo can be linked to, it is not declared, worse we +// cannot just redeclare it because clang's unwind.h doesn't define _Unwind_Ptr +// anyway. +// +// Luckily we can play on the fact that the guard macros have a different name: +#ifdef __CLANG_UNWIND_H +// In fact, this function still comes from libgcc (on my different linux boxes, +// clang links against libgcc). +# include +extern "C" uintptr_t _Unwind_GetIPInfo(_Unwind_Context*, int*); +#endif + +# endif + +# include +# include +# include +# include +# include +# include +# include + +# if BACKWARD_HAS_BFD == 1 +// NOTE: defining PACKAGE{,_VERSION} is required before including +// bfd.h on some platforms, see also: +// https://sourceware.org/bugzilla/show_bug.cgi?id=14243 +# ifndef PACKAGE +# define PACKAGE +# endif +# ifndef PACKAGE_VERSION +# define PACKAGE_VERSION +# endif +# include +# ifndef _GNU_SOURCE +# define _GNU_SOURCE +# include +# undef _GNU_SOURCE +# else +# include +# endif +# endif + +# if BACKWARD_HAS_DW == 1 +# include +# include +# include +# endif + +# if (BACKWARD_HAS_BACKTRACE == 1) || (BACKWARD_HAS_BACKTRACE_SYMBOL == 1) + // then we shall rely on backtrace +# include +# endif + +#endif // defined(BACKWARD_SYSTEM_LINUX) + +#ifdef BACKWARD_ATLEAST_CXX11 +# include +# include // for std::swap + namespace backward { + namespace details { + template + struct hashtable { + typedef std::unordered_map type; + }; + using std::move; + } // namespace details + } // namespace backward +#else // NOT BACKWARD_ATLEAST_CXX11 +# include + namespace backward { + namespace details { + template + struct hashtable { + typedef std::map type; + }; + template + const T& move(const T& v) { return v; } + template + T& move(T& v) { return v; } + } // namespace details + } // namespace backward +#endif // BACKWARD_ATLEAST_CXX11 + +namespace backward { + +namespace system_tag { + struct linux_tag; // seems that I cannot call that "linux" because the name + // is already defined... so I am adding _tag everywhere. + struct unknown_tag; + +#if defined(BACKWARD_SYSTEM_LINUX) + typedef linux_tag current_tag; +#elif defined(BACKWARD_SYSTEM_UNKNOWN) + typedef unknown_tag current_tag; +#else +# error "May I please get my system defines?" +#endif +} // namespace system_tag + + +namespace trace_resolver_tag { +#ifdef BACKWARD_SYSTEM_LINUX + struct libdw; + struct libbfd; + struct backtrace_symbol; + +# if BACKWARD_HAS_DW == 1 + typedef libdw current; +# elif BACKWARD_HAS_BFD == 1 + typedef libbfd current; +# elif BACKWARD_HAS_BACKTRACE_SYMBOL == 1 + typedef backtrace_symbol current; +# else +# error "You shall not pass, until you know what you want." +# endif +#endif // BACKWARD_SYSTEM_LINUX +} // namespace trace_resolver_tag + + +namespace details { + +template + struct rm_ptr { typedef T type; }; + +template + struct rm_ptr { typedef T type; }; + +template + struct rm_ptr { typedef const T type; }; + +template +struct deleter { + template + void operator()(U& ptr) const { + (*F)(ptr); + } +}; + +template +struct default_delete { + void operator()(T& ptr) const { + delete ptr; + } +}; + +template > +class handle { + struct dummy; + T _val; + bool _empty; + +#ifdef BACKWARD_ATLEAST_CXX11 + handle(const handle&) = delete; + handle& operator=(const handle&) = delete; +#endif + +public: + ~handle() { + if (!_empty) { + Deleter()(_val); + } + } + + explicit handle(): _val(), _empty(true) {} + explicit handle(T val): _val(val), _empty(false) {} + +#ifdef BACKWARD_ATLEAST_CXX11 + handle(handle&& from): _empty(true) { + swap(from); + } + handle& operator=(handle&& from) { + swap(from); return *this; + } +#else + explicit handle(const handle& from): _empty(true) { + // some sort of poor man's move semantic. + swap(const_cast(from)); + } + handle& operator=(const handle& from) { + // some sort of poor man's move semantic. + swap(const_cast(from)); return *this; + } +#endif + + void reset(T new_val) { + handle tmp(new_val); + swap(tmp); + } + operator const dummy*() const { + if (_empty) { + return 0; + } + return reinterpret_cast(_val); + } + T get() { + return _val; + } + T release() { + _empty = true; + return _val; + } + void swap(handle& b) { + using std::swap; + swap(b._val, _val); // can throw, we are safe here. + swap(b._empty, _empty); // should not throw: if you cannot swap two + // bools without throwing... It's a lost cause anyway! + } + + T operator->() { return _val; } + const T operator->() const { return _val; } + + typedef typename rm_ptr::type& ref_t; + typedef const typename rm_ptr::type& const_ref_t; + ref_t operator*() { return *_val; } + const_ref_t operator*() const { return *_val; } + ref_t operator[](size_t idx) { return _val[idx]; } + + // Watch out, we've got a badass over here + T* operator&() { + _empty = false; + return &_val; + } +}; + +// Default demangler implementation (do nothing). +template +struct demangler_impl { + static std::string demangle(const char* funcname) { + return funcname; + } +}; + +#ifdef BACKWARD_SYSTEM_LINUX + +template <> +struct demangler_impl { + demangler_impl(): _demangle_buffer_length(0) {} + + std::string demangle(const char* funcname) { + using namespace details; + _demangle_buffer.reset( + abi::__cxa_demangle(funcname, _demangle_buffer.release(), + &_demangle_buffer_length, 0) + ); + if (_demangle_buffer) { + return _demangle_buffer.get(); + } + return funcname; + } + +private: + details::handle _demangle_buffer; + size_t _demangle_buffer_length; +}; + +#endif // BACKWARD_SYSTEM_LINUX + +struct demangler: + public demangler_impl {}; + +} // namespace details + +/*************** A TRACE ***************/ + +struct Trace { + void* addr; + unsigned idx; + + Trace(): + addr(0), idx(0) {} + + explicit Trace(void* addr, size_t idx): + addr(addr), idx(idx) {} +}; + +struct ResolvedTrace: public Trace { + + struct SourceLoc { + std::string function; + std::string filename; + unsigned line; + unsigned col; + + SourceLoc(): line(0), col(0) {} + + bool operator==(const SourceLoc& b) const { + return function == b.function + && filename == b.filename + && line == b.line + && col == b.col; + } + + bool operator!=(const SourceLoc& b) const { + return !(*this == b); + } + }; + + // In which binary object this trace is located. + std::string object_filename; + + // The function in the object that contain the trace. This is not the same + // as source.function which can be an function inlined in object_function. + std::string object_function; + + // The source location of this trace. It is possible for filename to be + // empty and for line/col to be invalid (value 0) if this information + // couldn't be deduced, for example if there is no debug information in the + // binary object. + SourceLoc source; + + // An optionals list of "inliners". All the successive sources location + // from where the source location of the trace (the attribute right above) + // is inlined. It is especially useful when you compiled with optimization. + typedef std::vector source_locs_t; + source_locs_t inliners; + + ResolvedTrace(): + Trace() {} + ResolvedTrace(const Trace& mini_trace): + Trace(mini_trace) {} +}; + +/*************** STACK TRACE ***************/ + +// default implemention. +template +class StackTraceImpl { +public: + size_t size() const { return 0; } + Trace operator[](size_t) { return Trace(); } + size_t load_here(size_t=0) { return 0; } + size_t load_from(void*, size_t=0) { return 0; } + unsigned thread_id() const { return 0; } + void skip_n_firsts(size_t) { } +}; + +#ifdef BACKWARD_SYSTEM_LINUX + +class StackTraceLinuxImplBase { +public: + StackTraceLinuxImplBase(): _thread_id(0), _skip(0) {} + + unsigned thread_id() const { + return _thread_id; + } + + void skip_n_firsts(size_t n) { _skip = n; } + +protected: + void load_thread_info() { + _thread_id = syscall(SYS_gettid); + if (_thread_id == (size_t) getpid()) { + // If the thread is the main one, let's hide that. + // I like to keep little secret sometimes. + _thread_id = 0; + } + } + + size_t skip_n_firsts() const { return _skip; } + +private: + size_t _thread_id; + size_t _skip; +}; + +class StackTraceLinuxImplHolder: public StackTraceLinuxImplBase { +public: + size_t size() const { + return _stacktrace.size() ? _stacktrace.size() - skip_n_firsts() : 0; + } + Trace operator[](size_t idx) { + if (idx >= size()) { + return Trace(); + } + return Trace(_stacktrace[idx + skip_n_firsts()], idx); + } + void** begin() { + if (size()) { + return &_stacktrace[skip_n_firsts()]; + } + return 0; + } + +protected: + std::vector _stacktrace; +}; + + +#if BACKWARD_HAS_UNWIND == 1 + +namespace details { + +template +class Unwinder { +public: + size_t operator()(F& f, size_t depth) { + _f = &f; + _index = -1; + _depth = depth; + _Unwind_Backtrace(&this->backtrace_trampoline, this); + return _index; + } + +private: + F* _f; + ssize_t _index; + size_t _depth; + + static _Unwind_Reason_Code backtrace_trampoline( + _Unwind_Context* ctx, void *self) { + return ((Unwinder*)self)->backtrace(ctx); + } + + _Unwind_Reason_Code backtrace(_Unwind_Context* ctx) { + if (_index >= 0 && static_cast(_index) >= _depth) + return _URC_END_OF_STACK; + + int ip_before_instruction = 0; + uintptr_t ip = _Unwind_GetIPInfo(ctx, &ip_before_instruction); + + if (!ip_before_instruction) { + ip -= 1; + } + + if (_index >= 0) { // ignore first frame. + (*_f)(_index, (void*)ip); + } + _index += 1; + return _URC_NO_REASON; + } +}; + +template +size_t unwind(F f, size_t depth) { + Unwinder unwinder; + return unwinder(f, depth); +} + +} // namespace details + + +template <> +class StackTraceImpl: public StackTraceLinuxImplHolder { +public: + __attribute__ ((noinline)) // TODO use some macro + size_t load_here(size_t depth=32) { + load_thread_info(); + if (depth == 0) { + return 0; + } + _stacktrace.resize(depth); + size_t trace_cnt = details::unwind(callback(*this), depth); + _stacktrace.resize(trace_cnt); + skip_n_firsts(0); + return size(); + } + size_t load_from(void* addr, size_t depth=32) { + load_here(depth + 8); + + for (size_t i = 0; i < _stacktrace.size(); ++i) { + if (_stacktrace[i] == addr) { + skip_n_firsts(i); + break; + } + } + + _stacktrace.resize(std::min(_stacktrace.size(), + skip_n_firsts() + depth)); + return size(); + } + +private: + struct callback { + StackTraceImpl& self; + callback(StackTraceImpl& self): self(self) {} + + void operator()(size_t idx, void* addr) { + self._stacktrace[idx] = addr; + } + }; +}; + + +#else // BACKWARD_HAS_UNWIND == 0 + +template <> +class StackTraceImpl: public StackTraceLinuxImplHolder { +public: + __attribute__ ((noinline)) // TODO use some macro + size_t load_here(size_t depth=32) { + load_thread_info(); + if (depth == 0) { + return 0; + } + _stacktrace.resize(depth + 1); + size_t trace_cnt = backtrace(&_stacktrace[0], _stacktrace.size()); + _stacktrace.resize(trace_cnt); + skip_n_firsts(1); + return size(); + } + + size_t load_from(void* addr, size_t depth=32) { + load_here(depth + 8); + + for (size_t i = 0; i < _stacktrace.size(); ++i) { + if (_stacktrace[i] == addr) { + skip_n_firsts(i); + _stacktrace[i] = (void*)( (uintptr_t)_stacktrace[i] + 1); + break; + } + } + + _stacktrace.resize(std::min(_stacktrace.size(), + skip_n_firsts() + depth)); + return size(); + } +}; + +#endif // BACKWARD_HAS_UNWIND +#endif // BACKWARD_SYSTEM_LINUX + +class StackTrace: + public StackTraceImpl {}; + +/*************** TRACE RESOLVER ***************/ + +template +class TraceResolverImpl; + +#ifdef BACKWARD_SYSTEM_UNKNOWN + +template <> +class TraceResolverImpl { +public: + template + void load_stacktrace(ST&) {} + ResolvedTrace resolve(ResolvedTrace t) { + return t; + } +}; + +#endif + +#ifdef BACKWARD_SYSTEM_LINUX + +class TraceResolverLinuxImplBase { +protected: + std::string demangle(const char* funcname) { + return _demangler.demangle(funcname); + } + +private: + details::demangler _demangler; +}; + +template +class TraceResolverLinuxImpl; + +#if BACKWARD_HAS_BACKTRACE_SYMBOL == 1 + +template <> +class TraceResolverLinuxImpl: + public TraceResolverLinuxImplBase { +public: + template + void load_stacktrace(ST& st) { + using namespace details; + if (st.size() == 0) { + return; + } + _symbols.reset( + backtrace_symbols(st.begin(), st.size()) + ); + } + + ResolvedTrace resolve(ResolvedTrace trace) { + char* filename = _symbols[trace.idx]; + char* funcname = filename; + while (*funcname && *funcname != '(') { + funcname += 1; + } + trace.object_filename.assign(filename, funcname++); + char* funcname_end = funcname; + while (*funcname_end && *funcname_end != ')' && *funcname_end != '+') { + funcname_end += 1; + } + *funcname_end = '\0'; + trace.object_function = this->demangle(funcname); + trace.source.function = trace.object_function; // we cannot do better. + return trace; + } + +private: + details::handle _symbols; +}; + +#endif // BACKWARD_HAS_BACKTRACE_SYMBOL == 1 + +#if BACKWARD_HAS_BFD == 1 + +template <> +class TraceResolverLinuxImpl: + public TraceResolverLinuxImplBase { +public: + TraceResolverLinuxImpl(): _bfd_loaded(false) {} + + template + void load_stacktrace(ST&) {} + + ResolvedTrace resolve(ResolvedTrace trace) { + Dl_info symbol_info; + + // trace.addr is a virtual address in memory pointing to some code. + // Let's try to find from which loaded object it comes from. + // The loaded object can be yourself btw. + if (!dladdr(trace.addr, &symbol_info)) { + return trace; // dat broken trace... + } + + // Now we get in symbol_info: + // .dli_fname: + // pathname of the shared object that contains the address. + // .dli_fbase: + // where the object is loaded in memory. + // .dli_sname: + // the name of the nearest symbol to trace.addr, we expect a + // function name. + // .dli_saddr: + // the exact address corresponding to .dli_sname. + + if (symbol_info.dli_sname) { + trace.object_function = demangle(symbol_info.dli_sname); + } + + if (!symbol_info.dli_fname) { + return trace; + } + + trace.object_filename = symbol_info.dli_fname; + bfd_fileobject& fobj = load_object_with_bfd(symbol_info.dli_fname); + if (!fobj.handle) { + return trace; // sad, we couldn't load the object :( + } + + + find_sym_result* details_selected; // to be filled. + + // trace.addr is the next instruction to be executed after returning + // from the nested stack frame. In C++ this usually relate to the next + // statement right after the function call that leaded to a new stack + // frame. This is not usually what you want to see when printing out a + // stacktrace... + find_sym_result details_call_site = find_symbol_details(fobj, + trace.addr, symbol_info.dli_fbase); + details_selected = &details_call_site; + +#if BACKWARD_HAS_UNWIND == 0 + // ...this is why we also try to resolve the symbol that is right + // before the return address. If we are lucky enough, we will get the + // line of the function that was called. But if the code is optimized, + // we might get something absolutely not related since the compiler + // can reschedule the return address with inline functions and + // tail-call optimisation (among other things that I don't even know + // or cannot even dream about with my tiny limited brain). + find_sym_result details_adjusted_call_site = find_symbol_details(fobj, + (void*) (uintptr_t(trace.addr) - 1), + symbol_info.dli_fbase); + + // In debug mode, we should always get the right thing(TM). + if (details_call_site.found && details_adjusted_call_site.found) { + // Ok, we assume that details_adjusted_call_site is a better estimation. + details_selected = &details_adjusted_call_site; + trace.addr = (void*) (uintptr_t(trace.addr) - 1); + } + + if (details_selected == &details_call_site && details_call_site.found) { + // we have to re-resolve the symbol in order to reset some + // internal state in BFD... so we can call backtrace_inliners + // thereafter... + details_call_site = find_symbol_details(fobj, trace.addr, + symbol_info.dli_fbase); + } +#endif // BACKWARD_HAS_UNWIND + + if (details_selected->found) { + if (details_selected->filename) { + trace.source.filename = details_selected->filename; + } + trace.source.line = details_selected->line; + + if (details_selected->funcname) { + // this time we get the name of the function where the code is + // located, instead of the function were the address is + // located. In short, if the code was inlined, we get the + // function correspoding to the code. Else we already got in + // trace.function. + trace.source.function = demangle(details_selected->funcname); + + if (!symbol_info.dli_sname) { + // for the case dladdr failed to find the symbol name of + // the function, we might as well try to put something + // here. + trace.object_function = trace.source.function; + } + } + + // Maybe the source of the trace got inlined inside the function + // (trace.source.function). Let's see if we can get all the inlined + // calls along the way up to the initial call site. + trace.inliners = backtrace_inliners(fobj, *details_selected); + +#if 0 + if (trace.inliners.size() == 0) { + // Maybe the trace was not inlined... or maybe it was and we + // are lacking the debug information. Let's try to make the + // world better and see if we can get the line number of the + // function (trace.source.function) now. + // + // We will get the location of where the function start (to be + // exact: the first instruction that really start the + // function), not where the name of the function is defined. + // This can be quite far away from the name of the function + // btw. + // + // If the source of the function is the same as the source of + // the trace, we cannot say if the trace was really inlined or + // not. However, if the filename of the source is different + // between the function and the trace... we can declare it as + // an inliner. This is not 100% accurate, but better than + // nothing. + + if (symbol_info.dli_saddr) { + find_sym_result details = find_symbol_details(fobj, + symbol_info.dli_saddr, + symbol_info.dli_fbase); + + if (details.found) { + ResolvedTrace::SourceLoc diy_inliner; + diy_inliner.line = details.line; + if (details.filename) { + diy_inliner.filename = details.filename; + } + if (details.funcname) { + diy_inliner.function = demangle(details.funcname); + } else { + diy_inliner.function = trace.source.function; + } + if (diy_inliner != trace.source) { + trace.inliners.push_back(diy_inliner); + } + } + } + } +#endif + } + + return trace; + } + +private: + bool _bfd_loaded; + + typedef details::handle + > bfd_handle_t; + + typedef details::handle bfd_symtab_t; + + + struct bfd_fileobject { + bfd_handle_t handle; + bfd_vma base_addr; + bfd_symtab_t symtab; + bfd_symtab_t dynamic_symtab; + }; + + typedef details::hashtable::type + fobj_bfd_map_t; + fobj_bfd_map_t _fobj_bfd_map; + + bfd_fileobject& load_object_with_bfd(const std::string& filename_object) { + using namespace details; + + if (!_bfd_loaded) { + using namespace details; + bfd_init(); + _bfd_loaded = true; + } + + fobj_bfd_map_t::iterator it = + _fobj_bfd_map.find(filename_object); + if (it != _fobj_bfd_map.end()) { + return it->second; + } + + // this new object is empty for now. + bfd_fileobject& r = _fobj_bfd_map[filename_object]; + + // we do the work temporary in this one; + bfd_handle_t bfd_handle; + + int fd = open(filename_object.c_str(), O_RDONLY); + bfd_handle.reset( + bfd_fdopenr(filename_object.c_str(), "default", fd) + ); + if (!bfd_handle) { + close(fd); + return r; + } + + if (!bfd_check_format(bfd_handle.get(), bfd_object)) { + return r; // not an object? You lose. + } + + if ((bfd_get_file_flags(bfd_handle.get()) & HAS_SYMS) == 0) { + return r; // that's what happen when you forget to compile in debug. + } + + ssize_t symtab_storage_size = + bfd_get_symtab_upper_bound(bfd_handle.get()); + + ssize_t dyn_symtab_storage_size = + bfd_get_dynamic_symtab_upper_bound(bfd_handle.get()); + + if (symtab_storage_size <= 0 && dyn_symtab_storage_size <= 0) { + return r; // weird, is the file is corrupted? + } + + bfd_symtab_t symtab, dynamic_symtab; + ssize_t symcount = 0, dyn_symcount = 0; + + if (symtab_storage_size > 0) { + symtab.reset( + (bfd_symbol**) malloc(symtab_storage_size) + ); + symcount = bfd_canonicalize_symtab( + bfd_handle.get(), symtab.get() + ); + } + + if (dyn_symtab_storage_size > 0) { + dynamic_symtab.reset( + (bfd_symbol**) malloc(dyn_symtab_storage_size) + ); + dyn_symcount = bfd_canonicalize_dynamic_symtab( + bfd_handle.get(), dynamic_symtab.get() + ); + } + + + if (symcount <= 0 && dyn_symcount <= 0) { + return r; // damned, that's a stripped file that you got there! + } + + r.handle = move(bfd_handle); + r.symtab = move(symtab); + r.dynamic_symtab = move(dynamic_symtab); + return r; + } + + struct find_sym_result { + bool found; + const char* filename; + const char* funcname; + unsigned int line; + }; + + struct find_sym_context { + TraceResolverLinuxImpl* self; + bfd_fileobject* fobj; + void* addr; + void* base_addr; + find_sym_result result; + }; + + find_sym_result find_symbol_details(bfd_fileobject& fobj, void* addr, + void* base_addr) { + find_sym_context context; + context.self = this; + context.fobj = &fobj; + context.addr = addr; + context.base_addr = base_addr; + context.result.found = false; + bfd_map_over_sections(fobj.handle.get(), &find_in_section_trampoline, + (void*)&context); + return context.result; + } + + static void find_in_section_trampoline(bfd*, asection* section, + void* data) { + find_sym_context* context = static_cast(data); + context->self->find_in_section( + reinterpret_cast(context->addr), + reinterpret_cast(context->base_addr), + *context->fobj, + section, context->result + ); + } + + void find_in_section(bfd_vma addr, bfd_vma base_addr, + bfd_fileobject& fobj, asection* section, find_sym_result& result) + { + if (result.found) return; + + if ((bfd_get_section_flags(fobj.handle.get(), section) + & SEC_ALLOC) == 0) + return; // a debug section is never loaded automatically. + + bfd_vma sec_addr = bfd_get_section_vma(fobj.handle.get(), section); + bfd_size_type size = bfd_get_section_size(section); + + // are we in the boundaries of the section? + if (addr < sec_addr || addr >= sec_addr + size) { + addr -= base_addr; // oups, a relocated object, lets try again... + if (addr < sec_addr || addr >= sec_addr + size) { + return; + } + } + + if (!result.found && fobj.symtab) { + result.found = bfd_find_nearest_line(fobj.handle.get(), section, + fobj.symtab.get(), addr - sec_addr, &result.filename, + &result.funcname, &result.line); + } + + if (!result.found && fobj.dynamic_symtab) { + result.found = bfd_find_nearest_line(fobj.handle.get(), section, + fobj.dynamic_symtab.get(), addr - sec_addr, + &result.filename, &result.funcname, &result.line); + } + + } + + ResolvedTrace::source_locs_t backtrace_inliners(bfd_fileobject& fobj, + find_sym_result previous_result) { + // This function can be called ONLY after a SUCCESSFUL call to + // find_symbol_details. The state is global to the bfd_handle. + ResolvedTrace::source_locs_t results; + while (previous_result.found) { + find_sym_result result; + result.found = bfd_find_inliner_info(fobj.handle.get(), + &result.filename, &result.funcname, &result.line); + + if (result.found) /* and not ( + cstrings_eq(previous_result.filename, result.filename) + and cstrings_eq(previous_result.funcname, result.funcname) + and result.line == previous_result.line + )) */ { + ResolvedTrace::SourceLoc src_loc; + src_loc.line = result.line; + if (result.filename) { + src_loc.filename = result.filename; + } + if (result.funcname) { + src_loc.function = demangle(result.funcname); + } + results.push_back(src_loc); + } + previous_result = result; + } + return results; + } + + bool cstrings_eq(const char* a, const char* b) { + if (!a || !b) { + return false; + } + return strcmp(a, b) == 0; + } + +}; +#endif // BACKWARD_HAS_BFD == 1 + +#if BACKWARD_HAS_DW == 1 + +template <> +class TraceResolverLinuxImpl: + public TraceResolverLinuxImplBase { +public: + TraceResolverLinuxImpl(): _dwfl_handle_initialized(false) {} + + template + void load_stacktrace(ST&) {} + + ResolvedTrace resolve(ResolvedTrace trace) { + using namespace details; + + Dwarf_Addr trace_addr = (Dwarf_Addr) trace.addr; + + if (!_dwfl_handle_initialized) { + // initialize dwfl... + _dwfl_cb.reset(new Dwfl_Callbacks); + _dwfl_cb->find_elf = &dwfl_linux_proc_find_elf; + _dwfl_cb->find_debuginfo = &dwfl_standard_find_debuginfo; + _dwfl_cb->debuginfo_path = 0; + + _dwfl_handle.reset(dwfl_begin(_dwfl_cb.get())); + _dwfl_handle_initialized = true; + + if (!_dwfl_handle) { + return trace; + } + + // ...from the current process. + dwfl_report_begin(_dwfl_handle.get()); + int r = dwfl_linux_proc_report (_dwfl_handle.get(), getpid()); + dwfl_report_end(_dwfl_handle.get(), NULL, NULL); + if (r < 0) { + return trace; + } + } + + if (!_dwfl_handle) { + return trace; + } + + // find the module (binary object) that contains the trace's address. + // This is not using any debug information, but the addresses ranges of + // all the currently loaded binary object. + Dwfl_Module* mod = dwfl_addrmodule(_dwfl_handle.get(), trace_addr); + if (mod) { + // now that we found it, lets get the name of it, this will be the + // full path to the running binary or one of the loaded library. + const char* module_name = dwfl_module_info (mod, + 0, 0, 0, 0, 0, 0, 0); + if (module_name) { + trace.object_filename = module_name; + } + // We also look after the name of the symbol, equal or before this + // address. This is found by walking the symtab. We should get the + // symbol corresponding to the function (mangled) containing the + // address. If the code corresponding to the address was inlined, + // this is the name of the out-most inliner function. + const char* sym_name = dwfl_module_addrname(mod, trace_addr); + if (sym_name) { + trace.object_function = demangle(sym_name); + } + } + + // now let's get serious, and find out the source location (file and + // line number) of the address. + + // This function will look in .debug_aranges for the address and map it + // to the location of the compilation unit DIE in .debug_info and + // return it. + Dwarf_Addr mod_bias = 0; + Dwarf_Die* cudie = dwfl_module_addrdie(mod, trace_addr, &mod_bias); + +#if 1 + if (!cudie) { + // Sadly clang does not generate the section .debug_aranges, thus + // dwfl_module_addrdie will fail early. Clang doesn't either set + // the lowpc/highpc/range info for every compilation unit. + // + // So in order to save the world: + // for every compilation unit, we will iterate over every single + // DIEs. Normally functions should have a lowpc/highpc/range, which + // we will use to infer the compilation unit. + + // note that this is probably badly inefficient. + while ((cudie = dwfl_module_nextcu(mod, cudie, &mod_bias))) { + Dwarf_Die die_mem; + Dwarf_Die* fundie = find_fundie_by_pc(cudie, + trace_addr - mod_bias, &die_mem); + if (fundie) { + break; + } + } + } +#endif + +//#define BACKWARD_I_DO_NOT_RECOMMEND_TO_ENABLE_THIS_HORRIBLE_PIECE_OF_CODE +#ifdef BACKWARD_I_DO_NOT_RECOMMEND_TO_ENABLE_THIS_HORRIBLE_PIECE_OF_CODE + if (!cudie) { + // If it's still not enough, lets dive deeper in the shit, and try + // to save the world again: for every compilation unit, we will + // load the corresponding .debug_line section, and see if we can + // find our address in it. + + Dwarf_Addr cfi_bias; + Dwarf_CFI* cfi_cache = dwfl_module_eh_cfi(mod, &cfi_bias); + + Dwarf_Addr bias; + while ((cudie = dwfl_module_nextcu(mod, cudie, &bias))) { + if (dwarf_getsrc_die(cudie, trace_addr - bias)) { + + // ...but if we get a match, it might be a false positive + // because our (address - bias) might as well be valid in a + // different compilation unit. So we throw our last card on + // the table and lookup for the address into the .eh_frame + // section. + + handle frame; + dwarf_cfi_addrframe(cfi_cache, trace_addr - cfi_bias, &frame); + if (frame) { + break; + } + } + } + } +#endif + + if (!cudie) { + return trace; // this time we lost the game :/ + } + + // Now that we have a compilation unit DIE, this function will be able + // to load the corresponding section in .debug_line (if not already + // loaded) and hopefully find the source location mapped to our + // address. + Dwarf_Line* srcloc = dwarf_getsrc_die(cudie, trace_addr - mod_bias); + + if (srcloc) { + const char* srcfile = dwarf_linesrc(srcloc, 0, 0); + if (srcfile) { + trace.source.filename = srcfile; + } + int line = 0, col = 0; + dwarf_lineno(srcloc, &line); + dwarf_linecol(srcloc, &col); + trace.source.line = line; + trace.source.col = col; + } + + deep_first_search_by_pc(cudie, trace_addr - mod_bias, + inliners_search_cb(trace)); + if (trace.source.function.size() == 0) { + // fallback. + trace.source.function = trace.object_function; + } + + return trace; + } + +private: + typedef details::handle > + dwfl_handle_t; + details::handle > + _dwfl_cb; + dwfl_handle_t _dwfl_handle; + bool _dwfl_handle_initialized; + + // defined here because in C++98, template function cannot take locally + // defined types... grrr. + struct inliners_search_cb { + void operator()(Dwarf_Die* die) { + switch (dwarf_tag(die)) { + const char* name; + case DW_TAG_subprogram: + if ((name = dwarf_diename(die))) { + trace.source.function = name; + } + break; + + case DW_TAG_inlined_subroutine: + ResolvedTrace::SourceLoc sloc; + Dwarf_Attribute attr_mem; + + if ((name = dwarf_diename(die))) { + sloc.function = name; + } + if ((name = die_call_file(die))) { + sloc.filename = name; + } + + Dwarf_Word line = 0, col = 0; + dwarf_formudata(dwarf_attr(die, DW_AT_call_line, + &attr_mem), &line); + dwarf_formudata(dwarf_attr(die, DW_AT_call_column, + &attr_mem), &col); + sloc.line = line; + sloc.col = col; + + trace.inliners.push_back(sloc); + break; + }; + } + ResolvedTrace& trace; + inliners_search_cb(ResolvedTrace& t): trace(t) {} + }; + + + static bool die_has_pc(Dwarf_Die* die, Dwarf_Addr pc) { + Dwarf_Addr low, high; + + // continuous range + if (dwarf_hasattr(die, DW_AT_low_pc) and + dwarf_hasattr(die, DW_AT_high_pc)) { + if (dwarf_lowpc(die, &low) != 0) { + return false; + } + if (dwarf_highpc(die, &high) != 0) { + Dwarf_Attribute attr_mem; + Dwarf_Attribute* attr = dwarf_attr(die, DW_AT_high_pc, &attr_mem); + Dwarf_Word value; + if (dwarf_formudata(attr, &value) != 0) { + return false; + } + high = low + value; + } + return pc >= low && pc < high; + } + + // non-continuous range. + Dwarf_Addr base; + ptrdiff_t offset = 0; + while ((offset = dwarf_ranges(die, offset, &base, &low, &high)) > 0) { + if (pc >= low && pc < high) { + return true; + } + } + return false; + } + + static Dwarf_Die* find_fundie_by_pc(Dwarf_Die* parent_die, Dwarf_Addr pc, + Dwarf_Die* result) { + if (dwarf_child(parent_die, result) != 0) { + return 0; + } + + Dwarf_Die* die = result; + do { + switch (dwarf_tag(die)) { + case DW_TAG_subprogram: + case DW_TAG_inlined_subroutine: + if (die_has_pc(die, pc)) { + return result; + } + default: + bool declaration = false; + Dwarf_Attribute attr_mem; + dwarf_formflag(dwarf_attr(die, DW_AT_declaration, + &attr_mem), &declaration); + if (!declaration) { + // let's be curious and look deeper in the tree, + // function are not necessarily at the first level, but + // might be nested inside a namespace, structure etc. + Dwarf_Die die_mem; + Dwarf_Die* indie = find_fundie_by_pc(die, pc, &die_mem); + if (indie) { + *result = die_mem; + return result; + } + } + }; + } while (dwarf_siblingof(die, result) == 0); + return 0; + } + + template + static bool deep_first_search_by_pc(Dwarf_Die* parent_die, + Dwarf_Addr pc, CB cb) { + Dwarf_Die die_mem; + if (dwarf_child(parent_die, &die_mem) != 0) { + return false; + } + + bool branch_has_pc = false; + Dwarf_Die* die = &die_mem; + do { + bool declaration = false; + Dwarf_Attribute attr_mem; + dwarf_formflag(dwarf_attr(die, DW_AT_declaration, &attr_mem), &declaration); + if (!declaration) { + // let's be curious and look deeper in the tree, function are + // not necessarily at the first level, but might be nested + // inside a namespace, structure, a function, an inlined + // function etc. + branch_has_pc = deep_first_search_by_pc(die, pc, cb); + } + if (!branch_has_pc) { + branch_has_pc = die_has_pc(die, pc); + } + if (branch_has_pc) { + cb(die); + } + } while (dwarf_siblingof(die, &die_mem) == 0); + return branch_has_pc; + } + + static const char* die_call_file(Dwarf_Die *die) { + Dwarf_Attribute attr_mem; + Dwarf_Sword file_idx = 0; + + dwarf_formsdata(dwarf_attr(die, DW_AT_call_file, &attr_mem), + &file_idx); + + if (file_idx == 0) { + return 0; + } + + Dwarf_Die die_mem; + Dwarf_Die* cudie = dwarf_diecu(die, &die_mem, 0, 0); + if (!cudie) { + return 0; + } + + Dwarf_Files* files = 0; + size_t nfiles; + dwarf_getsrcfiles(cudie, &files, &nfiles); + if (!files) { + return 0; + } + + return dwarf_filesrc(files, file_idx, 0, 0); + } + +}; +#endif // BACKWARD_HAS_DW == 1 + +template<> +class TraceResolverImpl: + public TraceResolverLinuxImpl {}; + +#endif // BACKWARD_SYSTEM_LINUX + +class TraceResolver: + public TraceResolverImpl {}; + +/*************** CODE SNIPPET ***************/ + +class SourceFile { +public: + typedef std::vector > lines_t; + + SourceFile() {} + SourceFile(const std::string& path): _file(new std::ifstream(path.c_str())) {} + bool is_open() const { return _file->is_open(); } + + lines_t& get_lines(unsigned line_start, unsigned line_count, lines_t& lines) { + using namespace std; + // This function make uses of the dumbest algo ever: + // 1) seek(0) + // 2) read lines one by one and discard until line_start + // 3) read line one by one until line_start + line_count + // + // If you are getting snippets many time from the same file, it is + // somewhat a waste of CPU, feel free to benchmark and propose a + // better solution ;) + + _file->clear(); + _file->seekg(0); + string line; + unsigned line_idx; + + for (line_idx = 1; line_idx < line_start; ++line_idx) { + std::getline(*_file, line); + if (!*_file) { + return lines; + } + } + + // think of it like a lambda in C++98 ;) + // but look, I will reuse it two times! + // What a good boy am I. + struct isspace { + bool operator()(char c) { + return std::isspace(c); + } + }; + + bool started = false; + for (; line_idx < line_start + line_count; ++line_idx) { + getline(*_file, line); + if (!*_file) { + return lines; + } + if (!started) { + if (std::find_if(line.begin(), line.end(), + not_isspace()) == line.end()) + continue; + started = true; + } + lines.push_back(make_pair(line_idx, line)); + } + + lines.erase( + std::find_if(lines.rbegin(), lines.rend(), + not_isempty()).base(), lines.end() + ); + return lines; + } + + lines_t get_lines(unsigned line_start, unsigned line_count) { + lines_t lines; + return get_lines(line_start, line_count, lines); + } + + // there is no find_if_not in C++98, lets do something crappy to + // workaround. + struct not_isspace { + bool operator()(char c) { + return !std::isspace(c); + } + }; + // and define this one here because C++98 is not happy with local defined + // struct passed to template functions, fuuuu. + struct not_isempty { + bool operator()(const lines_t::value_type& p) { + return !(std::find_if(p.second.begin(), p.second.end(), + not_isspace()) == p.second.end()); + } + }; + + void swap(SourceFile& b) { + _file.swap(b._file); + } + +#ifdef BACKWARD_ATLEAST_CXX11 + SourceFile(SourceFile&& from): _file(0) { + swap(from); + } + SourceFile& operator=(SourceFile&& from) { + swap(from); return *this; + } +#else + explicit SourceFile(const SourceFile& from) { + // some sort of poor man's move semantic. + swap(const_cast(from)); + } + SourceFile& operator=(const SourceFile& from) { + // some sort of poor man's move semantic. + swap(const_cast(from)); return *this; + } +#endif + +private: + details::handle + > _file; + +#ifdef BACKWARD_ATLEAST_CXX11 + SourceFile(const SourceFile&) = delete; + SourceFile& operator=(const SourceFile&) = delete; +#endif +}; + +class SnippetFactory { +public: + typedef SourceFile::lines_t lines_t; + + lines_t get_snippet(const std::string& filename, + unsigned line_start, unsigned context_size) { + + SourceFile& src_file = get_src_file(filename); + unsigned start = line_start - context_size / 2; + return src_file.get_lines(start, context_size); + } + + lines_t get_combined_snippet( + const std::string& filename_a, unsigned line_a, + const std::string& filename_b, unsigned line_b, + unsigned context_size) { + SourceFile& src_file_a = get_src_file(filename_a); + SourceFile& src_file_b = get_src_file(filename_b); + + lines_t lines = src_file_a.get_lines(line_a - context_size / 4, + context_size / 2); + src_file_b.get_lines(line_b - context_size / 4, context_size / 2, + lines); + return lines; + } + + lines_t get_coalesced_snippet(const std::string& filename, + unsigned line_a, unsigned line_b, unsigned context_size) { + SourceFile& src_file = get_src_file(filename); + + using std::min; using std::max; + unsigned a = min(line_a, line_b); + unsigned b = max(line_a, line_b); + + if ((b - a) < (context_size / 3)) { + return src_file.get_lines((a + b - context_size + 1) / 2, + context_size); + } + + lines_t lines = src_file.get_lines(a - context_size / 4, + context_size / 2); + src_file.get_lines(b - context_size / 4, context_size / 2, lines); + return lines; + } + + +private: + typedef details::hashtable::type src_files_t; + src_files_t _src_files; + + SourceFile& get_src_file(const std::string& filename) { + src_files_t::iterator it = _src_files.find(filename); + if (it != _src_files.end()) { + return it->second; + } + SourceFile& new_src_file = _src_files[filename]; + new_src_file = SourceFile(filename); + return new_src_file; + } +}; + +/*************** PRINTER ***************/ + +#ifdef BACKWARD_SYSTEM_LINUX + +namespace Color { + enum type { + yellow = 33, + purple = 35, + reset = 39 + }; +} // namespace Color + +class Colorize { +public: + Colorize(std::FILE* os): + _os(os), _reset(false), _istty(false) {} + + void init() { + _istty = isatty(fileno(_os)); + } + + void set_color(Color::type ccode) { + if (!_istty) return; + + // I assume that the terminal can handle basic colors. Seriously I + // don't want to deal with all the termcap shit. + fprintf(_os, "\033[%im", static_cast(ccode)); + _reset = (ccode != Color::reset); + } + + ~Colorize() { + if (_reset) { + set_color(Color::reset); + } + } + +private: + std::FILE* _os; + bool _reset; + bool _istty; +}; + +#else // ndef BACKWARD_SYSTEM_LINUX + + +namespace Color { + enum type { + yellow = 0, + purple = 0, + reset = 0 + }; +} // namespace Color + +class Colorize { +public: + Colorize(std::FILE*) {} + void init() {} + void set_color(Color::type) {} +}; + +#endif // BACKWARD_SYSTEM_LINUX + +class Printer { +public: + bool snippet; + bool color; + bool address; + bool object; + int inliner_context_size; + int trace_context_size; + + Printer(): + snippet(true), + color(true), + address(false), + object(false), + inliner_context_size(5), + trace_context_size(7) + {} + + template + FILE* print(ST& st, FILE* os = stderr) { + Colorize colorize(os); + if (color) { + colorize.init(); + } + print_header(os, st.thread_id()); + _resolver.load_stacktrace(st); + for (size_t trace_idx = st.size(); trace_idx > 0; --trace_idx) { + print_trace(os, _resolver.resolve(st[trace_idx-1]), colorize); + } + return os; + } + + template + FILE* print(IT begin, IT end, FILE* os = stderr, size_t thread_id = 0) { + Colorize colorize(os); + if (color) { + colorize.init(); + } + print_header(os, thread_id); + for (; begin != end; ++begin) { + print_trace(os, *begin, colorize); + } + return os; + } +private: + TraceResolver _resolver; + SnippetFactory _snippets; + + void print_header(FILE* os, unsigned thread_id) { + fprintf(os, "Stack trace (most recent call last)"); + if (thread_id) { + fprintf(os, " in thread %u:\n", thread_id); + } else { + fprintf(os, ":\n"); + } + } + + void print_trace(FILE* os, const ResolvedTrace& trace, + Colorize& colorize) { + fprintf(os, "#%-2u", trace.idx); + bool already_indented = true; + + if (!trace.source.filename.size() || object) { + fprintf(os, " Object \"%s\", at %p, in %s\n", + trace.object_filename.c_str(), trace.addr, + trace.object_function.c_str()); + already_indented = false; + } + + for (size_t inliner_idx = trace.inliners.size(); + inliner_idx > 0; --inliner_idx) { + if (!already_indented) { + fprintf(os, " "); + } + const ResolvedTrace::SourceLoc& inliner_loc + = trace.inliners[inliner_idx-1]; + print_source_loc(os, " | ", inliner_loc); + if (snippet) { + print_snippet(os, " | ", inliner_loc, + colorize, Color::purple, inliner_context_size); + } + already_indented = false; + } + + if (trace.source.filename.size()) { + if (!already_indented) { + fprintf(os, " "); + } + print_source_loc(os, " ", trace.source, trace.addr); + if (snippet) { + print_snippet(os, " ", trace.source, + colorize, Color::yellow, trace_context_size); + } + } + } + + void print_snippet(FILE* os, const char* indent, + const ResolvedTrace::SourceLoc& source_loc, + Colorize& colorize, Color::type color_code, + int context_size) + { + using namespace std; + typedef SnippetFactory::lines_t lines_t; + + lines_t lines = _snippets.get_snippet(source_loc.filename, + source_loc.line, context_size); + + for (lines_t::const_iterator it = lines.begin(); + it != lines.end(); ++it) { + if (it-> first == source_loc.line) { + colorize.set_color(color_code); + fprintf(os, "%s>", indent); + } else { + fprintf(os, "%s ", indent); + } + fprintf(os, "%4u: %s\n", it->first, it->second.c_str()); + if (it-> first == source_loc.line) { + colorize.set_color(Color::reset); + } + } + } + + void print_source_loc(FILE* os, const char* indent, + const ResolvedTrace::SourceLoc& source_loc, + void* addr=0) { + fprintf(os, "%sSource \"%s\", line %i, in %s", + indent, source_loc.filename.c_str(), (int)source_loc.line, + source_loc.function.c_str()); + + if (address && addr != 0) { + fprintf(os, " [%p]\n", addr); + } else { + fprintf(os, "\n"); + } + } +}; + +/*************** SIGNALS HANDLING ***************/ + +#ifdef BACKWARD_SYSTEM_LINUX + + +class SignalHandling { +public: + static std::vector make_default_signals() { + const int posix_signals[] = { + // default action: Core + SIGILL, + SIGABRT, + SIGFPE, + SIGSEGV, + SIGBUS, + // I am not sure the following signals should be enabled by + // default: + // default action: Term + SIGHUP, + SIGINT, + SIGPIPE, + SIGALRM, + SIGTERM, + SIGUSR1, + SIGUSR2, + SIGPOLL, + SIGPROF, + SIGVTALRM, + SIGIO, + SIGPWR, + // default action: Core + SIGQUIT, + SIGSYS, + SIGTRAP, + SIGXCPU, + SIGXFSZ + }; + return std::vector(posix_signals, posix_signals + sizeof posix_signals / sizeof posix_signals[0] ); + } + + SignalHandling(const std::vector& posix_signals = make_default_signals()): + _loaded(false) { + bool success = true; + + const size_t stack_size = 1024 * 1024 * 8; + _stack_content.reset((char*)malloc(stack_size)); + if (_stack_content) { + stack_t ss; + ss.ss_sp = _stack_content.get(); + ss.ss_size = stack_size; + ss.ss_flags = 0; + if (sigaltstack(&ss, 0) < 0) { + success = false; + } + } else { + success = false; + } + + for (size_t i = 0; i < posix_signals.size(); ++i) { + struct sigaction action; + memset(&action, 0, sizeof action); + action.sa_flags = (SA_SIGINFO | SA_ONSTACK | SA_NODEFER | + SA_RESETHAND); + sigfillset(&action.sa_mask); + sigdelset(&action.sa_mask, posix_signals[i]); + action.sa_sigaction = &sig_handler; + + int r = sigaction(posix_signals[i], &action, 0); + if (r < 0) success = false; + } + + _loaded = success; + } + + bool loaded() const { return _loaded; } + +private: + details::handle _stack_content; + bool _loaded; + + static void sig_handler(int, siginfo_t* info, void* _ctx) { + ucontext_t *uctx = (ucontext_t*) _ctx; + + StackTrace st; + void* error_addr = 0; +#ifdef REG_RIP // x86_64 + error_addr = reinterpret_cast(uctx->uc_mcontext.gregs[REG_RIP]); +#elif defined(REG_EIP) // x86_32 + error_addr = reinterpret_cast(uctx->uc_mcontext.gregs[REG_EIP]); +#elif defined(__arm__) + error_addr = reinterpret_cast(uctx->uc_mcontext.arm_pc); +#elif defined(__ppc__) || defined(__powerpc) || defined(__powerpc__) || defined(__POWERPC__) + error_addr = reinterpret_cast(uctx->uc_mcontext.regs->nip); +#else +# warning ":/ sorry, ain't know no nothing none not of your architecture!" +#endif + if (error_addr) { + st.load_from(error_addr, 32); + } else { + st.load_here(32); + } + + Printer printer; + printer.address = true; + printer.print(st, stderr); + +#if _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L + psiginfo(info, 0); +#endif + + // try to forward the signal. + raise(info->si_signo); + + // terminate the process immediately. + puts("watf? exit"); + _exit(EXIT_FAILURE); + } +}; + +#endif // BACKWARD_SYSTEM_LINUX + +#ifdef BACKWARD_SYSTEM_UNKNOWN + +class SignalHandling { +public: + SignalHandling(const std::vector& = std::vector()) {} + bool init() { return false; } + bool loaded() { return false; } +}; + +#endif // BACKWARD_SYSTEM_UNKNOWN + +} // namespace backward + +#endif /* H_GUARD */ diff --git a/external/backtrace-cpp/builds.sh b/external/backtrace-cpp/builds.sh new file mode 100755 index 0000000..60c39c4 --- /dev/null +++ b/external/backtrace-cpp/builds.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +COMPILERS_CXX98=`cat</dev/null + ( + cd "$builddir" + cmake -DCMAKE_BUILD_TYPE=$buildtype .. + ) +} + +function build() { + local builddir=$1 + shift + make -C "$builddir" $@ +} + +function dotest() { + local builddir=$1 + shift + make -C "$builddir" test $@ + return 0 +} + +function do_action() { + local lang=$1 + local action=$2 + shift 2 + + for compiler in $COMPILERS; do + local builddir="build_${lang}_${compiler}" + + if [[ $action == "cmake" ]]; then + buildtype=$1 + mkbuild $compiler $lang "$buildtype" "$builddir" + [[ $? != 0 ]] && exit + elif [[ $action == "make" ]]; then + build "$builddir" $@ + [[ $? != 0 ]] && exit + elif [[ $action == "test" ]]; then + dotest "$builddir" $@ + [[ $? != 0 ]] && exit + elif [[ $action == "clean" ]]; then + rm -r "$builddir" + else + echo "usage: $0 cmake [debug|release|relwithdbg]|make|test|clean" + exit 255 + fi + done +} + +COMPILERS=$COMPILERS_CXX98 +do_action c++98 $@ +COMPILERS=$COMPILERS_CXX11 +do_action c++11 $@ diff --git a/external/backtrace-cpp/conanfile.py b/external/backtrace-cpp/conanfile.py new file mode 100644 index 0000000..8dc6c0f --- /dev/null +++ b/external/backtrace-cpp/conanfile.py @@ -0,0 +1,57 @@ +from conans import ConanFile, CMake +import os + +class BackwardCpp(ConanFile): + settings = 'os', 'compiler', 'build_type', 'arch' + name = 'backward' + url = 'https:77github.com/Manu343726/backward-cpp' + license = 'MIT' + version = '0.0.0' + options = { + 'stack_walking_unwind': [True, False], + 'stack_walking_backtrace': [True, False], + 'stack_details_auto_detect': [True, False], + 'stack_details_backtrace_symbol': [True, False], + 'stack_details_dw': [True, False], + 'stack_details_bfd': [True, False], + 'shared': [True, False] + } + default_options = ( + 'stack_walking_unwind=True', + 'stack_walking_backtrace=False', + 'stack_details_auto_detect=True', + 'stack_details_backtrace_symbol=False', + 'stack_details_dw=False', + 'stack_details_bfd=False', + 'shared=False' + ) + exports = 'backward.cpp', 'backward.hpp', 'test/*', 'CMakeLists.txt', 'BackwardConfig.cmake' + generators = 'cmake' + + def cmake_option(self, option, prefix = ''): + return '-D{}{}={}'.format(prefix, option.upper(), self.options[option]) + + def build(self): + cmake = CMake(self.settings) + + options = '' + options += self.cmake_option('stack_walking_unwind') + options += self.cmake_option('stack_walking_backtrace') + options += self.cmake_option('stack_details_auto_detect') + options += self.cmake_option('stack_details_backtrace_symbol') + options += self.cmake_option('stack_details_dw') + options += self.cmake_option('stack_details_bfd') + options += self.cmake_option('shared', prefix = 'BACKWARD_') + + self.run('cmake {} {} {} -DBACKWARD_TESTS=OFF'.format(self.conanfile_directory, cmake.command_line, options)) + self.run('cmake --build . {}'.format(cmake.build_config)) + + def package(self): + self.copy('backward.hpp', os.path.join('include', 'backward')) + self.copy('*.a', dst='lib') + self.copy('*.so', dst='lib') + self.copy('*.lib', dst='lib') + self.copy('*.dll', dst='lib') + + def package_info(self): + self.cpp_info.libs = ['backward'] diff --git a/external/backtrace-cpp/doc/nice.png b/external/backtrace-cpp/doc/nice.png new file mode 100644 index 0000000..42147e5 Binary files /dev/null and b/external/backtrace-cpp/doc/nice.png differ diff --git a/external/backtrace-cpp/doc/pretty.png b/external/backtrace-cpp/doc/pretty.png new file mode 100644 index 0000000..f95d66e Binary files /dev/null and b/external/backtrace-cpp/doc/pretty.png differ diff --git a/external/backtrace-cpp/doc/rude.png b/external/backtrace-cpp/doc/rude.png new file mode 100644 index 0000000..6b27252 Binary files /dev/null and b/external/backtrace-cpp/doc/rude.png differ diff --git a/external/backtrace-cpp/test/_test_main.cpp b/external/backtrace-cpp/test/_test_main.cpp new file mode 100644 index 0000000..b1d30ef --- /dev/null +++ b/external/backtrace-cpp/test/_test_main.cpp @@ -0,0 +1,121 @@ +/* + * _test_main.cpp + * Copyright 2013 Google Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "test.hpp" +#include +#include +#include +#include +#include + +test::test_registry_t test::test_registry; +using namespace test; + +bool run_test(TestBase& test) { + printf("-- running test case: %s\n", test.name); + + fflush(stdout); + pid_t child_pid = fork(); + if (child_pid == 0) { + exit(static_cast(test.run())); + } + if (child_pid == -1) { + error(EXIT_FAILURE, 0, "unable to fork"); + } + + int child_status = 0; + waitpid(child_pid, &child_status, 0); + + test::TestStatus status; + + if (WIFEXITED(child_status)) { + int exit_status = WEXITSTATUS(child_status); + if (exit_status & ~test::STATUS_MASK) { + status = test::FAILED; + } else { + status = static_cast(exit_status); + } + } else if (WIFSIGNALED(child_status)) { + const int signum = WTERMSIG(child_status); + printf("!! signal (%d) %s\n", signum, strsignal(signum)); + switch (signum) { + case SIGABRT: + status = test::SIGNAL_ABORT; break; + case SIGSEGV: + case SIGBUS: + status = test::SIGNAL_SEGFAULT; break; + case SIGFPE: + status = test::SIGNAL_DIVZERO; break; + default: + status = test::SIGNAL_UNCAUGHT; + } + } else { + status = test::SUCCESS; + } + + if (test.expected_status == test::FAILED) { + return (status & test::FAILED); + } + + if (test.expected_status == test::SIGNAL_UNCAUGHT) { + return (status & test::SIGNAL_UNCAUGHT); + } + + return status == test.expected_status; +} + +int main(int argc, const char* const argv[]) { + + size_t success_cnt = 0; + size_t total_cnt = 0; + for (test_registry_t::iterator it = test_registry.begin(); + it != test_registry.end(); ++it) { + TestBase& test = **it; + + bool consider_test = (argc <= 1); + for (int i = 1; i < argc; ++i) { + if (strcasecmp(argv[i], test.name) == 0) { + consider_test = true; + break; + } + } + if (not consider_test) { + continue; + } + + total_cnt += 1; + if (run_test(test)) { + printf("-- test case success: %s\n", test.name); + success_cnt += 1; + } else { + printf("** test case FAILED : %s\n", test.name); + } + } + printf("-- tests passing: %lu/%lu", success_cnt, total_cnt); + if (total_cnt) { + printf(" (%lu%%)\n", success_cnt * 100 / total_cnt); + } else { + printf("\n"); + } + return (success_cnt == total_cnt) ? EXIT_SUCCESS : EXIT_FAILURE; +} diff --git a/external/backtrace-cpp/test/rectrace.cpp b/external/backtrace-cpp/test/rectrace.cpp new file mode 100644 index 0000000..bde82ba --- /dev/null +++ b/external/backtrace-cpp/test/rectrace.cpp @@ -0,0 +1,99 @@ +/* + * test/rectrace.cpp + * Copyright 2013 Google Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "backward.hpp" +#include +#include "test/test.hpp" + +using namespace backward; + +typedef StackTrace stacktrace_t; + +void end_of_our_journey(stacktrace_t& st) { + if (not st.size()) { + st.load_here(); + } +} + +int rec(stacktrace_t& st, int level) { + if (level <= 1) { + end_of_our_journey(st); + return 0; + } + return rec(st, level - 1); +} + +namespace toto { + +namespace titi { + + struct foo { + + union bar { + __attribute__((noinline)) + static int trampoline(stacktrace_t& st, int level) { + return rec(st, level); + } + }; + }; + +} // namespace titi + +} // namespace toto + +TEST (recursion) { + { // lexical scope. + stacktrace_t st; + const int input = 3; + int r = toto::titi::foo::bar::trampoline(st, input); + + std::cout << "rec(" << input << ") == " << r << std::endl; + + Printer printer; + // printer.address = true; + printer.object = true; + printer.print(st, stdout); + } +} + +int fib(StackTrace& st, int level) { + if (level == 2) { + return 1; + } + if (level <= 1) { + end_of_our_journey(st); + return 0; + } + return fib(st, level - 1) + fib(st, level - 2); +} + +TEST (fibrecursive) { + StackTrace st; + const int input = 6; + int r = fib(st, input); + + std::cout << "fib(" << input << ") == " << r << std::endl; + + Printer printer; + printer.print(st, stdout); +} diff --git a/external/backtrace-cpp/test/select_signals.cpp b/external/backtrace-cpp/test/select_signals.cpp new file mode 100644 index 0000000..4390ebc --- /dev/null +++ b/external/backtrace-cpp/test/select_signals.cpp @@ -0,0 +1,50 @@ +/* + * test/segfault.cpp + * Copyright 2013 Google Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "backward.hpp" + +#include +#include "test/test.hpp" + +using namespace backward; + +void badass_function() { + char* ptr = (char*)42; + *ptr = 42; +} + +TEST_SEGFAULT (pprint_sigsev) { + std::vector signals; + signals.push_back(SIGSEGV); + SignalHandling sh(signals); + std::cout << std::boolalpha << "sh.loaded() == " << sh.loaded() << std::endl; + badass_function(); +} + +TEST_SEGFAULT (wont_pprint) { + std::vector signals; + signals.push_back(SIGABRT); + SignalHandling sh(signals); + std::cout << std::boolalpha << "sh.loaded() == " << sh.loaded() << std::endl; + badass_function(); +} diff --git a/external/backtrace-cpp/test/stacktrace.cpp b/external/backtrace-cpp/test/stacktrace.cpp new file mode 100644 index 0000000..76cbc60 --- /dev/null +++ b/external/backtrace-cpp/test/stacktrace.cpp @@ -0,0 +1,65 @@ +/* + * test/stacktrace.cpp + * Copyright 2013 Google Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "backward.hpp" +#include +#include "test/test.hpp" + +using namespace backward; + +void collect_trace(StackTrace& st) { + st.load_here(); +} + +TEST (minitrace) { + StackTrace st; + collect_trace(st); + + Printer printer; + printer.print(st, stdout); +} + +void d(StackTrace& st) { + st.load_here(); +} + +void c(StackTrace& st) { + return d(st); +} + +void b(StackTrace& st) { + return c(st); +} + +__attribute__ ((noinline)) +void a(StackTrace& st) { + return b(st); +} + +TEST (smalltrace) { + StackTrace st; + a(st); + + Printer printer; + printer.print(st, stdout); +} diff --git a/external/backtrace-cpp/test/suicide.cpp b/external/backtrace-cpp/test/suicide.cpp new file mode 100644 index 0000000..8b3955b --- /dev/null +++ b/external/backtrace-cpp/test/suicide.cpp @@ -0,0 +1,93 @@ +/* + * test/suicide.cpp + * Copyright 2013 Google Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "backward.hpp" + +#include +#include +#include "test/test.hpp" + +using namespace backward; + +void badass_function() +{ + char* ptr = (char*)42; + *ptr = 42; +} + +TEST_SEGFAULT (invalid_write) +{ + badass_function(); +} + +int you_shall_not_pass() +{ + char* ptr = (char*)42; + int v = *ptr; + return v; +} + +TEST_SEGFAULT(invalid_read) +{ + int v = you_shall_not_pass(); + std::cout << "v=" << v << std::endl; +} + +void abort_abort_I_repeat_abort_abort() +{ + std::cout << "Jumping off the boat!" << std::endl; + abort(); +} + +TEST_ABORT (calling_abort) +{ + abort_abort_I_repeat_abort_abort(); +} + +volatile int zero = 0; + +int divide_by_zero() +{ + std::cout << "And the wild black hole appears..." << std::endl; + int v = 42 / zero; + return v; +} + +TEST_DIVZERO (divide_by_zero) +{ + int v = divide_by_zero(); + std::cout << "v=" << v << std::endl; +} + +int bye_bye_stack(int i) { + return bye_bye_stack(i + 1) + bye_bye_stack(i * 2); +} + +TEST_SEGFAULT(stackoverflow) +{ + struct rlimit limit; + limit.rlim_max = 8096; + setrlimit(RLIMIT_STACK, &limit); + int r = bye_bye_stack(42); + std::cout << "r=" << r << std::endl; +} diff --git a/external/backtrace-cpp/test/test.cpp b/external/backtrace-cpp/test/test.cpp new file mode 100644 index 0000000..6c5bbff --- /dev/null +++ b/external/backtrace-cpp/test/test.cpp @@ -0,0 +1,75 @@ +/* + * test/test.cpp + * Copyright 2013 Google Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include +#include +#include +#include "test/test.hpp" + +TEST (empty_test) { } + +TEST_FAIL_ASSERT (fail_assert) { + ASSERT(1 == 2); +} + +TEST_FAIL_ASSERT (fail_assert_ge) { + ASSERT_GE(4, 5); +} + +TEST_UNCAUGHT_EXCEPTION (uncaught_exception) { + throw std::runtime_error("some random runtime error"); +} + +TEST_UNCAUGHT_EXCEPTION (uncaught_exception_int) { + throw 42; +} + +TEST_SEGFAULT (segfault) { + char* a = 0; + char b = a[42]; + std::cout << "result: " << b << std::endl; +} + +TEST_ABORT (abort) { + abort(); +} + +TEST (catch_int) { + ASSERT_THROW({throw 42;}, int); +} + +TEST_FAIL_ASSERT (fail_catch_int) { + ASSERT_THROW({}, int); +} + +TEST_FAIL_ASSERT (fail_no_throw) { + ASSERT_NO_THROW({throw 42;}); +} + +TEST (any_throw) { + ASSERT_ANY_THROW({throw 42;}); +} + +TEST_FAIL_ASSERT (fail_any_throw) { + ASSERT_ANY_THROW({}); +} diff --git a/external/backtrace-cpp/test/test.hpp b/external/backtrace-cpp/test/test.hpp new file mode 100644 index 0000000..fa0d224 --- /dev/null +++ b/external/backtrace-cpp/test/test.hpp @@ -0,0 +1,170 @@ +/* + * test/test.hpp + * Copyright 2013 Google Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#pragma once +#ifndef H_54E531F7_9154_454B_BEB9_257408429470 +#define H_54E531F7_9154_454B_BEB9_257408429470 + +#include +#include +#include +#include +#include +#include + +namespace test { + +struct AssertFailedError: std::exception { + ~AssertFailedError() throw() {} + + AssertFailedError(const char* filename, int line, const char* errmsg): + basename(_basename(filename)), line(line), errmsg(errmsg) {} + + const char* what() const throw() { + if (not _what.size()) { + std::ostringstream ss; + ss << "assertion failed (" << basename << ":" << line; + ss << ") " << errmsg; + _what = ss.str(); + } + return _what.c_str(); + } + + const char* basename; + int line; + const char* errmsg; + + mutable std::string _what; + + static const char* _basename(const char* filename) { + const char* basename = filename + strlen(filename); + while (basename != filename && *basename != '/') { + basename -= 1; + } + return basename + 1; + } +}; + +enum TestStatus { + SUCCESS = 0<<0, + FAILED = 1<<0, + + ASSERT_FAIL = FAILED | 1<<1, + EXCEPTION_UNCAUGHT = FAILED | 2<<1, + SIGNAL_UNCAUGHT = FAILED | 3<<1, + SIGNAL_SEGFAULT = SIGNAL_UNCAUGHT | 1<<3, + SIGNAL_ABORT = SIGNAL_UNCAUGHT | 2<<3, + SIGNAL_DIVZERO = SIGNAL_UNCAUGHT | 2<<3, + + STATUS_MASK = 0x1F +}; + +struct TestBase { + const char* name; + TestStatus expected_status; + + virtual ~TestBase() {} + TestBase(const char*, TestStatus); + virtual void do_test() = 0; + + TestStatus run() { + try { + do_test(); + return SUCCESS; + } catch(const AssertFailedError& e) { + printf("!! %s\n", e.what()); + return ASSERT_FAIL; + } catch(const std::exception& e) { + printf("!! exception: %s\n", e.what()); + return EXCEPTION_UNCAUGHT; + } catch(...) { + printf("!! unknown exception\n"); + return EXCEPTION_UNCAUGHT; + } + } +}; + +typedef std::vector test_registry_t; +extern test_registry_t test_registry; + +TestBase::TestBase(const char* n, TestStatus s): name(n), expected_status(s) { + test_registry.push_back(this); +} + +} // namespace test + +#define _TEST_STATUS(name, status) \ + struct TEST_##name: ::test::TestBase { \ + TEST_##name(): TestBase(#name, status) {} \ + void do_test(); \ + } TEST_##name; \ + void TEST_##name::do_test() + +#define TEST(name) _TEST_STATUS(name, ::test::SUCCESS) +#define TEST_FAIL(name) _TEST_STATUS(name, ::test::FAILED) +#define TEST_FAIL_ASSERT(name) _TEST_STATUS(name, ::test::ASSERT_FAIL) +#define TEST_UNCAUGHT_EXCEPTION(name) _TEST_STATUS(name, ::test::EXCEPTION_UNCAUGHT) +#define TEST_UNCAUGHT_SIGNAL(name) _TEST_STATUS(name, ::test::SIGNAL_UNCAUGHT) +#define TEST_SEGFAULT(name) _TEST_STATUS(name, ::test::SIGNAL_SEGFAULT) +#define TEST_ABORT(name) _TEST_STATUS(name, ::test::SIGNAL_ABORT) +#define TEST_DIVZERO(name) _TEST_STATUS(name, ::test::SIGNAL_DIVZERO) + +#define ASSERT(expr) \ + (expr) ? static_cast(0) \ + : throw ::test::AssertFailedError( \ + __FILE__, __LINE__, #expr) + +#define _ASSERT_BINOP(a, b, cmp) \ + (not (a cmp b)) ? static_cast(0) \ + : throw ::test::AssertFailedError( \ + __FILE__, __LINE__, "because " #a " " #cmp " " #b) + +#define ASSERT_EQ(a, b) _ASSERT_BINOP(a, b, !=) +#define ASSERT_NE(a, b) _ASSERT_BINOP(a, b, ==) +#define ASSERT_LT(a, b) _ASSERT_BINOP(a, b, >=) +#define ASSERT_LE(a, b) _ASSERT_BINOP(a, b, >) +#define ASSERT_GT(a, b) _ASSERT_BINOP(a, b, <=) +#define ASSERT_GE(a, b) _ASSERT_BINOP(a, b, <) + +#define ASSERT_THROW(expr, e_type) \ + do { try { expr } \ + catch (const e_type&) { break; } \ + throw ::test::AssertFailedError( \ + __FILE__, __LINE__, "expected exception " #e_type); \ + } while(0) + +#define ASSERT_ANY_THROW(expr) \ + do { try { expr } \ + catch (...) { break; } \ + throw ::test::AssertFailedError( \ + __FILE__, __LINE__, "expected any exception"); \ + } while(0) + +#define ASSERT_NO_THROW(expr) \ + try { expr } \ + catch (...) { \ + throw ::test::AssertFailedError( \ + __FILE__, __LINE__, "no exception expected"); \ + } + +#endif /* H_GUARD */ diff --git a/external/backtrace-cpp/test_package/CMakeLists.txt b/external/backtrace-cpp/test_package/CMakeLists.txt new file mode 100644 index 0000000..ca7e1a4 --- /dev/null +++ b/external/backtrace-cpp/test_package/CMakeLists.txt @@ -0,0 +1,11 @@ +project(backward-package-test) +cmake_minimum_required(VERSION 2.8) + +include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) +include(${CONAN_CMAKE-UTILS_ROOT}/conan.cmake) +conan_basic_setup() + +add_conan_library(backward) + +add_executable(example main.cpp) +target_link_libraries(example PRIVATE backward-conan) diff --git a/external/backtrace-cpp/test_package/conanfile.py b/external/backtrace-cpp/test_package/conanfile.py new file mode 100644 index 0000000..2e33cd7 --- /dev/null +++ b/external/backtrace-cpp/test_package/conanfile.py @@ -0,0 +1,15 @@ +from conans import ConanFile, CMake +import os + +class TestBackward(ConanFile): + settings = 'os', 'compiler', 'build_type', 'arch' + requires = 'cmake-utils/0.0.0@Manu343726/testing', 'backward/0.0.0@Manu343726/testing' + generators = 'cmake' + + def build(self): + cmake = CMake(self.settings) + self.run('cmake {} {}'.format(self.conanfile_directory, cmake.command_line)) + self.run('cmake --build . {}'.format(cmake.build_config)) + + def test(self): + self.run(os.path.join('.', 'bin', 'example')) diff --git a/external/backtrace-cpp/test_package/main.cpp b/external/backtrace-cpp/test_package/main.cpp new file mode 100644 index 0000000..aa3cd11 --- /dev/null +++ b/external/backtrace-cpp/test_package/main.cpp @@ -0,0 +1,60 @@ +#include +#include +#include +#include + +using namespace backward; + +class TracedException : public std::runtime_error +{ +public: + TracedException() : + std::runtime_error(_get_trace()) + {} + +private: + std::string _get_trace() + { + std::ostringstream ss; + + StackTrace stackTrace; + TraceResolver resolver; + stackTrace.load_here(); + resolver.load_stacktrace(stackTrace); + + for(std::size_t i = 0; i < stackTrace.size(); ++i) + { + const ResolvedTrace trace = resolver.resolve(stackTrace[i]); + + ss << "#" << i << " at " << trace.object_function << "\n"; + } + + return ss.str(); + } +}; + +void f(int i) +{ + if(i >= 42) + { + throw TracedException(); + } + else + { + std::cout << "i=" << i << "\n"; + f(i + 1); + } +} + +int main() +{ + try + { + f(0); + } catch (const TracedException& ex) + { + std::cout << ex.what(); + } +} + + diff --git a/external/glm/.gitignore b/external/glm/.gitignore new file mode 100644 index 0000000..00cc171 --- /dev/null +++ b/external/glm/.gitignore @@ -0,0 +1,47 @@ +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + +# CMake +CMakeCache.txt +CMakeFiles +Makefile +cmake_install.cmake +install_manifest.txt +*.cmake +# ^ May need to add future .cmake files as exceptions + +# Test logs +Testing/* + +# Test input +test/gtc/*.dds + +# Project Files +*.cbp +*.user diff --git a/external/glm/CMakeLists.txt b/external/glm/CMakeLists.txt new file mode 100644 index 0000000..58ce7ce --- /dev/null +++ b/external/glm/CMakeLists.txt @@ -0,0 +1,199 @@ +cmake_minimum_required(VERSION 2.6 FATAL_ERROR) + +project(glm) +set(GLM_VERSION "0.9.7") + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) + +enable_testing() + +add_definitions(-D_CRT_SECURE_NO_WARNINGS) + +option(GLM_TEST_ENABLE "GLM test" OFF) +if(NOT GLM_TEST_ENABLE) + message(STATUS "GLM is a header only library, no need to build it. Set the option GLM_TEST_ENABLE with ON to build and run the test bench") +endif() + +if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") AND UNIX)) + option(GLM_TEST_ENABLE_CXX_98 "Enable C++ 98" OFF) + option(GLM_TEST_ENABLE_CXX_0X "Enable C++ 0x" OFF) + option(GLM_TEST_ENABLE_CXX_11 "Enable C++ 11" OFF) + option(GLM_TEST_ENABLE_CXX_1Y "Enable C++ 1y" OFF) + option(GLM_TEST_ENABLE_CXX_14 "Enable C++ 14" OFF) + option(GLM_TEST_ENABLE_CXX_1Z "Enable C++ 1z" OFF) + + if(GLM_TEST_ENABLE_CXX_1Z) + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++1z") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(CMAKE_CXX_FLAGS "-std=c++1Z") + elseif(GLM_TEST_ENABLE_CXX_14) + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(CMAKE_CXX_FLAGS "-std=c++14") + elseif(GLM_TEST_ENABLE_CXX_1Y) + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++1y") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(CMAKE_CXX_FLAGS "-std=c++1y") + elseif(GLM_TEST_ENABLE_CXX_11) + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(CMAKE_CXX_FLAGS "-std=c++11") + elseif(GLM_TEST_ENABLE_CXX_0X) + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++0x") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(CMAKE_CXX_FLAGS "-std=c++0x") + elseif(GLM_TEST_ENABLE_CXX_98) + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++98") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(CMAKE_CXX_FLAGS "-std=c++98") + endif() +endif() + +option(GLM_TEST_ENABLE_MS_EXTENSIONS "Enable MS extensions" OFF) + +if(GLM_TEST_ENABLE_MS_EXTENSIONS) + if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")) + add_definitions(-Wgnu-anonymous-struct) + add_definitions(-Wnested-anon-types) + endif() +else() + if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") OR (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") AND WIN32)) + add_definitions(/Za) + elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")) + add_definitions(-pedantic) + endif() +endif() + +option(GLM_TEST_ENABLE_SIMD_SSE2 "Enable SSE2 optimizations" OFF) +option(GLM_TEST_ENABLE_SIMD_SSE3 "Enable SSE3 optimizations" OFF) +option(GLM_TEST_ENABLE_SIMD_AVX "Enable AVX optimizations" OFF) +option(GLM_TEST_ENABLE_SIMD_AVX2 "Enable AVX2 optimizations" OFF) +option(GLM_TEST_FORCE_PURE "Force 'pure' instructions" OFF) + +if(GLM_TEST_FORCE_PURE) + add_definitions(-DGLM_FORCE_PURE) + + if(CMAKE_COMPILER_IS_GNUCXX) + add_definitions(-mfpmath=387) + endif() +elseif(GLM_TEST_ENABLE_SIMD_AVX2) + if(CMAKE_COMPILER_IS_GNUCXX) + add_definitions(-mavx2) + elseif(GLM_USE_INTEL) + add_definitions(/QxAVX2) + elseif(MSVC) + add_definitions(/arch:AVX2) + endif() +elseif(GLM_TEST_ENABLE_SIMD_AVX) + if(CMAKE_COMPILER_IS_GNUCXX) + add_definitions(-mavx) + elseif(GLM_USE_INTEL) + add_definitions(/QxAVX) + elseif(MSVC) + add_definitions(/arch:AVX) + endif() +elseif(GLM_TEST_ENABLE_SIMD_SSE3) + if(CMAKE_COMPILER_IS_GNUCXX) + add_definitions(-msse3) + elseif(GLM_USE_INTEL) + add_definitions(/QxSSE3) + elseif(MSVC) + add_definitions(/arch:SSE2) # VC doesn't support /arch:SSE3 + endif() +elseif(GLM_TEST_ENABLE_SIMD_SSE2) + if(CMAKE_COMPILER_IS_GNUCXX) + add_definitions(-msse2) + elseif(GLM_USE_INTEL) + add_definitions(/QxSSE2) + elseif(MSVC) + if(NOT CMAKE_CL_64) + add_definitions(/arch:SSE2) + endif() + endif() +endif() + +option(GLM_TEST_ENABLE_FAST_MATH "Enable fast math optimizations" OFF) +if(GLM_TEST_ENABLE_FAST_MATH) + if(CMAKE_COMPILER_IS_GNUCXX) + add_definitions(-ffast-math) + endif() + + if(MSVC) + add_definitions(/fp:fast) + endif() +elseif(NOT GLM_TEST_ENABLE_FAST_MATH) + if(MSVC) + add_definitions(/fp:precise) + endif() +endif() + +if(CMAKE_COMPILER_IS_GNUCXX) + #add_definitions(-S) + #add_definitions(-s) + add_definitions(-O2) + + #add_definitions(-fprofile-arcs -ftest-coverage) gcov + #ctest_enable_coverage() +endif() + +include_directories("${PROJECT_SOURCE_DIR}") +include_directories("${PROJECT_SOURCE_DIR}/test/external") + +add_subdirectory(glm) +add_subdirectory(test) + +set(GLM_INSTALL_CONFIGDIR "${CMAKE_INSTALL_LIBDIR}/cmake/glm") +install(DIRECTORY glm DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/glmVersion.cmake" + VERSION ${GLM_VERSION} + COMPATIBILITY AnyNewerVersion +) + +# build tree package config +configure_file( + cmake/glmBuildConfig.cmake.in + glmConfig.cmake + @ONLY +) + +# install tree package config +configure_package_config_file( + cmake/glmConfig.cmake.in + ${GLM_INSTALL_CONFIGDIR}/glmConfig.cmake + INSTALL_DESTINATION ${GLM_INSTALL_CONFIGDIR} + PATH_VARS CMAKE_INSTALL_INCLUDEDIR + NO_CHECK_REQUIRED_COMPONENTS_MACRO +) + +install( + FILES + "${CMAKE_CURRENT_BINARY_DIR}/${GLM_INSTALL_CONFIGDIR}/glmConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/glmVersion.cmake" + DESTINATION ${GLM_INSTALL_CONFIGDIR} +) + +if (NOT CMAKE_VERSION VERSION_LESS "3.0") + add_library(glm INTERFACE) + target_include_directories(glm INTERFACE + $ + $ + ) + install(TARGETS glm EXPORT glmTargets) + + export( + EXPORT glmTargets + FILE "${CMAKE_CURRENT_BINARY_DIR}/glmTargets.cmake" + ) + + install( + EXPORT glmTargets FILE glmTargets.cmake + DESTINATION ${GLM_INSTALL_CONFIGDIR} + ) +endif() + +export(PACKAGE glm) diff --git a/external/glm/cmake/glmBuildConfig.cmake.in b/external/glm/cmake/glmBuildConfig.cmake.in new file mode 100644 index 0000000..bb7872d --- /dev/null +++ b/external/glm/cmake/glmBuildConfig.cmake.in @@ -0,0 +1,6 @@ +set(GLM_VERSION "@GLM_VERSION@") +set(GLM_INCLUDE_DIRS "@CMAKE_CURRENT_SOURCE_DIR@") + +if (NOT CMAKE_VERSION VERSION_LESS "3.0") + include("${CMAKE_CURRENT_LIST_DIR}/glmTargets.cmake") +endif() diff --git a/external/glm/cmake/glmConfig.cmake.in b/external/glm/cmake/glmConfig.cmake.in new file mode 100644 index 0000000..59f68c9 --- /dev/null +++ b/external/glm/cmake/glmConfig.cmake.in @@ -0,0 +1,9 @@ +set(GLM_VERSION "@GLM_VERSION@") + +@PACKAGE_INIT@ + +set_and_check(GLM_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") + +if (NOT CMAKE_VERSION VERSION_LESS "3.0") + include("${CMAKE_CURRENT_LIST_DIR}/glmTargets.cmake") +endif() diff --git a/external/glm/copying.txt b/external/glm/copying.txt new file mode 100644 index 0000000..c5695d4 --- /dev/null +++ b/external/glm/copying.txt @@ -0,0 +1,54 @@ +================================================================================ +OpenGL Mathematics (GLM) +-------------------------------------------------------------------------------- +GLM can be distributed and/or modified under the terms of either +a) The Happy Bunny License, or b) the MIT License. + +================================================================================ +The Happy Bunny License (Modified MIT License) +-------------------------------------------------------------------------------- +Copyright (c) 2005 - 2015 G-Truc Creation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +Restrictions: By making use of the Software for military purposes, you choose +to make a Bunny unhappy. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +================================================================================ +The MIT License +-------------------------------------------------------------------------------- +Copyright (c) 2005 - 2015 G-Truc Creation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/external/glm/doc/api/a00001.html b/external/glm/doc/api/a00001.html new file mode 100644 index 0000000..afbfaf0 --- /dev/null +++ b/external/glm/doc/api/a00001.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: _features.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
_features.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-02-20 / 2013-02-20
+
Author
Christophe Riccio
+ +

Definition in file _features.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00001_source.html b/external/glm/doc/api/a00001_source.html new file mode 100644 index 0000000..c2f58f9 --- /dev/null +++ b/external/glm/doc/api/a00001_source.html @@ -0,0 +1,457 @@ + + + + + + +0.9.7: _features.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
_features.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 // #define GLM_CXX98_EXCEPTIONS
+
36 // #define GLM_CXX98_RTTI
+
37 
+
38 // #define GLM_CXX11_RVALUE_REFERENCES
+
39 // Rvalue references - GCC 4.3
+
40 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html
+
41 
+
42 // GLM_CXX11_TRAILING_RETURN
+
43 // Rvalue references for *this - GCC not supported
+
44 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm
+
45 
+
46 // GLM_CXX11_NONSTATIC_MEMBER_INIT
+
47 // Initialization of class objects by rvalues - GCC any
+
48 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html
+
49 
+
50 // GLM_CXX11_NONSTATIC_MEMBER_INIT
+
51 // Non-static data member initializers - GCC 4.7
+
52 // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm
+
53 
+
54 // #define GLM_CXX11_VARIADIC_TEMPLATE
+
55 // Variadic templates - GCC 4.3
+
56 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf
+
57 
+
58 //
+
59 // Extending variadic template template parameters - GCC 4.4
+
60 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf
+
61 
+
62 // #define GLM_CXX11_GENERALIZED_INITIALIZERS
+
63 // Initializer lists - GCC 4.4
+
64 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm
+
65 
+
66 // #define GLM_CXX11_STATIC_ASSERT
+
67 // Static assertions - GCC 4.3
+
68 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html
+
69 
+
70 // #define GLM_CXX11_AUTO_TYPE
+
71 // auto-typed variables - GCC 4.4
+
72 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf
+
73 
+
74 // #define GLM_CXX11_AUTO_TYPE
+
75 // Multi-declarator auto - GCC 4.4
+
76 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf
+
77 
+
78 // #define GLM_CXX11_AUTO_TYPE
+
79 // Removal of auto as a storage-class specifier - GCC 4.4
+
80 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm
+
81 
+
82 // #define GLM_CXX11_AUTO_TYPE
+
83 // New function declarator syntax - GCC 4.4
+
84 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm
+
85 
+
86 // #define GLM_CXX11_LAMBDAS
+
87 // New wording for C++0x lambdas - GCC 4.5
+
88 // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf
+
89 
+
90 // #define GLM_CXX11_DECLTYPE
+
91 // Declared type of an expression - GCC 4.3
+
92 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf
+
93 
+
94 //
+
95 // Right angle brackets - GCC 4.3
+
96 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html
+
97 
+
98 //
+
99 // Default template arguments for function templates DR226 GCC 4.3
+
100 // http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226
+
101 
+
102 //
+
103 // Solving the SFINAE problem for expressions DR339 GCC 4.4
+
104 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html
+
105 
+
106 // #define GLM_CXX11_ALIAS_TEMPLATE
+
107 // Template aliases N2258 GCC 4.7
+
108 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf
+
109 
+
110 //
+
111 // Extern templates N1987 Yes
+
112 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm
+
113 
+
114 // #define GLM_CXX11_NULLPTR
+
115 // Null pointer constant N2431 GCC 4.6
+
116 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf
+
117 
+
118 // #define GLM_CXX11_STRONG_ENUMS
+
119 // Strongly-typed enums N2347 GCC 4.4
+
120 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf
+
121 
+
122 //
+
123 // Forward declarations for enums N2764 GCC 4.6
+
124 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf
+
125 
+
126 //
+
127 // Generalized attributes N2761 GCC 4.8
+
128 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf
+
129 
+
130 //
+
131 // Generalized constant expressions N2235 GCC 4.6
+
132 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf
+
133 
+
134 //
+
135 // Alignment support N2341 GCC 4.8
+
136 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
+
137 
+
138 // #define GLM_CXX11_DELEGATING_CONSTRUCTORS
+
139 // Delegating constructors N1986 GCC 4.7
+
140 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
+
141 
+
142 //
+
143 // Inheriting constructors N2540 GCC 4.8
+
144 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm
+
145 
+
146 // #define GLM_CXX11_EXPLICIT_CONVERSIONS
+
147 // Explicit conversion operators N2437 GCC 4.5
+
148 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf
+
149 
+
150 //
+
151 // New character types N2249 GCC 4.4
+
152 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html
+
153 
+
154 //
+
155 // Unicode string literals N2442 GCC 4.5
+
156 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
+
157 
+
158 //
+
159 // Raw string literals N2442 GCC 4.5
+
160 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
+
161 
+
162 //
+
163 // Universal character name literals N2170 GCC 4.5
+
164 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html
+
165 
+
166 // #define GLM_CXX11_USER_LITERALS
+
167 // User-defined literals N2765 GCC 4.7
+
168 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf
+
169 
+
170 //
+
171 // Standard Layout Types N2342 GCC 4.5
+
172 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm
+
173 
+
174 // #define GLM_CXX11_DEFAULTED_FUNCTIONS
+
175 // #define GLM_CXX11_DELETED_FUNCTIONS
+
176 // Defaulted and deleted functions N2346 GCC 4.4
+
177 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
+
178 
+
179 //
+
180 // Extended friend declarations N1791 GCC 4.7
+
181 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf
+
182 
+
183 //
+
184 // Extending sizeof N2253 GCC 4.4
+
185 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html
+
186 
+
187 // #define GLM_CXX11_INLINE_NAMESPACES
+
188 // Inline namespaces N2535 GCC 4.4
+
189 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm
+
190 
+
191 // #define GLM_CXX11_UNRESTRICTED_UNIONS
+
192 // Unrestricted unions N2544 GCC 4.6
+
193 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf
+
194 
+
195 // #define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS
+
196 // Local and unnamed types as template arguments N2657 GCC 4.5
+
197 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm
+
198 
+
199 // #define GLM_CXX11_RANGE_FOR
+
200 // Range-based for N2930 GCC 4.6
+
201 // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html
+
202 
+
203 // #define GLM_CXX11_OVERRIDE_CONTROL
+
204 // Explicit virtual overrides N2928 N3206 N3272 GCC 4.7
+
205 // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
+
206 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm
+
207 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm
+
208 
+
209 //
+
210 // Minimal support for garbage collection and reachability-based leak detection N2670 No
+
211 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm
+
212 
+
213 // #define GLM_CXX11_NOEXCEPT
+
214 // Allowing move constructors to throw [noexcept] N3050 GCC 4.6 (core language only)
+
215 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html
+
216 
+
217 //
+
218 // Defining move special member functions N3053 GCC 4.6
+
219 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html
+
220 
+
221 //
+
222 // Sequence points N2239 Yes
+
223 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html
+
224 
+
225 //
+
226 // Atomic operations N2427 GCC 4.4
+
227 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html
+
228 
+
229 //
+
230 // Strong Compare and Exchange N2748 GCC 4.5
+
231 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html
+
232 
+
233 //
+
234 // Bidirectional Fences N2752 GCC 4.8
+
235 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm
+
236 
+
237 //
+
238 // Memory model N2429 GCC 4.8
+
239 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm
+
240 
+
241 //
+
242 // Data-dependency ordering: atomics and memory model N2664 GCC 4.4
+
243 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm
+
244 
+
245 //
+
246 // Propagating exceptions N2179 GCC 4.4
+
247 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html
+
248 
+
249 //
+
250 // Abandoning a process and at_quick_exit N2440 GCC 4.8
+
251 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm
+
252 
+
253 //
+
254 // Allow atomics use in signal handlers N2547 Yes
+
255 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm
+
256 
+
257 //
+
258 // Thread-local storage N2659 GCC 4.8
+
259 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm
+
260 
+
261 //
+
262 // Dynamic initialization and destruction with concurrency N2660 GCC 4.3
+
263 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm
+
264 
+
265 //
+
266 // __func__ predefined identifier N2340 GCC 4.3
+
267 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm
+
268 
+
269 //
+
270 // C99 preprocessor N1653 GCC 4.3
+
271 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm
+
272 
+
273 //
+
274 // long long N1811 GCC 4.3
+
275 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf
+
276 
+
277 //
+
278 // Extended integral types N1988 Yes
+
279 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf
+
280 
+
281 #if(GLM_COMPILER & GLM_COMPILER_GCC)
+
282 
+
283 # if(GLM_COMPILER >= GLM_COMPILER_GCC43)
+
284 # define GLM_CXX11_STATIC_ASSERT
+
285 # endif
+
286 
+
287 #elif(GLM_COMPILER & (GLM_COMPILER_APPLE_CLANG | GLM_COMPILER_LLVM))
+
288 # if(__has_feature(cxx_exceptions))
+
289 # define GLM_CXX98_EXCEPTIONS
+
290 # endif
+
291 
+
292 # if(__has_feature(cxx_rtti))
+
293 # define GLM_CXX98_RTTI
+
294 # endif
+
295 
+
296 # if(__has_feature(cxx_access_control_sfinae))
+
297 # define GLM_CXX11_ACCESS_CONTROL_SFINAE
+
298 # endif
+
299 
+
300 # if(__has_feature(cxx_alias_templates))
+
301 # define GLM_CXX11_ALIAS_TEMPLATE
+
302 # endif
+
303 
+
304 # if(__has_feature(cxx_alignas))
+
305 # define GLM_CXX11_ALIGNAS
+
306 # endif
+
307 
+
308 # if(__has_feature(cxx_attributes))
+
309 # define GLM_CXX11_ATTRIBUTES
+
310 # endif
+
311 
+
312 # if(__has_feature(cxx_constexpr))
+
313 # define GLM_CXX11_CONSTEXPR
+
314 # endif
+
315 
+
316 # if(__has_feature(cxx_decltype))
+
317 # define GLM_CXX11_DECLTYPE
+
318 # endif
+
319 
+
320 # if(__has_feature(cxx_default_function_template_args))
+
321 # define GLM_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS
+
322 # endif
+
323 
+
324 # if(__has_feature(cxx_defaulted_functions))
+
325 # define GLM_CXX11_DEFAULTED_FUNCTIONS
+
326 # endif
+
327 
+
328 # if(__has_feature(cxx_delegating_constructors))
+
329 # define GLM_CXX11_DELEGATING_CONSTRUCTORS
+
330 # endif
+
331 
+
332 # if(__has_feature(cxx_deleted_functions))
+
333 # define GLM_CXX11_DELETED_FUNCTIONS
+
334 # endif
+
335 
+
336 # if(__has_feature(cxx_explicit_conversions))
+
337 # define GLM_CXX11_EXPLICIT_CONVERSIONS
+
338 # endif
+
339 
+
340 # if(__has_feature(cxx_generalized_initializers))
+
341 # define GLM_CXX11_GENERALIZED_INITIALIZERS
+
342 # endif
+
343 
+
344 # if(__has_feature(cxx_implicit_moves))
+
345 # define GLM_CXX11_IMPLICIT_MOVES
+
346 # endif
+
347 
+
348 # if(__has_feature(cxx_inheriting_constructors))
+
349 # define GLM_CXX11_INHERITING_CONSTRUCTORS
+
350 # endif
+
351 
+
352 # if(__has_feature(cxx_inline_namespaces))
+
353 # define GLM_CXX11_INLINE_NAMESPACES
+
354 # endif
+
355 
+
356 # if(__has_feature(cxx_lambdas))
+
357 # define GLM_CXX11_LAMBDAS
+
358 # endif
+
359 
+
360 # if(__has_feature(cxx_local_type_template_args))
+
361 # define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS
+
362 # endif
+
363 
+
364 # if(__has_feature(cxx_noexcept))
+
365 # define GLM_CXX11_NOEXCEPT
+
366 # endif
+
367 
+
368 # if(__has_feature(cxx_nonstatic_member_init))
+
369 # define GLM_CXX11_NONSTATIC_MEMBER_INIT
+
370 # endif
+
371 
+
372 # if(__has_feature(cxx_nullptr))
+
373 # define GLM_CXX11_NULLPTR
+
374 # endif
+
375 
+
376 # if(__has_feature(cxx_override_control))
+
377 # define GLM_CXX11_OVERRIDE_CONTROL
+
378 # endif
+
379 
+
380 # if(__has_feature(cxx_reference_qualified_functions))
+
381 # define GLM_CXX11_REFERENCE_QUALIFIED_FUNCTIONS
+
382 # endif
+
383 
+
384 # if(__has_feature(cxx_range_for))
+
385 # define GLM_CXX11_RANGE_FOR
+
386 # endif
+
387 
+
388 # if(__has_feature(cxx_raw_string_literals))
+
389 # define GLM_CXX11_RAW_STRING_LITERALS
+
390 # endif
+
391 
+
392 # if(__has_feature(cxx_rvalue_references))
+
393 # define GLM_CXX11_RVALUE_REFERENCES
+
394 # endif
+
395 
+
396 # if(__has_feature(cxx_static_assert))
+
397 # define GLM_CXX11_STATIC_ASSERT
+
398 # endif
+
399 
+
400 # if(__has_feature(cxx_auto_type))
+
401 # define GLM_CXX11_AUTO_TYPE
+
402 # endif
+
403 
+
404 # if(__has_feature(cxx_strong_enums))
+
405 # define GLM_CXX11_STRONG_ENUMS
+
406 # endif
+
407 
+
408 # if(__has_feature(cxx_trailing_return))
+
409 # define GLM_CXX11_TRAILING_RETURN
+
410 # endif
+
411 
+
412 # if(__has_feature(cxx_unicode_literals))
+
413 # define GLM_CXX11_UNICODE_LITERALS
+
414 # endif
+
415 
+
416 # if(__has_feature(cxx_unrestricted_unions))
+
417 # define GLM_CXX11_UNRESTRICTED_UNIONS
+
418 # endif
+
419 
+
420 # if(__has_feature(cxx_user_literals))
+
421 # define GLM_CXX11_USER_LITERALS
+
422 # endif
+
423 
+
424 # if(__has_feature(cxx_variadic_templates))
+
425 # define GLM_CXX11_VARIADIC_TEMPLATES
+
426 # endif
+
427 
+
428 #endif//(GLM_COMPILER & (GLM_COMPILER_APPLE_CLANG | GLM_COMPILER_LLVM))
+
+ + + + diff --git a/external/glm/doc/api/a00002.html b/external/glm/doc/api/a00002.html new file mode 100644 index 0000000..ee0c0a4 --- /dev/null +++ b/external/glm/doc/api/a00002.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: _fixes.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
_fixes.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2011-02-21 / 2011-11-22
+
Author
Christophe Riccio
+ +

Definition in file _fixes.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00002_source.html b/external/glm/doc/api/a00002_source.html new file mode 100644 index 0000000..19c76f9 --- /dev/null +++ b/external/glm/doc/api/a00002_source.html @@ -0,0 +1,83 @@ + + + + + + +0.9.7: _fixes.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
_fixes.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #include <cmath>
+
34 
+
36 #ifdef max
+
37 #undef max
+
38 #endif
+
39 
+
41 #ifdef min
+
42 #undef min
+
43 #endif
+
44 
+
46 #ifdef isnan
+
47 #undef isnan
+
48 #endif
+
49 
+
51 #ifdef isinf
+
52 #undef isinf
+
53 #endif
+
54 
+
56 #ifdef log2
+
57 #undef log2
+
58 #endif
+
59 
+
+ + + + diff --git a/external/glm/doc/api/a00003.html b/external/glm/doc/api/a00003.html new file mode 100644 index 0000000..ca2b22e --- /dev/null +++ b/external/glm/doc/api/a00003.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: _noise.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
_noise.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file _noise.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00003_source.html b/external/glm/doc/api/a00003_source.html new file mode 100644 index 0000000..07b836a --- /dev/null +++ b/external/glm/doc/api/a00003_source.html @@ -0,0 +1,167 @@ + + + + + + +0.9.7: _noise.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
_noise.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "../vec2.hpp"
+
36 #include "../vec3.hpp"
+
37 #include "../vec4.hpp"
+
38 #include "../common.hpp"
+
39 
+
40 namespace glm{
+
41 namespace detail
+
42 {
+
43  template <typename T>
+
44  GLM_FUNC_QUALIFIER T mod289(T const & x)
+
45  {
+
46  return x - floor(x * static_cast<T>(1.0) / static_cast<T>(289.0)) * static_cast<T>(289.0);
+
47  }
+
48 
+
49  template <typename T>
+
50  GLM_FUNC_QUALIFIER T permute(T const & x)
+
51  {
+
52  return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
+
53  }
+
54 
+
55  template <typename T, precision P>
+
56  GLM_FUNC_QUALIFIER tvec2<T, P> permute(tvec2<T, P> const & x)
+
57  {
+
58  return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
+
59  }
+
60 
+
61  template <typename T, precision P>
+
62  GLM_FUNC_QUALIFIER tvec3<T, P> permute(tvec3<T, P> const & x)
+
63  {
+
64  return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
+
65  }
+
66 
+
67  template <typename T, precision P>
+
68  GLM_FUNC_QUALIFIER tvec4<T, P> permute(tvec4<T, P> const & x)
+
69  {
+
70  return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
+
71  }
+
72 /*
+
73  template <typename T, precision P, template<typename> class vecType>
+
74  GLM_FUNC_QUALIFIER vecType<T, P> permute(vecType<T, P> const & x)
+
75  {
+
76  return mod289(((x * T(34)) + T(1)) * x);
+
77  }
+
78 */
+
79  template <typename T>
+
80  GLM_FUNC_QUALIFIER T taylorInvSqrt(T const & r)
+
81  {
+
82  return T(1.79284291400159) - T(0.85373472095314) * r;
+
83  }
+
84 
+
85  template <typename T, precision P>
+
86  GLM_FUNC_QUALIFIER tvec2<T, P> taylorInvSqrt(tvec2<T, P> const & r)
+
87  {
+
88  return T(1.79284291400159) - T(0.85373472095314) * r;
+
89  }
+
90 
+
91  template <typename T, precision P>
+
92  GLM_FUNC_QUALIFIER tvec3<T, P> taylorInvSqrt(tvec3<T, P> const & r)
+
93  {
+
94  return T(1.79284291400159) - T(0.85373472095314) * r;
+
95  }
+
96 
+
97  template <typename T, precision P>
+
98  GLM_FUNC_QUALIFIER tvec4<T, P> taylorInvSqrt(tvec4<T, P> const & r)
+
99  {
+
100  return T(1.79284291400159) - T(0.85373472095314) * r;
+
101  }
+
102 /*
+
103  template <typename T, precision P, template<typename> class vecType>
+
104  GLM_FUNC_QUALIFIER vecType<T, P> taylorInvSqrt(vecType<T, P> const & r)
+
105  {
+
106  return T(1.79284291400159) - T(0.85373472095314) * r;
+
107  }
+
108 */
+
109 
+
110  template <typename T, precision P>
+
111  GLM_FUNC_QUALIFIER tvec2<T, P> fade(tvec2<T, P> const & t)
+
112  {
+
113  return (t * t * t) * (t * (t * T(6) - T(15)) + T(10));
+
114  }
+
115 
+
116  template <typename T, precision P>
+
117  GLM_FUNC_QUALIFIER tvec3<T, P> fade(tvec3<T, P> const & t)
+
118  {
+
119  return (t * t * t) * (t * (t * T(6) - T(15)) + T(10));
+
120  }
+
121 
+
122  template <typename T, precision P>
+
123  GLM_FUNC_QUALIFIER tvec4<T, P> fade(tvec4<T, P> const & t)
+
124  {
+
125  return (t * t * t) * (t * (t * T(6) - T(15)) + T(10));
+
126  }
+
127 /*
+
128  template <typename T, precision P, template <typename> class vecType>
+
129  GLM_FUNC_QUALIFIER vecType<T, P> fade(vecType<T, P> const & t)
+
130  {
+
131  return (t * t * t) * (t * (t * T(6) - T(15)) + T(10));
+
132  }
+
133 */
+
134 }//namespace detail
+
135 }//namespace glm
+
136 
+
GLM_FUNC_DECL vecType< T, P > floor(vecType< T, P > const &x)
Returns a value equal to the nearest integer that is less then or equal to x.
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00004.html b/external/glm/doc/api/a00004.html new file mode 100644 index 0000000..3963397 --- /dev/null +++ b/external/glm/doc/api/a00004.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: _swizzle.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
_swizzle.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2006-04-20 / 2011-02-16
+
Author
Christophe Riccio
+ +

Definition in file _swizzle.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00004_source.html b/external/glm/doc/api/a00004_source.html new file mode 100644 index 0000000..70a81ea --- /dev/null +++ b/external/glm/doc/api/a00004_source.html @@ -0,0 +1,864 @@ + + + + + + +0.9.7: _swizzle.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
_swizzle.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 namespace glm{
+
36 namespace detail
+
37 {
+
38  // Internal class for implementing swizzle operators
+
39  template <typename T, int N>
+
40  struct _swizzle_base0
+
41  {
+
42  typedef T value_type;
+
43 
+
44  protected:
+
45  GLM_FUNC_QUALIFIER value_type& elem (size_t i) { return (reinterpret_cast<value_type*>(_buffer))[i]; }
+
46  GLM_FUNC_QUALIFIER const value_type& elem (size_t i) const { return (reinterpret_cast<const value_type*>(_buffer))[i]; }
+
47 
+
48  // Use an opaque buffer to *ensure* the compiler doesn't call a constructor.
+
49  // The size 1 buffer is assumed to aligned to the actual members so that the
+
50  // elem()
+
51  char _buffer[1];
+
52  };
+
53 
+
54  template <typename T, precision P, typename V, int E0, int E1, int E2, int E3, int N>
+
55  struct _swizzle_base1 : public _swizzle_base0<T, N>
+
56  {
+
57  };
+
58 
+
59  template <typename T, precision P, typename V, int E0, int E1>
+
60  struct _swizzle_base1<T, P, V,E0,E1,-1,-2,2> : public _swizzle_base0<T, 2>
+
61  {
+
62  GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1)); }
+
63  };
+
64 
+
65  template <typename T, precision P, typename V, int E0, int E1, int E2>
+
66  struct _swizzle_base1<T, P, V,E0,E1,E2,-1,3> : public _swizzle_base0<T, 3>
+
67  {
+
68  GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2)); }
+
69  };
+
70 
+
71  template <typename T, precision P, typename V, int E0, int E1, int E2, int E3>
+
72  struct _swizzle_base1<T, P, V,E0,E1,E2,E3,4> : public _swizzle_base0<T, 4>
+
73  {
+
74  GLM_FUNC_QUALIFIER V operator ()() const { return V(this->elem(E0), this->elem(E1), this->elem(E2), this->elem(E3)); }
+
75  };
+
76 
+
77  // Internal class for implementing swizzle operators
+
78  /*
+
79  Template parameters:
+
80 
+
81  ValueType = type of scalar values (e.g. float, double)
+
82  VecType = class the swizzle is applies to (e.g. tvec3<float>)
+
83  N = number of components in the vector (e.g. 3)
+
84  E0...3 = what index the n-th element of this swizzle refers to in the unswizzled vec
+
85 
+
86  DUPLICATE_ELEMENTS = 1 if there is a repeated element, 0 otherwise (used to specialize swizzles
+
87  containing duplicate elements so that they cannot be used as r-values).
+
88  */
+
89  template <typename ValueType, precision P, typename VecType, int N, int E0, int E1, int E2, int E3, int DUPLICATE_ELEMENTS>
+
90  struct _swizzle_base2 : public _swizzle_base1<ValueType, P, VecType,E0,E1,E2,E3,N>
+
91  {
+
92  typedef VecType vec_type;
+
93  typedef ValueType value_type;
+
94 
+
95  GLM_FUNC_QUALIFIER _swizzle_base2& operator= (const ValueType& t)
+
96  {
+
97  for (int i = 0; i < N; ++i)
+
98  (*this)[i] = t;
+
99  return *this;
+
100  }
+
101 
+
102  GLM_FUNC_QUALIFIER _swizzle_base2& operator= (const VecType& that)
+
103  {
+
104  struct op {
+
105  GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e = t; }
+
106  };
+
107  _apply_op(that, op());
+
108  return *this;
+
109  }
+
110 
+
111  GLM_FUNC_QUALIFIER void operator -= (const VecType& that)
+
112  {
+
113  struct op {
+
114  GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e -= t; }
+
115  };
+
116  _apply_op(that, op());
+
117  }
+
118 
+
119  GLM_FUNC_QUALIFIER void operator += (const VecType& that)
+
120  {
+
121  struct op {
+
122  GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e += t; }
+
123  };
+
124  _apply_op(that, op());
+
125  }
+
126 
+
127  GLM_FUNC_QUALIFIER void operator *= (const VecType& that)
+
128  {
+
129  struct op {
+
130  GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e *= t; }
+
131  };
+
132  _apply_op(that, op());
+
133  }
+
134 
+
135  GLM_FUNC_QUALIFIER void operator /= (const VecType& that)
+
136  {
+
137  struct op {
+
138  GLM_FUNC_QUALIFIER void operator() (value_type& e, value_type& t) { e /= t; }
+
139  };
+
140  _apply_op(that, op());
+
141  }
+
142 
+
143  GLM_FUNC_QUALIFIER value_type& operator[] (size_t i)
+
144  {
+
145  const int offset_dst[4] = { E0, E1, E2, E3 };
+
146  return this->elem(offset_dst[i]);
+
147  }
+
148  GLM_FUNC_QUALIFIER value_type operator[] (size_t i) const
+
149  {
+
150  const int offset_dst[4] = { E0, E1, E2, E3 };
+
151  return this->elem(offset_dst[i]);
+
152  }
+
153 
+
154  protected:
+
155  template <typename T>
+
156  GLM_FUNC_QUALIFIER void _apply_op(const VecType& that, T op)
+
157  {
+
158  // Make a copy of the data in this == &that.
+
159  // The copier should optimize out the copy in cases where the function is
+
160  // properly inlined and the copy is not necessary.
+
161  ValueType t[N];
+
162  for (int i = 0; i < N; ++i)
+
163  t[i] = that[i];
+
164  for (int i = 0; i < N; ++i)
+
165  op( (*this)[i], t[i] );
+
166  }
+
167  };
+
168 
+
169  // Specialization for swizzles containing duplicate elements. These cannot be modified.
+
170  template <typename ValueType, precision P, typename VecType, int N, int E0, int E1, int E2, int E3>
+
171  struct _swizzle_base2<ValueType, P, VecType,N,E0,E1,E2,E3,1> : public _swizzle_base1<ValueType, P, VecType,E0,E1,E2,E3,N>
+
172  {
+
173  typedef VecType vec_type;
+
174  typedef ValueType value_type;
+
175 
+
176  struct Stub {};
+
177  GLM_FUNC_QUALIFIER _swizzle_base2& operator= (Stub const &) { return *this; }
+
178 
+
179  GLM_FUNC_QUALIFIER value_type operator[] (size_t i) const
+
180  {
+
181  const int offset_dst[4] = { E0, E1, E2, E3 };
+
182  return this->elem(offset_dst[i]);
+
183  }
+
184  };
+
185 
+
186  template <int N,typename ValueType, precision P, typename VecType, int E0,int E1,int E2,int E3>
+
187  struct _swizzle : public _swizzle_base2<ValueType, P, VecType, N, E0, E1, E2, E3, (E0==E1||E0==E2||E0==E3||E1==E2||E1==E3||E2==E3)>
+
188  {
+
189  typedef _swizzle_base2<ValueType, P, VecType,N,E0,E1,E2,E3,(E0==E1||E0==E2||E0==E3||E1==E2||E1==E3||E2==E3)> base_type;
+
190 
+
191  using base_type::operator=;
+
192 
+
193  GLM_FUNC_QUALIFIER operator VecType () const { return (*this)(); }
+
194  };
+
195 
+
196 //
+
197 // To prevent the C++ syntax from getting entirely overwhelming, define some alias macros
+
198 //
+
199 #define _GLM_SWIZZLE_TEMPLATE1 template <int N, typename T, precision P, typename V, int E0, int E1, int E2, int E3>
+
200 #define _GLM_SWIZZLE_TEMPLATE2 template <int N, typename T, precision P, typename V, int E0, int E1, int E2, int E3, int F0, int F1, int F2, int F3>
+
201 #define _GLM_SWIZZLE_TYPE1 _swizzle<N, T, P, V, E0, E1, E2, E3>
+
202 #define _GLM_SWIZZLE_TYPE2 _swizzle<N, T, P, V, F0, F1, F2, F3>
+
203 
+
204 //
+
205 // Wrapper for a binary operator (e.g. u.yy + v.zy)
+
206 //
+
207 #define _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \
+
208  _GLM_SWIZZLE_TEMPLATE2 \
+
209  GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \
+
210  { \
+
211  return a() OPERAND b(); \
+
212  } \
+
213  _GLM_SWIZZLE_TEMPLATE1 \
+
214  GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const V& b) \
+
215  { \
+
216  return a() OPERAND b; \
+
217  } \
+
218  _GLM_SWIZZLE_TEMPLATE1 \
+
219  GLM_FUNC_QUALIFIER V operator OPERAND ( const V& a, const _GLM_SWIZZLE_TYPE1& b) \
+
220  { \
+
221  return a OPERAND b(); \
+
222  }
+
223 
+
224 //
+
225 // Wrapper for a operand between a swizzle and a binary (e.g. 1.0f - u.xyz)
+
226 //
+
227 #define _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \
+
228  _GLM_SWIZZLE_TEMPLATE1 \
+
229  GLM_FUNC_QUALIFIER V operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const T& b) \
+
230  { \
+
231  return a() OPERAND b; \
+
232  } \
+
233  _GLM_SWIZZLE_TEMPLATE1 \
+
234  GLM_FUNC_QUALIFIER V operator OPERAND ( const T& a, const _GLM_SWIZZLE_TYPE1& b) \
+
235  { \
+
236  return a OPERAND b(); \
+
237  }
+
238 
+
239 //
+
240 // Macro for wrapping a function taking one argument (e.g. abs())
+
241 //
+
242 #define _GLM_SWIZZLE_FUNCTION_1_ARGS(RETURN_TYPE,FUNCTION) \
+
243  _GLM_SWIZZLE_TEMPLATE1 \
+
244  GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a) \
+
245  { \
+
246  return FUNCTION(a()); \
+
247  }
+
248 
+
249 //
+
250 // Macro for wrapping a function taking two vector arguments (e.g. dot()).
+
251 //
+
252 #define _GLM_SWIZZLE_FUNCTION_2_ARGS(RETURN_TYPE,FUNCTION) \
+
253  _GLM_SWIZZLE_TEMPLATE2 \
+
254  GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \
+
255  { \
+
256  return FUNCTION(a(), b()); \
+
257  } \
+
258  _GLM_SWIZZLE_TEMPLATE1 \
+
259  GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b) \
+
260  { \
+
261  return FUNCTION(a(), b()); \
+
262  } \
+
263  _GLM_SWIZZLE_TEMPLATE1 \
+
264  GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename V& b) \
+
265  { \
+
266  return FUNCTION(a(), b); \
+
267  } \
+
268  _GLM_SWIZZLE_TEMPLATE1 \
+
269  GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const V& a, const _GLM_SWIZZLE_TYPE1& b) \
+
270  { \
+
271  return FUNCTION(a, b()); \
+
272  }
+
273 
+
274 //
+
275 // Macro for wrapping a function take 2 vec arguments followed by a scalar (e.g. mix()).
+
276 //
+
277 #define _GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(RETURN_TYPE,FUNCTION) \
+
278  _GLM_SWIZZLE_TEMPLATE2 \
+
279  GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b, const T& c) \
+
280  { \
+
281  return FUNCTION(a(), b(), c); \
+
282  } \
+
283  _GLM_SWIZZLE_TEMPLATE1 \
+
284  GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \
+
285  { \
+
286  return FUNCTION(a(), b(), c); \
+
287  } \
+
288  _GLM_SWIZZLE_TEMPLATE1 \
+
289  GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename S0::vec_type& b, const T& c)\
+
290  { \
+
291  return FUNCTION(a(), b, c); \
+
292  } \
+
293  _GLM_SWIZZLE_TEMPLATE1 \
+
294  GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const typename V& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \
+
295  { \
+
296  return FUNCTION(a, b(), c); \
+
297  }
+
298 
+
299 }//namespace detail
+
300 }//namespace glm
+
301 
+
302 namespace glm
+
303 {
+
304  namespace detail
+
305  {
+
306  _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(-)
+
307  _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(*)
+
308  _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(+)
+
309  _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(-)
+
310  _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(*)
+
311  _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(/)
+
312  }
+
313 
+
314  //
+
315  // Swizzles are distinct types from the unswizzled type. The below macros will
+
316  // provide template specializations for the swizzle types for the given functions
+
317  // so that the compiler does not have any ambiguity to choosing how to handle
+
318  // the function.
+
319  //
+
320  // The alternative is to use the operator()() when calling the function in order
+
321  // to explicitly convert the swizzled type to the unswizzled type.
+
322  //
+
323 
+
324  //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, abs);
+
325  //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acos);
+
326  //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acosh);
+
327  //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, all);
+
328  //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, any);
+
329 
+
330  //_GLM_SWIZZLE_FUNCTION_2_ARGS(value_type, dot);
+
331  //_GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, cross);
+
332  //_GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, step);
+
333  //_GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(vec_type, mix);
+
334 }
+
335 
+
336 #define _GLM_SWIZZLE2_2_MEMBERS(T, P, V, E0,E1) \
+
337  struct { detail::_swizzle<2, T, P, V<T, P>, 0,0,-1,-2> E0 ## E0; }; \
+
338  struct { detail::_swizzle<2, T, P, V<T, P>, 0,1,-1,-2> E0 ## E1; }; \
+
339  struct { detail::_swizzle<2, T, P, V<T, P>, 1,0,-1,-2> E1 ## E0; }; \
+
340  struct { detail::_swizzle<2, T, P, V<T, P>, 1,1,-1,-2> E1 ## E1; };
+
341 
+
342 #define _GLM_SWIZZLE2_3_MEMBERS(T, P, V, E0,E1) \
+
343  struct { detail::_swizzle<3,T, P, V<T, P>, 0,0,0,-1> E0 ## E0 ## E0; }; \
+
344  struct { detail::_swizzle<3,T, P, V<T, P>, 0,0,1,-1> E0 ## E0 ## E1; }; \
+
345  struct { detail::_swizzle<3,T, P, V<T, P>, 0,1,0,-1> E0 ## E1 ## E0; }; \
+
346  struct { detail::_swizzle<3,T, P, V<T, P>, 0,1,1,-1> E0 ## E1 ## E1; }; \
+
347  struct { detail::_swizzle<3,T, P, V<T, P>, 1,0,0,-1> E1 ## E0 ## E0; }; \
+
348  struct { detail::_swizzle<3,T, P, V<T, P>, 1,0,1,-1> E1 ## E0 ## E1; }; \
+
349  struct { detail::_swizzle<3,T, P, V<T, P>, 1,1,0,-1> E1 ## E1 ## E0; }; \
+
350  struct { detail::_swizzle<3,T, P, V<T, P>, 1,1,1,-1> E1 ## E1 ## E1; };
+
351 
+
352 #define _GLM_SWIZZLE2_4_MEMBERS(T, P, V, E0,E1) \
+
353  struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
+
354  struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
+
355  struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \
+
356  struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \
+
357  struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \
+
358  struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \
+
359  struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \
+
360  struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \
+
361  struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \
+
362  struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \
+
363  struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \
+
364  struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \
+
365  struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \
+
366  struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \
+
367  struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \
+
368  struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,1,1> E1 ## E1 ## E1 ## E1; };
+
369 
+
370 #define _GLM_SWIZZLE3_2_MEMBERS(T, P, V, E0,E1,E2) \
+
371  struct { detail::_swizzle<2,T, P, V<T, P>, 0,0,-1,-2> E0 ## E0; }; \
+
372  struct { detail::_swizzle<2,T, P, V<T, P>, 0,1,-1,-2> E0 ## E1; }; \
+
373  struct { detail::_swizzle<2,T, P, V<T, P>, 0,2,-1,-2> E0 ## E2; }; \
+
374  struct { detail::_swizzle<2,T, P, V<T, P>, 1,0,-1,-2> E1 ## E0; }; \
+
375  struct { detail::_swizzle<2,T, P, V<T, P>, 1,1,-1,-2> E1 ## E1; }; \
+
376  struct { detail::_swizzle<2,T, P, V<T, P>, 1,2,-1,-2> E1 ## E2; }; \
+
377  struct { detail::_swizzle<2,T, P, V<T, P>, 2,0,-1,-2> E2 ## E0; }; \
+
378  struct { detail::_swizzle<2,T, P, V<T, P>, 2,1,-1,-2> E2 ## E1; }; \
+
379  struct { detail::_swizzle<2,T, P, V<T, P>, 2,2,-1,-2> E2 ## E2; };
+
380 
+
381 #define _GLM_SWIZZLE3_3_MEMBERS(T, P, V ,E0,E1,E2) \
+
382  struct { detail::_swizzle<3,T,P, V<T, P>, 0,0,0,-1> E0 ## E0 ## E0; }; \
+
383  struct { detail::_swizzle<3,T,P, V<T, P>, 0,0,1,-1> E0 ## E0 ## E1; }; \
+
384  struct { detail::_swizzle<3,T,P, V<T, P>, 0,0,2,-1> E0 ## E0 ## E2; }; \
+
385  struct { detail::_swizzle<3,T,P, V<T, P>, 0,1,0,-1> E0 ## E1 ## E0; }; \
+
386  struct { detail::_swizzle<3,T,P, V<T, P>, 0,1,1,-1> E0 ## E1 ## E1; }; \
+
387  struct { detail::_swizzle<3,T,P, V<T, P>, 0,1,2,-1> E0 ## E1 ## E2; }; \
+
388  struct { detail::_swizzle<3,T,P, V<T, P>, 0,2,0,-1> E0 ## E2 ## E0; }; \
+
389  struct { detail::_swizzle<3,T,P, V<T, P>, 0,2,1,-1> E0 ## E2 ## E1; }; \
+
390  struct { detail::_swizzle<3,T,P, V<T, P>, 0,2,2,-1> E0 ## E2 ## E2; }; \
+
391  struct { detail::_swizzle<3,T,P, V<T, P>, 1,0,0,-1> E1 ## E0 ## E0; }; \
+
392  struct { detail::_swizzle<3,T,P, V<T, P>, 1,0,1,-1> E1 ## E0 ## E1; }; \
+
393  struct { detail::_swizzle<3,T,P, V<T, P>, 1,0,2,-1> E1 ## E0 ## E2; }; \
+
394  struct { detail::_swizzle<3,T,P, V<T, P>, 1,1,0,-1> E1 ## E1 ## E0; }; \
+
395  struct { detail::_swizzle<3,T,P, V<T, P>, 1,1,1,-1> E1 ## E1 ## E1; }; \
+
396  struct { detail::_swizzle<3,T,P, V<T, P>, 1,1,2,-1> E1 ## E1 ## E2; }; \
+
397  struct { detail::_swizzle<3,T,P, V<T, P>, 1,2,0,-1> E1 ## E2 ## E0; }; \
+
398  struct { detail::_swizzle<3,T,P, V<T, P>, 1,2,1,-1> E1 ## E2 ## E1; }; \
+
399  struct { detail::_swizzle<3,T,P, V<T, P>, 1,2,2,-1> E1 ## E2 ## E2; }; \
+
400  struct { detail::_swizzle<3,T,P, V<T, P>, 2,0,0,-1> E2 ## E0 ## E0; }; \
+
401  struct { detail::_swizzle<3,T,P, V<T, P>, 2,0,1,-1> E2 ## E0 ## E1; }; \
+
402  struct { detail::_swizzle<3,T,P, V<T, P>, 2,0,2,-1> E2 ## E0 ## E2; }; \
+
403  struct { detail::_swizzle<3,T,P, V<T, P>, 2,1,0,-1> E2 ## E1 ## E0; }; \
+
404  struct { detail::_swizzle<3,T,P, V<T, P>, 2,1,1,-1> E2 ## E1 ## E1; }; \
+
405  struct { detail::_swizzle<3,T,P, V<T, P>, 2,1,2,-1> E2 ## E1 ## E2; }; \
+
406  struct { detail::_swizzle<3,T,P, V<T, P>, 2,2,0,-1> E2 ## E2 ## E0; }; \
+
407  struct { detail::_swizzle<3,T,P, V<T, P>, 2,2,1,-1> E2 ## E2 ## E1; }; \
+
408  struct { detail::_swizzle<3,T,P, V<T, P>, 2,2,2,-1> E2 ## E2 ## E2; };
+
409 
+
410 #define _GLM_SWIZZLE3_4_MEMBERS(T, P, V, E0,E1,E2) \
+
411  struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
+
412  struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
+
413  struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \
+
414  struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \
+
415  struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \
+
416  struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \
+
417  struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \
+
418  struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \
+
419  struct { detail::_swizzle<4,T, P, V<T, P>, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \
+
420  struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \
+
421  struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \
+
422  struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \
+
423  struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \
+
424  struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \
+
425  struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \
+
426  struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \
+
427  struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \
+
428  struct { detail::_swizzle<4,T, P, V<T, P>, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \
+
429  struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \
+
430  struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \
+
431  struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \
+
432  struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \
+
433  struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \
+
434  struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \
+
435  struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \
+
436  struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \
+
437  struct { detail::_swizzle<4,T, P, V<T, P>, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \
+
438  struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \
+
439  struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \
+
440  struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \
+
441  struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \
+
442  struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \
+
443  struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \
+
444  struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \
+
445  struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \
+
446  struct { detail::_swizzle<4,T, P, V<T, P>, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \
+
447  struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \
+
448  struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \
+
449  struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \
+
450  struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \
+
451  struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \
+
452  struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \
+
453  struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \
+
454  struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \
+
455  struct { detail::_swizzle<4,T, P, V<T, P>, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \
+
456  struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \
+
457  struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \
+
458  struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \
+
459  struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \
+
460  struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \
+
461  struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \
+
462  struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \
+
463  struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \
+
464  struct { detail::_swizzle<4,T, P, V<T, P>, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \
+
465  struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \
+
466  struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \
+
467  struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \
+
468  struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \
+
469  struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \
+
470  struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \
+
471  struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \
+
472  struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \
+
473  struct { detail::_swizzle<4,T, P, V<T, P>, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \
+
474  struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \
+
475  struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \
+
476  struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \
+
477  struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \
+
478  struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \
+
479  struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \
+
480  struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \
+
481  struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \
+
482  struct { detail::_swizzle<4,T, P, V<T, P>, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \
+
483  struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \
+
484  struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \
+
485  struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \
+
486  struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \
+
487  struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \
+
488  struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \
+
489  struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \
+
490  struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \
+
491  struct { detail::_swizzle<4,T, P, V<T, P>, 2,2,2,2> E2 ## E2 ## E2 ## E2; };
+
492 
+
493 #define _GLM_SWIZZLE4_2_MEMBERS(T, P, V, E0,E1,E2,E3) \
+
494  struct { detail::_swizzle<2,T, P, V<T, P>, 0,0,-1,-2> E0 ## E0; }; \
+
495  struct { detail::_swizzle<2,T, P, V<T, P>, 0,1,-1,-2> E0 ## E1; }; \
+
496  struct { detail::_swizzle<2,T, P, V<T, P>, 0,2,-1,-2> E0 ## E2; }; \
+
497  struct { detail::_swizzle<2,T, P, V<T, P>, 0,3,-1,-2> E0 ## E3; }; \
+
498  struct { detail::_swizzle<2,T, P, V<T, P>, 1,0,-1,-2> E1 ## E0; }; \
+
499  struct { detail::_swizzle<2,T, P, V<T, P>, 1,1,-1,-2> E1 ## E1; }; \
+
500  struct { detail::_swizzle<2,T, P, V<T, P>, 1,2,-1,-2> E1 ## E2; }; \
+
501  struct { detail::_swizzle<2,T, P, V<T, P>, 1,3,-1,-2> E1 ## E3; }; \
+
502  struct { detail::_swizzle<2,T, P, V<T, P>, 2,0,-1,-2> E2 ## E0; }; \
+
503  struct { detail::_swizzle<2,T, P, V<T, P>, 2,1,-1,-2> E2 ## E1; }; \
+
504  struct { detail::_swizzle<2,T, P, V<T, P>, 2,2,-1,-2> E2 ## E2; }; \
+
505  struct { detail::_swizzle<2,T, P, V<T, P>, 2,3,-1,-2> E2 ## E3; }; \
+
506  struct { detail::_swizzle<2,T, P, V<T, P>, 3,0,-1,-2> E3 ## E0; }; \
+
507  struct { detail::_swizzle<2,T, P, V<T, P>, 3,1,-1,-2> E3 ## E1; }; \
+
508  struct { detail::_swizzle<2,T, P, V<T, P>, 3,2,-1,-2> E3 ## E2; }; \
+
509  struct { detail::_swizzle<2,T, P, V<T, P>, 3,3,-1,-2> E3 ## E3; };
+
510 
+
511 #define _GLM_SWIZZLE4_3_MEMBERS(T,P, V, E0,E1,E2,E3) \
+
512  struct { detail::_swizzle<3,T,P, V<T, P>, 0,0,0,-1> E0 ## E0 ## E0; }; \
+
513  struct { detail::_swizzle<3,T,P, V<T, P>, 0,0,1,-1> E0 ## E0 ## E1; }; \
+
514  struct { detail::_swizzle<3,T,P, V<T, P>, 0,0,2,-1> E0 ## E0 ## E2; }; \
+
515  struct { detail::_swizzle<3,T,P, V<T, P>, 0,0,3,-1> E0 ## E0 ## E3; }; \
+
516  struct { detail::_swizzle<3,T,P, V<T, P>, 0,1,0,-1> E0 ## E1 ## E0; }; \
+
517  struct { detail::_swizzle<3,T,P, V<T, P>, 0,1,1,-1> E0 ## E1 ## E1; }; \
+
518  struct { detail::_swizzle<3,T,P, V<T, P>, 0,1,2,-1> E0 ## E1 ## E2; }; \
+
519  struct { detail::_swizzle<3,T,P, V<T, P>, 0,1,3,-1> E0 ## E1 ## E3; }; \
+
520  struct { detail::_swizzle<3,T,P, V<T, P>, 0,2,0,-1> E0 ## E2 ## E0; }; \
+
521  struct { detail::_swizzle<3,T,P, V<T, P>, 0,2,1,-1> E0 ## E2 ## E1; }; \
+
522  struct { detail::_swizzle<3,T,P, V<T, P>, 0,2,2,-1> E0 ## E2 ## E2; }; \
+
523  struct { detail::_swizzle<3,T,P, V<T, P>, 0,2,3,-1> E0 ## E2 ## E3; }; \
+
524  struct { detail::_swizzle<3,T,P, V<T, P>, 0,3,0,-1> E0 ## E3 ## E0; }; \
+
525  struct { detail::_swizzle<3,T,P, V<T, P>, 0,3,1,-1> E0 ## E3 ## E1; }; \
+
526  struct { detail::_swizzle<3,T,P, V<T, P>, 0,3,2,-1> E0 ## E3 ## E2; }; \
+
527  struct { detail::_swizzle<3,T,P, V<T, P>, 0,3,3,-1> E0 ## E3 ## E3; }; \
+
528  struct { detail::_swizzle<3,T,P, V<T, P>, 1,0,0,-1> E1 ## E0 ## E0; }; \
+
529  struct { detail::_swizzle<3,T,P, V<T, P>, 1,0,1,-1> E1 ## E0 ## E1; }; \
+
530  struct { detail::_swizzle<3,T,P, V<T, P>, 1,0,2,-1> E1 ## E0 ## E2; }; \
+
531  struct { detail::_swizzle<3,T,P, V<T, P>, 1,0,3,-1> E1 ## E0 ## E3; }; \
+
532  struct { detail::_swizzle<3,T,P, V<T, P>, 1,1,0,-1> E1 ## E1 ## E0; }; \
+
533  struct { detail::_swizzle<3,T,P, V<T, P>, 1,1,1,-1> E1 ## E1 ## E1; }; \
+
534  struct { detail::_swizzle<3,T,P, V<T, P>, 1,1,2,-1> E1 ## E1 ## E2; }; \
+
535  struct { detail::_swizzle<3,T,P, V<T, P>, 1,1,3,-1> E1 ## E1 ## E3; }; \
+
536  struct { detail::_swizzle<3,T,P, V<T, P>, 1,2,0,-1> E1 ## E2 ## E0; }; \
+
537  struct { detail::_swizzle<3,T,P, V<T, P>, 1,2,1,-1> E1 ## E2 ## E1; }; \
+
538  struct { detail::_swizzle<3,T,P, V<T, P>, 1,2,2,-1> E1 ## E2 ## E2; }; \
+
539  struct { detail::_swizzle<3,T,P, V<T, P>, 1,2,3,-1> E1 ## E2 ## E3; }; \
+
540  struct { detail::_swizzle<3,T,P, V<T, P>, 1,3,0,-1> E1 ## E3 ## E0; }; \
+
541  struct { detail::_swizzle<3,T,P, V<T, P>, 1,3,1,-1> E1 ## E3 ## E1; }; \
+
542  struct { detail::_swizzle<3,T,P, V<T, P>, 1,3,2,-1> E1 ## E3 ## E2; }; \
+
543  struct { detail::_swizzle<3,T,P, V<T, P>, 1,3,3,-1> E1 ## E3 ## E3; }; \
+
544  struct { detail::_swizzle<3,T,P, V<T, P>, 2,0,0,-1> E2 ## E0 ## E0; }; \
+
545  struct { detail::_swizzle<3,T,P, V<T, P>, 2,0,1,-1> E2 ## E0 ## E1; }; \
+
546  struct { detail::_swizzle<3,T,P, V<T, P>, 2,0,2,-1> E2 ## E0 ## E2; }; \
+
547  struct { detail::_swizzle<3,T,P, V<T, P>, 2,0,3,-1> E2 ## E0 ## E3; }; \
+
548  struct { detail::_swizzle<3,T,P, V<T, P>, 2,1,0,-1> E2 ## E1 ## E0; }; \
+
549  struct { detail::_swizzle<3,T,P, V<T, P>, 2,1,1,-1> E2 ## E1 ## E1; }; \
+
550  struct { detail::_swizzle<3,T,P, V<T, P>, 2,1,2,-1> E2 ## E1 ## E2; }; \
+
551  struct { detail::_swizzle<3,T,P, V<T, P>, 2,1,3,-1> E2 ## E1 ## E3; }; \
+
552  struct { detail::_swizzle<3,T,P, V<T, P>, 2,2,0,-1> E2 ## E2 ## E0; }; \
+
553  struct { detail::_swizzle<3,T,P, V<T, P>, 2,2,1,-1> E2 ## E2 ## E1; }; \
+
554  struct { detail::_swizzle<3,T,P, V<T, P>, 2,2,2,-1> E2 ## E2 ## E2; }; \
+
555  struct { detail::_swizzle<3,T,P, V<T, P>, 2,2,3,-1> E2 ## E2 ## E3; }; \
+
556  struct { detail::_swizzle<3,T,P, V<T, P>, 2,3,0,-1> E2 ## E3 ## E0; }; \
+
557  struct { detail::_swizzle<3,T,P, V<T, P>, 2,3,1,-1> E2 ## E3 ## E1; }; \
+
558  struct { detail::_swizzle<3,T,P, V<T, P>, 2,3,2,-1> E2 ## E3 ## E2; }; \
+
559  struct { detail::_swizzle<3,T,P, V<T, P>, 2,3,3,-1> E2 ## E3 ## E3; }; \
+
560  struct { detail::_swizzle<3,T,P, V<T, P>, 3,0,0,-1> E3 ## E0 ## E0; }; \
+
561  struct { detail::_swizzle<3,T,P, V<T, P>, 3,0,1,-1> E3 ## E0 ## E1; }; \
+
562  struct { detail::_swizzle<3,T,P, V<T, P>, 3,0,2,-1> E3 ## E0 ## E2; }; \
+
563  struct { detail::_swizzle<3,T,P, V<T, P>, 3,0,3,-1> E3 ## E0 ## E3; }; \
+
564  struct { detail::_swizzle<3,T,P, V<T, P>, 3,1,0,-1> E3 ## E1 ## E0; }; \
+
565  struct { detail::_swizzle<3,T,P, V<T, P>, 3,1,1,-1> E3 ## E1 ## E1; }; \
+
566  struct { detail::_swizzle<3,T,P, V<T, P>, 3,1,2,-1> E3 ## E1 ## E2; }; \
+
567  struct { detail::_swizzle<3,T,P, V<T, P>, 3,1,3,-1> E3 ## E1 ## E3; }; \
+
568  struct { detail::_swizzle<3,T,P, V<T, P>, 3,2,0,-1> E3 ## E2 ## E0; }; \
+
569  struct { detail::_swizzle<3,T,P, V<T, P>, 3,2,1,-1> E3 ## E2 ## E1; }; \
+
570  struct { detail::_swizzle<3,T,P, V<T, P>, 3,2,2,-1> E3 ## E2 ## E2; }; \
+
571  struct { detail::_swizzle<3,T,P, V<T, P>, 3,2,3,-1> E3 ## E2 ## E3; }; \
+
572  struct { detail::_swizzle<3,T,P, V<T, P>, 3,3,0,-1> E3 ## E3 ## E0; }; \
+
573  struct { detail::_swizzle<3,T,P, V<T, P>, 3,3,1,-1> E3 ## E3 ## E1; }; \
+
574  struct { detail::_swizzle<3,T,P, V<T, P>, 3,3,2,-1> E3 ## E3 ## E2; }; \
+
575  struct { detail::_swizzle<3,T,P, V<T, P>, 3,3,3,-1> E3 ## E3 ## E3; };
+
576 
+
577 #define _GLM_SWIZZLE4_4_MEMBERS(T, P, V, E0,E1,E2,E3) \
+
578  struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
+
579  struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
+
580  struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \
+
581  struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,0,3> E0 ## E0 ## E0 ## E3; }; \
+
582  struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \
+
583  struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \
+
584  struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \
+
585  struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,1,3> E0 ## E0 ## E1 ## E3; }; \
+
586  struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \
+
587  struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \
+
588  struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \
+
589  struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,2,3> E0 ## E0 ## E2 ## E3; }; \
+
590  struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,3,0> E0 ## E0 ## E3 ## E0; }; \
+
591  struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,3,1> E0 ## E0 ## E3 ## E1; }; \
+
592  struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,3,2> E0 ## E0 ## E3 ## E2; }; \
+
593  struct { detail::_swizzle<4, T, P, V<T, P>, 0,0,3,3> E0 ## E0 ## E3 ## E3; }; \
+
594  struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \
+
595  struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \
+
596  struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \
+
597  struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,0,3> E0 ## E1 ## E0 ## E3; }; \
+
598  struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \
+
599  struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \
+
600  struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \
+
601  struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,1,3> E0 ## E1 ## E1 ## E3; }; \
+
602  struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \
+
603  struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \
+
604  struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \
+
605  struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,2,3> E0 ## E1 ## E2 ## E3; }; \
+
606  struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,3,0> E0 ## E1 ## E3 ## E0; }; \
+
607  struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,3,1> E0 ## E1 ## E3 ## E1; }; \
+
608  struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,3,2> E0 ## E1 ## E3 ## E2; }; \
+
609  struct { detail::_swizzle<4, T, P, V<T, P>, 0,1,3,3> E0 ## E1 ## E3 ## E3; }; \
+
610  struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \
+
611  struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \
+
612  struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \
+
613  struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,0,3> E0 ## E2 ## E0 ## E3; }; \
+
614  struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \
+
615  struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \
+
616  struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \
+
617  struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,1,3> E0 ## E2 ## E1 ## E3; }; \
+
618  struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \
+
619  struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \
+
620  struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \
+
621  struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,2,3> E0 ## E2 ## E2 ## E3; }; \
+
622  struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,3,0> E0 ## E2 ## E3 ## E0; }; \
+
623  struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,3,1> E0 ## E2 ## E3 ## E1; }; \
+
624  struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,3,2> E0 ## E2 ## E3 ## E2; }; \
+
625  struct { detail::_swizzle<4, T, P, V<T, P>, 0,2,3,3> E0 ## E2 ## E3 ## E3; }; \
+
626  struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,0,0> E0 ## E3 ## E0 ## E0; }; \
+
627  struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,0,1> E0 ## E3 ## E0 ## E1; }; \
+
628  struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,0,2> E0 ## E3 ## E0 ## E2; }; \
+
629  struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,0,3> E0 ## E3 ## E0 ## E3; }; \
+
630  struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,1,0> E0 ## E3 ## E1 ## E0; }; \
+
631  struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,1,1> E0 ## E3 ## E1 ## E1; }; \
+
632  struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,1,2> E0 ## E3 ## E1 ## E2; }; \
+
633  struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,1,3> E0 ## E3 ## E1 ## E3; }; \
+
634  struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,2,0> E0 ## E3 ## E2 ## E0; }; \
+
635  struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,2,1> E0 ## E3 ## E2 ## E1; }; \
+
636  struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,2,2> E0 ## E3 ## E2 ## E2; }; \
+
637  struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,2,3> E0 ## E3 ## E2 ## E3; }; \
+
638  struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,3,0> E0 ## E3 ## E3 ## E0; }; \
+
639  struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,3,1> E0 ## E3 ## E3 ## E1; }; \
+
640  struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,3,2> E0 ## E3 ## E3 ## E2; }; \
+
641  struct { detail::_swizzle<4, T, P, V<T, P>, 0,3,3,3> E0 ## E3 ## E3 ## E3; }; \
+
642  struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \
+
643  struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \
+
644  struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \
+
645  struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,0,3> E1 ## E0 ## E0 ## E3; }; \
+
646  struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \
+
647  struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \
+
648  struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \
+
649  struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,1,3> E1 ## E0 ## E1 ## E3; }; \
+
650  struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \
+
651  struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \
+
652  struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \
+
653  struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,2,3> E1 ## E0 ## E2 ## E3; }; \
+
654  struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,3,0> E1 ## E0 ## E3 ## E0; }; \
+
655  struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,3,1> E1 ## E0 ## E3 ## E1; }; \
+
656  struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,3,2> E1 ## E0 ## E3 ## E2; }; \
+
657  struct { detail::_swizzle<4, T, P, V<T, P>, 1,0,3,3> E1 ## E0 ## E3 ## E3; }; \
+
658  struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \
+
659  struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \
+
660  struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \
+
661  struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,0,3> E1 ## E1 ## E0 ## E3; }; \
+
662  struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \
+
663  struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \
+
664  struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \
+
665  struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,1,3> E1 ## E1 ## E1 ## E3; }; \
+
666  struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \
+
667  struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \
+
668  struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \
+
669  struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,2,3> E1 ## E1 ## E2 ## E3; }; \
+
670  struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,3,0> E1 ## E1 ## E3 ## E0; }; \
+
671  struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,3,1> E1 ## E1 ## E3 ## E1; }; \
+
672  struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,3,2> E1 ## E1 ## E3 ## E2; }; \
+
673  struct { detail::_swizzle<4, T, P, V<T, P>, 1,1,3,3> E1 ## E1 ## E3 ## E3; }; \
+
674  struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \
+
675  struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \
+
676  struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \
+
677  struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,0,3> E1 ## E2 ## E0 ## E3; }; \
+
678  struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \
+
679  struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \
+
680  struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \
+
681  struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,1,3> E1 ## E2 ## E1 ## E3; }; \
+
682  struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \
+
683  struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \
+
684  struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \
+
685  struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,2,3> E1 ## E2 ## E2 ## E3; }; \
+
686  struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,3,0> E1 ## E2 ## E3 ## E0; }; \
+
687  struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,3,1> E1 ## E2 ## E3 ## E1; }; \
+
688  struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,3,2> E1 ## E2 ## E3 ## E2; }; \
+
689  struct { detail::_swizzle<4, T, P, V<T, P>, 1,2,3,3> E1 ## E2 ## E3 ## E3; }; \
+
690  struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,0,0> E1 ## E3 ## E0 ## E0; }; \
+
691  struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,0,1> E1 ## E3 ## E0 ## E1; }; \
+
692  struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,0,2> E1 ## E3 ## E0 ## E2; }; \
+
693  struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,0,3> E1 ## E3 ## E0 ## E3; }; \
+
694  struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,1,0> E1 ## E3 ## E1 ## E0; }; \
+
695  struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,1,1> E1 ## E3 ## E1 ## E1; }; \
+
696  struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,1,2> E1 ## E3 ## E1 ## E2; }; \
+
697  struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,1,3> E1 ## E3 ## E1 ## E3; }; \
+
698  struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,2,0> E1 ## E3 ## E2 ## E0; }; \
+
699  struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,2,1> E1 ## E3 ## E2 ## E1; }; \
+
700  struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,2,2> E1 ## E3 ## E2 ## E2; }; \
+
701  struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,2,3> E1 ## E3 ## E2 ## E3; }; \
+
702  struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,3,0> E1 ## E3 ## E3 ## E0; }; \
+
703  struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,3,1> E1 ## E3 ## E3 ## E1; }; \
+
704  struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,3,2> E1 ## E3 ## E3 ## E2; }; \
+
705  struct { detail::_swizzle<4, T, P, V<T, P>, 1,3,3,3> E1 ## E3 ## E3 ## E3; }; \
+
706  struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \
+
707  struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \
+
708  struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \
+
709  struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,0,3> E2 ## E0 ## E0 ## E3; }; \
+
710  struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \
+
711  struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \
+
712  struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \
+
713  struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,1,3> E2 ## E0 ## E1 ## E3; }; \
+
714  struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \
+
715  struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \
+
716  struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \
+
717  struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,2,3> E2 ## E0 ## E2 ## E3; }; \
+
718  struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,3,0> E2 ## E0 ## E3 ## E0; }; \
+
719  struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,3,1> E2 ## E0 ## E3 ## E1; }; \
+
720  struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,3,2> E2 ## E0 ## E3 ## E2; }; \
+
721  struct { detail::_swizzle<4, T, P, V<T, P>, 2,0,3,3> E2 ## E0 ## E3 ## E3; }; \
+
722  struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \
+
723  struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \
+
724  struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \
+
725  struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,0,3> E2 ## E1 ## E0 ## E3; }; \
+
726  struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \
+
727  struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \
+
728  struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \
+
729  struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,1,3> E2 ## E1 ## E1 ## E3; }; \
+
730  struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \
+
731  struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \
+
732  struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \
+
733  struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,2,3> E2 ## E1 ## E2 ## E3; }; \
+
734  struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,3,0> E2 ## E1 ## E3 ## E0; }; \
+
735  struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,3,1> E2 ## E1 ## E3 ## E1; }; \
+
736  struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,3,2> E2 ## E1 ## E3 ## E2; }; \
+
737  struct { detail::_swizzle<4, T, P, V<T, P>, 2,1,3,3> E2 ## E1 ## E3 ## E3; }; \
+
738  struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \
+
739  struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \
+
740  struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \
+
741  struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,0,3> E2 ## E2 ## E0 ## E3; }; \
+
742  struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \
+
743  struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \
+
744  struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \
+
745  struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,1,3> E2 ## E2 ## E1 ## E3; }; \
+
746  struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \
+
747  struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \
+
748  struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,2,2> E2 ## E2 ## E2 ## E2; }; \
+
749  struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,2,3> E2 ## E2 ## E2 ## E3; }; \
+
750  struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,3,0> E2 ## E2 ## E3 ## E0; }; \
+
751  struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,3,1> E2 ## E2 ## E3 ## E1; }; \
+
752  struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,3,2> E2 ## E2 ## E3 ## E2; }; \
+
753  struct { detail::_swizzle<4, T, P, V<T, P>, 2,2,3,3> E2 ## E2 ## E3 ## E3; }; \
+
754  struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,0,0> E2 ## E3 ## E0 ## E0; }; \
+
755  struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,0,1> E2 ## E3 ## E0 ## E1; }; \
+
756  struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,0,2> E2 ## E3 ## E0 ## E2; }; \
+
757  struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,0,3> E2 ## E3 ## E0 ## E3; }; \
+
758  struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,1,0> E2 ## E3 ## E1 ## E0; }; \
+
759  struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,1,1> E2 ## E3 ## E1 ## E1; }; \
+
760  struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,1,2> E2 ## E3 ## E1 ## E2; }; \
+
761  struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,1,3> E2 ## E3 ## E1 ## E3; }; \
+
762  struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,2,0> E2 ## E3 ## E2 ## E0; }; \
+
763  struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,2,1> E2 ## E3 ## E2 ## E1; }; \
+
764  struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,2,2> E2 ## E3 ## E2 ## E2; }; \
+
765  struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,2,3> E2 ## E3 ## E2 ## E3; }; \
+
766  struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,3,0> E2 ## E3 ## E3 ## E0; }; \
+
767  struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,3,1> E2 ## E3 ## E3 ## E1; }; \
+
768  struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,3,2> E2 ## E3 ## E3 ## E2; }; \
+
769  struct { detail::_swizzle<4, T, P, V<T, P>, 2,3,3,3> E2 ## E3 ## E3 ## E3; }; \
+
770  struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,0,0> E3 ## E0 ## E0 ## E0; }; \
+
771  struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,0,1> E3 ## E0 ## E0 ## E1; }; \
+
772  struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,0,2> E3 ## E0 ## E0 ## E2; }; \
+
773  struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,0,3> E3 ## E0 ## E0 ## E3; }; \
+
774  struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,1,0> E3 ## E0 ## E1 ## E0; }; \
+
775  struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,1,1> E3 ## E0 ## E1 ## E1; }; \
+
776  struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,1,2> E3 ## E0 ## E1 ## E2; }; \
+
777  struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,1,3> E3 ## E0 ## E1 ## E3; }; \
+
778  struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,2,0> E3 ## E0 ## E2 ## E0; }; \
+
779  struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,2,1> E3 ## E0 ## E2 ## E1; }; \
+
780  struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,2,2> E3 ## E0 ## E2 ## E2; }; \
+
781  struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,2,3> E3 ## E0 ## E2 ## E3; }; \
+
782  struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,3,0> E3 ## E0 ## E3 ## E0; }; \
+
783  struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,3,1> E3 ## E0 ## E3 ## E1; }; \
+
784  struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,3,2> E3 ## E0 ## E3 ## E2; }; \
+
785  struct { detail::_swizzle<4, T, P, V<T, P>, 3,0,3,3> E3 ## E0 ## E3 ## E3; }; \
+
786  struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,0,0> E3 ## E1 ## E0 ## E0; }; \
+
787  struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,0,1> E3 ## E1 ## E0 ## E1; }; \
+
788  struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,0,2> E3 ## E1 ## E0 ## E2; }; \
+
789  struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,0,3> E3 ## E1 ## E0 ## E3; }; \
+
790  struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,1,0> E3 ## E1 ## E1 ## E0; }; \
+
791  struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,1,1> E3 ## E1 ## E1 ## E1; }; \
+
792  struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,1,2> E3 ## E1 ## E1 ## E2; }; \
+
793  struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,1,3> E3 ## E1 ## E1 ## E3; }; \
+
794  struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,2,0> E3 ## E1 ## E2 ## E0; }; \
+
795  struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,2,1> E3 ## E1 ## E2 ## E1; }; \
+
796  struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,2,2> E3 ## E1 ## E2 ## E2; }; \
+
797  struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,2,3> E3 ## E1 ## E2 ## E3; }; \
+
798  struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,3,0> E3 ## E1 ## E3 ## E0; }; \
+
799  struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,3,1> E3 ## E1 ## E3 ## E1; }; \
+
800  struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,3,2> E3 ## E1 ## E3 ## E2; }; \
+
801  struct { detail::_swizzle<4, T, P, V<T, P>, 3,1,3,3> E3 ## E1 ## E3 ## E3; }; \
+
802  struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,0,0> E3 ## E2 ## E0 ## E0; }; \
+
803  struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,0,1> E3 ## E2 ## E0 ## E1; }; \
+
804  struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,0,2> E3 ## E2 ## E0 ## E2; }; \
+
805  struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,0,3> E3 ## E2 ## E0 ## E3; }; \
+
806  struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,1,0> E3 ## E2 ## E1 ## E0; }; \
+
807  struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,1,1> E3 ## E2 ## E1 ## E1; }; \
+
808  struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,1,2> E3 ## E2 ## E1 ## E2; }; \
+
809  struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,1,3> E3 ## E2 ## E1 ## E3; }; \
+
810  struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,2,0> E3 ## E2 ## E2 ## E0; }; \
+
811  struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,2,1> E3 ## E2 ## E2 ## E1; }; \
+
812  struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,2,2> E3 ## E2 ## E2 ## E2; }; \
+
813  struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,2,3> E3 ## E2 ## E2 ## E3; }; \
+
814  struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,3,0> E3 ## E2 ## E3 ## E0; }; \
+
815  struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,3,1> E3 ## E2 ## E3 ## E1; }; \
+
816  struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,3,2> E3 ## E2 ## E3 ## E2; }; \
+
817  struct { detail::_swizzle<4, T, P, V<T, P>, 3,2,3,3> E3 ## E2 ## E3 ## E3; }; \
+
818  struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,0,0> E3 ## E3 ## E0 ## E0; }; \
+
819  struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,0,1> E3 ## E3 ## E0 ## E1; }; \
+
820  struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,0,2> E3 ## E3 ## E0 ## E2; }; \
+
821  struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,0,3> E3 ## E3 ## E0 ## E3; }; \
+
822  struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,1,0> E3 ## E3 ## E1 ## E0; }; \
+
823  struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,1,1> E3 ## E3 ## E1 ## E1; }; \
+
824  struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,1,2> E3 ## E3 ## E1 ## E2; }; \
+
825  struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,1,3> E3 ## E3 ## E1 ## E3; }; \
+
826  struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,2,0> E3 ## E3 ## E2 ## E0; }; \
+
827  struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,2,1> E3 ## E3 ## E2 ## E1; }; \
+
828  struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,2,2> E3 ## E3 ## E2 ## E2; }; \
+
829  struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,2,3> E3 ## E3 ## E2 ## E3; }; \
+
830  struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,3,0> E3 ## E3 ## E3 ## E0; }; \
+
831  struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,3,1> E3 ## E3 ## E3 ## E1; }; \
+
832  struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,3,2> E3 ## E3 ## E3 ## E2; }; \
+
833  struct { detail::_swizzle<4, T, P, V<T, P>, 3,3,3,3> E3 ## E3 ## E3 ## E3; };
+
GLM_FUNC_DECL genType e()
Return e constant.
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00005.html b/external/glm/doc/api/a00005.html new file mode 100644 index 0000000..353fad2 --- /dev/null +++ b/external/glm/doc/api/a00005.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: _swizzle_func.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
_swizzle_func.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2011-10-16 / 2011-10-16
+
Author
Christophe Riccio
+ +

Definition in file _swizzle_func.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00005_source.html b/external/glm/doc/api/a00005_source.html new file mode 100644 index 0000000..2cc119f --- /dev/null +++ b/external/glm/doc/api/a00005_source.html @@ -0,0 +1,754 @@ + + + + + + +0.9.7: _swizzle_func.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
_swizzle_func.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #define GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B) \
+
36  SWIZZLED_TYPE<TMPL_TYPE, PRECISION> A ## B() CONST \
+
37  { \
+
38  return SWIZZLED_TYPE<TMPL_TYPE, PRECISION>(this->A, this->B); \
+
39  }
+
40 
+
41 #define GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C) \
+
42  SWIZZLED_TYPE<TMPL_TYPE, PRECISION> A ## B ## C() CONST \
+
43  { \
+
44  return SWIZZLED_TYPE<TMPL_TYPE, PRECISION>(this->A, this->B, this->C); \
+
45  }
+
46 
+
47 #define GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C, D) \
+
48  SWIZZLED_TYPE<TMPL_TYPE, PRECISION> A ## B ## C ## D() CONST \
+
49  { \
+
50  return SWIZZLED_TYPE<TMPL_TYPE, PRECISION>(this->A, this->B, this->C, this->D); \
+
51  }
+
52 
+
53 #define GLM_SWIZZLE_GEN_VEC2_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B) \
+
54  template <typename TMPL_TYPE> \
+
55  SWIZZLED_TYPE<TMPL_TYPE> CLASS_TYPE<TMPL_TYPE, PRECISION>::A ## B() CONST \
+
56  { \
+
57  return SWIZZLED_TYPE<TMPL_TYPE, PRECISION>(this->A, this->B); \
+
58  }
+
59 
+
60 #define GLM_SWIZZLE_GEN_VEC3_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C) \
+
61  template <typename TMPL_TYPE> \
+
62  SWIZZLED_TYPE<TMPL_TYPE> CLASS_TYPE<TMPL_TYPE, PRECISION>::A ## B ## C() CONST \
+
63  { \
+
64  return SWIZZLED_TYPE<TMPL_TYPE, PRECISION>(this->A, this->B, this->C); \
+
65  }
+
66 
+
67 #define GLM_SWIZZLE_GEN_VEC4_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C, D) \
+
68  template <typename TMPL_TYPE> \
+
69  SWIZZLED_TYPE<TMPL_TYPE> CLASS_TYPE<TMPL_TYPE, PRECISION>::A ## B ## C ## D() CONST \
+
70  { \
+
71  return SWIZZLED_TYPE<TMPL_TYPE, PRECISION>(this->A, this->B, this->C, this->D); \
+
72  }
+
73 
+
74 #define GLM_MUTABLE
+
75 
+
76 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \
+
77  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \
+
78  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A)
+
79 
+
80 #define GLM_SWIZZLE_GEN_REF_FROM_VEC2(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE) \
+
81  GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, x, y) \
+
82  GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, r, g) \
+
83  GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, s, t)
+
84 
+
85 //GLM_SWIZZLE_GEN_REF_FROM_VEC2(valType, detail::vec2, detail::ref2)
+
86 
+
87 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \
+
88  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \
+
89  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C) \
+
90  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) \
+
91  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C) \
+
92  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A) \
+
93  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B)
+
94 
+
95 #define GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \
+
96  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B, C) \
+
97  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C, B) \
+
98  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A, C) \
+
99  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C, A) \
+
100  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A, B) \
+
101  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B, A)
+
102 
+
103 #define GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \
+
104  GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \
+
105  GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C)
+
106 
+
107 #define GLM_SWIZZLE_GEN_REF_FROM_VEC3(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE) \
+
108  GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, x, y, z) \
+
109  GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, r, g, b) \
+
110  GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, s, t, p)
+
111 
+
112 //GLM_SWIZZLE_GEN_REF_FROM_VEC3(valType, detail::vec3, detail::ref2, detail::ref3)
+
113 
+
114 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
+
115  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \
+
116  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C) \
+
117  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, D) \
+
118  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) \
+
119  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C) \
+
120  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, D) \
+
121  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A) \
+
122  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B) \
+
123  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, D) \
+
124  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, A) \
+
125  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, B) \
+
126  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, C)
+
127 
+
128 #define GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
+
129  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, C) \
+
130  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, D) \
+
131  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, B) \
+
132  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, D) \
+
133  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, B) \
+
134  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, C) \
+
135  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, C) \
+
136  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, D) \
+
137  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, A) \
+
138  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, D) \
+
139  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, A) \
+
140  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, C) \
+
141  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, B) \
+
142  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, D) \
+
143  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, A) \
+
144  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, D) \
+
145  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, A) \
+
146  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, B) \
+
147  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, B) \
+
148  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, C) \
+
149  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, A) \
+
150  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, C) \
+
151  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, A) \
+
152  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, B)
+
153 
+
154 #define GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
+
155  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, B, D) \
+
156  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, D, B) \
+
157  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, B, C) \
+
158  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, C, B) \
+
159  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, D, C) \
+
160  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, C, D) \
+
161  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, A, D) \
+
162  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, D, A) \
+
163  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, A, C) \
+
164  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, C, A) \
+
165  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, D, C) \
+
166  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, C, D) \
+
167  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, A, D) \
+
168  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, D, A) \
+
169  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, A, B) \
+
170  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, B, A) \
+
171  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, D, B) \
+
172  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, B, D) \
+
173  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, B, A) \
+
174  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, A, B) \
+
175  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, B, C) \
+
176  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, C, B) \
+
177  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, A, C) \
+
178  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, C, A)
+
179 
+
180 #define GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) \
+
181  GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C, D) \
+
182  GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C, D) \
+
183  GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D)
+
184 
+
185 #define GLM_SWIZZLE_GEN_REF_FROM_VEC4(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \
+
186  GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z, w) \
+
187  GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b, a) \
+
188  GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p, q)
+
189 
+
190 //GLM_SWIZZLE_GEN_REF_FROM_VEC4(valType, detail::vec4, detail::ref2, detail::ref3, detail::ref4)
+
191 
+
192 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \
+
193  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \
+
194  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \
+
195  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \
+
196  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B)
+
197 
+
198 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \
+
199  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \
+
200  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \
+
201  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \
+
202  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \
+
203  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \
+
204  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \
+
205  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \
+
206  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B)
+
207 
+
208 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \
+
209  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \
+
210  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \
+
211  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \
+
212  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \
+
213  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \
+
214  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \
+
215  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \
+
216  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \
+
217  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \
+
218  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \
+
219  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \
+
220  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \
+
221  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \
+
222  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \
+
223  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \
+
224  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B)
+
225 
+
226 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B) \
+
227  GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B) \
+
228  GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B) \
+
229  GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B)
+
230 
+
231 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC2(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \
+
232  GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y) \
+
233  GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g) \
+
234  GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t)
+
235 
+
236 //GLM_SWIZZLE_GEN_VEC_FROM_VEC2(valType, detail::vec2, detail::vec2, detail::vec3, detail::vec4)
+
237 
+
238 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \
+
239  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \
+
240  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \
+
241  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C) \
+
242  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \
+
243  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) \
+
244  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C) \
+
245  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A) \
+
246  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B) \
+
247  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C)
+
248 
+
249 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \
+
250  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \
+
251  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \
+
252  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C) \
+
253  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \
+
254  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \
+
255  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C) \
+
256  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A) \
+
257  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B) \
+
258  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C) \
+
259  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \
+
260  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \
+
261  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C) \
+
262  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \
+
263  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) \
+
264  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C) \
+
265  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A) \
+
266  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B) \
+
267  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C) \
+
268  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A) \
+
269  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B) \
+
270  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C) \
+
271  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A) \
+
272  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B) \
+
273  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C) \
+
274  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A) \
+
275  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B) \
+
276  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C)
+
277 
+
278 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \
+
279  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \
+
280  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \
+
281  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, C) \
+
282  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \
+
283  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \
+
284  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, C) \
+
285  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, A) \
+
286  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, B) \
+
287  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, C) \
+
288  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \
+
289  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \
+
290  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, C) \
+
291  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \
+
292  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \
+
293  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, C) \
+
294  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, A) \
+
295  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, B) \
+
296  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, C) \
+
297  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, A) \
+
298  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, B) \
+
299  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, C) \
+
300  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, A) \
+
301  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, B) \
+
302  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, C) \
+
303  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, A) \
+
304  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, B) \
+
305  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, C) \
+
306  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \
+
307  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \
+
308  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, C) \
+
309  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \
+
310  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \
+
311  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, C) \
+
312  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, A) \
+
313  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, B) \
+
314  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, C) \
+
315  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \
+
316  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \
+
317  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, C) \
+
318  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \
+
319  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) \
+
320  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, C) \
+
321  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, A) \
+
322  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, B) \
+
323  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, C) \
+
324  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, A) \
+
325  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, B) \
+
326  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, C) \
+
327  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, A) \
+
328  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, B) \
+
329  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, C) \
+
330  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, A) \
+
331  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, B) \
+
332  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, C) \
+
333  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, A) \
+
334  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, B) \
+
335  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, C) \
+
336  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, A) \
+
337  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, B) \
+
338  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, C) \
+
339  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, A) \
+
340  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, B) \
+
341  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, C) \
+
342  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, A) \
+
343  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, B) \
+
344  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, C) \
+
345  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, A) \
+
346  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, B) \
+
347  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, C) \
+
348  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, A) \
+
349  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, B) \
+
350  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, C) \
+
351  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, A) \
+
352  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, B) \
+
353  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, C) \
+
354  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, A) \
+
355  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, B) \
+
356  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, C) \
+
357  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, A) \
+
358  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, B) \
+
359  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, C)
+
360 
+
361 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C) \
+
362  GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C) \
+
363  GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \
+
364  GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C)
+
365 
+
366 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC3(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \
+
367  GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z) \
+
368  GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b) \
+
369  GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p)
+
370 
+
371 //GLM_SWIZZLE_GEN_VEC_FROM_VEC3(valType, detail::vec3, detail::vec2, detail::vec3, detail::vec4)
+
372 
+
373 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
+
374  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \
+
375  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \
+
376  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C) \
+
377  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D) \
+
378  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \
+
379  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) \
+
380  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C) \
+
381  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D) \
+
382  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A) \
+
383  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B) \
+
384  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C) \
+
385  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D) \
+
386  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A) \
+
387  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B) \
+
388  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C) \
+
389  GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D)
+
390 
+
391 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
+
392  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \
+
393  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \
+
394  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C) \
+
395  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D) \
+
396  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \
+
397  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \
+
398  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C) \
+
399  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D) \
+
400  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A) \
+
401  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B) \
+
402  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C) \
+
403  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D) \
+
404  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A) \
+
405  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B) \
+
406  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C) \
+
407  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D) \
+
408  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \
+
409  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \
+
410  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C) \
+
411  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D) \
+
412  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \
+
413  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) \
+
414  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C) \
+
415  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D) \
+
416  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A) \
+
417  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B) \
+
418  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C) \
+
419  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D) \
+
420  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A) \
+
421  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B) \
+
422  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C) \
+
423  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D) \
+
424  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A) \
+
425  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B) \
+
426  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C) \
+
427  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D) \
+
428  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A) \
+
429  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B) \
+
430  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C) \
+
431  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D) \
+
432  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A) \
+
433  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B) \
+
434  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C) \
+
435  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D) \
+
436  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A) \
+
437  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B) \
+
438  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C) \
+
439  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D) \
+
440  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A) \
+
441  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B) \
+
442  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C) \
+
443  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D) \
+
444  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A) \
+
445  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B) \
+
446  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C) \
+
447  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D) \
+
448  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A) \
+
449  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B) \
+
450  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C) \
+
451  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D) \
+
452  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A) \
+
453  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B) \
+
454  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C) \
+
455  GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D)
+
456 
+
457 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \
+
458  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \
+
459  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \
+
460  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, C) \
+
461  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, D) \
+
462  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \
+
463  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \
+
464  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, C) \
+
465  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, D) \
+
466  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, A) \
+
467  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, B) \
+
468  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, C) \
+
469  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, D) \
+
470  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, A) \
+
471  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, B) \
+
472  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, C) \
+
473  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, D) \
+
474  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \
+
475  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \
+
476  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, C) \
+
477  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, D) \
+
478  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \
+
479  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \
+
480  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, C) \
+
481  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, D) \
+
482  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, A) \
+
483  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, B) \
+
484  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, C) \
+
485  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, D) \
+
486  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, A) \
+
487  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, B) \
+
488  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, C) \
+
489  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, D) \
+
490  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, A) \
+
491  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, B) \
+
492  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, C) \
+
493  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, D) \
+
494  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, A) \
+
495  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, B) \
+
496  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, C) \
+
497  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, D) \
+
498  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, A) \
+
499  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, B) \
+
500  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, C) \
+
501  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, D) \
+
502  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, A) \
+
503  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, B) \
+
504  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, C) \
+
505  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, D) \
+
506  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, A) \
+
507  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, B) \
+
508  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, C) \
+
509  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, D) \
+
510  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, A) \
+
511  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, B) \
+
512  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, C) \
+
513  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, D) \
+
514  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, A) \
+
515  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, B) \
+
516  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, C) \
+
517  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, D) \
+
518  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, A) \
+
519  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, B) \
+
520  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, C) \
+
521  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, D) \
+
522  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \
+
523  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \
+
524  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, C) \
+
525  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, D) \
+
526  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \
+
527  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \
+
528  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, C) \
+
529  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, D) \
+
530  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, A) \
+
531  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, B) \
+
532  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, C) \
+
533  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, D) \
+
534  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, A) \
+
535  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, B) \
+
536  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, C) \
+
537  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, D) \
+
538  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \
+
539  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \
+
540  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, C) \
+
541  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, D) \
+
542  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \
+
543  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) \
+
544  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, C) \
+
545  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, D) \
+
546  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, A) \
+
547  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, B) \
+
548  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, C) \
+
549  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, D) \
+
550  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, A) \
+
551  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, B) \
+
552  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, C) \
+
553  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, D) \
+
554  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, A) \
+
555  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, B) \
+
556  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, C) \
+
557  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, D) \
+
558  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, A) \
+
559  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, B) \
+
560  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, C) \
+
561  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, D) \
+
562  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, A) \
+
563  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, B) \
+
564  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, C) \
+
565  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, D) \
+
566  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, A) \
+
567  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, B) \
+
568  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, C) \
+
569  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, D) \
+
570  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, A) \
+
571  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, B) \
+
572  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, C) \
+
573  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, D) \
+
574  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, A) \
+
575  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, B) \
+
576  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, C) \
+
577  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, D) \
+
578  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, A) \
+
579  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, B) \
+
580  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, C) \
+
581  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, D) \
+
582  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, A) \
+
583  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, B) \
+
584  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, C) \
+
585  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, D) \
+
586  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, A) \
+
587  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, B) \
+
588  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, C) \
+
589  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, D) \
+
590  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, A) \
+
591  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, B) \
+
592  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, C) \
+
593  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, D) \
+
594  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, A) \
+
595  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, B) \
+
596  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, C) \
+
597  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, D) \
+
598  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, A) \
+
599  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, B) \
+
600  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, C) \
+
601  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, D) \
+
602  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, A) \
+
603  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, B) \
+
604  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, C) \
+
605  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, D) \
+
606  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, A) \
+
607  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, B) \
+
608  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, C) \
+
609  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, D) \
+
610  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, A) \
+
611  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, B) \
+
612  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, C) \
+
613  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, D) \
+
614  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, A) \
+
615  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, B) \
+
616  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, C) \
+
617  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, D) \
+
618  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, A) \
+
619  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, B) \
+
620  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, C) \
+
621  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, D) \
+
622  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, A) \
+
623  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, B) \
+
624  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, C) \
+
625  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, D) \
+
626  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, A) \
+
627  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, B) \
+
628  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, C) \
+
629  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, D) \
+
630  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, A) \
+
631  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, B) \
+
632  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, C) \
+
633  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, D) \
+
634  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, A) \
+
635  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, B) \
+
636  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, C) \
+
637  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, D) \
+
638  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, A) \
+
639  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, B) \
+
640  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, C) \
+
641  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, D) \
+
642  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, A) \
+
643  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, B) \
+
644  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, C) \
+
645  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, D) \
+
646  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, A) \
+
647  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, B) \
+
648  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, C) \
+
649  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, D) \
+
650  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, A) \
+
651  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, B) \
+
652  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, C) \
+
653  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, D) \
+
654  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, A) \
+
655  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, B) \
+
656  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, C) \
+
657  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, D) \
+
658  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, A) \
+
659  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, B) \
+
660  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, C) \
+
661  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, D) \
+
662  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, A) \
+
663  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, B) \
+
664  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, C) \
+
665  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, D) \
+
666  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, A) \
+
667  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, B) \
+
668  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, C) \
+
669  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, D) \
+
670  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, A) \
+
671  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, B) \
+
672  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, C) \
+
673  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, D) \
+
674  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, A) \
+
675  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, B) \
+
676  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, C) \
+
677  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, D) \
+
678  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, A) \
+
679  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, B) \
+
680  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, C) \
+
681  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, D) \
+
682  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, A) \
+
683  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, B) \
+
684  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, C) \
+
685  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, D) \
+
686  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, A) \
+
687  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, B) \
+
688  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, C) \
+
689  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, D) \
+
690  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, A) \
+
691  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, B) \
+
692  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, C) \
+
693  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, D) \
+
694  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, A) \
+
695  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, B) \
+
696  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, C) \
+
697  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, D) \
+
698  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, A) \
+
699  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, B) \
+
700  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, C) \
+
701  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, D) \
+
702  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, A) \
+
703  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, B) \
+
704  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, C) \
+
705  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, D) \
+
706  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, A) \
+
707  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, B) \
+
708  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, C) \
+
709  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, D) \
+
710  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, A) \
+
711  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, B) \
+
712  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, C) \
+
713  GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, D)
+
714 
+
715 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) \
+
716  GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C, D) \
+
717  GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C, D) \
+
718  GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D)
+
719 
+
720 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC4(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \
+
721  GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z, w) \
+
722  GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b, a) \
+
723  GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p, q)
+
724 
+
725 //GLM_SWIZZLE_GEN_VEC_FROM_VEC4(valType, detail::vec4, detail::vec2, detail::vec3, detail::vec4)
+
+ + + + diff --git a/external/glm/doc/api/a00006.html b/external/glm/doc/api/a00006.html new file mode 100644 index 0000000..6d86c9d --- /dev/null +++ b/external/glm/doc/api/a00006.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: _vectorize.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
_vectorize.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2011-10-14 / 2011-10-14
+
Author
Christophe Riccio
+ +

Definition in file _vectorize.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00006_source.html b/external/glm/doc/api/a00006_source.html new file mode 100644 index 0000000..4f53251 --- /dev/null +++ b/external/glm/doc/api/a00006_source.html @@ -0,0 +1,194 @@ + + + + + + +0.9.7: _vectorize.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
_vectorize.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "type_vec1.hpp"
+
36 #include "type_vec2.hpp"
+
37 #include "type_vec3.hpp"
+
38 #include "type_vec4.hpp"
+
39 
+
40 namespace glm{
+
41 namespace detail
+
42 {
+
43  template <typename R, typename T, precision P, template <typename, precision> class vecType>
+
44  struct functor1{};
+
45 
+
46  template <typename R, typename T, precision P>
+
47  struct functor1<R, T, P, tvec1>
+
48  {
+
49  GLM_FUNC_QUALIFIER static tvec1<R, P> call(R (*Func) (T x), tvec1<T, P> const & v)
+
50  {
+
51  return tvec1<R, P>(Func(v.x));
+
52  }
+
53  };
+
54 
+
55  template <typename R, typename T, precision P>
+
56  struct functor1<R, T, P, tvec2>
+
57  {
+
58  GLM_FUNC_QUALIFIER static tvec2<R, P> call(R (*Func) (T x), tvec2<T, P> const & v)
+
59  {
+
60  return tvec2<R, P>(Func(v.x), Func(v.y));
+
61  }
+
62  };
+
63 
+
64  template <typename R, typename T, precision P>
+
65  struct functor1<R, T, P, tvec3>
+
66  {
+
67  GLM_FUNC_QUALIFIER static tvec3<R, P> call(R (*Func) (T x), tvec3<T, P> const & v)
+
68  {
+
69  return tvec3<R, P>(Func(v.x), Func(v.y), Func(v.z));
+
70  }
+
71  };
+
72 
+
73  template <typename R, typename T, precision P>
+
74  struct functor1<R, T, P, tvec4>
+
75  {
+
76  GLM_FUNC_QUALIFIER static tvec4<R, P> call(R (*Func) (T x), tvec4<T, P> const & v)
+
77  {
+
78  return tvec4<R, P>(Func(v.x), Func(v.y), Func(v.z), Func(v.w));
+
79  }
+
80  };
+
81 
+
82  template <typename T, precision P, template <typename, precision> class vecType>
+
83  struct functor2{};
+
84 
+
85  template <typename T, precision P>
+
86  struct functor2<T, P, tvec1>
+
87  {
+
88  GLM_FUNC_QUALIFIER static tvec1<T, P> call(T (*Func) (T x, T y), tvec1<T, P> const & a, tvec1<T, P> const & b)
+
89  {
+
90  return tvec1<T, P>(Func(a.x, b.x));
+
91  }
+
92  };
+
93 
+
94  template <typename T, precision P>
+
95  struct functor2<T, P, tvec2>
+
96  {
+
97  GLM_FUNC_QUALIFIER static tvec2<T, P> call(T (*Func) (T x, T y), tvec2<T, P> const & a, tvec2<T, P> const & b)
+
98  {
+
99  return tvec2<T, P>(Func(a.x, b.x), Func(a.y, b.y));
+
100  }
+
101  };
+
102 
+
103  template <typename T, precision P>
+
104  struct functor2<T, P, tvec3>
+
105  {
+
106  GLM_FUNC_QUALIFIER static tvec3<T, P> call(T (*Func) (T x, T y), tvec3<T, P> const & a, tvec3<T, P> const & b)
+
107  {
+
108  return tvec3<T, P>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z));
+
109  }
+
110  };
+
111 
+
112  template <typename T, precision P>
+
113  struct functor2<T, P, tvec4>
+
114  {
+
115  GLM_FUNC_QUALIFIER static tvec4<T, P> call(T (*Func) (T x, T y), tvec4<T, P> const & a, tvec4<T, P> const & b)
+
116  {
+
117  return tvec4<T, P>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z), Func(a.w, b.w));
+
118  }
+
119  };
+
120 
+
121  template <typename T, precision P, template <typename, precision> class vecType>
+
122  struct functor2_vec_sca{};
+
123 
+
124  template <typename T, precision P>
+
125  struct functor2_vec_sca<T, P, tvec1>
+
126  {
+
127  GLM_FUNC_QUALIFIER static tvec1<T, P> call(T (*Func) (T x, T y), tvec1<T, P> const & a, T b)
+
128  {
+
129  return tvec1<T, P>(Func(a.x, b));
+
130  }
+
131  };
+
132 
+
133  template <typename T, precision P>
+
134  struct functor2_vec_sca<T, P, tvec2>
+
135  {
+
136  GLM_FUNC_QUALIFIER static tvec2<T, P> call(T (*Func) (T x, T y), tvec2<T, P> const & a, T b)
+
137  {
+
138  return tvec2<T, P>(Func(a.x, b), Func(a.y, b));
+
139  }
+
140  };
+
141 
+
142  template <typename T, precision P>
+
143  struct functor2_vec_sca<T, P, tvec3>
+
144  {
+
145  GLM_FUNC_QUALIFIER static tvec3<T, P> call(T (*Func) (T x, T y), tvec3<T, P> const & a, T b)
+
146  {
+
147  return tvec3<T, P>(Func(a.x, b), Func(a.y, b), Func(a.z, b));
+
148  }
+
149  };
+
150 
+
151  template <typename T, precision P>
+
152  struct functor2_vec_sca<T, P, tvec4>
+
153  {
+
154  GLM_FUNC_QUALIFIER static tvec4<T, P> call(T (*Func) (T x, T y), tvec4<T, P> const & a, T b)
+
155  {
+
156  return tvec4<T, P>(Func(a.x, b), Func(a.y, b), Func(a.z, b), Func(a.w, b));
+
157  }
+
158  };
+
159 }//namespace detail
+
160 }//namespace glm
+
OpenGL Mathematics (glm.g-truc.net)
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00007.html b/external/glm/doc/api/a00007.html new file mode 100644 index 0000000..cee586d --- /dev/null +++ b/external/glm/doc/api/a00007.html @@ -0,0 +1,148 @@ + + + + + + +0.9.7: associated_min_max.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
associated_min_max.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , typename U >
GLM_FUNC_DECL U associatedMax (T x, U a, T y, U b)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL tvec2< U, P > associatedMax (vecType< T, P > const &x, vecType< U, P > const &a, vecType< T, P > const &y, vecType< U, P > const &b)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > associatedMax (T x, vecType< U, P > const &a, T y, vecType< U, P > const &b)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMax (vecType< T, P > const &x, U a, vecType< T, P > const &y, U b)
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMax (T x, U a, T y, U b, T z, U c)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMax (vecType< T, P > const &x, vecType< U, P > const &a, vecType< T, P > const &y, vecType< U, P > const &b, vecType< T, P > const &z, vecType< U, P > const &c)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > associatedMax (T x, vecType< U, P > const &a, T y, vecType< U, P > const &b, T z, vecType< U, P > const &c)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMax (vecType< T, P > const &x, U a, vecType< T, P > const &y, U b, vecType< T, P > const &z, U c)
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMax (T x, U a, T y, U b, T z, U c, T w, U d)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMax (vecType< T, P > const &x, vecType< U, P > const &a, vecType< T, P > const &y, vecType< U, P > const &b, vecType< T, P > const &z, vecType< U, P > const &c, vecType< T, P > const &w, vecType< U, P > const &d)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMax (T x, vecType< U, P > const &a, T y, vecType< U, P > const &b, T z, vecType< U, P > const &c, T w, vecType< U, P > const &d)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMax (vecType< T, P > const &x, U a, vecType< T, P > const &y, U b, vecType< T, P > const &z, U c, vecType< T, P > const &w, U d)
 
template<typename T , typename U , precision P>
GLM_FUNC_DECL U associatedMin (T x, U a, T y, U b)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL tvec2< U, P > associatedMin (vecType< T, P > const &x, vecType< U, P > const &a, vecType< T, P > const &y, vecType< U, P > const &b)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMin (T x, const vecType< U, P > &a, T y, const vecType< U, P > &b)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMin (vecType< T, P > const &x, U a, vecType< T, P > const &y, U b)
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMin (T x, U a, T y, U b, T z, U c)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMin (vecType< T, P > const &x, vecType< U, P > const &a, vecType< T, P > const &y, vecType< U, P > const &b, vecType< T, P > const &z, vecType< U, P > const &c)
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMin (T x, U a, T y, U b, T z, U c, T w, U d)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMin (vecType< T, P > const &x, vecType< U, P > const &a, vecType< T, P > const &y, vecType< U, P > const &b, vecType< T, P > const &z, vecType< U, P > const &c, vecType< T, P > const &w, vecType< U, P > const &d)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMin (T x, vecType< U, P > const &a, T y, vecType< U, P > const &b, T z, vecType< U, P > const &c, T w, vecType< U, P > const &d)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMin (vecType< T, P > const &x, U a, vecType< T, P > const &y, U b, vecType< T, P > const &z, U c, vecType< T, P > const &w, U d)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_associated_min_max

+
Date
2008-03-10 / 2014-10-11
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTX_extented_min_max (dependence)
+ +

Definition in file associated_min_max.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00007_source.html b/external/glm/doc/api/a00007_source.html new file mode 100644 index 0000000..aaa8b3f --- /dev/null +++ b/external/glm/doc/api/a00007_source.html @@ -0,0 +1,207 @@ + + + + + + +0.9.7: associated_min_max.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
associated_min_max.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTX_associated_min_max extension included")
+
49 #endif
+
50 
+
51 namespace glm
+
52 {
+
55 
+
58  template<typename T, typename U, precision P>
+
59  GLM_FUNC_DECL U associatedMin(T x, U a, T y, U b);
+
60 
+
63  template<typename T, typename U, precision P, template <typename, precision> class vecType>
+
64  GLM_FUNC_DECL tvec2<U, P> associatedMin(
+
65  vecType<T, P> const & x, vecType<U, P> const & a,
+
66  vecType<T, P> const & y, vecType<U, P> const & b);
+
67 
+
70  template<typename T, typename U, precision P, template <typename, precision> class vecType>
+
71  GLM_FUNC_DECL vecType<U, P> associatedMin(
+
72  T x, const vecType<U, P>& a,
+
73  T y, const vecType<U, P>& b);
+
74 
+
77  template<typename T, typename U, precision P, template <typename, precision> class vecType>
+
78  GLM_FUNC_DECL vecType<U, P> associatedMin(
+
79  vecType<T, P> const & x, U a,
+
80  vecType<T, P> const & y, U b);
+
81 
+
84  template<typename T, typename U>
+
85  GLM_FUNC_DECL U associatedMin(
+
86  T x, U a,
+
87  T y, U b,
+
88  T z, U c);
+
89 
+
92  template<typename T, typename U, precision P, template <typename, precision> class vecType>
+
93  GLM_FUNC_DECL vecType<U, P> associatedMin(
+
94  vecType<T, P> const & x, vecType<U, P> const & a,
+
95  vecType<T, P> const & y, vecType<U, P> const & b,
+
96  vecType<T, P> const & z, vecType<U, P> const & c);
+
97 
+
100  template<typename T, typename U>
+
101  GLM_FUNC_DECL U associatedMin(
+
102  T x, U a,
+
103  T y, U b,
+
104  T z, U c,
+
105  T w, U d);
+
106 
+
109  template<typename T, typename U, precision P, template <typename, precision> class vecType>
+
110  GLM_FUNC_DECL vecType<U, P> associatedMin(
+
111  vecType<T, P> const & x, vecType<U, P> const & a,
+
112  vecType<T, P> const & y, vecType<U, P> const & b,
+
113  vecType<T, P> const & z, vecType<U, P> const & c,
+
114  vecType<T, P> const & w, vecType<U, P> const & d);
+
115 
+
118  template<typename T, typename U, precision P, template <typename, precision> class vecType>
+
119  GLM_FUNC_DECL vecType<U, P> associatedMin(
+
120  T x, vecType<U, P> const & a,
+
121  T y, vecType<U, P> const & b,
+
122  T z, vecType<U, P> const & c,
+
123  T w, vecType<U, P> const & d);
+
124 
+
127  template<typename T, typename U, precision P, template <typename, precision> class vecType>
+
128  GLM_FUNC_DECL vecType<U, P> associatedMin(
+
129  vecType<T, P> const & x, U a,
+
130  vecType<T, P> const & y, U b,
+
131  vecType<T, P> const & z, U c,
+
132  vecType<T, P> const & w, U d);
+
133 
+
136  template<typename T, typename U>
+
137  GLM_FUNC_DECL U associatedMax(T x, U a, T y, U b);
+
138 
+
141  template<typename T, typename U, precision P, template <typename, precision> class vecType>
+
142  GLM_FUNC_DECL tvec2<U, P> associatedMax(
+
143  vecType<T, P> const & x, vecType<U, P> const & a,
+
144  vecType<T, P> const & y, vecType<U, P> const & b);
+
145 
+
148  template<typename T, typename U, precision P, template <typename, precision> class vecType>
+
149  GLM_FUNC_DECL vecType<T, P> associatedMax(
+
150  T x, vecType<U, P> const & a,
+
151  T y, vecType<U, P> const & b);
+
152 
+
155  template<typename T, typename U, precision P, template <typename, precision> class vecType>
+
156  GLM_FUNC_DECL vecType<U, P> associatedMax(
+
157  vecType<T, P> const & x, U a,
+
158  vecType<T, P> const & y, U b);
+
159 
+
162  template<typename T, typename U>
+
163  GLM_FUNC_DECL U associatedMax(
+
164  T x, U a,
+
165  T y, U b,
+
166  T z, U c);
+
167 
+
170  template<typename T, typename U, precision P, template <typename, precision> class vecType>
+
171  GLM_FUNC_DECL vecType<U, P> associatedMax(
+
172  vecType<T, P> const & x, vecType<U, P> const & a,
+
173  vecType<T, P> const & y, vecType<U, P> const & b,
+
174  vecType<T, P> const & z, vecType<U, P> const & c);
+
175 
+
178  template<typename T, typename U, precision P, template <typename, precision> class vecType>
+
179  GLM_FUNC_DECL vecType<T, P> associatedMax(
+
180  T x, vecType<U, P> const & a,
+
181  T y, vecType<U, P> const & b,
+
182  T z, vecType<U, P> const & c);
+
183 
+
186  template<typename T, typename U, precision P, template <typename, precision> class vecType>
+
187  GLM_FUNC_DECL vecType<U, P> associatedMax(
+
188  vecType<T, P> const & x, U a,
+
189  vecType<T, P> const & y, U b,
+
190  vecType<T, P> const & z, U c);
+
191 
+
194  template<typename T, typename U>
+
195  GLM_FUNC_DECL U associatedMax(
+
196  T x, U a,
+
197  T y, U b,
+
198  T z, U c,
+
199  T w, U d);
+
200 
+
203  template<typename T, typename U, precision P, template <typename, precision> class vecType>
+
204  GLM_FUNC_DECL vecType<U, P> associatedMax(
+
205  vecType<T, P> const & x, vecType<U, P> const & a,
+
206  vecType<T, P> const & y, vecType<U, P> const & b,
+
207  vecType<T, P> const & z, vecType<U, P> const & c,
+
208  vecType<T, P> const & w, vecType<U, P> const & d);
+
209 
+
212  template<typename T, typename U, precision P, template <typename, precision> class vecType>
+
213  GLM_FUNC_DECL vecType<U, P> associatedMax(
+
214  T x, vecType<U, P> const & a,
+
215  T y, vecType<U, P> const & b,
+
216  T z, vecType<U, P> const & c,
+
217  T w, vecType<U, P> const & d);
+
218 
+
221  template<typename T, typename U, precision P, template <typename, precision> class vecType>
+
222  GLM_FUNC_DECL vecType<U, P> associatedMax(
+
223  vecType<T, P> const & x, U a,
+
224  vecType<T, P> const & y, U b,
+
225  vecType<T, P> const & z, U c,
+
226  vecType<T, P> const & w, U d);
+
227 
+
229 } //namespace glm
+
230 
+
231 #include "associated_min_max.inl"
+
GLM_FUNC_DECL vecType< U, P > associatedMin(vecType< T, P > const &x, U a, vecType< T, P > const &y, U b, vecType< T, P > const &z, U c, vecType< T, P > const &w, U d)
Minimum comparison between 4 variables and returns 4 associated variable values.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL vecType< U, P > associatedMax(vecType< T, P > const &x, U a, vecType< T, P > const &y, U b, vecType< T, P > const &z, U c, vecType< T, P > const &w, U d)
Maximum comparison between 4 variables and returns 4 associated variable values.
+
+ + + + diff --git a/external/glm/doc/api/a00008.html b/external/glm/doc/api/a00008.html new file mode 100644 index 0000000..037985b --- /dev/null +++ b/external/glm/doc/api/a00008.html @@ -0,0 +1,106 @@ + + + + + + +0.9.7: bit.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
bit.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genIUType >
GLM_FUNC_DECL genIUType highestBitValue (genIUType Value)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > highestBitValue (vecType< T, P > const &value)
 
template<typename genIUType >
GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoAbove (genIUType Value)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_DEPRECATED GLM_FUNC_DECL vecType< T, P > powerOfTwoAbove (vecType< T, P > const &value)
 
template<typename genIUType >
GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoBelow (genIUType Value)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_DEPRECATED GLM_FUNC_DECL vecType< T, P > powerOfTwoBelow (vecType< T, P > const &value)
 
template<typename genIUType >
GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoNearest (genIUType Value)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_DEPRECATED GLM_FUNC_DECL vecType< T, P > powerOfTwoNearest (vecType< T, P > const &value)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_bit

+
Date
2007-03-14 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+gtc_half_float (dependence)
+ +

Definition in file bit.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00008_source.html b/external/glm/doc/api/a00008_source.html new file mode 100644 index 0000000..58d1964 --- /dev/null +++ b/external/glm/doc/api/a00008_source.html @@ -0,0 +1,107 @@ + + + + + + +0.9.7: bit.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
bit.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependencies
+
46 #include "../gtc/bitfield.hpp"
+
47 
+
48 #if(defined(GLM_MESSAGES))
+
49 # pragma message("GLM: GLM_GTX_bit extension is deprecated, include GLM_GTC_bitfield and GLM_GTC_integer instead")
+
50 #endif
+
51 
+
52 namespace glm
+
53 {
+
56 
+
58  template <typename genIUType>
+
59  GLM_FUNC_DECL genIUType highestBitValue(genIUType Value);
+
60 
+
64  template <typename T, precision P, template <typename, precision> class vecType>
+
65  GLM_FUNC_DECL vecType<T, P> highestBitValue(vecType<T, P> const & value);
+
66 
+
72  template <typename genIUType>
+
73  GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoAbove(genIUType Value);
+
74 
+
80  template <typename T, precision P, template <typename, precision> class vecType>
+
81  GLM_DEPRECATED GLM_FUNC_DECL vecType<T, P> powerOfTwoAbove(vecType<T, P> const & value);
+
82 
+
88  template <typename genIUType>
+
89  GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoBelow(genIUType Value);
+
90 
+
96  template <typename T, precision P, template <typename, precision> class vecType>
+
97  GLM_DEPRECATED GLM_FUNC_DECL vecType<T, P> powerOfTwoBelow(vecType<T, P> const & value);
+
98 
+
104  template <typename genIUType>
+
105  GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoNearest(genIUType Value);
+
106 
+
112  template <typename T, precision P, template <typename, precision> class vecType>
+
113  GLM_DEPRECATED GLM_FUNC_DECL vecType<T, P> powerOfTwoNearest(vecType<T, P> const & value);
+
114 
+
116 } //namespace glm
+
117 
+
118 
+
119 #include "bit.inl"
+
120 
+
GLM_DEPRECATED GLM_FUNC_DECL vecType< T, P > powerOfTwoNearest(vecType< T, P > const &value)
Return the power of two number which value is the closet to the input value.
+
GLM_FUNC_DECL vecType< T, P > highestBitValue(vecType< T, P > const &value)
Find the highest bit set to 1 in a integer variable and return its value.
+
GLM_DEPRECATED GLM_FUNC_DECL vecType< T, P > powerOfTwoBelow(vecType< T, P > const &value)
Return the power of two number which value is just lower the input value.
+
GLM_DEPRECATED GLM_FUNC_DECL vecType< T, P > powerOfTwoAbove(vecType< T, P > const &value)
Return the power of two number which value is just higher the input value.
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00009.html b/external/glm/doc/api/a00009.html new file mode 100644 index 0000000..fd1a8e1 --- /dev/null +++ b/external/glm/doc/api/a00009.html @@ -0,0 +1,144 @@ + + + + + + +0.9.7: bitfield.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
bitfield.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldFillOne (genIUType Value, int FirstBit, int BitCount)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > bitfieldFillOne (vecType< T, P > const &Value, int FirstBit, int BitCount)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldFillZero (genIUType Value, int FirstBit, int BitCount)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > bitfieldFillZero (vecType< T, P > const &Value, int FirstBit, int BitCount)
 
GLM_FUNC_DECL int16 bitfieldInterleave (int8 x, int8 y)
 
GLM_FUNC_DECL uint16 bitfieldInterleave (uint8 x, uint8 y)
 
GLM_FUNC_DECL int32 bitfieldInterleave (int16 x, int16 y)
 
GLM_FUNC_DECL uint32 bitfieldInterleave (uint16 x, uint16 y)
 
GLM_FUNC_DECL int64 bitfieldInterleave (int32 x, int32 y)
 
GLM_FUNC_DECL uint64 bitfieldInterleave (uint32 x, uint32 y)
 
GLM_FUNC_DECL int32 bitfieldInterleave (int8 x, int8 y, int8 z)
 
GLM_FUNC_DECL uint32 bitfieldInterleave (uint8 x, uint8 y, uint8 z)
 
GLM_FUNC_DECL int64 bitfieldInterleave (int16 x, int16 y, int16 z)
 
GLM_FUNC_DECL uint64 bitfieldInterleave (uint16 x, uint16 y, uint16 z)
 
GLM_FUNC_DECL int64 bitfieldInterleave (int32 x, int32 y, int32 z)
 
GLM_FUNC_DECL uint64 bitfieldInterleave (uint32 x, uint32 y, uint32 z)
 
GLM_FUNC_DECL int32 bitfieldInterleave (int8 x, int8 y, int8 z, int8 w)
 
GLM_FUNC_DECL uint32 bitfieldInterleave (uint8 x, uint8 y, uint8 z, uint8 w)
 
GLM_FUNC_DECL int64 bitfieldInterleave (int16 x, int16 y, int16 z, int16 w)
 
GLM_FUNC_DECL uint64 bitfieldInterleave (uint16 x, uint16 y, uint16 z, uint16 w)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldRotateLeft (genIUType In, int Shift)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > bitfieldRotateLeft (vecType< T, P > const &In, int Shift)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldRotateRight (genIUType In, int Shift)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > bitfieldRotateRight (vecType< T, P > const &In, int Shift)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType mask (genIUType Bits)
 
template<typename T , precision P, template< typename, precision > class vecIUType>
GLM_FUNC_DECL vecIUType< T, P > mask (vecIUType< T, P > const &v)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_bitfield

+
Date
2014-10-25 / 2014-10-25
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTC_bitfield (dependence)
+ +

Definition in file bitfield.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00009_source.html b/external/glm/doc/api/a00009_source.html new file mode 100644 index 0000000..61d2483 --- /dev/null +++ b/external/glm/doc/api/a00009_source.html @@ -0,0 +1,149 @@ + + + + + + +0.9.7: bitfield.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
bitfield.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependencies
+
46 #include "../detail/setup.hpp"
+
47 #include "../detail/precision.hpp"
+
48 #include "../detail/type_int.hpp"
+
49 #include "../detail/_vectorize.hpp"
+
50 #include <limits>
+
51 
+
52 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
53 # pragma message("GLM: GLM_GTC_bitfield extension included")
+
54 #endif
+
55 
+
56 namespace glm
+
57 {
+
60 
+
64  template <typename genIUType>
+
65  GLM_FUNC_DECL genIUType mask(genIUType Bits);
+
66 
+
70  template <typename T, precision P, template <typename, precision> class vecIUType>
+
71  GLM_FUNC_DECL vecIUType<T, P> mask(vecIUType<T, P> const & v);
+
72 
+
76  template <typename genIUType>
+
77  GLM_FUNC_DECL genIUType bitfieldRotateRight(genIUType In, int Shift);
+
78 
+
82  template <typename T, precision P, template <typename, precision> class vecType>
+
83  GLM_FUNC_DECL vecType<T, P> bitfieldRotateRight(vecType<T, P> const & In, int Shift);
+
84 
+
88  template <typename genIUType>
+
89  GLM_FUNC_DECL genIUType bitfieldRotateLeft(genIUType In, int Shift);
+
90 
+
94  template <typename T, precision P, template <typename, precision> class vecType>
+
95  GLM_FUNC_DECL vecType<T, P> bitfieldRotateLeft(vecType<T, P> const & In, int Shift);
+
96 
+
100  template <typename genIUType>
+
101  GLM_FUNC_DECL genIUType bitfieldFillOne(genIUType Value, int FirstBit, int BitCount);
+
102 
+
106  template <typename T, precision P, template <typename, precision> class vecType>
+
107  GLM_FUNC_DECL vecType<T, P> bitfieldFillOne(vecType<T, P> const & Value, int FirstBit, int BitCount);
+
108 
+
112  template <typename genIUType>
+
113  GLM_FUNC_DECL genIUType bitfieldFillZero(genIUType Value, int FirstBit, int BitCount);
+
114 
+
118  template <typename T, precision P, template <typename, precision> class vecType>
+
119  GLM_FUNC_DECL vecType<T, P> bitfieldFillZero(vecType<T, P> const & Value, int FirstBit, int BitCount);
+
120 
+
126  GLM_FUNC_DECL int16 bitfieldInterleave(int8 x, int8 y);
+
127 
+
133  GLM_FUNC_DECL uint16 bitfieldInterleave(uint8 x, uint8 y);
+
134 
+
140  GLM_FUNC_DECL int32 bitfieldInterleave(int16 x, int16 y);
+
141 
+
147  GLM_FUNC_DECL uint32 bitfieldInterleave(uint16 x, uint16 y);
+
148 
+
154  GLM_FUNC_DECL int64 bitfieldInterleave(int32 x, int32 y);
+
155 
+
161  GLM_FUNC_DECL uint64 bitfieldInterleave(uint32 x, uint32 y);
+
162 
+
168  GLM_FUNC_DECL int32 bitfieldInterleave(int8 x, int8 y, int8 z);
+
169 
+
175  GLM_FUNC_DECL uint32 bitfieldInterleave(uint8 x, uint8 y, uint8 z);
+
176 
+
182  GLM_FUNC_DECL int64 bitfieldInterleave(int16 x, int16 y, int16 z);
+
183 
+
189  GLM_FUNC_DECL uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z);
+
190 
+
196  GLM_FUNC_DECL int64 bitfieldInterleave(int32 x, int32 y, int32 z);
+
197 
+
203  GLM_FUNC_DECL uint64 bitfieldInterleave(uint32 x, uint32 y, uint32 z);
+
204 
+
210  GLM_FUNC_DECL int32 bitfieldInterleave(int8 x, int8 y, int8 z, int8 w);
+
211 
+
217  GLM_FUNC_DECL uint32 bitfieldInterleave(uint8 x, uint8 y, uint8 z, uint8 w);
+
218 
+
224  GLM_FUNC_DECL int64 bitfieldInterleave(int16 x, int16 y, int16 z, int16 w);
+
225 
+
231  GLM_FUNC_DECL uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z, uint16 w);
+
232 
+
234 } //namespace glm
+
235 
+
236 #include "bitfield.inl"
+
GLM_FUNC_DECL vecType< T, P > bitfieldFillOne(vecType< T, P > const &Value, int FirstBit, int BitCount)
Set to 1 a range of bits.
+
GLM_FUNC_DECL vecType< T, P > bitfieldFillZero(vecType< T, P > const &Value, int FirstBit, int BitCount)
Set to 0 a range of bits.
+
GLM_FUNC_DECL vecType< T, P > bitfieldRotateRight(vecType< T, P > const &In, int Shift)
Rotate all bits to the right.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL vecType< T, P > bitfieldRotateLeft(vecType< T, P > const &In, int Shift)
Rotate all bits to the left.
+
GLM_FUNC_DECL vecIUType< T, P > mask(vecIUType< T, P > const &v)
Build a mask of 'count' bits.
+
GLM_FUNC_DECL uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z, uint16 w)
Interleaves the bits of x, y, z and w.
+
+ + + + diff --git a/external/glm/doc/api/a00010.html b/external/glm/doc/api/a00010.html new file mode 100644 index 0000000..7309f9d --- /dev/null +++ b/external/glm/doc/api/a00010.html @@ -0,0 +1,87 @@ + + + + + + +0.9.7: closest_point.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
closest_point.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > closestPointOnLine (tvec3< T, P > const &point, tvec3< T, P > const &a, tvec3< T, P > const &b)
 
+template<typename T , precision P>
GLM_FUNC_DECL tvec2< T, P > closestPointOnLine (tvec2< T, P > const &point, tvec2< T, P > const &a, tvec2< T, P > const &b)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_closest_point

+
Date
2005-12-30 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file closest_point.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00010_source.html b/external/glm/doc/api/a00010_source.html new file mode 100644 index 0000000..cb946f0 --- /dev/null +++ b/external/glm/doc/api/a00010_source.html @@ -0,0 +1,90 @@ + + + + + + +0.9.7: closest_point.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
closest_point.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTX_closest_point extension included")
+
49 #endif
+
50 
+
51 namespace glm
+
52 {
+
55 
+
58  template <typename T, precision P>
+
59  GLM_FUNC_DECL tvec3<T, P> closestPointOnLine(
+
60  tvec3<T, P> const & point,
+
61  tvec3<T, P> const & a,
+
62  tvec3<T, P> const & b);
+
63 
+
65  template <typename T, precision P>
+
66  GLM_FUNC_DECL tvec2<T, P> closestPointOnLine(
+
67  tvec2<T, P> const & point,
+
68  tvec2<T, P> const & a,
+
69  tvec2<T, P> const & b);
+
70 
+
72 }// namespace glm
+
73 
+
74 #include "closest_point.inl"
+
GLM_FUNC_DECL tvec2< T, P > closestPointOnLine(tvec2< T, P > const &point, tvec2< T, P > const &a, tvec2< T, P > const &b)
2d lines work as well
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00011.html b/external/glm/doc/api/a00011.html new file mode 100644 index 0000000..b82a516 --- /dev/null +++ b/external/glm/doc/api/a00011.html @@ -0,0 +1,98 @@ + + + + + + +0.9.7: color_space.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
gtc/color_space.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

+template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > convertLinearToSRGB (vecType< T, P > const &ColorLinear)
 
+template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > convertLinearToSRGB (vecType< T, P > const &ColorLinear, T Gamma)
 
+template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > convertSRGBToLinear (vecType< T, P > const &ColorSRGB)
 
+template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > convertSRGBToLinear (vecType< T, P > const &ColorSRGB, T Gamma)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_color_space

+
Date
2015-02-10 / 2015-08-02
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTC_color_space (dependence)
+ +

Definition in file gtc/color_space.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00011_source.html b/external/glm/doc/api/a00011_source.html new file mode 100644 index 0000000..aa75bd5 --- /dev/null +++ b/external/glm/doc/api/a00011_source.html @@ -0,0 +1,96 @@ + + + + + + +0.9.7: color_space.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
gtc/color_space.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependencies
+
46 #include "../detail/setup.hpp"
+
47 #include "../detail/precision.hpp"
+
48 #include "../exponential.hpp"
+
49 #include "../vec3.hpp"
+
50 #include "../vec4.hpp"
+
51 #include <limits>
+
52 
+
53 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
54 # pragma message("GLM: GLM_GTC_color_space extension included")
+
55 #endif
+
56 
+
57 namespace glm
+
58 {
+
61 
+
63  template <typename T, precision P, template <typename, precision> class vecType>
+
64  GLM_FUNC_DECL vecType<T, P> convertLinearToSRGB(vecType<T, P> const & ColorLinear);
+
65 
+
67  template <typename T, precision P, template <typename, precision> class vecType>
+
68  GLM_FUNC_DECL vecType<T, P> convertLinearToSRGB(vecType<T, P> const & ColorLinear, T Gamma);
+
69 
+
71  template <typename T, precision P, template <typename, precision> class vecType>
+
72  GLM_FUNC_DECL vecType<T, P> convertSRGBToLinear(vecType<T, P> const & ColorSRGB);
+
73 
+
75  template <typename T, precision P, template <typename, precision> class vecType>
+
76  GLM_FUNC_DECL vecType<T, P> convertSRGBToLinear(vecType<T, P> const & ColorSRGB, T Gamma);
+
77 
+
79 } //namespace glm
+
80 
+
81 #include "color_space.inl"
+
GLM_FUNC_DECL vecType< T, P > convertLinearToSRGB(vecType< T, P > const &ColorLinear, T Gamma)
Convert a linear color to sRGB color using a custom gamma correction.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL vecType< T, P > convertSRGBToLinear(vecType< T, P > const &ColorSRGB, T Gamma)
Convert a sRGB color to linear color using a custom gamma correction.
+
+ + + + diff --git a/external/glm/doc/api/a00012.html b/external/glm/doc/api/a00012.html new file mode 100644 index 0000000..1c87592 --- /dev/null +++ b/external/glm/doc/api/a00012.html @@ -0,0 +1,98 @@ + + + + + + +0.9.7: color_space.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
gtx/color_space.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > hsvColor (tvec3< T, P > const &rgbValue)
 
template<typename T , precision P>
GLM_FUNC_DECL T luminosity (tvec3< T, P > const &color)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > rgbColor (tvec3< T, P > const &hsvValue)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > saturation (T const s)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > saturation (T const s, tvec3< T, P > const &color)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< T, P > saturation (T const s, tvec4< T, P > const &color)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_color_space

+
Date
2005-12-21 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file gtx/color_space.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00012_source.html b/external/glm/doc/api/a00012_source.html new file mode 100644 index 0000000..e1c3fb9 --- /dev/null +++ b/external/glm/doc/api/a00012_source.html @@ -0,0 +1,107 @@ + + + + + + +0.9.7: color_space.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
gtx/color_space.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTX_color_space extension included")
+
49 #endif
+
50 
+
51 namespace glm
+
52 {
+
55 
+
58  template <typename T, precision P>
+
59  GLM_FUNC_DECL tvec3<T, P> rgbColor(
+
60  tvec3<T, P> const & hsvValue);
+
61 
+
64  template <typename T, precision P>
+
65  GLM_FUNC_DECL tvec3<T, P> hsvColor(
+
66  tvec3<T, P> const & rgbValue);
+
67 
+
70  template <typename T>
+
71  GLM_FUNC_DECL tmat4x4<T, defaultp> saturation(
+
72  T const s);
+
73 
+
76  template <typename T, precision P>
+
77  GLM_FUNC_DECL tvec3<T, P> saturation(
+
78  T const s,
+
79  tvec3<T, P> const & color);
+
80 
+
83  template <typename T, precision P>
+
84  GLM_FUNC_DECL tvec4<T, P> saturation(
+
85  T const s,
+
86  tvec4<T, P> const & color);
+
87 
+
90  template <typename T, precision P>
+
91  GLM_FUNC_DECL T luminosity(
+
92  tvec3<T, P> const & color);
+
93 
+
95 }//namespace glm
+
96 
+
97 #include "color_space.inl"
+
GLM_FUNC_DECL tvec4< T, P > saturation(T const s, tvec4< T, P > const &color)
Modify the saturation of a color.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL T luminosity(tvec3< T, P > const &color)
Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals.
+
GLM_FUNC_DECL tvec3< T, P > hsvColor(tvec3< T, P > const &rgbValue)
Converts a color from RGB color space to its color in HSV color space.
+
GLM_FUNC_DECL tvec3< T, P > rgbColor(tvec3< T, P > const &hsvValue)
Converts a color from HSV color space to its color in RGB color space.
+
+ + + + diff --git a/external/glm/doc/api/a00013.html b/external/glm/doc/api/a00013.html new file mode 100644 index 0000000..9595398 --- /dev/null +++ b/external/glm/doc/api/a00013.html @@ -0,0 +1,92 @@ + + + + + + +0.9.7: color_space_YCoCg.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
color_space_YCoCg.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > rgb2YCoCg (tvec3< T, P > const &rgbColor)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > rgb2YCoCgR (tvec3< T, P > const &rgbColor)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > YCoCg2rgb (tvec3< T, P > const &YCoCgColor)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > YCoCgR2rgb (tvec3< T, P > const &YCoCgColor)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_color_space_YCoCg

+
Date
2008-10-28 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file color_space_YCoCg.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00013_source.html b/external/glm/doc/api/a00013_source.html new file mode 100644 index 0000000..cc1aae2 --- /dev/null +++ b/external/glm/doc/api/a00013_source.html @@ -0,0 +1,98 @@ + + + + + + +0.9.7: color_space_YCoCg.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
color_space_YCoCg.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTX_color_space_YCoCg extension included")
+
49 #endif
+
50 
+
51 namespace glm
+
52 {
+
55 
+
58  template <typename T, precision P>
+
59  GLM_FUNC_DECL tvec3<T, P> rgb2YCoCg(
+
60  tvec3<T, P> const & rgbColor);
+
61 
+
64  template <typename T, precision P>
+
65  GLM_FUNC_DECL tvec3<T, P> YCoCg2rgb(
+
66  tvec3<T, P> const & YCoCgColor);
+
67 
+
71  template <typename T, precision P>
+
72  GLM_FUNC_DECL tvec3<T, P> rgb2YCoCgR(
+
73  tvec3<T, P> const & rgbColor);
+
74 
+
78  template <typename T, precision P>
+
79  GLM_FUNC_DECL tvec3<T, P> YCoCgR2rgb(
+
80  tvec3<T, P> const & YCoCgColor);
+
81 
+
83 }//namespace glm
+
84 
+
85 #include "color_space_YCoCg.inl"
+
GLM_FUNC_DECL tvec3< T, P > rgb2YCoCgR(tvec3< T, P > const &rgbColor)
Convert a color from RGB color space to YCoCgR color space.
+
GLM_FUNC_DECL tvec3< T, P > rgb2YCoCg(tvec3< T, P > const &rgbColor)
Convert a color from RGB color space to YCoCg color space.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL tvec3< T, P > YCoCgR2rgb(tvec3< T, P > const &YCoCgColor)
Convert a color from YCoCgR color space to RGB color space.
+
GLM_FUNC_DECL tvec3< T, P > rgbColor(tvec3< T, P > const &hsvValue)
Converts a color from HSV color space to its color in RGB color space.
+
GLM_FUNC_DECL tvec3< T, P > YCoCg2rgb(tvec3< T, P > const &YCoCgColor)
Convert a color from YCoCg color space to RGB color space.
+
+ + + + diff --git a/external/glm/doc/api/a00014.html b/external/glm/doc/api/a00014.html new file mode 100644 index 0000000..334c9ed --- /dev/null +++ b/external/glm/doc/api/a00014.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: common.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
common.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file common.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00014_source.html b/external/glm/doc/api/a00014_source.html new file mode 100644 index 0000000..c0c5351 --- /dev/null +++ b/external/glm/doc/api/a00014_source.html @@ -0,0 +1,65 @@ + + + + + + +0.9.7: common.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
common.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "detail/func_common.hpp"
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00015.html b/external/glm/doc/api/a00015.html new file mode 100644 index 0000000..5011e02 --- /dev/null +++ b/external/glm/doc/api/a00015.html @@ -0,0 +1,88 @@ + + + + + + +0.9.7: common.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
gtx/common.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fmod (vecType< T, P > const &v)
 
template<typename genType >
GLM_FUNC_DECL genType::bool_type isdenormal (genType const &x)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_common

+
Date
2014-09-08 / 2014-09-08
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+gtc_half_float (dependence)
+ +

Definition in file gtx/common.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00015_source.html b/external/glm/doc/api/a00015_source.html new file mode 100644 index 0000000..63e4f58 --- /dev/null +++ b/external/glm/doc/api/a00015_source.html @@ -0,0 +1,88 @@ + + + + + + +0.9.7: common.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
gtx/common.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependencies:
+
46 #include "../vec2.hpp"
+
47 #include "../vec3.hpp"
+
48 #include "../vec4.hpp"
+
49 #include "../gtc/vec1.hpp"
+
50 
+
51 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
52 # pragma message("GLM: GLM_GTX_common extension included")
+
53 #endif
+
54 
+
55 namespace glm
+
56 {
+
59 
+
68  template <typename genType>
+
69  GLM_FUNC_DECL typename genType::bool_type isdenormal(genType const & x);
+
70 
+
76  template <typename T, precision P, template <typename, precision> class vecType>
+
77  GLM_FUNC_DECL vecType<T, P> fmod(vecType<T, P> const & v);
+
78 
+
80 }//namespace glm
+
81 
+
82 #include "common.inl"
+
GLM_FUNC_DECL genType::bool_type isdenormal(genType const &x)
Returns true if x is a denormalized number Numbers whose absolute value is too small to be represente...
+
GLM_FUNC_DECL vecType< T, P > fmod(vecType< T, P > const &v)
Similiar to 'mod' but with a different rounding and integer support.
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00016.html b/external/glm/doc/api/a00016.html new file mode 100644 index 0000000..52ff2af --- /dev/null +++ b/external/glm/doc/api/a00016.html @@ -0,0 +1,334 @@ + + + + + + +0.9.7: compatibility.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
compatibility.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

+typedef bool bool1
 
+typedef bool bool1x1
 
+typedef tvec2< bool, highp > bool2
 
+typedef tmat2x2< bool, highp > bool2x2
 
+typedef tmat2x3< bool, highp > bool2x3
 
+typedef tmat2x4< bool, highp > bool2x4
 
+typedef tvec3< bool, highp > bool3
 
+typedef tmat3x2< bool, highp > bool3x2
 
+typedef tmat3x3< bool, highp > bool3x3
 
+typedef tmat3x4< bool, highp > bool3x4
 
+typedef tvec4< bool, highp > bool4
 
+typedef tmat4x2< bool, highp > bool4x2
 
+typedef tmat4x3< bool, highp > bool4x3
 
+typedef tmat4x4< bool, highp > bool4x4
 
+typedef double double1
 
+typedef double double1x1
 
+typedef tvec2< double, highp > double2
 
+typedef tmat2x2< double, highp > double2x2
 
+typedef tmat2x3< double, highp > double2x3
 
+typedef tmat2x4< double, highp > double2x4
 
+typedef tvec3< double, highp > double3
 
+typedef tmat3x2< double, highp > double3x2
 
+typedef tmat3x3< double, highp > double3x3
 
+typedef tmat3x4< double, highp > double3x4
 
+typedef tvec4< double, highp > double4
 
+typedef tmat4x2< double, highp > double4x2
 
+typedef tmat4x3< double, highp > double4x3
 
+typedef tmat4x4< double, highp > double4x4
 
+typedef float float1
 
+typedef float float1x1
 
+typedef tvec2< float, highp > float2
 
+typedef tmat2x2< float, highp > float2x2
 
+typedef tmat2x3< float, highp > float2x3
 
+typedef tmat2x4< float, highp > float2x4
 
+typedef tvec3< float, highp > float3
 
+typedef tmat3x2< float, highp > float3x2
 
+typedef tmat3x3< float, highp > float3x3
 
+typedef tmat3x4< float, highp > float3x4
 
+typedef tvec4< float, highp > float4
 
+typedef tmat4x2< float, highp > float4x2
 
+typedef tmat4x3< float, highp > float4x3
 
+typedef tmat4x4< float, highp > float4x4
 
+typedef int int1
 
+typedef int int1x1
 
+typedef tvec2< int, highp > int2
 
+typedef tmat2x2< int, highp > int2x2
 
+typedef tmat2x3< int, highp > int2x3
 
+typedef tmat2x4< int, highp > int2x4
 
+typedef tvec3< int, highp > int3
 
+typedef tmat3x2< int, highp > int3x2
 
+typedef tmat3x3< int, highp > int3x3
 
+typedef tmat3x4< int, highp > int3x4
 
+typedef tvec4< int, highp > int4
 
+typedef tmat4x2< int, highp > int4x2
 
+typedef tmat4x3< int, highp > int4x3
 
+typedef tmat4x4< int, highp > int4x4
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+template<typename T , precision P>
GLM_FUNC_QUALIFIER T atan2 (T x, T y)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec2< T, P > atan2 (const tvec2< T, P > &x, const tvec2< T, P > &y)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec3< T, P > atan2 (const tvec3< T, P > &x, const tvec3< T, P > &y)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec4< T, P > atan2 (const tvec4< T, P > &x, const tvec4< T, P > &y)
 
+template<typename genType >
GLM_FUNC_DECL bool isfinite (genType const &x)
 
+template<typename T , precision P>
GLM_FUNC_DECL tvec1< bool, P > isfinite (const tvec1< T, P > &x)
 
+template<typename T , precision P>
GLM_FUNC_DECL tvec2< bool, P > isfinite (const tvec2< T, P > &x)
 
+template<typename T , precision P>
GLM_FUNC_DECL tvec3< bool, P > isfinite (const tvec3< T, P > &x)
 
+template<typename T , precision P>
GLM_FUNC_DECL tvec4< bool, P > isfinite (const tvec4< T, P > &x)
 
+template<typename T >
GLM_FUNC_QUALIFIER T lerp (T x, T y, T a)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec2< T, P > lerp (const tvec2< T, P > &x, const tvec2< T, P > &y, T a)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec3< T, P > lerp (const tvec3< T, P > &x, const tvec3< T, P > &y, T a)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec4< T, P > lerp (const tvec4< T, P > &x, const tvec4< T, P > &y, T a)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec2< T, P > lerp (const tvec2< T, P > &x, const tvec2< T, P > &y, const tvec2< T, P > &a)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec3< T, P > lerp (const tvec3< T, P > &x, const tvec3< T, P > &y, const tvec3< T, P > &a)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec4< T, P > lerp (const tvec4< T, P > &x, const tvec4< T, P > &y, const tvec4< T, P > &a)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER T saturate (T x)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec2< T, P > saturate (const tvec2< T, P > &x)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec3< T, P > saturate (const tvec3< T, P > &x)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec4< T, P > saturate (const tvec4< T, P > &x)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_compatibility

+
Date
2007-01-24 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+gtc_half_float (dependence)
+ +

Definition in file compatibility.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00016_source.html b/external/glm/doc/api/a00016_source.html new file mode 100644 index 0000000..a4054ed --- /dev/null +++ b/external/glm/doc/api/a00016_source.html @@ -0,0 +1,239 @@ + + + + + + +0.9.7: compatibility.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
compatibility.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependency:
+
46 #include "../glm.hpp"
+
47 #include "../gtc/quaternion.hpp"
+
48 
+
49 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
50 # pragma message("GLM: GLM_GTX_compatibility extension included")
+
51 #endif
+
52 
+
53 #if(GLM_COMPILER & GLM_COMPILER_VC)
+
54 # include <cfloat>
+
55 #elif(GLM_COMPILER & GLM_COMPILER_GCC)
+
56 # include <cmath>
+
57 # if(GLM_PLATFORM & GLM_PLATFORM_ANDROID)
+
58 # undef isfinite
+
59 # endif
+
60 #endif//GLM_COMPILER
+
61 
+
62 namespace glm
+
63 {
+
66 
+
67  template <typename T> GLM_FUNC_QUALIFIER T lerp(T x, T y, T a){return mix(x, y, a);}
+
68  template <typename T, precision P> GLM_FUNC_QUALIFIER tvec2<T, P> lerp(const tvec2<T, P>& x, const tvec2<T, P>& y, T a){return mix(x, y, a);}
+
69 
+
70  template <typename T, precision P> GLM_FUNC_QUALIFIER tvec3<T, P> lerp(const tvec3<T, P>& x, const tvec3<T, P>& y, T a){return mix(x, y, a);}
+
71  template <typename T, precision P> GLM_FUNC_QUALIFIER tvec4<T, P> lerp(const tvec4<T, P>& x, const tvec4<T, P>& y, T a){return mix(x, y, a);}
+
72  template <typename T, precision P> GLM_FUNC_QUALIFIER tvec2<T, P> lerp(const tvec2<T, P>& x, const tvec2<T, P>& y, const tvec2<T, P>& a){return mix(x, y, a);}
+
73  template <typename T, precision P> GLM_FUNC_QUALIFIER tvec3<T, P> lerp(const tvec3<T, P>& x, const tvec3<T, P>& y, const tvec3<T, P>& a){return mix(x, y, a);}
+
74  template <typename T, precision P> GLM_FUNC_QUALIFIER tvec4<T, P> lerp(const tvec4<T, P>& x, const tvec4<T, P>& y, const tvec4<T, P>& a){return mix(x, y, a);}
+
75 
+
76  template <typename T, precision P> GLM_FUNC_QUALIFIER T saturate(T x){return clamp(x, T(0), T(1));}
+
77  template <typename T, precision P> GLM_FUNC_QUALIFIER tvec2<T, P> saturate(const tvec2<T, P>& x){return clamp(x, T(0), T(1));}
+
78  template <typename T, precision P> GLM_FUNC_QUALIFIER tvec3<T, P> saturate(const tvec3<T, P>& x){return clamp(x, T(0), T(1));}
+
79  template <typename T, precision P> GLM_FUNC_QUALIFIER tvec4<T, P> saturate(const tvec4<T, P>& x){return clamp(x, T(0), T(1));}
+
80 
+
81  template <typename T, precision P> GLM_FUNC_QUALIFIER T atan2(T x, T y){return atan(x, y);}
+
82  template <typename T, precision P> GLM_FUNC_QUALIFIER tvec2<T, P> atan2(const tvec2<T, P>& x, const tvec2<T, P>& y){return atan(x, y);}
+
83  template <typename T, precision P> GLM_FUNC_QUALIFIER tvec3<T, P> atan2(const tvec3<T, P>& x, const tvec3<T, P>& y){return atan(x, y);}
+
84  template <typename T, precision P> GLM_FUNC_QUALIFIER tvec4<T, P> atan2(const tvec4<T, P>& x, const tvec4<T, P>& y){return atan(x, y);}
+
85 
+
86  template <typename genType> GLM_FUNC_DECL bool isfinite(genType const & x);
+
87  template <typename T, precision P> GLM_FUNC_DECL tvec1<bool, P> isfinite(const tvec1<T, P>& x);
+
88  template <typename T, precision P> GLM_FUNC_DECL tvec2<bool, P> isfinite(const tvec2<T, P>& x);
+
89  template <typename T, precision P> GLM_FUNC_DECL tvec3<bool, P> isfinite(const tvec3<T, P>& x);
+
90  template <typename T, precision P> GLM_FUNC_DECL tvec4<bool, P> isfinite(const tvec4<T, P>& x);
+
91 
+
92  typedef bool bool1;
+
93  typedef tvec2<bool, highp> bool2;
+
94  typedef tvec3<bool, highp> bool3;
+
95  typedef tvec4<bool, highp> bool4;
+
96 
+
97  typedef bool bool1x1;
+
98  typedef tmat2x2<bool, highp> bool2x2;
+
99  typedef tmat2x3<bool, highp> bool2x3;
+
100  typedef tmat2x4<bool, highp> bool2x4;
+
101  typedef tmat3x2<bool, highp> bool3x2;
+
102  typedef tmat3x3<bool, highp> bool3x3;
+
103  typedef tmat3x4<bool, highp> bool3x4;
+
104  typedef tmat4x2<bool, highp> bool4x2;
+
105  typedef tmat4x3<bool, highp> bool4x3;
+
106  typedef tmat4x4<bool, highp> bool4x4;
+
107 
+
108  typedef int int1;
+
109  typedef tvec2<int, highp> int2;
+
110  typedef tvec3<int, highp> int3;
+
111  typedef tvec4<int, highp> int4;
+
112 
+
113  typedef int int1x1;
+
114  typedef tmat2x2<int, highp> int2x2;
+
115  typedef tmat2x3<int, highp> int2x3;
+
116  typedef tmat2x4<int, highp> int2x4;
+
117  typedef tmat3x2<int, highp> int3x2;
+
118  typedef tmat3x3<int, highp> int3x3;
+
119  typedef tmat3x4<int, highp> int3x4;
+
120  typedef tmat4x2<int, highp> int4x2;
+
121  typedef tmat4x3<int, highp> int4x3;
+
122  typedef tmat4x4<int, highp> int4x4;
+
123 
+
124  typedef float float1;
+
125  typedef tvec2<float, highp> float2;
+
126  typedef tvec3<float, highp> float3;
+
127  typedef tvec4<float, highp> float4;
+
128 
+
129  typedef float float1x1;
+
130  typedef tmat2x2<float, highp> float2x2;
+
131  typedef tmat2x3<float, highp> float2x3;
+
132  typedef tmat2x4<float, highp> float2x4;
+
133  typedef tmat3x2<float, highp> float3x2;
+
134  typedef tmat3x3<float, highp> float3x3;
+
135  typedef tmat3x4<float, highp> float3x4;
+
136  typedef tmat4x2<float, highp> float4x2;
+
137  typedef tmat4x3<float, highp> float4x3;
+
138  typedef tmat4x4<float, highp> float4x4;
+
139 
+
140  typedef double double1;
+
141  typedef tvec2<double, highp> double2;
+
142  typedef tvec3<double, highp> double3;
+
143  typedef tvec4<double, highp> double4;
+
144 
+
145  typedef double double1x1;
+
146  typedef tmat2x2<double, highp> double2x2;
+
147  typedef tmat2x3<double, highp> double2x3;
+
148  typedef tmat2x4<double, highp> double2x4;
+
149  typedef tmat3x2<double, highp> double3x2;
+
150  typedef tmat3x3<double, highp> double3x3;
+
151  typedef tmat3x4<double, highp> double3x4;
+
152  typedef tmat4x2<double, highp> double4x2;
+
153  typedef tmat4x3<double, highp> double4x3;
+
154  typedef tmat4x4<double, highp> double4x4;
+
155 
+
157 }//namespace glm
+
158 
+
159 #include "compatibility.inl"
+
tmat2x2< int, highp > int2x2
integer matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
+
tmat4x2< int, highp > int4x2
integer matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
+
GLM_FUNC_DECL genType clamp(genType x, genType minVal, genType maxVal)
Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal an...
+
tmat3x4< bool, highp > bool3x4
boolean matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
+
tmat3x4< float, highp > float3x4
single-precision floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension) ...
+
tmat4x4< int, highp > int4x4
integer matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
+
tmat4x3< double, highp > double4x3
double-precision floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension) ...
+
tvec3< bool, highp > bool3
boolean type with 3 components. (From GLM_GTX_compatibility extension)
+
tmat2x4< float, highp > float2x4
single-precision floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension) ...
+
tmat2x4< double, highp > double2x4
double-precision floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension) ...
+
tmat2x3< bool, highp > bool2x3
boolean matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
+
double double1
double-precision floating-point vector with 1 component. (From GLM_GTX_compatibility extension) ...
+
tmat4x3< bool, highp > bool4x3
boolean matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
+
tmat2x3< float, highp > float2x3
single-precision floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension) ...
+
tmat3x4< int, highp > int3x4
integer matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
+
tmat2x3< int, highp > int2x3
integer matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
+
tmat4x4< double, highp > double4x4
double-precision floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension) ...
+
tmat4x2< bool, highp > bool4x2
boolean matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
+
GLM_FUNC_QUALIFIER tvec4< T, P > atan2(const tvec4< T, P > &x, const tvec4< T, P > &y)
Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what q...
+
tvec4< bool, highp > bool4
boolean type with 4 components. (From GLM_GTX_compatibility extension)
+
tmat3x2< double, highp > double3x2
double-precision floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension) ...
+
tvec3< double, highp > double3
double-precision floating-point vector with 3 components. (From GLM_GTX_compatibility extension) ...
+
GLM_FUNC_QUALIFIER tvec4< T, P > lerp(const tvec4< T, P > &x, const tvec4< T, P > &y, const tvec4< T, P > &a)
Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using v...
+
float float1x1
single-precision floating-point matrix with 1 component. (From GLM_GTX_compatibility extension) ...
+
tmat2x2< float, highp > float2x2
single-precision floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension) ...
+
tmat4x3< int, highp > int4x3
integer matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
+
tmat3x3< float, highp > float3x3
single-precision floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension) ...
+
int int1x1
integer matrix with 1 component. (From GLM_GTX_compatibility extension)
+
tmat4x2< float, highp > float4x2
single-precision floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension) ...
+
tvec4< double, highp > double4
double-precision floating-point vector with 4 components. (From GLM_GTX_compatibility extension) ...
+
GLM_FUNC_DECL tvec4< bool, P > isfinite(const tvec4< T, P > &x)
Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)...
+
tmat2x4< int, highp > int2x4
integer matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
+
tmat4x3< float, highp > float4x3
single-precision floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension) ...
+
tvec3< int, highp > int3
integer vector with 3 components. (From GLM_GTX_compatibility extension)
+
Definition: _noise.hpp:40
+
tmat3x4< double, highp > double3x4
double-precision floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension) ...
+
tmat3x3< double, highp > double3x3
double-precision floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension) ...
+
tmat4x2< double, highp > double4x2
double-precision floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension) ...
+
tvec3< float, highp > float3
single-precision floating-point vector with 3 components. (From GLM_GTX_compatibility extension) ...
+
bool bool1x1
boolean matrix with 1 x 1 component. (From GLM_GTX_compatibility extension)
+
tvec4< int, highp > int4
integer vector with 4 components. (From GLM_GTX_compatibility extension)
+
tmat3x3< bool, highp > bool3x3
boolean matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
+
tvec2< double, highp > double2
double-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension) ...
+
tmat3x2< int, highp > int3x2
integer matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
+
tvec4< float, highp > float4
single-precision floating-point vector with 4 components. (From GLM_GTX_compatibility extension) ...
+
int int1
integer vector with 1 component. (From GLM_GTX_compatibility extension)
+
tmat4x4< float, highp > float4x4
single-precision floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension) ...
+
float float1
single-precision floating-point vector with 1 component. (From GLM_GTX_compatibility extension) ...
+
tvec2< float, highp > float2
single-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension) ...
+
tmat2x4< bool, highp > bool2x4
boolean matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
+
tmat2x2< double, highp > double2x2
double-precision floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension) ...
+
GLM_FUNC_DECL vecType< T, P > atan(vecType< T, P > const &y, vecType< T, P > const &x)
Arc tangent.
+
GLM_FUNC_QUALIFIER tvec4< T, P > saturate(const tvec4< T, P > &x)
Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
+
tmat2x2< bool, highp > bool2x2
boolean matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
+
GLM_FUNC_DECL vecType< T, P > mix(vecType< T, P > const &x, vecType< T, P > const &y, vecType< U, P > const &a)
If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of ...
+
bool bool1
boolean type with 1 component. (From GLM_GTX_compatibility extension)
+
double double1x1
double-precision floating-point matrix with 1 component. (From GLM_GTX_compatibility extension) ...
+
tvec2< bool, highp > bool2
boolean type with 2 components. (From GLM_GTX_compatibility extension)
+
tvec2< int, highp > int2
integer vector with 2 components. (From GLM_GTX_compatibility extension)
+
tmat2x3< double, highp > double2x3
double-precision floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension) ...
+
tmat3x2< bool, highp > bool3x2
boolean matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
+
tmat3x3< int, highp > int3x3
integer matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
+
tmat3x2< float, highp > float3x2
single-precision floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension) ...
+
tmat4x4< bool, highp > bool4x4
boolean matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
+
+ + + + diff --git a/external/glm/doc/api/a00017.html b/external/glm/doc/api/a00017.html new file mode 100644 index 0000000..30cad0c --- /dev/null +++ b/external/glm/doc/api/a00017.html @@ -0,0 +1,92 @@ + + + + + + +0.9.7: component_wise.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
component_wise.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType::value_type compAdd (genType const &v)
 
template<typename genType >
GLM_FUNC_DECL genType::value_type compMax (genType const &v)
 
template<typename genType >
GLM_FUNC_DECL genType::value_type compMin (genType const &v)
 
template<typename genType >
GLM_FUNC_DECL genType::value_type compMul (genType const &v)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_component_wise

+
Date
2007-05-21 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file component_wise.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00017_source.html b/external/glm/doc/api/a00017_source.html new file mode 100644 index 0000000..627ad7d --- /dev/null +++ b/external/glm/doc/api/a00017_source.html @@ -0,0 +1,98 @@ + + + + + + +0.9.7: component_wise.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
component_wise.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependencies
+
45 #include "../detail/setup.hpp"
+
46 #include "../detail/precision.hpp"
+
47 
+
48 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
49 # pragma message("GLM: GLM_GTX_component_wise extension included")
+
50 #endif
+
51 
+
52 namespace glm
+
53 {
+
56 
+
59  template <typename genType>
+
60  GLM_FUNC_DECL typename genType::value_type compAdd(
+
61  genType const & v);
+
62 
+
65  template <typename genType>
+
66  GLM_FUNC_DECL typename genType::value_type compMul(
+
67  genType const & v);
+
68 
+
71  template <typename genType>
+
72  GLM_FUNC_DECL typename genType::value_type compMin(
+
73  genType const & v);
+
74 
+
77  template <typename genType>
+
78  GLM_FUNC_DECL typename genType::value_type compMax(
+
79  genType const & v);
+
80 
+
82 }//namespace glm
+
83 
+
84 #include "component_wise.inl"
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL genType::value_type compAdd(genType const &v)
Add all vector components together.
+
GLM_FUNC_DECL genType::value_type compMin(genType const &v)
Find the minimum value between single vector components.
+
GLM_FUNC_DECL genType::value_type compMax(genType const &v)
Find the maximum value between single vector components.
+
GLM_FUNC_DECL genType::value_type compMul(genType const &v)
Multiply all vector components together.
+
+ + + + diff --git a/external/glm/doc/api/a00018.html b/external/glm/doc/api/a00018.html new file mode 100644 index 0000000..99ea57e --- /dev/null +++ b/external/glm/doc/api/a00018.html @@ -0,0 +1,169 @@ + + + + + + +0.9.7: constants.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
constants.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType e ()
 
template<typename genType >
GLM_FUNC_DECL genType epsilon ()
 
template<typename genType >
GLM_FUNC_DECL genType euler ()
 
template<typename genType >
GLM_FUNC_DECL genType four_over_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType golden_ratio ()
 
template<typename genType >
GLM_FUNC_DECL genType half_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType ln_ln_two ()
 
template<typename genType >
GLM_FUNC_DECL genType ln_ten ()
 
template<typename genType >
GLM_FUNC_DECL genType ln_two ()
 
template<typename genType >
GLM_FUNC_DECL genType one ()
 
template<typename genType >
GLM_FUNC_DECL genType one_over_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType one_over_root_two ()
 
template<typename genType >
GLM_FUNC_DECL genType one_over_two_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType pi ()
 
template<typename genType >
GLM_FUNC_DECL genType quarter_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType root_five ()
 
template<typename genType >
GLM_FUNC_DECL genType root_half_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType root_ln_four ()
 
template<typename genType >
GLM_FUNC_DECL genType root_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType root_three ()
 
template<typename genType >
GLM_FUNC_DECL genType root_two ()
 
template<typename genType >
GLM_FUNC_DECL genType root_two_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType third ()
 
template<typename genType >
GLM_FUNC_DECL genType three_over_two_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType two_over_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType two_over_root_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType two_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType two_thirds ()
 
template<typename genType >
GLM_FUNC_DECL genType zero ()
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_constants

+
Date
2011-09-30 / 2012-01-25
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+gtc_half_float (dependence)
+ +

Definition in file constants.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00018_source.html b/external/glm/doc/api/a00018_source.html new file mode 100644 index 0000000..b408761 --- /dev/null +++ b/external/glm/doc/api/a00018_source.html @@ -0,0 +1,193 @@ + + + + + + +0.9.7: constants.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
constants.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependencies
+
46 #include "../detail/setup.hpp"
+
47 
+
48 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
49 # pragma message("GLM: GLM_GTC_constants extension included")
+
50 #endif
+
51 
+
52 namespace glm
+
53 {
+
56 
+
59  template <typename genType>
+
60  GLM_FUNC_DECL genType epsilon();
+
61 
+
64  template <typename genType>
+
65  GLM_FUNC_DECL genType zero();
+
66 
+
69  template <typename genType>
+
70  GLM_FUNC_DECL genType one();
+
71 
+
74  template <typename genType>
+
75  GLM_FUNC_DECL genType pi();
+
76 
+
79  template <typename genType>
+
80  GLM_FUNC_DECL genType two_pi();
+
81 
+
84  template <typename genType>
+
85  GLM_FUNC_DECL genType root_pi();
+
86 
+
89  template <typename genType>
+
90  GLM_FUNC_DECL genType half_pi();
+
91 
+
94  template <typename genType>
+
95  GLM_FUNC_DECL genType three_over_two_pi();
+
96 
+
99  template <typename genType>
+
100  GLM_FUNC_DECL genType quarter_pi();
+
101 
+
104  template <typename genType>
+
105  GLM_FUNC_DECL genType one_over_pi();
+
106 
+
109  template <typename genType>
+
110  GLM_FUNC_DECL genType one_over_two_pi();
+
111 
+
114  template <typename genType>
+
115  GLM_FUNC_DECL genType two_over_pi();
+
116 
+
119  template <typename genType>
+
120  GLM_FUNC_DECL genType four_over_pi();
+
121 
+
124  template <typename genType>
+
125  GLM_FUNC_DECL genType two_over_root_pi();
+
126 
+
129  template <typename genType>
+
130  GLM_FUNC_DECL genType one_over_root_two();
+
131 
+
134  template <typename genType>
+
135  GLM_FUNC_DECL genType root_half_pi();
+
136 
+
139  template <typename genType>
+
140  GLM_FUNC_DECL genType root_two_pi();
+
141 
+
144  template <typename genType>
+
145  GLM_FUNC_DECL genType root_ln_four();
+
146 
+
149  template <typename genType>
+
150  GLM_FUNC_DECL genType e();
+
151 
+
154  template <typename genType>
+
155  GLM_FUNC_DECL genType euler();
+
156 
+
159  template <typename genType>
+
160  GLM_FUNC_DECL genType root_two();
+
161 
+
164  template <typename genType>
+
165  GLM_FUNC_DECL genType root_three();
+
166 
+
169  template <typename genType>
+
170  GLM_FUNC_DECL genType root_five();
+
171 
+
174  template <typename genType>
+
175  GLM_FUNC_DECL genType ln_two();
+
176 
+
179  template <typename genType>
+
180  GLM_FUNC_DECL genType ln_ten();
+
181 
+
184  template <typename genType>
+
185  GLM_FUNC_DECL genType ln_ln_two();
+
186 
+
189  template <typename genType>
+
190  GLM_FUNC_DECL genType third();
+
191 
+
194  template <typename genType>
+
195  GLM_FUNC_DECL genType two_thirds();
+
196 
+
199  template <typename genType>
+
200  GLM_FUNC_DECL genType golden_ratio();
+
201 
+
203 } //namespace glm
+
204 
+
205 #include "constants.inl"
+
GLM_FUNC_DECL genType euler()
Return Euler's constant.
+
GLM_FUNC_DECL genType two_over_pi()
Return 2 / pi.
+
GLM_FUNC_DECL genType three_over_two_pi()
Return pi / 2 * 3.
+
GLM_FUNC_DECL genType root_pi()
Return square root of pi.
+
GLM_FUNC_DECL genType one()
Return 1.
+
GLM_FUNC_DECL genType root_ln_four()
Return sqrt(ln(4)).
+
GLM_FUNC_DECL genType two_pi()
Return pi * 2.
+
GLM_FUNC_DECL genType root_five()
Return sqrt(5).
+
GLM_FUNC_DECL genType e()
Return e constant.
+
GLM_FUNC_DECL genType quarter_pi()
Return pi / 4.
+
GLM_FUNC_DECL genType epsilon()
Return the epsilon constant for floating point types.
+
GLM_FUNC_DECL genType ln_two()
Return ln(2).
+
GLM_FUNC_DECL genType root_two()
Return sqrt(2).
+
GLM_FUNC_DECL genType root_three()
Return sqrt(3).
+
GLM_FUNC_DECL genType two_thirds()
Return 2 / 3.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL genType ln_ln_two()
Return ln(ln(2)).
+
GLM_FUNC_DECL genType zero()
Return 0.
+
GLM_FUNC_DECL genType one_over_root_two()
Return 1 / sqrt(2).
+
GLM_FUNC_DECL genType root_two_pi()
Return sqrt(2 * pi).
+
GLM_FUNC_DECL genType root_half_pi()
Return sqrt(pi / 2).
+
GLM_FUNC_DECL genType one_over_pi()
Return 1 / pi.
+
GLM_FUNC_DECL genType four_over_pi()
Return 4 / pi.
+
GLM_FUNC_DECL genType two_over_root_pi()
Return 2 / sqrt(pi).
+
GLM_FUNC_DECL genType ln_ten()
Return ln(10).
+
GLM_FUNC_DECL genType one_over_two_pi()
Return 1 / (pi * 2).
+
GLM_FUNC_DECL genType pi()
Return the pi constant.
+
GLM_FUNC_DECL genType third()
Return 1 / 3.
+
GLM_FUNC_DECL genType golden_ratio()
Return the golden ratio constant.
+
GLM_FUNC_DECL genType half_pi()
Return pi / 2.
+
+ + + + diff --git a/external/glm/doc/api/a00019.html b/external/glm/doc/api/a00019.html new file mode 100644 index 0000000..2e7e60a --- /dev/null +++ b/external/glm/doc/api/a00019.html @@ -0,0 +1,135 @@ + + + + + + +0.9.7: dual_quaternion.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
dual_quaternion.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef highp_ddualquat ddualquat
 
typedef highp_fdualquat dualquat
 
typedef highp_fdualquat fdualquat
 
typedef tdualquat< double, highp > highp_ddualquat
 
typedef tdualquat< float, highp > highp_dualquat
 
typedef tdualquat< float, highp > highp_fdualquat
 
typedef tdualquat< double, lowp > lowp_ddualquat
 
typedef tdualquat< float, lowp > lowp_dualquat
 
typedef tdualquat< float, lowp > lowp_fdualquat
 
typedef tdualquat< double, mediump > mediump_ddualquat
 
typedef tdualquat< float, mediump > mediump_dualquat
 
typedef tdualquat< float, mediump > mediump_fdualquat
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tdualquat< T, P > dualquat_cast (tmat2x4< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tdualquat< T, P > dualquat_cast (tmat3x4< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tdualquat< T, P > inverse (tdualquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL tdualquat< T, P > lerp (tdualquat< T, P > const &x, tdualquat< T, P > const &y, T const &a)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat2x4< T, P > mat2x4_cast (tdualquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x4< T, P > mat3x4_cast (tdualquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tdualquat< T, P > normalize (tdualquat< T, P > const &q)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_dual_quaternion

+
Date
2013-02-10 / 2013-02-20
+
Author
Maksim Vorobiev (msome.nosp@m.one@.nosp@m.gmail.nosp@m..com)
+
See also
GLM Core (dependence)
+
+gtc_half_float (dependence)
+
+GLM_GTC_constants (dependence)
+
+GLM_GTC_quaternion (dependence)
+ +

Definition in file dual_quaternion.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00019_source.html b/external/glm/doc/api/a00019_source.html new file mode 100644 index 0000000..fcc5e32 --- /dev/null +++ b/external/glm/doc/api/a00019_source.html @@ -0,0 +1,273 @@ + + + + + + +0.9.7: dual_quaternion.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
dual_quaternion.hpp
+
+
+Go to the documentation of this file.
1 
+
45 #pragma once
+
46 
+
47 // Dependency:
+
48 #include "../glm.hpp"
+
49 #include "../gtc/constants.hpp"
+
50 #include "../gtc/quaternion.hpp"
+
51 
+
52 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
53 # pragma message("GLM: GLM_GTX_dual_quaternion extension included")
+
54 #endif
+
55 
+
56 namespace glm
+
57 {
+
60 
+
61  template <typename T, precision P = defaultp>
+
62  struct tdualquat
+
63  {
+
64  // -- Implementation detail --
+
65 
+
66  typedef T value_type;
+
67  typedef glm::tquat<T, P> part_type;
+
68 
+
69 # ifdef GLM_META_PROG_HELPERS
+
70  static GLM_RELAXED_CONSTEXPR length_t components = 2;
+
71  static GLM_RELAXED_CONSTEXPR precision prec = P;
+
72 # endif//GLM_META_PROG_HELPERS
+
73 
+
74  // -- Data --
+
75 
+
76  glm::tquat<T, P> real, dual;
+
77 
+
78  // -- Component accesses --
+
79 
+
80 # ifdef GLM_FORCE_SIZE_FUNC
+
81  typedef size_t size_type;
+
83  GLM_FUNC_DECL GLM_CONSTEXPR size_type size() const;
+
84 
+
85  GLM_FUNC_DECL part_type & operator[](size_type i);
+
86  GLM_FUNC_DECL part_type const & operator[](size_type i) const;
+
87 # else
+
88  typedef length_t length_type;
+
90  GLM_FUNC_DECL GLM_CONSTEXPR length_type length() const;
+
91 
+
92  GLM_FUNC_DECL part_type & operator[](length_type i);
+
93  GLM_FUNC_DECL part_type const & operator[](length_type i) const;
+
94 # endif//GLM_FORCE_SIZE_FUNC
+
95 
+
96  // -- Implicit basic constructors --
+
97 
+
98  GLM_FUNC_DECL tdualquat() GLM_DEFAULT_CTOR;
+
99  GLM_FUNC_DECL tdualquat(tdualquat<T, P> const & d) GLM_DEFAULT;
+
100  template <precision Q>
+
101  GLM_FUNC_DECL tdualquat(tdualquat<T, Q> const & d);
+
102 
+
103  // -- Explicit basic constructors --
+
104 
+
105  GLM_FUNC_DECL explicit tdualquat(ctor);
+
106  GLM_FUNC_DECL explicit tdualquat(tquat<T, P> const & real);
+
107  GLM_FUNC_DECL tdualquat(tquat<T, P> const & orientation, tvec3<T, P> const & translation);
+
108  GLM_FUNC_DECL tdualquat(tquat<T, P> const & real, tquat<T, P> const & dual);
+
109 
+
110  // -- Conversion constructors --
+
111 
+
112  template <typename U, precision Q>
+
113  GLM_FUNC_DECL GLM_EXPLICIT tdualquat(tdualquat<U, Q> const & q);
+
114 
+
115  GLM_FUNC_DECL explicit tdualquat(tmat2x4<T, P> const & holder_mat);
+
116  GLM_FUNC_DECL explicit tdualquat(tmat3x4<T, P> const & aug_mat);
+
117 
+
118  // -- Unary arithmetic operators --
+
119 
+
120  GLM_FUNC_DECL tdualquat<T, P> & operator=(tdualquat<T, P> const & m) GLM_DEFAULT;
+
121 
+
122  template <typename U>
+
123  GLM_FUNC_DECL tdualquat<T, P> & operator=(tdualquat<U, P> const & m);
+
124  template <typename U>
+
125  GLM_FUNC_DECL tdualquat<T, P> & operator*=(U s);
+
126  template <typename U>
+
127  GLM_FUNC_DECL tdualquat<T, P> & operator/=(U s);
+
128  };
+
129 
+
130  // -- Unary bit operators --
+
131 
+
132  template <typename T, precision P>
+
133  GLM_FUNC_DECL tquat<T, P> operator-(tquat<T, P> const & q);
+
134 
+
135  // -- Binary operators --
+
136 
+
137  template <typename T, precision P>
+
138  GLM_FUNC_DECL tdualquat<T, P> operator+(tdualquat<T, P> const & q, tdualquat<T, P> const & p);
+
139 
+
140  template <typename T, precision P>
+
141  GLM_FUNC_DECL tdualquat<T, P> operator*(tdualquat<T, P> const & q, tdualquat<T, P> const & p);
+
142 
+
143  template <typename T, precision P>
+
144  GLM_FUNC_DECL tvec3<T, P> operator*(tquat<T, P> const & q, tvec3<T, P> const & v);
+
145 
+
146  template <typename T, precision P>
+
147  GLM_FUNC_DECL tvec3<T, P> operator*(tvec3<T, P> const & v, tquat<T, P> const & q);
+
148 
+
149  template <typename T, precision P>
+
150  GLM_FUNC_DECL tvec4<T, P> operator*(tquat<T, P> const & q, tvec4<T, P> const & v);
+
151 
+
152  template <typename T, precision P>
+
153  GLM_FUNC_DECL tvec4<T, P> operator*(tvec4<T, P> const & v, tquat<T, P> const & q);
+
154 
+
155  template <typename T, precision P>
+
156  GLM_FUNC_DECL tdualquat<T, P> operator*(tdualquat<T, P> const & q, T const & s);
+
157 
+
158  template <typename T, precision P>
+
159  GLM_FUNC_DECL tdualquat<T, P> operator*(T const & s, tdualquat<T, P> const & q);
+
160 
+
161  template <typename T, precision P>
+
162  GLM_FUNC_DECL tdualquat<T, P> operator/(tdualquat<T, P> const & q, T const & s);
+
163 
+
167  template <typename T, precision P>
+
168  GLM_FUNC_DECL tdualquat<T, P> normalize(tdualquat<T, P> const & q);
+
169 
+
173  template <typename T, precision P>
+
174  GLM_FUNC_DECL tdualquat<T, P> lerp(tdualquat<T, P> const & x, tdualquat<T, P> const & y, T const & a);
+
175 
+
179  template <typename T, precision P>
+
180  GLM_FUNC_DECL tdualquat<T, P> inverse(tdualquat<T, P> const & q);
+
181 
+
185  template <typename T, precision P>
+
186  GLM_FUNC_DECL tmat2x4<T, P> mat2x4_cast(tdualquat<T, P> const & x);
+
187 
+
191  template <typename T, precision P>
+
192  GLM_FUNC_DECL tmat3x4<T, P> mat3x4_cast(tdualquat<T, P> const & x);
+
193 
+
197  template <typename T, precision P>
+
198  GLM_FUNC_DECL tdualquat<T, P> dualquat_cast(tmat2x4<T, P> const & x);
+
199 
+
203  template <typename T, precision P>
+
204  GLM_FUNC_DECL tdualquat<T, P> dualquat_cast(tmat3x4<T, P> const & x);
+
205 
+
206 
+
210  typedef tdualquat<float, lowp> lowp_dualquat;
+
211 
+
215  typedef tdualquat<float, mediump> mediump_dualquat;
+
216 
+
220  typedef tdualquat<float, highp> highp_dualquat;
+
221 
+
222 
+
226  typedef tdualquat<float, lowp> lowp_fdualquat;
+
227 
+
231  typedef tdualquat<float, mediump> mediump_fdualquat;
+
232 
+
236  typedef tdualquat<float, highp> highp_fdualquat;
+
237 
+
238 
+
242  typedef tdualquat<double, lowp> lowp_ddualquat;
+
243 
+
247  typedef tdualquat<double, mediump> mediump_ddualquat;
+
248 
+
252  typedef tdualquat<double, highp> highp_ddualquat;
+
253 
+
254 
+
255 #if(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
+
256  typedef highp_fdualquat dualquat;
+
260 
+
264  typedef highp_fdualquat fdualquat;
+
265 #elif(defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
+
266  typedef highp_fdualquat dualquat;
+
267  typedef highp_fdualquat fdualquat;
+
268 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
+
269  typedef mediump_fdualquat dualquat;
+
270  typedef mediump_fdualquat fdualquat;
+
271 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && defined(GLM_PRECISION_LOWP_FLOAT))
+
272  typedef lowp_fdualquat dualquat;
+
273  typedef lowp_fdualquat fdualquat;
+
274 #else
+
275 # error "GLM error: multiple default precision requested for single-precision floating-point types"
+
276 #endif
+
277 
+
278 
+
279 #if(!defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
+
280  typedef highp_ddualquat ddualquat;
+
284 #elif(defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
+
285  typedef highp_ddualquat ddualquat;
+
286 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
+
287  typedef mediump_ddualquat ddualquat;
+
288 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && defined(GLM_PRECISION_LOWP_DOUBLE))
+
289  typedef lowp_ddualquat ddualquat;
+
290 #else
+
291 # error "GLM error: Multiple default precision requested for double-precision floating-point types"
+
292 #endif
+
293 
+
295 } //namespace glm
+
296 
+
297 #include "dual_quaternion.inl"
+
GLM_FUNC_DECL tdualquat< T, P > dualquat_cast(tmat3x4< T, P > const &x)
Converts a 3 * 4 matrix (augmented matrix rotation + translation) to a quaternion.
+
tdualquat< double, lowp > lowp_ddualquat
Dual-quaternion of low double-precision floating-point numbers.
+
GLM_FUNC_DECL tdualquat< T, P > normalize(tdualquat< T, P > const &q)
Returns the normalized quaternion.
+
tdualquat< float, highp > highp_dualquat
Dual-quaternion of high single-precision floating-point numbers.
+
GLM_FUNC_DECL tmat4x4< T, P > orientation(tvec3< T, P > const &Normal, tvec3< T, P > const &Up)
Build a rotation matrix from a normal and a up vector.
+
tdualquat< float, mediump > mediump_fdualquat
Dual-quaternion of medium single-precision floating-point numbers.
+
highp_fdualquat fdualquat
Dual-quaternion of single-precision floating-point numbers.
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
tdualquat< float, lowp > lowp_dualquat
Dual-quaternion of low single-precision floating-point numbers.
+
GLM_FUNC_DECL tdualquat< T, P > lerp(tdualquat< T, P > const &x, tdualquat< T, P > const &y, T const &a)
Returns the linear interpolation of two dual quaternion.
+
GLM_FUNC_DECL tmat2x4< T, P > mat2x4_cast(tdualquat< T, P > const &x)
Converts a quaternion to a 2 * 4 matrix.
+
highp_ddualquat ddualquat
Dual-quaternion of default double-precision floating-point numbers.
+
tdualquat< double, highp > highp_ddualquat
Dual-quaternion of high double-precision floating-point numbers.
+
tdualquat< float, highp > highp_fdualquat
Dual-quaternion of high single-precision floating-point numbers.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL tdualquat< T, P > inverse(tdualquat< T, P > const &q)
Returns the q inverse.
+
tdualquat< float, mediump > mediump_dualquat
Dual-quaternion of medium single-precision floating-point numbers.
+
tdualquat< double, mediump > mediump_ddualquat
Dual-quaternion of medium double-precision floating-point numbers.
+
GLM_FUNC_DECL tmat3x4< T, P > mat3x4_cast(tdualquat< T, P > const &x)
Converts a quaternion to a 3 * 4 matrix.
+
tdualquat< float, lowp > lowp_fdualquat
Dual-quaternion of low single-precision floating-point numbers.
+
highp_fdualquat dualquat
Dual-quaternion of floating-point numbers.
+
+ + + + diff --git a/external/glm/doc/api/a00020.html b/external/glm/doc/api/a00020.html new file mode 100644 index 0000000..9972355 --- /dev/null +++ b/external/glm/doc/api/a00020.html @@ -0,0 +1,96 @@ + + + + + + +0.9.7: epsilon.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
epsilon.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > epsilonEqual (vecType< T, P > const &x, vecType< T, P > const &y, T const &epsilon)
 
template<typename genType >
GLM_FUNC_DECL bool epsilonEqual (genType const &x, genType const &y, genType const &epsilon)
 
template<typename genType >
GLM_FUNC_DECL genType::boolType epsilonNotEqual (genType const &x, genType const &y, typename genType::value_type const &epsilon)
 
template<typename genType >
GLM_FUNC_DECL bool epsilonNotEqual (genType const &x, genType const &y, genType const &epsilon)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_epsilon

+
Date
2012-04-07 / 2012-04-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+gtc_half_float (dependence)
+
+GLM_GTC_quaternion (dependence)
+ +

Definition in file epsilon.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00020_source.html b/external/glm/doc/api/a00020_source.html new file mode 100644 index 0000000..423bb84 --- /dev/null +++ b/external/glm/doc/api/a00020_source.html @@ -0,0 +1,105 @@ + + + + + + +0.9.7: epsilon.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
epsilon.hpp
+
+
+Go to the documentation of this file.
1 
+
44 #pragma once
+
45 
+
46 // Dependencies
+
47 #include "../detail/setup.hpp"
+
48 #include "../detail/precision.hpp"
+
49 
+
50 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
51 # pragma message("GLM: GLM_GTC_epsilon extension included")
+
52 #endif
+
53 
+
54 namespace glm
+
55 {
+
58 
+
63  template <typename T, precision P, template <typename, precision> class vecType>
+
64  GLM_FUNC_DECL vecType<bool, P> epsilonEqual(
+
65  vecType<T, P> const & x,
+
66  vecType<T, P> const & y,
+
67  T const & epsilon);
+
68 
+
73  template <typename genType>
+
74  GLM_FUNC_DECL bool epsilonEqual(
+
75  genType const & x,
+
76  genType const & y,
+
77  genType const & epsilon);
+
78 
+
83  template <typename genType>
+
84  GLM_FUNC_DECL typename genType::boolType epsilonNotEqual(
+
85  genType const & x,
+
86  genType const & y,
+
87  typename genType::value_type const & epsilon);
+
88 
+
93  template <typename genType>
+
94  GLM_FUNC_DECL bool epsilonNotEqual(
+
95  genType const & x,
+
96  genType const & y,
+
97  genType const & epsilon);
+
98 
+
100 }//namespace glm
+
101 
+
102 #include "epsilon.inl"
+
GLM_FUNC_DECL bool epsilonNotEqual(genType const &x, genType const &y, genType const &epsilon)
Returns the component-wise comparison of |x - y| >= epsilon.
+
GLM_FUNC_DECL genType epsilon()
Return the epsilon constant for floating point types.
+
GLM_FUNC_DECL bool epsilonEqual(genType const &x, genType const &y, genType const &epsilon)
Returns the component-wise comparison of |x - y| < epsilon.
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00021.html b/external/glm/doc/api/a00021.html new file mode 100644 index 0000000..b690e8d --- /dev/null +++ b/external/glm/doc/api/a00021.html @@ -0,0 +1,133 @@ + + + + + + +0.9.7: euler_angles.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
euler_angles.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleX (T const &angleX)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleXY (T const &angleX, T const &angleY)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleXYZ (T const &t1, T const &t2, T const &t3)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleXZ (T const &angleX, T const &angleZ)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleY (T const &angleY)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleYX (T const &angleY, T const &angleX)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleYXZ (T const &yaw, T const &pitch, T const &roll)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleYZ (T const &angleY, T const &angleZ)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleZ (T const &angleZ)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleZX (T const &angle, T const &angleX)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleZY (T const &angleZ, T const &angleY)
 
template<typename T >
GLM_FUNC_DECL void extractEulerAngleXYZ (tmat4x4< T, defaultp > &M, T &t1, T &t2, T &t3)
 
template<typename T >
GLM_FUNC_DECL tmat2x2< T, defaultp > orientate2 (T const &angle)
 
template<typename T >
GLM_FUNC_DECL tmat3x3< T, defaultp > orientate3 (T const &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > orientate3 (tvec3< T, P > const &angles)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > orientate4 (tvec3< T, P > const &angles)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > yawPitchRoll (T const &yaw, T const &pitch, T const &roll)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_euler_angles

+
Date
2005-12-21 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+gtc_half_float (dependence)
+ +

Definition in file euler_angles.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00021_source.html b/external/glm/doc/api/a00021_source.html new file mode 100644 index 0000000..96ff6eb --- /dev/null +++ b/external/glm/doc/api/a00021_source.html @@ -0,0 +1,175 @@ + + + + + + +0.9.7: euler_angles.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
euler_angles.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependency:
+
46 #include "../glm.hpp"
+
47 
+
48 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
49 # pragma message("GLM: GLM_GTX_euler_angles extension included")
+
50 #endif
+
51 
+
52 namespace glm
+
53 {
+
56 
+
59  template <typename T>
+
60  GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleX(
+
61  T const & angleX);
+
62 
+
65  template <typename T>
+
66  GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleY(
+
67  T const & angleY);
+
68 
+
71  template <typename T>
+
72  GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleZ(
+
73  T const & angleZ);
+
74 
+
77  template <typename T>
+
78  GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleXY(
+
79  T const & angleX,
+
80  T const & angleY);
+
81 
+
84  template <typename T>
+
85  GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleYX(
+
86  T const & angleY,
+
87  T const & angleX);
+
88 
+
91  template <typename T>
+
92  GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleXZ(
+
93  T const & angleX,
+
94  T const & angleZ);
+
95 
+
98  template <typename T>
+
99  GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleZX(
+
100  T const & angle,
+
101  T const & angleX);
+
102 
+
105  template <typename T>
+
106  GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleYZ(
+
107  T const & angleY,
+
108  T const & angleZ);
+
109 
+
112  template <typename T>
+
113  GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleZY(
+
114  T const & angleZ,
+
115  T const & angleY);
+
116 
+
119  template <typename T>
+
120  GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleXYZ(
+
121  T const & t1,
+
122  T const & t2,
+
123  T const & t3);
+
124 
+
127  template <typename T>
+
128  GLM_FUNC_DECL tmat4x4<T, defaultp> eulerAngleYXZ(
+
129  T const & yaw,
+
130  T const & pitch,
+
131  T const & roll);
+
132 
+
135  template <typename T>
+
136  GLM_FUNC_DECL tmat4x4<T, defaultp> yawPitchRoll(
+
137  T const & yaw,
+
138  T const & pitch,
+
139  T const & roll);
+
140 
+
143  template <typename T>
+
144  GLM_FUNC_DECL tmat2x2<T, defaultp> orientate2(T const & angle);
+
145 
+
148  template <typename T>
+
149  GLM_FUNC_DECL tmat3x3<T, defaultp> orientate3(T const & angle);
+
150 
+
153  template <typename T, precision P>
+
154  GLM_FUNC_DECL tmat3x3<T, P> orientate3(tvec3<T, P> const & angles);
+
155 
+
158  template <typename T, precision P>
+
159  GLM_FUNC_DECL tmat4x4<T, P> orientate4(tvec3<T, P> const & angles);
+
160 
+
163  template <typename T>
+
164  GLM_FUNC_DECL void extractEulerAngleXYZ(tmat4x4<T, defaultp> & M,
+
165  T & t1,
+
166  T & t2,
+
167  T & t3);
+
168 
+
170 }//namespace glm
+
171 
+
172 #include "euler_angles.inl"
+
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleZX(T const &angle, T const &angleX)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X).
+
GLM_FUNC_DECL T pitch(tquat< T, P > const &x)
Returns pitch value of euler angles expressed in radians.
+
GLM_FUNC_DECL tmat4x4< T, P > orientate4(tvec3< T, P > const &angles)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
+
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleYZ(T const &angleY, T const &angleZ)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z).
+
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleYX(T const &angleY, T const &angleX)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X).
+
GLM_FUNC_DECL void extractEulerAngleXYZ(tmat4x4< T, defaultp > &M, T &t1, T &t2, T &t3)
Extracts the (X * Y * Z) Euler angles from the rotation matrix M.
+
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleXY(T const &angleX, T const &angleY)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y).
+
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleZY(T const &angleZ, T const &angleY)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y).
+
GLM_FUNC_DECL tmat3x3< T, P > orientate3(tvec3< T, P > const &angles)
Creates a 3D 3 * 3 rotation matrix from euler angles (Y * X * Z).
+
GLM_FUNC_DECL tmat2x2< T, defaultp > orientate2(T const &angle)
Creates a 2D 2 * 2 rotation matrix from an euler angle.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleZ(T const &angleZ)
Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Z.
+
GLM_FUNC_DECL tmat4x4< T, defaultp > yawPitchRoll(T const &yaw, T const &pitch, T const &roll)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
+
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleX(T const &angleX)
Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle X.
+
GLM_FUNC_DECL T angle(tquat< T, P > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleXZ(T const &angleX, T const &angleZ)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z).
+
GLM_FUNC_DECL T yaw(tquat< T, P > const &x)
Returns yaw value of euler angles expressed in radians.
+
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleY(T const &angleY)
Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Y.
+
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleXYZ(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * Z).
+
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleYXZ(T const &yaw, T const &pitch, T const &roll)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
+
GLM_FUNC_DECL T roll(tquat< T, P > const &x)
Returns roll value of euler angles expressed in radians.
+
+ + + + diff --git a/external/glm/doc/api/a00022.html b/external/glm/doc/api/a00022.html new file mode 100644 index 0000000..d4fca8e --- /dev/null +++ b/external/glm/doc/api/a00022.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: exponential.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
exponential.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file exponential.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00022_source.html b/external/glm/doc/api/a00022_source.html new file mode 100644 index 0000000..7f9c7c3 --- /dev/null +++ b/external/glm/doc/api/a00022_source.html @@ -0,0 +1,65 @@ + + + + + + +0.9.7: exponential.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
exponential.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+ +
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00023_source.html b/external/glm/doc/api/a00023_source.html new file mode 100644 index 0000000..43858df --- /dev/null +++ b/external/glm/doc/api/a00023_source.html @@ -0,0 +1,216 @@ + + + + + + +0.9.7: ext.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
ext.hpp
+
+
+
1 
+
57 #pragma once
+
58 
+
59 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_EXT_INCLUDED_DISPLAYED))
+
60 # define GLM_MESSAGE_EXT_INCLUDED_DISPLAYED
+
61 # pragma message("GLM: All extensions included (not recommanded)")
+
62 #endif//GLM_MESSAGES
+
63 
+
64 #include "./gtc/bitfield.hpp"
+
65 #include "./gtc/constants.hpp"
+
66 #include "./gtc/epsilon.hpp"
+
67 #include "./gtc/integer.hpp"
+
68 #include "./gtc/matrix_access.hpp"
+
69 #include "./gtc/matrix_integer.hpp"
+
70 #include "./gtc/matrix_inverse.hpp"
+ +
72 #include "./gtc/noise.hpp"
+
73 #include "./gtc/packing.hpp"
+
74 #include "./gtc/quaternion.hpp"
+
75 #include "./gtc/random.hpp"
+
76 #include "./gtc/reciprocal.hpp"
+
77 #include "./gtc/round.hpp"
+
78 #include "./gtc/type_precision.hpp"
+
79 #include "./gtc/type_ptr.hpp"
+
80 #include "./gtc/ulp.hpp"
+
81 #include "./gtc/vec1.hpp"
+
82 
+ +
84 #include "./gtx/bit.hpp"
+
85 #include "./gtx/closest_point.hpp"
+
86 #include "./gtx/color_space.hpp"
+ +
88 #include "./gtx/compatibility.hpp"
+
89 #include "./gtx/component_wise.hpp"
+ +
91 #include "./gtx/euler_angles.hpp"
+
92 #include "./gtx/extend.hpp"
+ + + + +
97 #include "./gtx/gradient_paint.hpp"
+ +
99 #include "./gtx/integer.hpp"
+
100 #include "./gtx/intersect.hpp"
+
101 #include "./gtx/log_base.hpp"
+ + + + +
106 #include "./gtx/matrix_query.hpp"
+
107 #include "./gtx/mixed_product.hpp"
+
108 #include "./gtx/norm.hpp"
+
109 #include "./gtx/normal.hpp"
+
110 #include "./gtx/normalize_dot.hpp"
+ +
112 #include "./gtx/optimum_pow.hpp"
+
113 #include "./gtx/orthonormalize.hpp"
+
114 #include "./gtx/perpendicular.hpp"
+ +
116 #include "./gtx/projection.hpp"
+
117 #include "./gtx/quaternion.hpp"
+
118 #include "./gtx/raw_data.hpp"
+
119 #include "./gtx/rotate_vector.hpp"
+
120 #include "./gtx/spline.hpp"
+
121 #include "./gtx/std_based_type.hpp"
+
122 #if !(GLM_COMPILER & GLM_COMPILER_CUDA)
+
123 # include "./gtx/string_cast.hpp"
+
124 #endif
+
125 #include "./gtx/transform.hpp"
+
126 #include "./gtx/transform2.hpp"
+
127 #include "./gtx/type_aligned.hpp"
+
128 #include "./gtx/vector_angle.hpp"
+
129 #include "./gtx/vector_query.hpp"
+
130 #include "./gtx/wrap.hpp"
+
131 
+
132 #if GLM_HAS_TEMPLATE_ALIASES
+ +
134 #endif
+
135 
+
136 #if GLM_HAS_RANGE_FOR
+
137 # include "./gtx/range.hpp"
+
138 #endif
+
139 
+
140 #if GLM_ARCH & GLM_ARCH_SSE2
+
141 # include "./gtx/simd_vec4.hpp"
+
142 # include "./gtx/simd_mat4.hpp"
+
143 #endif
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00024.html b/external/glm/doc/api/a00024.html new file mode 100644 index 0000000..f7f44b4 --- /dev/null +++ b/external/glm/doc/api/a00024.html @@ -0,0 +1,83 @@ + + + + + + +0.9.7: extend.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
extend.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType extend (genType const &Origin, genType const &Source, typename genType::value_type const Length)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_extend

+
Date
2006-01-07 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file extend.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00024_source.html b/external/glm/doc/api/a00024_source.html new file mode 100644 index 0000000..ea344a1 --- /dev/null +++ b/external/glm/doc/api/a00024_source.html @@ -0,0 +1,84 @@ + + + + + + +0.9.7: extend.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
extend.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTX_extend extension included")
+
49 #endif
+
50 
+
51 namespace glm
+
52 {
+
55 
+
58  template <typename genType>
+
59  GLM_FUNC_DECL genType extend(
+
60  genType const & Origin,
+
61  genType const & Source,
+
62  typename genType::value_type const Length);
+
63 
+
65 }//namespace glm
+
66 
+
67 #include "extend.inl"
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL genType extend(genType const &Origin, genType const &Source, typename genType::value_type const Length)
Extends of Length the Origin position using the (Source - Origin) direction.
+
+ + + + diff --git a/external/glm/doc/api/a00025.html b/external/glm/doc/api/a00025.html new file mode 100644 index 0000000..d8974ad --- /dev/null +++ b/external/glm/doc/api/a00025.html @@ -0,0 +1,118 @@ + + + + + + +0.9.7: extented_min_max.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
extented_min_max.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL T max (T const &x, T const &y, T const &z)
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, C< T > const &y, C< T > const &z)
 
template<typename T >
GLM_FUNC_DECL T max (T const &x, T const &y, T const &z, T const &w)
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
 
template<typename T >
GLM_FUNC_DECL T min (T const &x, T const &y, T const &z)
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, C< T > const &y, C< T > const &z)
 
template<typename T >
GLM_FUNC_DECL T min (T const &x, T const &y, T const &z, T const &w)
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_extented_min_max

+
Date
2007-03-14 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+gtx_half_float (dependence)
+ +

Definition in file extented_min_max.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00025_source.html b/external/glm/doc/api/a00025_source.html new file mode 100644 index 0000000..495dfce --- /dev/null +++ b/external/glm/doc/api/a00025_source.html @@ -0,0 +1,157 @@ + + + + + + +0.9.7: extented_min_max.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
extented_min_max.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependency:
+
46 #include "../glm.hpp"
+
47 
+
48 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
49 # pragma message("GLM: GLM_GTX_extented_min_max extension included")
+
50 #endif
+
51 
+
52 namespace glm
+
53 {
+
56 
+
59  template <typename T>
+
60  GLM_FUNC_DECL T min(
+
61  T const & x,
+
62  T const & y,
+
63  T const & z);
+
64 
+
67  template <typename T, template <typename> class C>
+
68  GLM_FUNC_DECL C<T> min(
+
69  C<T> const & x,
+
70  typename C<T>::T const & y,
+
71  typename C<T>::T const & z);
+
72 
+
75  template <typename T, template <typename> class C>
+
76  GLM_FUNC_DECL C<T> min(
+
77  C<T> const & x,
+
78  C<T> const & y,
+
79  C<T> const & z);
+
80 
+
83  template <typename T>
+
84  GLM_FUNC_DECL T min(
+
85  T const & x,
+
86  T const & y,
+
87  T const & z,
+
88  T const & w);
+
89 
+
92  template <typename T, template <typename> class C>
+
93  GLM_FUNC_DECL C<T> min(
+
94  C<T> const & x,
+
95  typename C<T>::T const & y,
+
96  typename C<T>::T const & z,
+
97  typename C<T>::T const & w);
+
98 
+
101  template <typename T, template <typename> class C>
+
102  GLM_FUNC_DECL C<T> min(
+
103  C<T> const & x,
+
104  C<T> const & y,
+
105  C<T> const & z,
+
106  C<T> const & w);
+
107 
+
110  template <typename T>
+
111  GLM_FUNC_DECL T max(
+
112  T const & x,
+
113  T const & y,
+
114  T const & z);
+
115 
+
118  template <typename T, template <typename> class C>
+
119  GLM_FUNC_DECL C<T> max(
+
120  C<T> const & x,
+
121  typename C<T>::T const & y,
+
122  typename C<T>::T const & z);
+
123 
+
126  template <typename T, template <typename> class C>
+
127  GLM_FUNC_DECL C<T> max(
+
128  C<T> const & x,
+
129  C<T> const & y,
+
130  C<T> const & z);
+
131 
+
134  template <typename T>
+
135  GLM_FUNC_DECL T max(
+
136  T const & x,
+
137  T const & y,
+
138  T const & z,
+
139  T const & w);
+
140 
+
143  template <typename T, template <typename> class C>
+
144  GLM_FUNC_DECL C<T> max(
+
145  C<T> const & x,
+
146  typename C<T>::T const & y,
+
147  typename C<T>::T const & z,
+
148  typename C<T>::T const & w);
+
149 
+
152  template <typename T, template <typename> class C>
+
153  GLM_FUNC_DECL C<T> max(
+
154  C<T> const & x,
+
155  C<T> const & y,
+
156  C<T> const & z,
+
157  C<T> const & w);
+
158 
+
160 }//namespace glm
+
161 
+
162 #include "extented_min_max.inl"
+
GLM_FUNC_DECL C< T > max(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
Return the maximum component-wise values of 4 inputs.
+
GLM_FUNC_DECL C< T > min(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
Return the minimum component-wise values of 4 inputs.
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00026.html b/external/glm/doc/api/a00026.html new file mode 100644 index 0000000..2de7c62 --- /dev/null +++ b/external/glm/doc/api/a00026.html @@ -0,0 +1,118 @@ + + + + + + +0.9.7: fast_exponential.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
fast_exponential.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL T fastExp (T x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fastExp (vecType< T, P > const &x)
 
template<typename T >
GLM_FUNC_DECL T fastExp2 (T x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fastExp2 (vecType< T, P > const &x)
 
template<typename T >
GLM_FUNC_DECL T fastLog (T x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fastLog (vecType< T, P > const &x)
 
template<typename T >
GLM_FUNC_DECL T fastLog2 (T x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fastLog2 (vecType< T, P > const &x)
 
template<typename genType >
GLM_FUNC_DECL genType fastPow (genType x, genType y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fastPow (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<typename genTypeT , typename genTypeU >
GLM_FUNC_DECL genTypeT fastPow (genTypeT x, genTypeU y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fastPow (vecType< T, P > const &x)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_fast_exponential

+
Date
2006-01-09 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+gtx_half_float (dependence)
+ +

Definition in file fast_exponential.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00026_source.html b/external/glm/doc/api/a00026_source.html new file mode 100644 index 0000000..1d11cdd --- /dev/null +++ b/external/glm/doc/api/a00026_source.html @@ -0,0 +1,118 @@ + + + + + + +0.9.7: fast_exponential.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
fast_exponential.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependency:
+
46 #include "../glm.hpp"
+
47 
+
48 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
49 # pragma message("GLM: GLM_GTX_fast_exponential extension included")
+
50 #endif
+
51 
+
52 namespace glm
+
53 {
+
56 
+
59  template <typename genType>
+
60  GLM_FUNC_DECL genType fastPow(genType x, genType y);
+
61 
+
64  template <typename T, precision P, template <typename, precision> class vecType>
+
65  GLM_FUNC_DECL vecType<T, P> fastPow(vecType<T, P> const & x, vecType<T, P> const & y);
+
66 
+
69  template <typename genTypeT, typename genTypeU>
+
70  GLM_FUNC_DECL genTypeT fastPow(genTypeT x, genTypeU y);
+
71 
+
74  template <typename T, precision P, template <typename, precision> class vecType>
+
75  GLM_FUNC_DECL vecType<T, P> fastPow(vecType<T, P> const & x);
+
76 
+
79  template <typename T>
+
80  GLM_FUNC_DECL T fastExp(T x);
+
81 
+
84  template <typename T, precision P, template <typename, precision> class vecType>
+
85  GLM_FUNC_DECL vecType<T, P> fastExp(vecType<T, P> const & x);
+
86 
+
89  template <typename T>
+
90  GLM_FUNC_DECL T fastLog(T x);
+
91 
+
94  template <typename T, precision P, template <typename, precision> class vecType>
+
95  GLM_FUNC_DECL vecType<T, P> fastLog(vecType<T, P> const & x);
+
96 
+
99  template <typename T>
+
100  GLM_FUNC_DECL T fastExp2(T x);
+
101 
+
104  template <typename T, precision P, template <typename, precision> class vecType>
+
105  GLM_FUNC_DECL vecType<T, P> fastExp2(vecType<T, P> const & x);
+
106 
+
109  template <typename T>
+
110  GLM_FUNC_DECL T fastLog2(T x);
+
111 
+
114  template <typename T, precision P, template <typename, precision> class vecType>
+
115  GLM_FUNC_DECL vecType<T, P> fastLog2(vecType<T, P> const & x);
+
116 
+
118 }//namespace glm
+
119 
+
120 #include "fast_exponential.inl"
+
GLM_FUNC_DECL vecType< T, P > fastLog(vecType< T, P > const &x)
Faster than the common exp2 function but less accurate.
+
GLM_FUNC_DECL vecType< T, P > fastPow(vecType< T, P > const &x)
Faster than the common pow function but less accurate.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL vecType< T, P > fastExp(vecType< T, P > const &x)
Faster than the common exp function but less accurate.
+
GLM_FUNC_DECL vecType< T, P > fastLog2(vecType< T, P > const &x)
Faster than the common log2 function but less accurate.
+
GLM_FUNC_DECL vecType< T, P > fastExp2(vecType< T, P > const &x)
Faster than the common exp2 function but less accurate.
+
+ + + + diff --git a/external/glm/doc/api/a00027.html b/external/glm/doc/api/a00027.html new file mode 100644 index 0000000..ceb1755 --- /dev/null +++ b/external/glm/doc/api/a00027.html @@ -0,0 +1,107 @@ + + + + + + +0.9.7: fast_square_root.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
fast_square_root.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType fastDistance (genType x, genType y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T fastDistance (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<typename genType >
GLM_FUNC_DECL genType fastInverseSqrt (genType x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fastInverseSqrt (vecType< T, P > const &x)
 
template<typename genType >
GLM_FUNC_DECL genType fastLength (genType x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T fastLength (vecType< T, P > const &x)
 
template<typename genType >
GLM_FUNC_DECL genType fastNormalize (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType fastSqrt (genType x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fastSqrt (vecType< T, P > const &x)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_fast_square_root

+
Date
2006-01-04 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file fast_square_root.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00027_source.html b/external/glm/doc/api/a00027_source.html new file mode 100644 index 0000000..dcced69 --- /dev/null +++ b/external/glm/doc/api/a00027_source.html @@ -0,0 +1,111 @@ + + + + + + +0.9.7: fast_square_root.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
fast_square_root.hpp
+
+
+Go to the documentation of this file.
1 
+
44 #pragma once
+
45 
+
46 // Dependency:
+
47 #include "../common.hpp"
+
48 #include "../exponential.hpp"
+
49 #include "../geometric.hpp"
+
50 
+
51 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
52 # pragma message("GLM: GLM_GTX_fast_square_root extension included")
+
53 #endif
+
54 
+
55 namespace glm
+
56 {
+
59 
+
63  template <typename genType>
+
64  GLM_FUNC_DECL genType fastSqrt(genType x);
+
65 
+
69  template <typename T, precision P, template <typename, precision> class vecType>
+
70  GLM_FUNC_DECL vecType<T, P> fastSqrt(vecType<T, P> const & x);
+
71 
+
75  template <typename genType>
+
76  GLM_FUNC_DECL genType fastInverseSqrt(genType x);
+
77 
+
81  template <typename T, precision P, template <typename, precision> class vecType>
+
82  GLM_FUNC_DECL vecType<T, P> fastInverseSqrt(vecType<T, P> const & x);
+
83 
+
87  template <typename genType>
+
88  GLM_FUNC_DECL genType fastLength(genType x);
+
89 
+
93  template <typename T, precision P, template <typename, precision> class vecType>
+
94  GLM_FUNC_DECL T fastLength(vecType<T, P> const & x);
+
95 
+
99  template <typename genType>
+
100  GLM_FUNC_DECL genType fastDistance(genType x, genType y);
+
101 
+
105  template <typename T, precision P, template <typename, precision> class vecType>
+
106  GLM_FUNC_DECL T fastDistance(vecType<T, P> const & x, vecType<T, P> const & y);
+
107 
+
111  template <typename genType>
+
112  GLM_FUNC_DECL genType fastNormalize(genType const & x);
+
113 
+
115 }// namespace glm
+
116 
+
117 #include "fast_square_root.inl"
+
GLM_FUNC_DECL vecType< T, P > fastSqrt(vecType< T, P > const &x)
Faster than the common sqrt function but less accurate.
+
GLM_FUNC_DECL T fastLength(vecType< T, P > const &x)
Faster than the common length function but less accurate.
+
GLM_FUNC_DECL T fastDistance(vecType< T, P > const &x, vecType< T, P > const &y)
Faster than the common distance function but less accurate.
+
GLM_FUNC_DECL vecType< T, P > fastInverseSqrt(vecType< T, P > const &x)
Faster than the common inversesqrt function but less accurate.
+
GLM_FUNC_DECL genType fastNormalize(genType const &x)
Faster than the common normalize function but less accurate.
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00028.html b/external/glm/doc/api/a00028.html new file mode 100644 index 0000000..7e007d7 --- /dev/null +++ b/external/glm/doc/api/a00028.html @@ -0,0 +1,104 @@ + + + + + + +0.9.7: fast_trigonometry.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
fast_trigonometry.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL T fastAcos (T angle)
 
template<typename T >
GLM_FUNC_DECL T fastAsin (T angle)
 
template<typename T >
GLM_FUNC_DECL T fastAtan (T y, T x)
 
template<typename T >
GLM_FUNC_DECL T fastAtan (T angle)
 
template<typename T >
GLM_FUNC_DECL T fastCos (T angle)
 
template<typename T >
GLM_FUNC_DECL T fastSin (T angle)
 
template<typename T >
GLM_FUNC_DECL T fastTan (T angle)
 
template<typename T >
GLM_FUNC_DECL T wrapAngle (T angle)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_fast_trigonometry

+
Date
2006-01-08 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file fast_trigonometry.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00028_source.html b/external/glm/doc/api/a00028_source.html new file mode 100644 index 0000000..e37c39e --- /dev/null +++ b/external/glm/doc/api/a00028_source.html @@ -0,0 +1,109 @@ + + + + + + +0.9.7: fast_trigonometry.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
fast_trigonometry.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../gtc/constants.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTX_fast_trigonometry extension included")
+
49 #endif
+
50 
+
51 namespace glm
+
52 {
+
55 
+
58  template <typename T>
+
59  GLM_FUNC_DECL T wrapAngle(T angle);
+
60 
+
63  template <typename T>
+
64  GLM_FUNC_DECL T fastSin(T angle);
+
65 
+
68  template <typename T>
+
69  GLM_FUNC_DECL T fastCos(T angle);
+
70 
+
74  template <typename T>
+
75  GLM_FUNC_DECL T fastTan(T angle);
+
76 
+
80  template <typename T>
+
81  GLM_FUNC_DECL T fastAsin(T angle);
+
82 
+
86  template <typename T>
+
87  GLM_FUNC_DECL T fastAcos(T angle);
+
88 
+
92  template <typename T>
+
93  GLM_FUNC_DECL T fastAtan(T y, T x);
+
94 
+
98  template <typename T>
+
99  GLM_FUNC_DECL T fastAtan(T angle);
+
100 
+
102 }//namespace glm
+
103 
+
104 #include "fast_trigonometry.inl"
+
GLM_FUNC_DECL T fastAtan(T angle)
Faster than the common atan function but less accurate.
+
GLM_FUNC_DECL T fastAcos(T angle)
Faster than the common acos function but less accurate.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL T fastCos(T angle)
Faster than the common cos function but less accurate.
+
GLM_FUNC_DECL T angle(tquat< T, P > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL T fastSin(T angle)
Faster than the common sin function but less accurate.
+
GLM_FUNC_DECL T wrapAngle(T angle)
Wrap an angle to [0 2pi[ From GLM_GTX_fast_trigonometry extension.
+
GLM_FUNC_DECL T fastAsin(T angle)
Faster than the common asin function but less accurate.
+
GLM_FUNC_DECL T fastTan(T angle)
Faster than the common tan function but less accurate.
+
+ + + + diff --git a/external/glm/doc/api/a00029.html b/external/glm/doc/api/a00029.html new file mode 100644 index 0000000..3cfde3b --- /dev/null +++ b/external/glm/doc/api/a00029.html @@ -0,0 +1,175 @@ + + + + + + +0.9.7: func_common.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
func_common.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType abs (genType x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > ceil (vecType< T, P > const &x)
 
template<typename genType >
GLM_FUNC_DECL genType clamp (genType x, genType minVal, genType maxVal)
 
GLM_FUNC_DECL int floatBitsToInt (float const &v)
 
template<template< typename, precision > class vecType, precision P>
GLM_FUNC_DECL vecType< int, P > floatBitsToInt (vecType< float, P > const &v)
 
GLM_FUNC_DECL uint floatBitsToUint (float const &v)
 
template<template< typename, precision > class vecType, precision P>
GLM_FUNC_DECL vecType< uint, P > floatBitsToUint (vecType< float, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > floor (vecType< T, P > const &x)
 
template<typename genType >
GLM_FUNC_DECL genType fma (genType const &a, genType const &b, genType const &c)
 
template<typename genType >
GLM_FUNC_DECL genType fract (genType x)
 
template<typename genType , typename genIType >
GLM_FUNC_DECL genType frexp (genType const &x, genIType &exp)
 
GLM_FUNC_DECL float intBitsToFloat (int const &v)
 
template<template< typename, precision > class vecType, precision P>
GLM_FUNC_DECL vecType< float, P > intBitsToFloat (vecType< int, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > isinf (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > isnan (vecType< T, P > const &x)
 
template<typename genType , typename genIType >
GLM_FUNC_DECL genType ldexp (genType const &x, genIType const &exp)
 
template<typename genType >
GLM_FUNC_DECL genType max (genType x, genType y)
 
template<typename genType >
GLM_FUNC_DECL genType min (genType x, genType y)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > mix (vecType< T, P > const &x, vecType< T, P > const &y, vecType< U, P > const &a)
 
template<typename genType >
GLM_FUNC_DECL genType mod (genType x, genType y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > mod (vecType< T, P > const &x, T y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > mod (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<typename genType >
GLM_FUNC_DECL genType modf (genType x, genType &i)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > round (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > roundEven (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > sign (vecType< T, P > const &x)
 
template<typename genType >
GLM_FUNC_DECL genType smoothstep (genType edge0, genType edge1, genType x)
 
template<typename genType >
GLM_FUNC_DECL genType step (genType edge, genType x)
 
template<template< typename, precision > class vecType, typename T , precision P>
GLM_FUNC_DECL vecType< T, P > step (T edge, vecType< T, P > const &x)
 
template<template< typename, precision > class vecType, typename T , precision P>
GLM_FUNC_DECL vecType< T, P > step (vecType< T, P > const &edge, vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > trunc (vecType< T, P > const &x)
 
GLM_FUNC_DECL float uintBitsToFloat (uint const &v)
 
template<template< typename, precision > class vecType, precision P>
GLM_FUNC_DECL vecType< float, P > uintBitsToFloat (vecType< uint, P > const &v)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2008-03-08 / 2010-01-26
+
Author
Christophe Riccio
+
See also
GLSL 4.20.8 specification, section 8.3 Common Functions
+ +

Definition in file func_common.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00029_source.html b/external/glm/doc/api/a00029_source.html new file mode 100644 index 0000000..7dec686 --- /dev/null +++ b/external/glm/doc/api/a00029_source.html @@ -0,0 +1,238 @@ + + + + + + +0.9.7: func_common.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
func_common.hpp
+
+
+Go to the documentation of this file.
1 
+
40 #pragma once
+
41 
+
42 #include "setup.hpp"
+
43 #include "precision.hpp"
+
44 #include "type_int.hpp"
+
45 #include "_fixes.hpp"
+
46 
+
47 namespace glm
+
48 {
+
51 
+
58  template <typename genType>
+
59  GLM_FUNC_DECL genType abs(genType x);
+
60 
+
61  template <typename T, precision P, template <typename, precision> class vecType>
+
62  GLM_FUNC_DECL vecType<T, P> abs(vecType<T, P> const & x);
+
63 
+
70  template <typename T, precision P, template <typename, precision> class vecType>
+
71  GLM_FUNC_DECL vecType<T, P> sign(vecType<T, P> const & x);
+
72 
+
79  template <typename T, precision P, template <typename, precision> class vecType>
+
80  GLM_FUNC_DECL vecType<T, P> floor(vecType<T, P> const & x);
+
81 
+
89  template <typename T, precision P, template <typename, precision> class vecType>
+
90  GLM_FUNC_DECL vecType<T, P> trunc(vecType<T, P> const & x);
+
91 
+
102  template <typename T, precision P, template <typename, precision> class vecType>
+
103  GLM_FUNC_DECL vecType<T, P> round(vecType<T, P> const & x);
+
104 
+
114  template <typename T, precision P, template <typename, precision> class vecType>
+
115  GLM_FUNC_DECL vecType<T, P> roundEven(vecType<T, P> const & x);
+
116 
+
124  template <typename T, precision P, template <typename, precision> class vecType>
+
125  GLM_FUNC_DECL vecType<T, P> ceil(vecType<T, P> const & x);
+
126 
+
133  template <typename genType>
+
134  GLM_FUNC_DECL genType fract(genType x);
+
135 
+
136  template <typename T, precision P, template <typename, precision> class vecType>
+
137  GLM_FUNC_DECL vecType<T, P> fract(vecType<T, P> const & x);
+
138 
+
146  template <typename genType>
+
147  GLM_FUNC_DECL genType mod(genType x, genType y);
+
148 
+
149  template <typename T, precision P, template <typename, precision> class vecType>
+
150  GLM_FUNC_DECL vecType<T, P> mod(vecType<T, P> const & x, T y);
+
151 
+
152  template <typename T, precision P, template <typename, precision> class vecType>
+
153  GLM_FUNC_DECL vecType<T, P> mod(vecType<T, P> const & x, vecType<T, P> const & y);
+
154 
+
164  template <typename genType>
+
165  GLM_FUNC_DECL genType modf(genType x, genType & i);
+
166 
+
173  template <typename genType>
+
174  GLM_FUNC_DECL genType min(genType x, genType y);
+
175 
+
176  template <typename T, precision P, template <typename, precision> class vecType>
+
177  GLM_FUNC_DECL vecType<T, P> min(vecType<T, P> const & x, T y);
+
178 
+
179  template <typename T, precision P, template <typename, precision> class vecType>
+
180  GLM_FUNC_DECL vecType<T, P> min(vecType<T, P> const & x, vecType<T, P> const & y);
+
181 
+
188  template <typename genType>
+
189  GLM_FUNC_DECL genType max(genType x, genType y);
+
190 
+
191  template <typename T, precision P, template <typename, precision> class vecType>
+
192  GLM_FUNC_DECL vecType<T, P> max(vecType<T, P> const & x, T y);
+
193 
+
194  template <typename T, precision P, template <typename, precision> class vecType>
+
195  GLM_FUNC_DECL vecType<T, P> max(vecType<T, P> const & x, vecType<T, P> const & y);
+
196 
+
204  template <typename genType>
+
205  GLM_FUNC_DECL genType clamp(genType x, genType minVal, genType maxVal);
+
206 
+
207  template <typename T, precision P, template <typename, precision> class vecType>
+
208  GLM_FUNC_DECL vecType<T, P> clamp(vecType<T, P> const & x, T minVal, T maxVal);
+
209 
+
210  template <typename T, precision P, template <typename, precision> class vecType>
+
211  GLM_FUNC_DECL vecType<T, P> clamp(vecType<T, P> const & x, vecType<T, P> const & minVal, vecType<T, P> const & maxVal);
+
212 
+
255  template <typename T, typename U, precision P, template <typename, precision> class vecType>
+
256  GLM_FUNC_DECL vecType<T, P> mix(vecType<T, P> const & x, vecType<T, P> const & y, vecType<U, P> const & a);
+
257 
+
258  template <typename T, typename U, precision P, template <typename, precision> class vecType>
+
259  GLM_FUNC_DECL vecType<T, P> mix(vecType<T, P> const & x, vecType<T, P> const & y, U a);
+
260 
+
261  template <typename genTypeT, typename genTypeU>
+
262  GLM_FUNC_DECL genTypeT mix(genTypeT x, genTypeT y, genTypeU a);
+
263 
+
268  template <typename genType>
+
269  GLM_FUNC_DECL genType step(genType edge, genType x);
+
270 
+
275  template <template <typename, precision> class vecType, typename T, precision P>
+
276  GLM_FUNC_DECL vecType<T, P> step(T edge, vecType<T, P> const & x);
+
277 
+
282  template <template <typename, precision> class vecType, typename T, precision P>
+
283  GLM_FUNC_DECL vecType<T, P> step(vecType<T, P> const & edge, vecType<T, P> const & x);
+
284 
+
299  template <typename genType>
+
300  GLM_FUNC_DECL genType smoothstep(genType edge0, genType edge1, genType x);
+
301 
+
302  template <typename T, precision P, template <typename, precision> class vecType>
+
303  GLM_FUNC_DECL vecType<T, P> smoothstep(T edge0, T edge1, vecType<T, P> const & x);
+
304 
+
305  template <typename T, precision P, template <typename, precision> class vecType>
+
306  GLM_FUNC_DECL vecType<T, P> smoothstep(vecType<T, P> const & edge0, vecType<T, P> const & edge1, vecType<T, P> const & x);
+
307 
+
320  template <typename T, precision P, template <typename, precision> class vecType>
+
321  GLM_FUNC_DECL vecType<bool, P> isnan(vecType<T, P> const & x);
+
322 
+
333  template <typename T, precision P, template <typename, precision> class vecType>
+
334  GLM_FUNC_DECL vecType<bool, P> isinf(vecType<T, P> const & x);
+
335 
+
342  GLM_FUNC_DECL int floatBitsToInt(float const & v);
+
343 
+
350  template <template <typename, precision> class vecType, precision P>
+
351  GLM_FUNC_DECL vecType<int, P> floatBitsToInt(vecType<float, P> const & v);
+
352 
+
359  GLM_FUNC_DECL uint floatBitsToUint(float const & v);
+
360 
+
367  template <template <typename, precision> class vecType, precision P>
+
368  GLM_FUNC_DECL vecType<uint, P> floatBitsToUint(vecType<float, P> const & v);
+
369 
+
378  GLM_FUNC_DECL float intBitsToFloat(int const & v);
+
379 
+
388  template <template <typename, precision> class vecType, precision P>
+
389  GLM_FUNC_DECL vecType<float, P> intBitsToFloat(vecType<int, P> const & v);
+
390 
+
399  GLM_FUNC_DECL float uintBitsToFloat(uint const & v);
+
400 
+
409  template <template <typename, precision> class vecType, precision P>
+
410  GLM_FUNC_DECL vecType<float, P> uintBitsToFloat(vecType<uint, P> const & v);
+
411 
+
418  template <typename genType>
+
419  GLM_FUNC_DECL genType fma(genType const & a, genType const & b, genType const & c);
+
420 
+
435  template <typename genType, typename genIType>
+
436  GLM_FUNC_DECL genType frexp(genType const & x, genIType & exp);
+
437 
+
449  template <typename genType, typename genIType>
+
450  GLM_FUNC_DECL genType ldexp(genType const & x, genIType const & exp);
+
451 
+
453 }//namespace glm
+
454 
+
455 #include "func_common.inl"
+
456 
+
GLM_FUNC_DECL genType clamp(genType x, genType minVal, genType maxVal)
Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal an...
+
GLM_FUNC_DECL vecType< float, P > uintBitsToFloat(vecType< uint, P > const &v)
Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value...
+
GLM_FUNC_DECL vecType< int, P > floatBitsToInt(vecType< float, P > const &v)
Returns a signed integer value representing the encoding of a floating-point value.
+
GLM_FUNC_DECL genType ldexp(genType const &x, genIType const &exp)
Builds a floating-point number from x and the corresponding integral exponent of two in exp...
+
GLM_FUNC_DECL genType fma(genType const &a, genType const &b, genType const &c)
Computes and returns a * b + c.
+
GLM_FUNC_DECL vecType< T, P > floor(vecType< T, P > const &x)
Returns a value equal to the nearest integer that is less then or equal to x.
+
GLM_FUNC_DECL vecType< bool, P > isnan(vecType< T, P > const &x)
Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of...
+
GLM_FUNC_DECL genType fract(genType x)
Return x - floor(x).
+
GLM_FUNC_DECL vecType< T, P > ceil(vecType< T, P > const &x)
Returns a value equal to the nearest integer that is greater than or equal to x.
+
GLM_FUNC_DECL genType smoothstep(genType edge0, genType edge1, genType x)
Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 a...
+
GLM_FUNC_DECL vecType< T, P > trunc(vecType< T, P > const &x)
Returns a value equal to the nearest integer to x whose absolute value is not larger than the absolut...
+
GLM_FUNC_DECL vecType< uint, P > floatBitsToUint(vecType< float, P > const &v)
Returns a unsigned integer value representing the encoding of a floating-point value.
+
GLM_FUNC_DECL vecType< T, P > round(vecType< T, P > const &x)
Returns a value equal to the nearest integer to x.
+
unsigned int uint
Unsigned integer type.
Definition: type_int.hpp:308
+
GLM_FUNC_DECL vecType< T, P > roundEven(vecType< T, P > const &x)
Returns a value equal to the nearest integer to x.
+
GLM_FUNC_DECL genType frexp(genType const &x, genIType &exp)
Splits x into a floating-point significand in the range [0.5, 1.0) and an integral exponent of two...
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL vecType< T, P > sign(vecType< T, P > const &x)
Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0.
+
GLM_FUNC_DECL vecType< float, P > intBitsToFloat(vecType< int, P > const &v)
Returns a floating-point value corresponding to a signed integer encoding of a floating-point value...
+
GLM_FUNC_DECL genType max(genType x, genType y)
Returns y if x < y; otherwise, it returns x.
+
GLM_FUNC_DECL vecType< T, P > mod(vecType< T, P > const &x, vecType< T, P > const &y)
Modulus.
+
GLM_FUNC_DECL vecType< T, P > step(vecType< T, P > const &edge, vecType< T, P > const &x)
Returns 0.0 if x < edge, otherwise it returns 1.0.
+
GLM_FUNC_DECL genType abs(genType x)
Returns x if x >= 0; otherwise, it returns -x.
+
GLM_FUNC_DECL genType min(genType x, genType y)
Returns y if y < x; otherwise, it returns x.
+
GLM_FUNC_DECL vecType< bool, P > isinf(vecType< T, P > const &x)
Returns true if x holds a positive infinity or negative infinity representation in the underlying imp...
+
GLM_FUNC_DECL vecType< T, P > exp(vecType< T, P > const &v)
Returns the natural exponentiation of x, i.e., e^x.
+
GLM_FUNC_DECL vecType< T, P > mix(vecType< T, P > const &x, vecType< T, P > const &y, vecType< U, P > const &a)
If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of ...
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL genType modf(genType x, genType &i)
Returns the fractional part of x and sets i to the integer part (as a whole number floating point val...
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00030.html b/external/glm/doc/api/a00030.html new file mode 100644 index 0000000..c1cff09 --- /dev/null +++ b/external/glm/doc/api/a00030.html @@ -0,0 +1,101 @@ + + + + + + +0.9.7: func_exponential.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
func_exponential.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > exp (vecType< T, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > exp2 (vecType< T, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > inversesqrt (vecType< T, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > log (vecType< T, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > log2 (vecType< T, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > pow (vecType< T, P > const &base, vecType< T, P > const &exponent)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > sqrt (vecType< T, P > const &v)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2008-08-08 / 2011-06-14
+
Author
Christophe Riccio
+
See also
GLSL 4.20.8 specification, section 8.2 Exponential Functions
+ +

Definition in file func_exponential.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00030_source.html b/external/glm/doc/api/a00030_source.html new file mode 100644 index 0000000..437f34e --- /dev/null +++ b/external/glm/doc/api/a00030_source.html @@ -0,0 +1,110 @@ + + + + + + +0.9.7: func_exponential.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
func_exponential.hpp
+
+
+Go to the documentation of this file.
1 
+
40 #pragma once
+
41 
+
42 #include "type_vec1.hpp"
+
43 #include "type_vec2.hpp"
+
44 #include "type_vec3.hpp"
+
45 #include "type_vec4.hpp"
+
46 #include <cmath>
+
47 
+
48 namespace glm
+
49 {
+
52 
+
61  template <typename T, precision P, template <typename, precision> class vecType>
+
62  GLM_FUNC_DECL vecType<T, P> pow(vecType<T, P> const & base, vecType<T, P> const & exponent);
+
63 
+
71  template <typename T, precision P, template <typename, precision> class vecType>
+
72  GLM_FUNC_DECL vecType<T, P> exp(vecType<T, P> const & v);
+
73 
+
83  template <typename T, precision P, template <typename, precision> class vecType>
+
84  GLM_FUNC_DECL vecType<T, P> log(vecType<T, P> const & v);
+
85 
+
93  template <typename T, precision P, template <typename, precision> class vecType>
+
94  GLM_FUNC_DECL vecType<T, P> exp2(vecType<T, P> const & v);
+
95 
+
104  template <typename T, precision P, template <typename, precision> class vecType>
+
105  GLM_FUNC_DECL vecType<T, P> log2(vecType<T, P> const & v);
+
106 
+
114  //template <typename genType>
+
115  //GLM_FUNC_DECL genType sqrt(genType const & x);
+
116  template <typename T, precision P, template <typename, precision> class vecType>
+
117  GLM_FUNC_DECL vecType<T, P> sqrt(vecType<T, P> const & v);
+
118 
+
126  template <typename T, precision P, template <typename, precision> class vecType>
+
127  GLM_FUNC_DECL vecType<T, P> inversesqrt(vecType<T, P> const & v);
+
128 
+
130 }//namespace glm
+
131 
+
132 #include "func_exponential.inl"
+
GLM_FUNC_DECL vecType< T, P > pow(vecType< T, P > const &base, vecType< T, P > const &exponent)
Returns 'base' raised to the power 'exponent'.
+
GLM_FUNC_DECL vecType< T, P > log(vecType< T, P > const &v)
Returns the natural logarithm of v, i.e., returns the value y which satisfies the equation x = e^y...
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL vecType< T, P > exp2(vecType< T, P > const &v)
Returns 2 raised to the v power.
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL vecType< T, P > exp(vecType< T, P > const &v)
Returns the natural exponentiation of x, i.e., e^x.
+
GLM_FUNC_DECL vecType< T, P > inversesqrt(vecType< T, P > const &v)
Returns the reciprocal of the positive square root of v.
+
GLM_FUNC_DECL vecType< T, P > sqrt(vecType< T, P > const &v)
Returns the positive square root of v.
+
GLM_FUNC_DECL vecType< T, P > log2(vecType< T, P > const &v)
Returns the base 2 log of x, i.e., returns the value y, which satisfies the equation x = 2 ^ y...
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00031.html b/external/glm/doc/api/a00031.html new file mode 100644 index 0000000..c2d5b2b --- /dev/null +++ b/external/glm/doc/api/a00031.html @@ -0,0 +1,104 @@ + + + + + + +0.9.7: func_geometric.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
func_geometric.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > cross (tvec3< T, P > const &x, tvec3< T, P > const &y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T distance (vecType< T, P > const &p0, vecType< T, P > const &p1)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T dot (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > faceforward (vecType< T, P > const &N, vecType< T, P > const &I, vecType< T, P > const &Nref)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T length (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > normalize (vecType< T, P > const &x)
 
template<typename genType >
GLM_FUNC_DECL genType reflect (genType const &I, genType const &N)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > refract (vecType< T, P > const &I, vecType< T, P > const &N, T eta)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2008-08-03 / 2011-06-14
+
Author
Christophe Riccio
+
See also
GLSL 4.20.8 specification, section 8.5 Geometric Functions
+ +

Definition in file func_geometric.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00031_source.html b/external/glm/doc/api/a00031_source.html new file mode 100644 index 0000000..6cdd1af --- /dev/null +++ b/external/glm/doc/api/a00031_source.html @@ -0,0 +1,121 @@ + + + + + + +0.9.7: func_geometric.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
func_geometric.hpp
+
+
+Go to the documentation of this file.
1 
+
40 #pragma once
+
41 
+
42 #include "type_vec3.hpp"
+
43 
+
44 namespace glm
+
45 {
+
48 
+
55  template <typename T, precision P, template <typename, precision> class vecType>
+
56  GLM_FUNC_DECL T length(
+
57  vecType<T, P> const & x);
+
58 
+
65  template <typename T, precision P, template <typename, precision> class vecType>
+
66  GLM_FUNC_DECL T distance(
+
67  vecType<T, P> const & p0,
+
68  vecType<T, P> const & p1);
+
69 
+
76  template <typename T, precision P, template <typename, precision> class vecType>
+
77  GLM_FUNC_DECL T dot(
+
78  vecType<T, P> const & x,
+
79  vecType<T, P> const & y);
+
80 
+
87  template <typename T, precision P>
+
88  GLM_FUNC_DECL tvec3<T, P> cross(
+
89  tvec3<T, P> const & x,
+
90  tvec3<T, P> const & y);
+
91 
+
97  template <typename T, precision P, template <typename, precision> class vecType>
+
98  GLM_FUNC_DECL vecType<T, P> normalize(
+
99  vecType<T, P> const & x);
+
100 
+
107  template <typename T, precision P, template <typename, precision> class vecType>
+
108  GLM_FUNC_DECL vecType<T, P> faceforward(
+
109  vecType<T, P> const & N,
+
110  vecType<T, P> const & I,
+
111  vecType<T, P> const & Nref);
+
112 
+
120  template <typename genType>
+
121  GLM_FUNC_DECL genType reflect(
+
122  genType const & I,
+
123  genType const & N);
+
124 
+
133  template <typename T, precision P, template <typename, precision> class vecType>
+
134  GLM_FUNC_DECL vecType<T, P> refract(
+
135  vecType<T, P> const & I,
+
136  vecType<T, P> const & N,
+
137  T eta);
+
138 
+
140 }//namespace glm
+
141 
+
142 #include "func_geometric.inl"
+
GLM_FUNC_DECL T distance(vecType< T, P > const &p0, vecType< T, P > const &p1)
Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
GLM_FUNC_DECL vecType< T, P > refract(vecType< T, P > const &I, vecType< T, P > const &N, T eta)
For the incident vector I and surface normal N, and the ratio of indices of refraction eta...
+
GLM_FUNC_DECL vecType< T, P > normalize(vecType< T, P > const &x)
Returns a vector in the same direction as x but with length of 1.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL genType reflect(genType const &I, genType const &N)
For the incident vector I and surface orientation N, returns the reflection direction : result = I - ...
+
GLM_FUNC_DECL vecType< T, P > faceforward(vecType< T, P > const &N, vecType< T, P > const &I, vecType< T, P > const &Nref)
If dot(Nref, I) < 0.0, return N, otherwise, return -N.
+
GLM_FUNC_DECL T dot(vecType< T, P > const &x, vecType< T, P > const &y)
Returns the dot product of x and y, i.e., result = x * y.
+
GLM_FUNC_DECL tvec3< T, P > cross(tvec3< T, P > const &x, tvec3< T, P > const &y)
Returns the cross product of x and y.
+
+ + + + diff --git a/external/glm/doc/api/a00032.html b/external/glm/doc/api/a00032.html new file mode 100644 index 0000000..c06dd61 --- /dev/null +++ b/external/glm/doc/api/a00032.html @@ -0,0 +1,119 @@ + + + + + + +0.9.7: func_integer.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
func_integer.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL int bitCount (genType v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< int, P > bitCount (vecType< T, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > bitfieldExtract (vecType< T, P > const &Value, int Offset, int Bits)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > bitfieldInsert (vecType< T, P > const &Base, vecType< T, P > const &Insert, int Offset, int Bits)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > bitfieldReverse (vecType< T, P > const &v)
 
template<typename genIUType >
GLM_FUNC_DECL int findLSB (genIUType x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< int, P > findLSB (vecType< T, P > const &v)
 
template<typename genIUType >
GLM_FUNC_DECL int findMSB (genIUType x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< int, P > findMSB (vecType< T, P > const &v)
 
template<precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL void imulExtended (vecType< int, P > const &x, vecType< int, P > const &y, vecType< int, P > &msb, vecType< int, P > &lsb)
 
template<precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< uint, P > uaddCarry (vecType< uint, P > const &x, vecType< uint, P > const &y, vecType< uint, P > &carry)
 
template<precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL void umulExtended (vecType< uint, P > const &x, vecType< uint, P > const &y, vecType< uint, P > &msb, vecType< uint, P > &lsb)
 
template<precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< uint, P > usubBorrow (vecType< uint, P > const &x, vecType< uint, P > const &y, vecType< uint, P > &borrow)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2010-03-17 / 2011-06-18
+
Author
Christophe Riccio
+
See also
GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +

Definition in file func_integer.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00032_source.html b/external/glm/doc/api/a00032_source.html new file mode 100644 index 0000000..5b30d62 --- /dev/null +++ b/external/glm/doc/api/a00032_source.html @@ -0,0 +1,149 @@ + + + + + + +0.9.7: func_integer.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
func_integer.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 #include "setup.hpp"
+
45 #include "precision.hpp"
+
46 #include "func_common.hpp"
+ +
48 
+
49 namespace glm
+
50 {
+
53 
+
62  template <precision P, template <typename, precision> class vecType>
+
63  GLM_FUNC_DECL vecType<uint, P> uaddCarry(
+
64  vecType<uint, P> const & x,
+
65  vecType<uint, P> const & y,
+
66  vecType<uint, P> & carry);
+
67 
+
76  template <precision P, template <typename, precision> class vecType>
+
77  GLM_FUNC_DECL vecType<uint, P> usubBorrow(
+
78  vecType<uint, P> const & x,
+
79  vecType<uint, P> const & y,
+
80  vecType<uint, P> & borrow);
+
81 
+
90  template <precision P, template <typename, precision> class vecType>
+
91  GLM_FUNC_DECL void umulExtended(
+
92  vecType<uint, P> const & x,
+
93  vecType<uint, P> const & y,
+
94  vecType<uint, P> & msb,
+
95  vecType<uint, P> & lsb);
+
96 
+
105  template <precision P, template <typename, precision> class vecType>
+
106  GLM_FUNC_DECL void imulExtended(
+
107  vecType<int, P> const & x,
+
108  vecType<int, P> const & y,
+
109  vecType<int, P> & msb,
+
110  vecType<int, P> & lsb);
+
111 
+
127  template <typename T, precision P, template <typename, precision> class vecType>
+
128  GLM_FUNC_DECL vecType<T, P> bitfieldExtract(
+
129  vecType<T, P> const & Value,
+
130  int Offset,
+
131  int Bits);
+
132 
+
147  template <typename T, precision P, template <typename, precision> class vecType>
+
148  GLM_FUNC_DECL vecType<T, P> bitfieldInsert(
+
149  vecType<T, P> const & Base,
+
150  vecType<T, P> const & Insert,
+
151  int Offset,
+
152  int Bits);
+
153 
+
162  template <typename T, precision P, template <typename, precision> class vecType>
+
163  GLM_FUNC_DECL vecType<T, P> bitfieldReverse(vecType<T, P> const & v);
+
164 
+
171  template <typename genType>
+
172  GLM_FUNC_DECL int bitCount(genType v);
+
173 
+
180  template <typename T, precision P, template <typename, precision> class vecType>
+
181  GLM_FUNC_DECL vecType<int, P> bitCount(vecType<T, P> const & v);
+
182 
+
191  template <typename genIUType>
+
192  GLM_FUNC_DECL int findLSB(genIUType x);
+
193 
+
202  template <typename T, precision P, template <typename, precision> class vecType>
+
203  GLM_FUNC_DECL vecType<int, P> findLSB(vecType<T, P> const & v);
+
204 
+
214  template <typename genIUType>
+
215  GLM_FUNC_DECL int findMSB(genIUType x);
+
216 
+
226  template <typename T, precision P, template <typename, precision> class vecType>
+
227  GLM_FUNC_DECL vecType<int, P> findMSB(vecType<T, P> const & v);
+
228 
+
230 }//namespace glm
+
231 
+
232 #include "func_integer.inl"
+
GLM_FUNC_DECL vecType< T, P > bitfieldInsert(vecType< T, P > const &Base, vecType< T, P > const &Insert, int Offset, int Bits)
Returns the insertion the bits least-significant bits of insert into base.
+
GLM_FUNC_DECL vecType< uint, P > usubBorrow(vecType< uint, P > const &x, vecType< uint, P > const &y, vecType< uint, P > &borrow)
Subtracts the 32-bit unsigned integer y from x, returning the difference if non-negative, or pow(2, 32) plus the difference otherwise.
+
GLM_FUNC_DECL vecType< T, P > bitfieldExtract(vecType< T, P > const &Value, int Offset, int Bits)
Extracts bits [offset, offset + bits - 1] from value, returning them in the least significant bits of...
+
GLM_FUNC_DECL vecType< int, P > findLSB(vecType< T, P > const &v)
Returns the bit number of the least significant bit set to 1 in the binary representation of value...
+
GLM_FUNC_DECL vecType< int, P > findMSB(vecType< T, P > const &v)
Returns the bit number of the most significant bit in the binary representation of value...
+
GLM_FUNC_DECL vecType< T, P > bitfieldReverse(vecType< T, P > const &v)
Returns the reversal of the bits of value.
+
GLM_FUNC_DECL vecType< uint, P > uaddCarry(vecType< uint, P > const &x, vecType< uint, P > const &y, vecType< uint, P > &carry)
Adds 32-bit unsigned integer x and y, returning the sum modulo pow(2, 32).
+
GLM_FUNC_DECL void umulExtended(vecType< uint, P > const &x, vecType< uint, P > const &y, vecType< uint, P > &msb, vecType< uint, P > &lsb)
Multiplies 32-bit integers x and y, producing a 64-bit result.
+
GLM_FUNC_DECL void imulExtended(vecType< int, P > const &x, vecType< int, P > const &y, vecType< int, P > &msb, vecType< int, P > &lsb)
Multiplies 32-bit integers x and y, producing a 64-bit result.
+
OpenGL Mathematics (glm.g-truc.net)
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL vecType< int, P > bitCount(vecType< T, P > const &v)
Returns the number of bits set to 1 in the binary representation of value.
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00033.html b/external/glm/doc/api/a00033.html new file mode 100644 index 0000000..a8504c4 --- /dev/null +++ b/external/glm/doc/api/a00033.html @@ -0,0 +1,92 @@ + + + + + + +0.9.7: func_matrix.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
func_matrix.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class matType>
GLM_FUNC_DECL T determinant (matType< T, P > const &m)
 
template<typename T , precision P, template< typename, precision > class matType>
GLM_FUNC_DECL matType< T, P > inverse (matType< T, P > const &m)
 
template<typename T , precision P, template< typename, precision > class matType>
GLM_FUNC_DECL matType< T, P > matrixCompMult (matType< T, P > const &x, matType< T, P > const &y)
 
template<typename T , precision P, template< typename, precision > class vecTypeA, template< typename, precision > class vecTypeB>
GLM_FUNC_DECL detail::outerProduct_trait< T, P, vecTypeA, vecTypeB >::type outerProduct (vecTypeA< T, P > const &c, vecTypeB< T, P > const &r)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2008-08-03 / 2011-06-15
+
Author
Christophe Riccio
+
See also
GLSL 4.20.8 specification, section 8.6 Matrix Functions
+ +

Definition in file func_matrix.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00033_source.html b/external/glm/doc/api/a00033_source.html new file mode 100644 index 0000000..8ea2d7c --- /dev/null +++ b/external/glm/doc/api/a00033_source.html @@ -0,0 +1,165 @@ + + + + + + +0.9.7: func_matrix.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
func_matrix.hpp
+
+
+Go to the documentation of this file.
1 
+
44 #pragma once
+
45 
+
46 // Dependencies
+
47 #include "../detail/precision.hpp"
+
48 #include "../detail/setup.hpp"
+
49 #include "../detail/type_mat.hpp"
+
50 #include "../vec2.hpp"
+
51 #include "../vec3.hpp"
+
52 #include "../vec4.hpp"
+
53 #include "../mat2x2.hpp"
+
54 #include "../mat2x3.hpp"
+
55 #include "../mat2x4.hpp"
+
56 #include "../mat3x2.hpp"
+
57 #include "../mat3x3.hpp"
+
58 #include "../mat3x4.hpp"
+
59 #include "../mat4x2.hpp"
+
60 #include "../mat4x3.hpp"
+
61 #include "../mat4x4.hpp"
+
62 
+
63 namespace glm{
+
64 namespace detail
+
65 {
+
66  template <typename T, precision P>
+
67  struct outerProduct_trait<T, P, tvec2, tvec2>
+
68  {
+
69  typedef tmat2x2<T, P> type;
+
70  };
+
71 
+
72  template <typename T, precision P>
+
73  struct outerProduct_trait<T, P, tvec2, tvec3>
+
74  {
+
75  typedef tmat2x3<T, P> type;
+
76  };
+
77 
+
78  template <typename T, precision P>
+
79  struct outerProduct_trait<T, P, tvec2, tvec4>
+
80  {
+
81  typedef tmat2x4<T, P> type;
+
82  };
+
83 
+
84  template <typename T, precision P>
+
85  struct outerProduct_trait<T, P, tvec3, tvec2>
+
86  {
+
87  typedef tmat3x2<T, P> type;
+
88  };
+
89 
+
90  template <typename T, precision P>
+
91  struct outerProduct_trait<T, P, tvec3, tvec3>
+
92  {
+
93  typedef tmat3x3<T, P> type;
+
94  };
+
95 
+
96  template <typename T, precision P>
+
97  struct outerProduct_trait<T, P, tvec3, tvec4>
+
98  {
+
99  typedef tmat3x4<T, P> type;
+
100  };
+
101 
+
102  template <typename T, precision P>
+
103  struct outerProduct_trait<T, P, tvec4, tvec2>
+
104  {
+
105  typedef tmat4x2<T, P> type;
+
106  };
+
107 
+
108  template <typename T, precision P>
+
109  struct outerProduct_trait<T, P, tvec4, tvec3>
+
110  {
+
111  typedef tmat4x3<T, P> type;
+
112  };
+
113 
+
114  template <typename T, precision P>
+
115  struct outerProduct_trait<T, P, tvec4, tvec4>
+
116  {
+
117  typedef tmat4x4<T, P> type;
+
118  };
+
119 
+
120 }//namespace detail
+
121 
+
124 
+
132  template <typename T, precision P, template <typename, precision> class matType>
+
133  GLM_FUNC_DECL matType<T, P> matrixCompMult(matType<T, P> const & x, matType<T, P> const & y);
+
134 
+
143  template <typename T, precision P, template <typename, precision> class vecTypeA, template <typename, precision> class vecTypeB>
+
144  GLM_FUNC_DECL typename detail::outerProduct_trait<T, P, vecTypeA, vecTypeB>::type outerProduct(vecTypeA<T, P> const & c, vecTypeB<T, P> const & r);
+
145 
+
152 # if((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2012))
+
153  template <typename T, precision P, template <typename, precision> class matType>
+
154  GLM_FUNC_DECL typename matType<T, P>::transpose_type transpose(matType<T, P> const & x);
+
155 # endif
+
156 
+
163  template <typename T, precision P, template <typename, precision> class matType>
+
164  GLM_FUNC_DECL T determinant(matType<T, P> const & m);
+
165 
+
172  template <typename T, precision P, template <typename, precision> class matType>
+
173  GLM_FUNC_DECL matType<T, P> inverse(matType<T, P> const & m);
+
174 
+
176 }//namespace glm
+
177 
+
178 #include "func_matrix.inl"
+
GLM_FUNC_DECL T determinant(matType< T, P > const &m)
Returns the transposed matrix of x.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL matType< T, P > inverse(matType< T, P > const &m)
Return the inverse of a squared matrix.
+
GLM_FUNC_DECL detail::outerProduct_trait< T, P, vecTypeA, vecTypeB >::type outerProduct(vecTypeA< T, P > const &c, vecTypeB< T, P > const &r)
Treats the first parameter c as a column vector and the second parameter r as a row vector and does a...
+
GLM_FUNC_DECL matType< T, P > matrixCompMult(matType< T, P > const &x, matType< T, P > const &y)
Multiply matrix x by matrix y component-wise, i.e., result[i][j] is the scalar product of x[i][j] and...
+
+ + + + diff --git a/external/glm/doc/api/a00034.html b/external/glm/doc/api/a00034.html new file mode 100644 index 0000000..8ad5712 --- /dev/null +++ b/external/glm/doc/api/a00034.html @@ -0,0 +1,92 @@ + + + + + + +0.9.7: func_noise.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
func_noise.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType::value_type noise1 (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL tvec2< typename genType::value_type, defaultp > noise2 (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL tvec3< typename genType::value_type, defaultp > noise3 (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL tvec4< typename genType::value_type, defaultp > noise4 (genType const &x)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2008-08-01 / 2011-06-18
+
Author
Christophe Riccio
+
See also
GLSL 4.20.8 specification, section 8.13 Noise Functions
+ +

Definition in file func_noise.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00034_source.html b/external/glm/doc/api/a00034_source.html new file mode 100644 index 0000000..699eb71 --- /dev/null +++ b/external/glm/doc/api/a00034_source.html @@ -0,0 +1,95 @@ + + + + + + +0.9.7: func_noise.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
func_noise.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 #include "type_vec1.hpp"
+
45 #include "type_vec2.hpp"
+
46 #include "type_vec3.hpp"
+
47 #include "setup.hpp"
+
48 
+
49 namespace glm
+
50 {
+
53 
+
60  template <typename genType>
+
61  GLM_FUNC_DECL typename genType::value_type noise1(genType const & x);
+
62 
+
69  template <typename genType>
+
70  GLM_FUNC_DECL tvec2<typename genType::value_type, defaultp> noise2(genType const & x);
+
71 
+
78  template <typename genType>
+
79  GLM_FUNC_DECL tvec3<typename genType::value_type, defaultp> noise3(genType const & x);
+
80 
+
87  template <typename genType>
+
88  GLM_FUNC_DECL tvec4<typename genType::value_type, defaultp> noise4(genType const & x);
+
89 
+
91 }//namespace glm
+
92 
+
93 #include "func_noise.inl"
+
GLM_FUNC_DECL tvec4< typename genType::value_type, defaultp > noise4(genType const &x)
Returns a 4D noise value based on the input value x.
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL tvec2< typename genType::value_type, defaultp > noise2(genType const &x)
Returns a 2D noise value based on the input value x.
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL genType::value_type noise1(genType const &x)
Returns a 1D noise value based on the input value x.
+
GLM_FUNC_DECL tvec3< typename genType::value_type, defaultp > noise3(genType const &x)
Returns a 3D noise value based on the input value x.
+
+ + + + diff --git a/external/glm/doc/api/a00035.html b/external/glm/doc/api/a00035.html new file mode 100644 index 0000000..f92d887 --- /dev/null +++ b/external/glm/doc/api/a00035.html @@ -0,0 +1,106 @@ + + + + + + +0.9.7: func_packing.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
func_packing.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GLM_FUNC_DECL double packDouble2x32 (uvec2 const &v)
 
GLM_FUNC_DECL uint packHalf2x16 (vec2 const &v)
 
GLM_FUNC_DECL uint packSnorm2x16 (vec2 const &v)
 
GLM_FUNC_DECL uint packSnorm4x8 (vec4 const &v)
 
GLM_FUNC_DECL uint packUnorm2x16 (vec2 const &v)
 
GLM_FUNC_DECL uint packUnorm4x8 (vec4 const &v)
 
GLM_FUNC_DECL uvec2 unpackDouble2x32 (double v)
 
GLM_FUNC_DECL vec2 unpackHalf2x16 (uint v)
 
GLM_FUNC_DECL vec2 unpackSnorm2x16 (uint p)
 
GLM_FUNC_DECL vec4 unpackSnorm4x8 (uint p)
 
GLM_FUNC_DECL vec2 unpackUnorm2x16 (uint p)
 
GLM_FUNC_DECL vec4 unpackUnorm4x8 (uint p)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2010-03-17 / 2011-06-15
+
Author
Christophe Riccio
+
See also
GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+
+GLM_GTC_packing
+ +

Definition in file func_packing.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00035_source.html b/external/glm/doc/api/a00035_source.html new file mode 100644 index 0000000..794624a --- /dev/null +++ b/external/glm/doc/api/a00035_source.html @@ -0,0 +1,115 @@ + + + + + + +0.9.7: func_packing.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
func_packing.hpp
+
+
+Go to the documentation of this file.
1 
+
41 #pragma once
+
42 
+
43 #include "type_vec2.hpp"
+
44 #include "type_vec4.hpp"
+
45 
+
46 namespace glm
+
47 {
+
50 
+
62  GLM_FUNC_DECL uint packUnorm2x16(vec2 const & v);
+
63 
+
75  GLM_FUNC_DECL uint packSnorm2x16(vec2 const & v);
+
76 
+
88  GLM_FUNC_DECL uint packUnorm4x8(vec4 const & v);
+
89 
+
101  GLM_FUNC_DECL uint packSnorm4x8(vec4 const & v);
+
102 
+
114  GLM_FUNC_DECL vec2 unpackUnorm2x16(uint p);
+
115 
+
127  GLM_FUNC_DECL vec2 unpackSnorm2x16(uint p);
+
128 
+
140  GLM_FUNC_DECL vec4 unpackUnorm4x8(uint p);
+
141 
+
153  GLM_FUNC_DECL vec4 unpackSnorm4x8(uint p);
+
154 
+
163  GLM_FUNC_DECL double packDouble2x32(uvec2 const & v);
+
164 
+
172  GLM_FUNC_DECL uvec2 unpackDouble2x32(double v);
+
173 
+
182  GLM_FUNC_DECL uint packHalf2x16(vec2 const & v);
+
183 
+
192  GLM_FUNC_DECL vec2 unpackHalf2x16(uint v);
+
193 
+
195 }//namespace glm
+
196 
+
197 #include "func_packing.inl"
+
GLM_FUNC_DECL uint packHalf2x16(vec2 const &v)
Returns an unsigned integer obtained by converting the components of a two-component floating-point v...
+
GLM_FUNC_DECL vec2 unpackUnorm2x16(uint p)
First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.
+
GLM_FUNC_DECL vec4 unpackUnorm4x8(uint p)
First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.
+
GLM_FUNC_DECL uvec2 unpackDouble2x32(double v)
Returns a two-component unsigned integer vector representation of v.
+
GLM_FUNC_DECL uint packUnorm2x16(vec2 const &v)
First, converts each component of the normalized floating-point value v into 8- or 16-bit integer val...
+
GLM_FUNC_DECL uint packSnorm4x8(vec4 const &v)
First, converts each component of the normalized floating-point value v into 8- or 16-bit integer val...
+
highp_vec2 vec2
2 components vector of floating-point numbers.
Definition: type_vec.hpp:390
+
highp_uvec2 uvec2
2 components vector of unsigned integer numbers.
Definition: type_vec.hpp:471
+
GLM_FUNC_DECL uint packSnorm2x16(vec2 const &v)
First, converts each component of the normalized floating-point value v into 8- or 16-bit integer val...
+
GLM_FUNC_DECL vec2 unpackSnorm2x16(uint p)
First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.
+
unsigned int uint
Unsigned integer type.
Definition: type_int.hpp:308
+
GLM_FUNC_DECL uint packUnorm4x8(vec4 const &v)
First, converts each component of the normalized floating-point value v into 8- or 16-bit integer val...
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL double packDouble2x32(uvec2 const &v)
Returns a double-precision value obtained by packing the components of v into a 64-bit value...
+
OpenGL Mathematics (glm.g-truc.net)
+
highp_vec4 vec4
4 components vector of floating-point numbers.
Definition: type_vec.hpp:400
+
GLM_FUNC_DECL vec4 unpackSnorm4x8(uint p)
First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.
+
GLM_FUNC_DECL vec2 unpackHalf2x16(uint v)
Returns a two-component floating-point vector with components obtained by unpacking a 32-bit unsigned...
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00036.html b/external/glm/doc/api/a00036.html new file mode 100644 index 0000000..46779db --- /dev/null +++ b/external/glm/doc/api/a00036.html @@ -0,0 +1,125 @@ + + + + + + +0.9.7: func_trigonometric.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
func_trigonometric.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > acos (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > acosh (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > asin (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > asinh (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > atan (vecType< T, P > const &y, vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > atan (vecType< T, P > const &y_over_x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > atanh (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > cos (vecType< T, P > const &angle)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > cosh (vecType< T, P > const &angle)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > degrees (vecType< T, P > const &radians)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > radians (vecType< T, P > const &degrees)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > sin (vecType< T, P > const &angle)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > sinh (vecType< T, P > const &angle)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > tan (vecType< T, P > const &angle)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > tanh (vecType< T, P > const &angle)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2008-08-01 / 2011-06-15
+
Author
Christophe Riccio
+
See also
GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +

Definition in file func_trigonometric.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00036_source.html b/external/glm/doc/api/a00036_source.html new file mode 100644 index 0000000..271e567 --- /dev/null +++ b/external/glm/doc/api/a00036_source.html @@ -0,0 +1,135 @@ + + + + + + +0.9.7: func_trigonometric.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
func_trigonometric.hpp
+
+
+Go to the documentation of this file.
1 
+
44 #pragma once
+
45 
+
46 #include "setup.hpp"
+
47 #include "precision.hpp"
+
48 
+
49 namespace glm
+
50 {
+
53 
+
60  template <typename T, precision P, template <typename, precision> class vecType>
+
61  GLM_FUNC_DECL vecType<T, P> radians(vecType<T, P> const & degrees);
+
62 
+
69  template <typename T, precision P, template <typename, precision> class vecType>
+
70  GLM_FUNC_DECL vecType<T, P> degrees(vecType<T, P> const & radians);
+
71 
+
79  template <typename T, precision P, template <typename, precision> class vecType>
+
80  GLM_FUNC_DECL vecType<T, P> sin(vecType<T, P> const & angle);
+
81 
+
89  template <typename T, precision P, template <typename, precision> class vecType>
+
90  GLM_FUNC_DECL vecType<T, P> cos(vecType<T, P> const & angle);
+
91 
+
98  template <typename T, precision P, template <typename, precision> class vecType>
+
99  GLM_FUNC_DECL vecType<T, P> tan(vecType<T, P> const & angle);
+
100 
+
109  template <typename T, precision P, template <typename, precision> class vecType>
+
110  GLM_FUNC_DECL vecType<T, P> asin(vecType<T, P> const & x);
+
111 
+
120  template <typename T, precision P, template <typename, precision> class vecType>
+
121  GLM_FUNC_DECL vecType<T, P> acos(vecType<T, P> const & x);
+
122 
+
133  template <typename T, precision P, template <typename, precision> class vecType>
+
134  GLM_FUNC_DECL vecType<T, P> atan(vecType<T, P> const & y, vecType<T, P> const & x);
+
135 
+
143  template <typename T, precision P, template <typename, precision> class vecType>
+
144  GLM_FUNC_DECL vecType<T, P> atan(vecType<T, P> const & y_over_x);
+
145 
+
152  template <typename T, precision P, template <typename, precision> class vecType>
+
153  GLM_FUNC_DECL vecType<T, P> sinh(vecType<T, P> const & angle);
+
154 
+
161  template <typename T, precision P, template <typename, precision> class vecType>
+
162  GLM_FUNC_DECL vecType<T, P> cosh(vecType<T, P> const & angle);
+
163 
+
170  template <typename T, precision P, template <typename, precision> class vecType>
+
171  GLM_FUNC_DECL vecType<T, P> tanh(vecType<T, P> const & angle);
+
172 
+
179  template <typename T, precision P, template <typename, precision> class vecType>
+
180  GLM_FUNC_DECL vecType<T, P> asinh(vecType<T, P> const & x);
+
181 
+
189  template <typename T, precision P, template <typename, precision> class vecType>
+
190  GLM_FUNC_DECL vecType<T, P> acosh(vecType<T, P> const & x);
+
191 
+
199  template <typename T, precision P, template <typename, precision> class vecType>
+
200  GLM_FUNC_DECL vecType<T, P> atanh(vecType<T, P> const & x);
+
201 
+
203 }//namespace glm
+
204 
+
205 #include "func_trigonometric.inl"
+
GLM_FUNC_DECL vecType< T, P > atan(vecType< T, P > const &y_over_x)
Arc tangent.
+
GLM_FUNC_DECL vecType< T, P > acos(vecType< T, P > const &x)
Arc cosine.
+
GLM_FUNC_DECL vecType< T, P > tanh(vecType< T, P > const &angle)
Returns the hyperbolic tangent function, sinh(angle) / cosh(angle)
+
GLM_FUNC_DECL vecType< T, P > cosh(vecType< T, P > const &angle)
Returns the hyperbolic cosine function, (exp(x) + exp(-x)) / 2.
+
GLM_FUNC_DECL vecType< T, P > asinh(vecType< T, P > const &x)
Arc hyperbolic sine; returns the inverse of sinh.
+
GLM_FUNC_DECL vecType< T, P > radians(vecType< T, P > const &degrees)
Converts degrees to radians and returns the result.
+
GLM_FUNC_DECL vecType< T, P > cos(vecType< T, P > const &angle)
The standard trigonometric cosine function.
+
GLM_FUNC_DECL vecType< T, P > sin(vecType< T, P > const &angle)
The standard trigonometric sine function.
+
GLM_FUNC_DECL vecType< T, P > sinh(vecType< T, P > const &angle)
Returns the hyperbolic sine function, (exp(x) - exp(-x)) / 2.
+
GLM_FUNC_DECL vecType< T, P > degrees(vecType< T, P > const &radians)
Converts radians to degrees and returns the result.
+
GLM_FUNC_DECL vecType< T, P > tan(vecType< T, P > const &angle)
The standard trigonometric tangent function.
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL T angle(tquat< T, P > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL vecType< T, P > acosh(vecType< T, P > const &x)
Arc hyperbolic cosine; returns the non-negative inverse of cosh.
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL vecType< T, P > asin(vecType< T, P > const &x)
Arc sine.
+
GLM_FUNC_DECL vecType< T, P > atanh(vecType< T, P > const &x)
Arc hyperbolic tangent; returns the inverse of tanh.
+
+ + + + diff --git a/external/glm/doc/api/a00037.html b/external/glm/doc/api/a00037.html new file mode 100644 index 0000000..0eddd59 --- /dev/null +++ b/external/glm/doc/api/a00037.html @@ -0,0 +1,107 @@ + + + + + + +0.9.7: func_vector_relational.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
func_vector_relational.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL bool all (vecType< bool, P > const &v)
 
template<precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL bool any (vecType< bool, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > equal (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > greaterThan (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > greaterThanEqual (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > lessThan (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > lessThanEqual (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > not_ (vecType< bool, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > notEqual (vecType< T, P > const &x, vecType< T, P > const &y)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2008-08-03 / 2011-06-15
+
Author
Christophe Riccio
+
See also
GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +

Definition in file func_vector_relational.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00037_source.html b/external/glm/doc/api/a00037_source.html new file mode 100644 index 0000000..3dd92e8 --- /dev/null +++ b/external/glm/doc/api/a00037_source.html @@ -0,0 +1,111 @@ + + + + + + +0.9.7: func_vector_relational.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
func_vector_relational.hpp
+
+
+Go to the documentation of this file.
1 
+
45 #pragma once
+
46 
+
47 #include "precision.hpp"
+
48 #include "setup.hpp"
+
49 
+
50 namespace glm
+
51 {
+
54 
+
61  template <typename T, precision P, template <typename, precision> class vecType>
+
62  GLM_FUNC_DECL vecType<bool, P> lessThan(vecType<T, P> const & x, vecType<T, P> const & y);
+
63 
+
70  template <typename T, precision P, template <typename, precision> class vecType>
+
71  GLM_FUNC_DECL vecType<bool, P> lessThanEqual(vecType<T, P> const & x, vecType<T, P> const & y);
+
72 
+
79  template <typename T, precision P, template <typename, precision> class vecType>
+
80  GLM_FUNC_DECL vecType<bool, P> greaterThan(vecType<T, P> const & x, vecType<T, P> const & y);
+
81 
+
88  template <typename T, precision P, template <typename, precision> class vecType>
+
89  GLM_FUNC_DECL vecType<bool, P> greaterThanEqual(vecType<T, P> const & x, vecType<T, P> const & y);
+
90 
+
97  template <typename T, precision P, template <typename, precision> class vecType>
+
98  GLM_FUNC_DECL vecType<bool, P> equal(vecType<T, P> const & x, vecType<T, P> const & y);
+
99 
+
106  template <typename T, precision P, template <typename, precision> class vecType>
+
107  GLM_FUNC_DECL vecType<bool, P> notEqual(vecType<T, P> const & x, vecType<T, P> const & y);
+
108 
+
115  template <precision P, template <typename, precision> class vecType>
+
116  GLM_FUNC_DECL bool any(vecType<bool, P> const & v);
+
117 
+
124  template <precision P, template <typename, precision> class vecType>
+
125  GLM_FUNC_DECL bool all(vecType<bool, P> const & v);
+
126 
+
134  template <precision P, template <typename, precision> class vecType>
+
135  GLM_FUNC_DECL vecType<bool, P> not_(vecType<bool, P> const & v);
+
136 
+
138 }//namespace glm
+
139 
+
140 #include "func_vector_relational.inl"
+
GLM_FUNC_DECL vecType< bool, P > lessThan(vecType< T, P > const &x, vecType< T, P > const &y)
Returns the component-wise comparison result of x < y.
+
GLM_FUNC_DECL vecType< bool, P > greaterThanEqual(vecType< T, P > const &x, vecType< T, P > const &y)
Returns the component-wise comparison of result x >= y.
+
GLM_FUNC_DECL vecType< bool, P > greaterThan(vecType< T, P > const &x, vecType< T, P > const &y)
Returns the component-wise comparison of result x > y.
+
GLM_FUNC_DECL bool all(vecType< bool, P > const &v)
Returns true if all components of x are true.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL vecType< bool, P > lessThanEqual(vecType< T, P > const &x, vecType< T, P > const &y)
Returns the component-wise comparison of result x <= y.
+
GLM_FUNC_DECL vecType< bool, P > equal(vecType< T, P > const &x, vecType< T, P > const &y)
Returns the component-wise comparison of result x == y.
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL bool any(vecType< bool, P > const &v)
Returns true if any component of x is true.
+
GLM_FUNC_DECL vecType< bool, P > not_(vecType< bool, P > const &v)
Returns the component-wise logical complement of x.
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL vecType< bool, P > notEqual(vecType< T, P > const &x, vecType< T, P > const &y)
Returns the component-wise comparison of result x != y.
+
+ + + + diff --git a/external/glm/doc/api/a00038.html b/external/glm/doc/api/a00038.html new file mode 100644 index 0000000..b78fc7a --- /dev/null +++ b/external/glm/doc/api/a00038.html @@ -0,0 +1,986 @@ + + + + + + +0.9.7: fwd.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
fwd.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef highp_dquat dquat
 
typedef highp_float32_t f32
 
typedef f32mat2x2 f32mat2
 
typedef highp_f32mat2x2 f32mat2x2
 
typedef highp_f32mat2x3 f32mat2x3
 
typedef highp_f32mat2x4 f32mat2x4
 
typedef f32mat3x3 f32mat3
 
typedef highp_f32mat3x2 f32mat3x2
 
typedef highp_f32mat3x3 f32mat3x3
 
typedef highp_f32mat3x4 f32mat3x4
 
typedef f32mat4x4 f32mat4
 
typedef highp_f32mat4x2 f32mat4x2
 
typedef highp_f32mat4x3 f32mat4x3
 
typedef highp_f32mat4x4 f32mat4x4
 
typedef highp_f32quat f32quat
 
typedef highp_f32vec1 f32vec1
 
typedef highp_f32vec2 f32vec2
 
typedef highp_f32vec3 f32vec3
 
typedef highp_f32vec4 f32vec4
 
typedef highp_float64_t f64
 
typedef f64mat2x2 f64mat2
 
typedef highp_f64mat2x2 f64mat2x2
 
typedef highp_f64mat2x3 f64mat2x3
 
typedef highp_f64mat2x4 f64mat2x4
 
typedef f64mat3x3 f64mat3
 
typedef highp_f64mat3x2 f64mat3x2
 
typedef highp_f64mat3x3 f64mat3x3
 
typedef highp_f64mat3x4 f64mat3x4
 
typedef f64mat4x4 f64mat4
 
typedef highp_f64mat4x2 f64mat4x2
 
typedef highp_f64mat4x3 f64mat4x3
 
typedef highp_f64mat4x4 f64mat4x4
 
typedef highp_f64quat f64quat
 
typedef highp_f64vec1 f64vec1
 
typedef highp_f64vec2 f64vec2
 
typedef highp_f64vec3 f64vec3
 
typedef highp_f64vec4 f64vec4
 
typedef highp_float32_t float32_t
 
typedef highp_float64_t float64_t
 
typedef fmat2x2 fmat2
 
typedef highp_f32mat2x2 fmat2x2
 
typedef highp_f32mat2x3 fmat2x3
 
typedef highp_f32mat2x4 fmat2x4
 
typedef fmat3x3 fmat3
 
typedef highp_f32mat3x2 fmat3x2
 
typedef highp_f32mat3x3 fmat3x3
 
typedef highp_f32mat3x4 fmat3x4
 
typedef fmat4x4 fmat4
 
typedef highp_f32mat4x2 fmat4x2
 
typedef highp_f32mat4x3 fmat4x3
 
typedef highp_f32mat4x4 fmat4x4
 
typedef quat fquat
 
typedef highp_f32vec1 fvec1
 
typedef highp_f32vec2 fvec2
 
typedef highp_f32vec3 fvec3
 
typedef highp_f32vec4 fvec4
 
typedef tquat< double, highp > highp_dquat
 
typedef float32 highp_f32
 
typedef highp_f32mat2x2 highp_f32mat2
 
typedef tmat2x2< f32, highp > highp_f32mat2x2
 
typedef tmat2x3< f32, highp > highp_f32mat2x3
 
typedef tmat2x4< f32, highp > highp_f32mat2x4
 
typedef highp_f32mat3x3 highp_f32mat3
 
typedef tmat3x2< f32, highp > highp_f32mat3x2
 
typedef tmat3x3< f32, highp > highp_f32mat3x3
 
typedef tmat3x4< f32, highp > highp_f32mat3x4
 
typedef highp_f32mat4x4 highp_f32mat4
 
typedef tmat4x2< f32, highp > highp_f32mat4x2
 
typedef tmat4x3< f32, highp > highp_f32mat4x3
 
typedef tmat4x4< f32, highp > highp_f32mat4x4
 
typedef tquat< f32, highp > highp_f32quat
 
typedef tvec1< f32, highp > highp_f32vec1
 
typedef tvec2< f32, highp > highp_f32vec2
 
typedef tvec3< f32, highp > highp_f32vec3
 
typedef tvec4< f32, highp > highp_f32vec4
 
typedef float64 highp_f64
 
typedef highp_f64mat2x2 highp_f64mat2
 
typedef tmat2x2< f64, highp > highp_f64mat2x2
 
typedef tmat2x3< f64, highp > highp_f64mat2x3
 
typedef tmat2x4< f64, highp > highp_f64mat2x4
 
typedef highp_f64mat3x3 highp_f64mat3
 
typedef tmat3x2< f64, highp > highp_f64mat3x2
 
typedef tmat3x3< f64, highp > highp_f64mat3x3
 
typedef tmat3x4< f64, highp > highp_f64mat3x4
 
typedef highp_f64mat4x4 highp_f64mat4
 
typedef tmat4x2< f64, highp > highp_f64mat4x2
 
typedef tmat4x3< f64, highp > highp_f64mat4x3
 
typedef tmat4x4< f64, highp > highp_f64mat4x4
 
typedef tquat< f64, highp > highp_f64quat
 
typedef tvec1< f64, highp > highp_f64vec1
 
typedef tvec2< f64, highp > highp_f64vec2
 
typedef tvec3< f64, highp > highp_f64vec3
 
typedef tvec4< f64, highp > highp_f64vec4
 
typedef detail::float32 highp_float32
 
typedef detail::float32 highp_float32_t
 
typedef detail::float64 highp_float64
 
typedef detail::float64 highp_float64_t
 
typedef highp_fmat2x2 highp_fmat2
 
typedef tmat2x2< f32, highp > highp_fmat2x2
 
typedef tmat2x3< f32, highp > highp_fmat2x3
 
typedef tmat2x4< f32, highp > highp_fmat2x4
 
typedef highp_fmat3x3 highp_fmat3
 
typedef tmat3x2< f32, highp > highp_fmat3x2
 
typedef tmat3x3< f32, highp > highp_fmat3x3
 
typedef tmat3x4< f32, highp > highp_fmat3x4
 
typedef highp_fmat4x4 highp_fmat4
 
typedef tmat4x2< f32, highp > highp_fmat4x2
 
typedef tmat4x3< f32, highp > highp_fmat4x3
 
typedef tmat4x4< f32, highp > highp_fmat4x4
 
typedef highp_quat highp_fquat
 
typedef tvec1< float, highp > highp_fvec1
 
typedef tvec2< float, highp > highp_fvec2
 
typedef tvec3< float, highp > highp_fvec3
 
typedef tvec4< float, highp > highp_fvec4
 
typedef detail::int16 highp_i16
 
typedef tvec1< i16, highp > highp_i16vec1
 
typedef tvec2< i16, highp > highp_i16vec2
 
typedef tvec3< i16, highp > highp_i16vec3
 
typedef tvec4< i16, highp > highp_i16vec4
 
typedef detail::int32 highp_i32
 
typedef tvec1< i32, highp > highp_i32vec1
 
typedef tvec2< i32, highp > highp_i32vec2
 
typedef tvec3< i32, highp > highp_i32vec3
 
typedef tvec4< i32, highp > highp_i32vec4
 
typedef detail::int64 highp_i64
 
typedef tvec1< i64, highp > highp_i64vec1
 
typedef tvec2< i64, highp > highp_i64vec2
 
typedef tvec3< i64, highp > highp_i64vec3
 
typedef tvec4< i64, highp > highp_i64vec4
 
typedef detail::int8 highp_i8
 
typedef tvec1< i8, highp > highp_i8vec1
 
typedef tvec2< i8, highp > highp_i8vec2
 
typedef tvec3< i8, highp > highp_i8vec3
 
typedef tvec4< i8, highp > highp_i8vec4
 
typedef detail::int16 highp_int16
 
typedef detail::int16 highp_int16_t
 
typedef detail::int32 highp_int32
 
typedef detail::int32 highp_int32_t
 
typedef detail::int64 highp_int64
 
typedef detail::int64 highp_int64_t
 
typedef detail::int8 highp_int8
 
typedef detail::int8 highp_int8_t
 
typedef tquat< float, highp > highp_quat
 
typedef detail::uint16 highp_u16
 
typedef tvec1< u16, highp > highp_u16vec1
 
typedef tvec2< u16, highp > highp_u16vec2
 
typedef tvec3< u16, highp > highp_u16vec3
 
typedef tvec4< u16, highp > highp_u16vec4
 
typedef detail::uint32 highp_u32
 
typedef tvec1< u32, highp > highp_u32vec1
 
typedef tvec2< u32, highp > highp_u32vec2
 
typedef tvec3< u32, highp > highp_u32vec3
 
typedef tvec4< u32, highp > highp_u32vec4
 
typedef detail::uint64 highp_u64
 
typedef tvec1< u64, highp > highp_u64vec1
 
typedef tvec2< u64, highp > highp_u64vec2
 
typedef tvec3< u64, highp > highp_u64vec3
 
typedef tvec4< u64, highp > highp_u64vec4
 
typedef detail::uint8 highp_u8
 
typedef tvec1< u8, highp > highp_u8vec1
 
typedef tvec2< u8, highp > highp_u8vec2
 
typedef tvec3< u8, highp > highp_u8vec3
 
typedef tvec4< u8, highp > highp_u8vec4
 
typedef detail::uint16 highp_uint16
 
typedef detail::uint16 highp_uint16_t
 
typedef detail::uint32 highp_uint32
 
typedef detail::uint32 highp_uint32_t
 
typedef detail::uint64 highp_uint64
 
typedef detail::uint64 highp_uint64_t
 
typedef detail::uint8 highp_uint8
 
typedef detail::uint8 highp_uint8_t
 
typedef tvec1< float, highp > highp_vec1
 
typedef detail::int16 i16
 
typedef highp_i16vec1 i16vec1
 
typedef highp_i16vec2 i16vec2
 
typedef highp_i16vec3 i16vec3
 
typedef highp_i16vec4 i16vec4
 
typedef detail::int32 i32
 
typedef highp_i32vec1 i32vec1
 
typedef highp_i32vec2 i32vec2
 
typedef highp_i32vec3 i32vec3
 
typedef highp_i32vec4 i32vec4
 
typedef detail::int64 i64
 
typedef highp_i64vec1 i64vec1
 
typedef highp_i64vec2 i64vec2
 
typedef highp_i64vec3 i64vec3
 
typedef highp_i64vec4 i64vec4
 
typedef detail::int8 i8
 
typedef highp_i8vec1 i8vec1
 
typedef highp_i8vec2 i8vec2
 
typedef highp_i8vec3 i8vec3
 
typedef highp_i8vec4 i8vec4
 
typedef detail::int16 int16_t
 
typedef detail::int32 int32_t
 
typedef detail::int64 int64_t
 
typedef detail::int8 int8_t
 
typedef tquat< double, lowp > lowp_dquat
 
typedef float32 lowp_f32
 
typedef lowp_f32mat2x2 lowp_f32mat2
 
typedef tmat2x2< f32, lowp > lowp_f32mat2x2
 
typedef tmat2x3< f32, lowp > lowp_f32mat2x3
 
typedef tmat2x4< f32, lowp > lowp_f32mat2x4
 
typedef lowp_f32mat3x3 lowp_f32mat3
 
typedef tmat3x2< f32, lowp > lowp_f32mat3x2
 
typedef tmat3x3< f32, lowp > lowp_f32mat3x3
 
typedef tmat3x4< f32, lowp > lowp_f32mat3x4
 
typedef lowp_f32mat4x4 lowp_f32mat4
 
typedef tmat4x2< f32, lowp > lowp_f32mat4x2
 
typedef tmat4x3< f32, lowp > lowp_f32mat4x3
 
typedef tmat4x4< f32, lowp > lowp_f32mat4x4
 
typedef tquat< f32, lowp > lowp_f32quat
 
typedef tvec1< f32, lowp > lowp_f32vec1
 
typedef tvec2< f32, lowp > lowp_f32vec2
 
typedef tvec3< f32, lowp > lowp_f32vec3
 
typedef tvec4< f32, lowp > lowp_f32vec4
 
typedef float64 lowp_f64
 
typedef lowp_f64mat2x2 lowp_f64mat2
 
typedef tmat2x2< f64, lowp > lowp_f64mat2x2
 
typedef tmat2x3< f64, lowp > lowp_f64mat2x3
 
typedef tmat2x4< f64, lowp > lowp_f64mat2x4
 
typedef lowp_f64mat3x3 lowp_f64mat3
 
typedef tmat3x2< f64, lowp > lowp_f64mat3x2
 
typedef tmat3x3< f64, lowp > lowp_f64mat3x3
 
typedef tmat3x4< f64, lowp > lowp_f64mat3x4
 
typedef lowp_f64mat4x4 lowp_f64mat4
 
typedef tmat4x2< f64, lowp > lowp_f64mat4x2
 
typedef tmat4x3< f64, lowp > lowp_f64mat4x3
 
typedef tmat4x4< f64, lowp > lowp_f64mat4x4
 
typedef tquat< f64, lowp > lowp_f64quat
 
typedef tvec1< f64, lowp > lowp_f64vec1
 
typedef tvec2< f64, lowp > lowp_f64vec2
 
typedef tvec3< f64, lowp > lowp_f64vec3
 
typedef tvec4< f64, lowp > lowp_f64vec4
 
typedef detail::float32 lowp_float32
 
typedef detail::float32 lowp_float32_t
 
typedef detail::float64 lowp_float64
 
typedef detail::float64 lowp_float64_t
 
typedef lowp_fmat2x2 lowp_fmat2
 
typedef tmat2x2< f32, lowp > lowp_fmat2x2
 
typedef tmat2x3< f32, lowp > lowp_fmat2x3
 
typedef tmat2x4< f32, lowp > lowp_fmat2x4
 
typedef lowp_fmat3x3 lowp_fmat3
 
typedef tmat3x2< f32, lowp > lowp_fmat3x2
 
typedef tmat3x3< f32, lowp > lowp_fmat3x3
 
typedef tmat3x4< f32, lowp > lowp_fmat3x4
 
typedef lowp_fmat4x4 lowp_fmat4
 
typedef tmat4x2< f32, lowp > lowp_fmat4x2
 
typedef tmat4x3< f32, lowp > lowp_fmat4x3
 
typedef tmat4x4< f32, lowp > lowp_fmat4x4
 
typedef lowp_quat lowp_fquat
 
typedef tvec1< float, lowp > lowp_fvec1
 
typedef tvec2< float, lowp > lowp_fvec2
 
typedef tvec3< float, lowp > lowp_fvec3
 
typedef tvec4< float, lowp > lowp_fvec4
 
typedef detail::int16 lowp_i16
 
typedef tvec1< i16, lowp > lowp_i16vec1
 
typedef tvec2< i16, lowp > lowp_i16vec2
 
typedef tvec3< i16, lowp > lowp_i16vec3
 
typedef tvec4< i16, lowp > lowp_i16vec4
 
typedef detail::int32 lowp_i32
 
typedef tvec1< i32, lowp > lowp_i32vec1
 
typedef tvec2< i32, lowp > lowp_i32vec2
 
typedef tvec3< i32, lowp > lowp_i32vec3
 
typedef tvec4< i32, lowp > lowp_i32vec4
 
typedef detail::int64 lowp_i64
 
typedef tvec1< i64, lowp > lowp_i64vec1
 
typedef tvec2< i64, lowp > lowp_i64vec2
 
typedef tvec3< i64, lowp > lowp_i64vec3
 
typedef tvec4< i64, lowp > lowp_i64vec4
 
typedef detail::int8 lowp_i8
 
typedef tvec1< i8, lowp > lowp_i8vec1
 
typedef tvec2< i8, lowp > lowp_i8vec2
 
typedef tvec3< i8, lowp > lowp_i8vec3
 
typedef tvec4< i8, lowp > lowp_i8vec4
 
typedef detail::int16 lowp_int16
 
typedef detail::int16 lowp_int16_t
 
typedef detail::int32 lowp_int32
 
typedef detail::int32 lowp_int32_t
 
typedef detail::int64 lowp_int64
 
typedef detail::int64 lowp_int64_t
 
typedef detail::int8 lowp_int8
 
typedef detail::int8 lowp_int8_t
 
typedef tquat< float, lowp > lowp_quat
 
typedef detail::uint16 lowp_u16
 
typedef tvec1< u16, lowp > lowp_u16vec1
 
typedef tvec2< u16, lowp > lowp_u16vec2
 
typedef tvec3< u16, lowp > lowp_u16vec3
 
typedef tvec4< u16, lowp > lowp_u16vec4
 
typedef detail::uint32 lowp_u32
 
typedef tvec1< u32, lowp > lowp_u32vec1
 
typedef tvec2< u32, lowp > lowp_u32vec2
 
typedef tvec3< u32, lowp > lowp_u32vec3
 
typedef tvec4< u32, lowp > lowp_u32vec4
 
typedef detail::uint64 lowp_u64
 
typedef tvec1< u64, lowp > lowp_u64vec1
 
typedef tvec2< u64, lowp > lowp_u64vec2
 
typedef tvec3< u64, lowp > lowp_u64vec3
 
typedef tvec4< u64, lowp > lowp_u64vec4
 
typedef detail::uint8 lowp_u8
 
typedef tvec1< u8, lowp > lowp_u8vec1
 
typedef tvec2< u8, lowp > lowp_u8vec2
 
typedef tvec3< u8, lowp > lowp_u8vec3
 
typedef tvec4< u8, lowp > lowp_u8vec4
 
typedef detail::uint16 lowp_uint16
 
typedef detail::uint16 lowp_uint16_t
 
typedef detail::uint32 lowp_uint32
 
typedef detail::uint32 lowp_uint32_t
 
typedef detail::uint64 lowp_uint64
 
typedef detail::uint64 lowp_uint64_t
 
typedef detail::uint8 lowp_uint8
 
typedef detail::uint8 lowp_uint8_t
 
typedef tvec1< float, lowp > lowp_vec1
 
typedef tquat< double, mediump > mediump_dquat
 
typedef float32 mediump_f32
 
typedef mediump_f32mat2x2 mediump_f32mat2
 
typedef tmat2x2< f32, mediump > mediump_f32mat2x2
 
typedef tmat2x3< f32, mediump > mediump_f32mat2x3
 
typedef tmat2x4< f32, mediump > mediump_f32mat2x4
 
typedef mediump_f32mat3x3 mediump_f32mat3
 
typedef tmat3x2< f32, mediump > mediump_f32mat3x2
 
typedef tmat3x3< f32, mediump > mediump_f32mat3x3
 
typedef tmat3x4< f32, mediump > mediump_f32mat3x4
 
typedef mediump_f32mat4x4 mediump_f32mat4
 
typedef tmat4x2< f32, mediump > mediump_f32mat4x2
 
typedef tmat4x3< f32, mediump > mediump_f32mat4x3
 
typedef tmat4x4< f32, mediump > mediump_f32mat4x4
 
typedef tquat< f32, mediump > mediump_f32quat
 
typedef tvec1< f32, mediump > mediump_f32vec1
 
typedef tvec2< f32, mediump > mediump_f32vec2
 
typedef tvec3< f32, mediump > mediump_f32vec3
 
typedef tvec4< f32, mediump > mediump_f32vec4
 
typedef float64 mediump_f64
 
typedef mediump_f64mat2x2 mediump_f64mat2
 
typedef tmat2x2< f64, mediump > mediump_f64mat2x2
 
typedef tmat2x3< f64, mediump > mediump_f64mat2x3
 
typedef tmat2x4< f64, mediump > mediump_f64mat2x4
 
typedef mediump_f64mat3x3 mediump_f64mat3
 
typedef tmat3x2< f64, mediump > mediump_f64mat3x2
 
typedef tmat3x3< f64, mediump > mediump_f64mat3x3
 
typedef tmat3x4< f64, mediump > mediump_f64mat3x4
 
typedef mediump_f64mat4x4 mediump_f64mat4
 
typedef tmat4x2< f64, mediump > mediump_f64mat4x2
 
typedef tmat4x3< f64, mediump > mediump_f64mat4x3
 
typedef tmat4x4< f64, mediump > mediump_f64mat4x4
 
typedef tquat< f64, mediump > mediump_f64quat
 
typedef tvec1< f64, mediump > mediump_f64vec1
 
typedef tvec2< f64, mediump > mediump_f64vec2
 
typedef tvec3< f64, mediump > mediump_f64vec3
 
typedef tvec4< f64, mediump > mediump_f64vec4
 
typedef detail::float32 mediump_float32
 
typedef detail::float32 mediump_float32_t
 
typedef detail::float64 mediump_float64
 
typedef detail::float64 mediump_float64_t
 
typedef mediump_fmat2x2 mediump_fmat2
 
typedef tmat2x2< f32, mediump > mediump_fmat2x2
 
typedef tmat2x3< f32, mediump > mediump_fmat2x3
 
typedef tmat2x4< f32, mediump > mediump_fmat2x4
 
typedef mediump_fmat3x3 mediump_fmat3
 
typedef tmat3x2< f32, mediump > mediump_fmat3x2
 
typedef tmat3x3< f32, mediump > mediump_fmat3x3
 
typedef tmat3x4< f32, mediump > mediump_fmat3x4
 
typedef mediump_fmat4x4 mediump_fmat4
 
typedef tmat4x2< f32, mediump > mediump_fmat4x2
 
typedef tmat4x3< f32, mediump > mediump_fmat4x3
 
typedef tmat4x4< f32, mediump > mediump_fmat4x4
 
typedef mediump_quat mediump_fquat
 
typedef tvec1< float, mediump > mediump_fvec1
 
typedef tvec2< float, mediump > mediump_fvec2
 
typedef tvec3< float, mediump > mediump_fvec3
 
typedef tvec4< float, mediump > mediump_fvec4
 
typedef detail::int16 mediump_i16
 
typedef tvec1< i16, mediump > mediump_i16vec1
 
typedef tvec2< i16, mediump > mediump_i16vec2
 
typedef tvec3< i16, mediump > mediump_i16vec3
 
typedef tvec4< i16, mediump > mediump_i16vec4
 
typedef detail::int32 mediump_i32
 
typedef tvec1< i32, mediump > mediump_i32vec1
 
typedef tvec2< i32, mediump > mediump_i32vec2
 
typedef tvec3< i32, mediump > mediump_i32vec3
 
typedef tvec4< i32, mediump > mediump_i32vec4
 
typedef detail::int64 mediump_i64
 
typedef tvec1< i64, mediump > mediump_i64vec1
 
typedef tvec2< i64, mediump > mediump_i64vec2
 
typedef tvec3< i64, mediump > mediump_i64vec3
 
typedef tvec4< i64, mediump > mediump_i64vec4
 
typedef detail::int8 mediump_i8
 
typedef tvec1< i8, mediump > mediump_i8vec1
 
typedef tvec2< i8, mediump > mediump_i8vec2
 
typedef tvec3< i8, mediump > mediump_i8vec3
 
typedef tvec4< i8, mediump > mediump_i8vec4
 
typedef detail::int16 mediump_int16
 
typedef detail::int16 mediump_int16_t
 
typedef detail::int32 mediump_int32
 
typedef detail::int32 mediump_int32_t
 
typedef detail::int64 mediump_int64
 
typedef detail::int64 mediump_int64_t
 
typedef detail::int8 mediump_int8
 
typedef detail::int8 mediump_int8_t
 
typedef tquat< float, mediump > mediump_quat
 
typedef detail::uint16 mediump_u16
 
typedef tvec1< u16, mediump > mediump_u16vec1
 
typedef tvec2< u16, mediump > mediump_u16vec2
 
typedef tvec3< u16, mediump > mediump_u16vec3
 
typedef tvec4< u16, mediump > mediump_u16vec4
 
typedef detail::uint32 mediump_u32
 
typedef tvec1< u32, mediump > mediump_u32vec1
 
typedef tvec2< u32, mediump > mediump_u32vec2
 
typedef tvec3< u32, mediump > mediump_u32vec3
 
typedef tvec4< u32, mediump > mediump_u32vec4
 
typedef detail::uint64 mediump_u64
 
typedef tvec1< u64, mediump > mediump_u64vec1
 
typedef tvec2< u64, mediump > mediump_u64vec2
 
typedef tvec3< u64, mediump > mediump_u64vec3
 
typedef tvec4< u64, mediump > mediump_u64vec4
 
typedef detail::uint8 mediump_u8
 
typedef tvec1< u8, mediump > mediump_u8vec1
 
typedef tvec2< u8, mediump > mediump_u8vec2
 
typedef tvec3< u8, mediump > mediump_u8vec3
 
typedef tvec4< u8, mediump > mediump_u8vec4
 
typedef detail::uint16 mediump_uint16
 
typedef detail::uint16 mediump_uint16_t
 
typedef detail::uint32 mediump_uint32
 
typedef detail::uint32 mediump_uint32_t
 
typedef detail::uint64 mediump_uint64
 
typedef detail::uint64 mediump_uint64_t
 
typedef detail::uint8 mediump_uint8
 
typedef detail::uint8 mediump_uint8_t
 
typedef tvec1< float, mediump > mediump_vec1
 
+typedef highp_quat quat
 
typedef detail::uint16 u16
 
typedef highp_u16vec1 u16vec1
 
typedef highp_u16vec2 u16vec2
 
typedef highp_u16vec3 u16vec3
 
typedef highp_u16vec4 u16vec4
 
typedef detail::uint32 u32
 
typedef highp_u32vec1 u32vec1
 
typedef highp_u32vec2 u32vec2
 
typedef highp_u32vec3 u32vec3
 
typedef highp_u32vec4 u32vec4
 
typedef detail::uint64 u64
 
typedef highp_u64vec1 u64vec1
 
typedef highp_u64vec2 u64vec2
 
typedef highp_u64vec3 u64vec3
 
typedef highp_u64vec4 u64vec4
 
typedef detail::uint8 u8
 
typedef highp_u8vec1 u8vec1
 
typedef highp_u8vec2 u8vec2
 
typedef highp_u8vec3 u8vec3
 
typedef highp_u8vec4 u8vec4
 
typedef detail::uint16 uint16_t
 
typedef detail::uint32 uint32_t
 
typedef detail::uint64 uint64_t
 
typedef detail::uint8 uint8_t
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-03-30 / 2013-03-31
+
Author
Christophe Riccio
+ +

Definition in file fwd.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00038_source.html b/external/glm/doc/api/a00038_source.html new file mode 100644 index 0000000..a5ca338 --- /dev/null +++ b/external/glm/doc/api/a00038_source.html @@ -0,0 +1,1716 @@ + + + + + + +0.9.7: fwd.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
fwd.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "detail/type_int.hpp"
+
36 #include "detail/type_float.hpp"
+
37 #include "detail/type_vec.hpp"
+
38 #include "detail/type_mat.hpp"
+
39 
+
41 // GLM_GTC_quaternion
+
42 namespace glm
+
43 {
+
44  template <typename T, precision P> struct tquat;
+
45 
+
49  typedef tquat<float, lowp> lowp_quat;
+
50 
+
54  typedef tquat<float, mediump> mediump_quat;
+
55 
+
59  typedef tquat<float, highp> highp_quat;
+
60 
+
61 #if(defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
+
62  typedef highp_quat quat;
+
63 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
+
64  typedef mediump_quat quat;
+
65 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && defined(GLM_PRECISION_LOWP_FLOAT))
+
66  typedef lowp_quat quat;
+
67 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
+
68  typedef highp_quat quat;
+
70 #endif
+
71 
+
75  typedef lowp_quat lowp_fquat;
+
76 
+
80  typedef mediump_quat mediump_fquat;
+
81 
+
85  typedef highp_quat highp_fquat;
+
86 
+
90  typedef quat fquat;
+
91 
+
92 
+
96  typedef tquat<double, lowp> lowp_dquat;
+
97 
+
101  typedef tquat<double, mediump> mediump_dquat;
+
102 
+
106  typedef tquat<double, highp> highp_dquat;
+
107 
+
108 #if(defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
+
109  typedef highp_dquat dquat;
+
110 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
+
111  typedef mediump_dquat dquat;
+
112 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && defined(GLM_PRECISION_LOWP_DOUBLE))
+
113  typedef lowp_dquat dquat;
+
114 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
+
115  typedef highp_dquat dquat;
+
119 #endif
+
120 
+
121 }//namespace glm
+
122 
+
124 // GLM_GTC_precision
+
125 namespace glm
+
126 {
+
129  typedef detail::int8 lowp_int8;
+
130 
+
133  typedef detail::int16 lowp_int16;
+
134 
+
137  typedef detail::int32 lowp_int32;
+
138 
+
141  typedef detail::int64 lowp_int64;
+
142 
+
145  typedef detail::int8 lowp_int8_t;
+
146 
+
149  typedef detail::int16 lowp_int16_t;
+
150 
+
153  typedef detail::int32 lowp_int32_t;
+
154 
+
157  typedef detail::int64 lowp_int64_t;
+
158 
+
161  typedef detail::int8 lowp_i8;
+
162 
+
165  typedef detail::int16 lowp_i16;
+
166 
+
169  typedef detail::int32 lowp_i32;
+
170 
+
173  typedef detail::int64 lowp_i64;
+
174 
+
177  typedef detail::int8 mediump_int8;
+
178 
+
181  typedef detail::int16 mediump_int16;
+
182 
+
185  typedef detail::int32 mediump_int32;
+
186 
+
189  typedef detail::int64 mediump_int64;
+
190 
+
193  typedef detail::int8 mediump_int8_t;
+
194 
+
197  typedef detail::int16 mediump_int16_t;
+
198 
+
201  typedef detail::int32 mediump_int32_t;
+
202 
+
205  typedef detail::int64 mediump_int64_t;
+
206 
+
209  typedef detail::int8 mediump_i8;
+
210 
+
213  typedef detail::int16 mediump_i16;
+
214 
+
217  typedef detail::int32 mediump_i32;
+
218 
+
221  typedef detail::int64 mediump_i64;
+
222 
+
225  typedef detail::int8 highp_int8;
+
226 
+
229  typedef detail::int16 highp_int16;
+
230 
+
233  typedef detail::int32 highp_int32;
+
234 
+
237  typedef detail::int64 highp_int64;
+
238 
+
241  typedef detail::int8 highp_int8_t;
+
242 
+
245  typedef detail::int16 highp_int16_t;
+
246 
+
249  typedef detail::int32 highp_int32_t;
+
250 
+
253  typedef detail::int64 highp_int64_t;
+
254 
+
257  typedef detail::int8 highp_i8;
+
258 
+
261  typedef detail::int16 highp_i16;
+
262 
+
265  typedef detail::int32 highp_i32;
+
266 
+
269  typedef detail::int64 highp_i64;
+
270 
+
271 
+
274  typedef detail::int8 int8;
+
275 
+
278  typedef detail::int16 int16;
+
279 
+
282  typedef detail::int32 int32;
+
283 
+
286  typedef detail::int64 int64;
+
287 
+
288 
+
289 #if GLM_HAS_EXTENDED_INTEGER_TYPE
+
290  using std::int8_t;
+
291  using std::int16_t;
+
292  using std::int32_t;
+
293  using std::int64_t;
+
294 #else
+
295  typedef detail::int8 int8_t;
+
298 
+
301  typedef detail::int16 int16_t;
+
302 
+
305  typedef detail::int32 int32_t;
+
306 
+
309  typedef detail::int64 int64_t;
+
310 #endif
+
311 
+
314  typedef detail::int8 i8;
+
315 
+
318  typedef detail::int16 i16;
+
319 
+
322  typedef detail::int32 i32;
+
323 
+
326  typedef detail::int64 i64;
+
327 
+
328 
+
329 
+
332  typedef tvec1<i8, lowp> lowp_i8vec1;
+
333 
+
336  typedef tvec2<i8, lowp> lowp_i8vec2;
+
337 
+
340  typedef tvec3<i8, lowp> lowp_i8vec3;
+
341 
+
344  typedef tvec4<i8, lowp> lowp_i8vec4;
+
345 
+
346 
+
349  typedef tvec1<i8, mediump> mediump_i8vec1;
+
350 
+
353  typedef tvec2<i8, mediump> mediump_i8vec2;
+
354 
+
357  typedef tvec3<i8, mediump> mediump_i8vec3;
+
358 
+
361  typedef tvec4<i8, mediump> mediump_i8vec4;
+
362 
+
363 
+
366  typedef tvec1<i8, highp> highp_i8vec1;
+
367 
+
370  typedef tvec2<i8, highp> highp_i8vec2;
+
371 
+
374  typedef tvec3<i8, highp> highp_i8vec3;
+
375 
+
378  typedef tvec4<i8, highp> highp_i8vec4;
+
379 
+
380 #if(defined(GLM_PRECISION_LOWP_INT))
+
381  typedef lowp_i8vec1 i8vec1;
+
382  typedef lowp_i8vec2 i8vec2;
+
383  typedef lowp_i8vec3 i8vec3;
+
384  typedef lowp_i8vec4 i8vec4;
+
385 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
+
386  typedef mediump_i8vec1 i8vec1;
+
387  typedef mediump_i8vec2 i8vec2;
+
388  typedef mediump_i8vec3 i8vec3;
+
389  typedef mediump_i8vec4 i8vec4;
+
390 #else
+
391  typedef highp_i8vec1 i8vec1;
+
394 
+
397  typedef highp_i8vec2 i8vec2;
+
398 
+
401  typedef highp_i8vec3 i8vec3;
+
402 
+
405  typedef highp_i8vec4 i8vec4;
+
406 #endif
+
407 
+
408 
+
411  typedef tvec1<i16, lowp> lowp_i16vec1;
+
412 
+
415  typedef tvec2<i16, lowp> lowp_i16vec2;
+
416 
+
419  typedef tvec3<i16, lowp> lowp_i16vec3;
+
420 
+
423  typedef tvec4<i16, lowp> lowp_i16vec4;
+
424 
+
425 
+
428  typedef tvec1<i16, mediump> mediump_i16vec1;
+
429 
+
432  typedef tvec2<i16, mediump> mediump_i16vec2;
+
433 
+
436  typedef tvec3<i16, mediump> mediump_i16vec3;
+
437 
+
440  typedef tvec4<i16, mediump> mediump_i16vec4;
+
441 
+
442 
+
445  typedef tvec1<i16, highp> highp_i16vec1;
+
446 
+
449  typedef tvec2<i16, highp> highp_i16vec2;
+
450 
+
453  typedef tvec3<i16, highp> highp_i16vec3;
+
454 
+
457  typedef tvec4<i16, highp> highp_i16vec4;
+
458 
+
459 
+
460 #if(defined(GLM_PRECISION_LOWP_INT))
+
461  typedef lowp_i16vec1 i16vec1;
+
462  typedef lowp_i16vec2 i16vec2;
+
463  typedef lowp_i16vec3 i16vec3;
+
464  typedef lowp_i16vec4 i16vec4;
+
465 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
+
466  typedef mediump_i16vec1 i16vec1;
+
467  typedef mediump_i16vec2 i16vec2;
+
468  typedef mediump_i16vec3 i16vec3;
+
469  typedef mediump_i16vec4 i16vec4;
+
470 #else
+
471  typedef highp_i16vec1 i16vec1;
+
474 
+
477  typedef highp_i16vec2 i16vec2;
+
478 
+
481  typedef highp_i16vec3 i16vec3;
+
482 
+
485  typedef highp_i16vec4 i16vec4;
+
486 #endif
+
487 
+
488 
+
491  typedef tvec1<i32, lowp> lowp_i32vec1;
+
492 
+
495  typedef tvec2<i32, lowp> lowp_i32vec2;
+
496 
+
499  typedef tvec3<i32, lowp> lowp_i32vec3;
+
500 
+
503  typedef tvec4<i32, lowp> lowp_i32vec4;
+
504 
+
505 
+
508  typedef tvec1<i32, mediump> mediump_i32vec1;
+
509 
+
512  typedef tvec2<i32, mediump> mediump_i32vec2;
+
513 
+
516  typedef tvec3<i32, mediump> mediump_i32vec3;
+
517 
+
520  typedef tvec4<i32, mediump> mediump_i32vec4;
+
521 
+
522 
+
525  typedef tvec1<i32, highp> highp_i32vec1;
+
526 
+
529  typedef tvec2<i32, highp> highp_i32vec2;
+
530 
+
533  typedef tvec3<i32, highp> highp_i32vec3;
+
534 
+
537  typedef tvec4<i32, highp> highp_i32vec4;
+
538 
+
539 #if(defined(GLM_PRECISION_LOWP_INT))
+
540  typedef lowp_i32vec1 i32vec1;
+
541  typedef lowp_i32vec2 i32vec2;
+
542  typedef lowp_i32vec3 i32vec3;
+
543  typedef lowp_i32vec4 i32vec4;
+
544 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
+
545  typedef mediump_i32vec1 i32vec1;
+
546  typedef mediump_i32vec2 i32vec2;
+
547  typedef mediump_i32vec3 i32vec3;
+
548  typedef mediump_i32vec4 i32vec4;
+
549 #else
+
550  typedef highp_i32vec1 i32vec1;
+
553 
+
556  typedef highp_i32vec2 i32vec2;
+
557 
+
560  typedef highp_i32vec3 i32vec3;
+
561 
+
564  typedef highp_i32vec4 i32vec4;
+
565 #endif
+
566 
+
567 
+
570  typedef tvec1<i32, lowp> lowp_i32vec1;
+
571 
+
574  typedef tvec2<i32, lowp> lowp_i32vec2;
+
575 
+
578  typedef tvec3<i32, lowp> lowp_i32vec3;
+
579 
+
582  typedef tvec4<i32, lowp> lowp_i32vec4;
+
583 
+
584 
+
587  typedef tvec1<i32, mediump> mediump_i32vec1;
+
588 
+
591  typedef tvec2<i32, mediump> mediump_i32vec2;
+
592 
+
595  typedef tvec3<i32, mediump> mediump_i32vec3;
+
596 
+
599  typedef tvec4<i32, mediump> mediump_i32vec4;
+
600 
+
601 
+
604  typedef tvec1<i32, highp> highp_i32vec1;
+
605 
+
608  typedef tvec2<i32, highp> highp_i32vec2;
+
609 
+
612  typedef tvec3<i32, highp> highp_i32vec3;
+
613 
+
616  typedef tvec4<i32, highp> highp_i32vec4;
+
617 
+
618 #if(defined(GLM_PRECISION_LOWP_INT))
+
619  typedef lowp_i32vec1 i32vec1;
+
620  typedef lowp_i32vec2 i32vec2;
+
621  typedef lowp_i32vec3 i32vec3;
+
622  typedef lowp_i32vec4 i32vec4;
+
623 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
+
624  typedef mediump_i32vec1 i32vec1;
+
625  typedef mediump_i32vec2 i32vec2;
+
626  typedef mediump_i32vec3 i32vec3;
+
627  typedef mediump_i32vec4 i32vec4;
+
628 #else
+
629  typedef highp_i32vec1 i32vec1;
+
632 
+
635  typedef highp_i32vec2 i32vec2;
+
636 
+
639  typedef highp_i32vec3 i32vec3;
+
640 
+
643  typedef highp_i32vec4 i32vec4;
+
644 #endif
+
645 
+
646 
+
647 
+
650  typedef tvec1<i64, lowp> lowp_i64vec1;
+
651 
+
654  typedef tvec2<i64, lowp> lowp_i64vec2;
+
655 
+
658  typedef tvec3<i64, lowp> lowp_i64vec3;
+
659 
+
662  typedef tvec4<i64, lowp> lowp_i64vec4;
+
663 
+
664 
+
667  typedef tvec1<i64, mediump> mediump_i64vec1;
+
668 
+
671  typedef tvec2<i64, mediump> mediump_i64vec2;
+
672 
+
675  typedef tvec3<i64, mediump> mediump_i64vec3;
+
676 
+
679  typedef tvec4<i64, mediump> mediump_i64vec4;
+
680 
+
681 
+
684  typedef tvec1<i64, highp> highp_i64vec1;
+
685 
+
688  typedef tvec2<i64, highp> highp_i64vec2;
+
689 
+
692  typedef tvec3<i64, highp> highp_i64vec3;
+
693 
+
696  typedef tvec4<i64, highp> highp_i64vec4;
+
697 
+
698 #if(defined(GLM_PRECISION_LOWP_INT))
+
699  typedef lowp_i64vec1 i64vec1;
+
700  typedef lowp_i64vec2 i64vec2;
+
701  typedef lowp_i64vec3 i64vec3;
+
702  typedef lowp_i64vec4 i64vec4;
+
703 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
+
704  typedef mediump_i64vec1 i64vec1;
+
705  typedef mediump_i64vec2 i64vec2;
+
706  typedef mediump_i64vec3 i64vec3;
+
707  typedef mediump_i64vec4 i64vec4;
+
708 #else
+
709  typedef highp_i64vec1 i64vec1;
+
712 
+
715  typedef highp_i64vec2 i64vec2;
+
716 
+
719  typedef highp_i64vec3 i64vec3;
+
720 
+
723  typedef highp_i64vec4 i64vec4;
+
724 #endif
+
725 
+
726 
+
728  // Unsigned int vector types
+
729 
+
732  typedef detail::uint8 lowp_uint8;
+
733 
+
736  typedef detail::uint16 lowp_uint16;
+
737 
+
740  typedef detail::uint32 lowp_uint32;
+
741 
+
744  typedef detail::uint64 lowp_uint64;
+
745 
+
746 
+
749  typedef detail::uint8 lowp_uint8_t;
+
750 
+
753  typedef detail::uint16 lowp_uint16_t;
+
754 
+
757  typedef detail::uint32 lowp_uint32_t;
+
758 
+
761  typedef detail::uint64 lowp_uint64_t;
+
762 
+
763 
+
766  typedef detail::uint8 lowp_u8;
+
767 
+
770  typedef detail::uint16 lowp_u16;
+
771 
+
774  typedef detail::uint32 lowp_u32;
+
775 
+
778  typedef detail::uint64 lowp_u64;
+
779 
+
780 
+
781 
+
784  typedef detail::uint8 mediump_uint8;
+
785 
+
788  typedef detail::uint16 mediump_uint16;
+
789 
+
792  typedef detail::uint32 mediump_uint32;
+
793 
+
796  typedef detail::uint64 mediump_uint64;
+
797 
+
800  typedef detail::uint8 mediump_uint8_t;
+
801 
+
804  typedef detail::uint16 mediump_uint16_t;
+
805 
+
808  typedef detail::uint32 mediump_uint32_t;
+
809 
+
812  typedef detail::uint64 mediump_uint64_t;
+
813 
+
816  typedef detail::uint8 mediump_u8;
+
817 
+
820  typedef detail::uint16 mediump_u16;
+
821 
+
824  typedef detail::uint32 mediump_u32;
+
825 
+
828  typedef detail::uint64 mediump_u64;
+
829 
+
830 
+
831 
+
834  typedef detail::uint8 highp_uint8;
+
835 
+
838  typedef detail::uint16 highp_uint16;
+
839 
+
842  typedef detail::uint32 highp_uint32;
+
843 
+
846  typedef detail::uint64 highp_uint64;
+
847 
+
850  typedef detail::uint8 highp_uint8_t;
+
851 
+
854  typedef detail::uint16 highp_uint16_t;
+
855 
+
858  typedef detail::uint32 highp_uint32_t;
+
859 
+
862  typedef detail::uint64 highp_uint64_t;
+
863 
+
866  typedef detail::uint8 highp_u8;
+
867 
+
870  typedef detail::uint16 highp_u16;
+
871 
+
874  typedef detail::uint32 highp_u32;
+
875 
+
878  typedef detail::uint64 highp_u64;
+
879 
+
880 
+
881 
+
884  typedef detail::uint8 uint8;
+
885 
+
888  typedef detail::uint16 uint16;
+
889 
+
892  typedef detail::uint32 uint32;
+
893 
+
896  typedef detail::uint64 uint64;
+
897 
+
898 #if GLM_HAS_EXTENDED_INTEGER_TYPE
+
899  using std::uint8_t;
+
900  using std::uint16_t;
+
901  using std::uint32_t;
+
902  using std::uint64_t;
+
903 #else
+
904  typedef detail::uint8 uint8_t;
+
907 
+
910  typedef detail::uint16 uint16_t;
+
911 
+
914  typedef detail::uint32 uint32_t;
+
915 
+
918  typedef detail::uint64 uint64_t;
+
919 #endif
+
920 
+
923  typedef detail::uint8 u8;
+
924 
+
927  typedef detail::uint16 u16;
+
928 
+
931  typedef detail::uint32 u32;
+
932 
+
935  typedef detail::uint64 u64;
+
936 
+
937 
+
938 
+
941  typedef tvec1<u8, lowp> lowp_u8vec1;
+
942 
+
945  typedef tvec2<u8, lowp> lowp_u8vec2;
+
946 
+
949  typedef tvec3<u8, lowp> lowp_u8vec3;
+
950 
+
953  typedef tvec4<u8, lowp> lowp_u8vec4;
+
954 
+
955 
+
958  typedef tvec1<u8, mediump> mediump_u8vec1;
+
959 
+
962  typedef tvec2<u8, mediump> mediump_u8vec2;
+
963 
+
966  typedef tvec3<u8, mediump> mediump_u8vec3;
+
967 
+
970  typedef tvec4<u8, mediump> mediump_u8vec4;
+
971 
+
972 
+
975  typedef tvec1<u8, highp> highp_u8vec1;
+
976 
+
979  typedef tvec2<u8, highp> highp_u8vec2;
+
980 
+
983  typedef tvec3<u8, highp> highp_u8vec3;
+
984 
+
987  typedef tvec4<u8, highp> highp_u8vec4;
+
988 
+
989 #if(defined(GLM_PRECISION_LOWP_INT))
+
990  typedef lowp_u8vec1 u8vec1;
+
991  typedef lowp_u8vec2 u8vec2;
+
992  typedef lowp_u8vec3 u8vec3;
+
993  typedef lowp_u8vec4 u8vec4;
+
994 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
+
995  typedef mediump_u8vec1 u8vec1;
+
996  typedef mediump_u8vec2 u8vec2;
+
997  typedef mediump_u8vec3 u8vec3;
+
998  typedef mediump_u8vec4 u8vec4;
+
999 #else
+
1000  typedef highp_u8vec1 u8vec1;
+
1003 
+
1006  typedef highp_u8vec2 u8vec2;
+
1007 
+
1010  typedef highp_u8vec3 u8vec3;
+
1011 
+
1014  typedef highp_u8vec4 u8vec4;
+
1015 #endif
+
1016 
+
1017 
+
1020  typedef tvec1<u16, lowp> lowp_u16vec1;
+
1021 
+
1024  typedef tvec2<u16, lowp> lowp_u16vec2;
+
1025 
+
1028  typedef tvec3<u16, lowp> lowp_u16vec3;
+
1029 
+
1032  typedef tvec4<u16, lowp> lowp_u16vec4;
+
1033 
+
1034 
+
1037  typedef tvec1<u16, mediump> mediump_u16vec1;
+
1038 
+
1041  typedef tvec2<u16, mediump> mediump_u16vec2;
+
1042 
+
1045  typedef tvec3<u16, mediump> mediump_u16vec3;
+
1046 
+
1049  typedef tvec4<u16, mediump> mediump_u16vec4;
+
1050 
+
1051 
+
1054  typedef tvec1<u16, highp> highp_u16vec1;
+
1055 
+
1058  typedef tvec2<u16, highp> highp_u16vec2;
+
1059 
+
1062  typedef tvec3<u16, highp> highp_u16vec3;
+
1063 
+
1066  typedef tvec4<u16, highp> highp_u16vec4;
+
1067 
+
1068 
+
1069 #if(defined(GLM_PRECISION_LOWP_INT))
+
1070  typedef lowp_u16vec1 u16vec1;
+
1071  typedef lowp_u16vec2 u16vec2;
+
1072  typedef lowp_u16vec3 u16vec3;
+
1073  typedef lowp_u16vec4 u16vec4;
+
1074 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
+
1075  typedef mediump_u16vec1 u16vec1;
+
1076  typedef mediump_u16vec2 u16vec2;
+
1077  typedef mediump_u16vec3 u16vec3;
+
1078  typedef mediump_u16vec4 u16vec4;
+
1079 #else
+
1080  typedef highp_u16vec1 u16vec1;
+
1083 
+
1086  typedef highp_u16vec2 u16vec2;
+
1087 
+
1090  typedef highp_u16vec3 u16vec3;
+
1091 
+
1094  typedef highp_u16vec4 u16vec4;
+
1095 #endif
+
1096 
+
1097 
+
1100  typedef tvec1<u32, lowp> lowp_u32vec1;
+
1101 
+
1104  typedef tvec2<u32, lowp> lowp_u32vec2;
+
1105 
+
1108  typedef tvec3<u32, lowp> lowp_u32vec3;
+
1109 
+
1112  typedef tvec4<u32, lowp> lowp_u32vec4;
+
1113 
+
1114 
+
1117  typedef tvec1<u32, mediump> mediump_u32vec1;
+
1118 
+
1121  typedef tvec2<u32, mediump> mediump_u32vec2;
+
1122 
+
1125  typedef tvec3<u32, mediump> mediump_u32vec3;
+
1126 
+
1129  typedef tvec4<u32, mediump> mediump_u32vec4;
+
1130 
+
1131 
+
1134  typedef tvec1<u32, highp> highp_u32vec1;
+
1135 
+
1138  typedef tvec2<u32, highp> highp_u32vec2;
+
1139 
+
1142  typedef tvec3<u32, highp> highp_u32vec3;
+
1143 
+
1146  typedef tvec4<u32, highp> highp_u32vec4;
+
1147 
+
1148 #if(defined(GLM_PRECISION_LOWP_INT))
+
1149  typedef lowp_u32vec1 u32vec1;
+
1150  typedef lowp_u32vec2 u32vec2;
+
1151  typedef lowp_u32vec3 u32vec3;
+
1152  typedef lowp_u32vec4 u32vec4;
+
1153 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
+
1154  typedef mediump_u32vec1 u32vec1;
+
1155  typedef mediump_u32vec2 u32vec2;
+
1156  typedef mediump_u32vec3 u32vec3;
+
1157  typedef mediump_u32vec4 u32vec4;
+
1158 #else
+
1159  typedef highp_u32vec1 u32vec1;
+
1162 
+
1165  typedef highp_u32vec2 u32vec2;
+
1166 
+
1169  typedef highp_u32vec3 u32vec3;
+
1170 
+
1173  typedef highp_u32vec4 u32vec4;
+
1174 #endif
+
1175 
+
1176 
+
1179  typedef tvec1<u32, lowp> lowp_u32vec1;
+
1180 
+
1183  typedef tvec2<u32, lowp> lowp_u32vec2;
+
1184 
+
1187  typedef tvec3<u32, lowp> lowp_u32vec3;
+
1188 
+
1191  typedef tvec4<u32, lowp> lowp_u32vec4;
+
1192 
+
1193 
+
1196  typedef tvec1<u32, mediump> mediump_u32vec1;
+
1197 
+
1200  typedef tvec2<u32, mediump> mediump_u32vec2;
+
1201 
+
1204  typedef tvec3<u32, mediump> mediump_u32vec3;
+
1205 
+
1208  typedef tvec4<u32, mediump> mediump_u32vec4;
+
1209 
+
1210 
+
1213  typedef tvec1<u32, highp> highp_u32vec1;
+
1214 
+
1217  typedef tvec2<u32, highp> highp_u32vec2;
+
1218 
+
1221  typedef tvec3<u32, highp> highp_u32vec3;
+
1222 
+
1225  typedef tvec4<u32, highp> highp_u32vec4;
+
1226 
+
1227 #if(defined(GLM_PRECISION_LOWP_INT))
+
1228  typedef lowp_u32vec1 u32vec1;
+
1229  typedef lowp_u32vec2 u32vec2;
+
1230  typedef lowp_u32vec3 u32vec3;
+
1231  typedef lowp_u32vec4 u32vec4;
+
1232 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
+
1233  typedef mediump_u32vec1 u32vec1;
+
1234  typedef mediump_u32vec2 u32vec2;
+
1235  typedef mediump_u32vec3 u32vec3;
+
1236  typedef mediump_u32vec4 u32vec4;
+
1237 #else
+
1238  typedef highp_u32vec1 u32vec1;
+
1241 
+
1244  typedef highp_u32vec2 u32vec2;
+
1245 
+
1248  typedef highp_u32vec3 u32vec3;
+
1249 
+
1252  typedef highp_u32vec4 u32vec4;
+
1253 #endif
+
1254 
+
1255 
+
1256 
+
1259  typedef tvec1<u64, lowp> lowp_u64vec1;
+
1260 
+
1263  typedef tvec2<u64, lowp> lowp_u64vec2;
+
1264 
+
1267  typedef tvec3<u64, lowp> lowp_u64vec3;
+
1268 
+
1271  typedef tvec4<u64, lowp> lowp_u64vec4;
+
1272 
+
1273 
+
1276  typedef tvec1<u64, mediump> mediump_u64vec1;
+
1277 
+
1280  typedef tvec2<u64, mediump> mediump_u64vec2;
+
1281 
+
1284  typedef tvec3<u64, mediump> mediump_u64vec3;
+
1285 
+
1288  typedef tvec4<u64, mediump> mediump_u64vec4;
+
1289 
+
1290 
+
1293  typedef tvec1<u64, highp> highp_u64vec1;
+
1294 
+
1297  typedef tvec2<u64, highp> highp_u64vec2;
+
1298 
+
1301  typedef tvec3<u64, highp> highp_u64vec3;
+
1302 
+
1305  typedef tvec4<u64, highp> highp_u64vec4;
+
1306 
+
1307 #if(defined(GLM_PRECISION_LOWP_UINT))
+
1308  typedef lowp_u64vec1 u64vec1;
+
1309  typedef lowp_u64vec2 u64vec2;
+
1310  typedef lowp_u64vec3 u64vec3;
+
1311  typedef lowp_u64vec4 u64vec4;
+
1312 #elif(defined(GLM_PRECISION_MEDIUMP_UINT))
+
1313  typedef mediump_u64vec1 u64vec1;
+
1314  typedef mediump_u64vec2 u64vec2;
+
1315  typedef mediump_u64vec3 u64vec3;
+
1316  typedef mediump_u64vec4 u64vec4;
+
1317 #else
+
1318  typedef highp_u64vec1 u64vec1;
+
1321 
+
1324  typedef highp_u64vec2 u64vec2;
+
1325 
+
1328  typedef highp_u64vec3 u64vec3;
+
1329 
+
1332  typedef highp_u64vec4 u64vec4;
+
1333 #endif
+
1334 
+
1335 
+
1337  // Float vector types
+
1338 
+
1341  typedef detail::float32 lowp_float32;
+
1342 
+
1345  typedef detail::float64 lowp_float64;
+
1346 
+
1349  typedef detail::float32 lowp_float32_t;
+
1350 
+
1353  typedef detail::float64 lowp_float64_t;
+
1354 
+
1357  typedef float32 lowp_f32;
+
1358 
+
1361  typedef float64 lowp_f64;
+
1362 
+
1365  typedef detail::float32 lowp_float32;
+
1366 
+
1369  typedef detail::float64 lowp_float64;
+
1370 
+
1373  typedef detail::float32 lowp_float32_t;
+
1374 
+
1377  typedef detail::float64 lowp_float64_t;
+
1378 
+
1381  typedef float32 lowp_f32;
+
1382 
+
1385  typedef float64 lowp_f64;
+
1386 
+
1387 
+
1390  typedef detail::float32 lowp_float32;
+
1391 
+
1394  typedef detail::float64 lowp_float64;
+
1395 
+
1398  typedef detail::float32 lowp_float32_t;
+
1399 
+
1402  typedef detail::float64 lowp_float64_t;
+
1403 
+
1406  typedef float32 lowp_f32;
+
1407 
+
1410  typedef float64 lowp_f64;
+
1411 
+
1412 
+
1415  typedef detail::float32 mediump_float32;
+
1416 
+
1419  typedef detail::float64 mediump_float64;
+
1420 
+
1423  typedef detail::float32 mediump_float32_t;
+
1424 
+
1427  typedef detail::float64 mediump_float64_t;
+
1428 
+
1431  typedef float32 mediump_f32;
+
1432 
+
1435  typedef float64 mediump_f64;
+
1436 
+
1437 
+
1440  typedef detail::float32 highp_float32;
+
1441 
+
1444  typedef detail::float64 highp_float64;
+
1445 
+
1448  typedef detail::float32 highp_float32_t;
+
1449 
+
1452  typedef detail::float64 highp_float64_t;
+
1453 
+
1456  typedef float32 highp_f32;
+
1457 
+
1460  typedef float64 highp_f64;
+
1461 
+
1462 
+
1463 #if(defined(GLM_PRECISION_LOWP_FLOAT))
+
1464  typedef lowp_float32 float32;
+
1467 
+
1470  typedef lowp_float64 float64;
+
1471 
+
1474  typedef lowp_float32_t float32_t;
+
1475 
+
1478  typedef lowp_float64_t float64_t;
+
1479 
+
1482  typedef lowp_f32 f32;
+
1483 
+
1486  typedef lowp_f64 f64;
+
1487 
+
1488 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
+
1489 
+
1492  typedef mediump_float32 float32;
+
1493 
+
1496  typedef mediump_float64 float64;
+
1497 
+
1500  typedef mediump_float32 float32_t;
+
1501 
+
1504  typedef mediump_float64 float64_t;
+
1505 
+
1508  typedef mediump_float32 f32;
+
1509 
+
1512  typedef mediump_float64 f64;
+
1513 
+
1514 #else//(defined(GLM_PRECISION_HIGHP_FLOAT))
+
1515 
+
1518  typedef highp_float32 float32;
+
1519 
+
1522  typedef highp_float64 float64;
+
1523 
+
1526  typedef highp_float32_t float32_t;
+
1527 
+
1530  typedef highp_float64_t float64_t;
+
1531 
+
1534  typedef highp_float32_t f32;
+
1535 
+
1538  typedef highp_float64_t f64;
+
1539 #endif
+
1540 
+
1541 
+
1544  typedef tvec1<float, lowp> lowp_vec1;
+
1545 
+
1548  typedef tvec2<float, lowp> lowp_vec2;
+
1549 
+
1552  typedef tvec3<float, lowp> lowp_vec3;
+
1553 
+
1556  typedef tvec4<float, lowp> lowp_vec4;
+
1557 
+
1560  typedef tvec1<float, lowp> lowp_fvec1;
+
1561 
+
1564  typedef tvec2<float, lowp> lowp_fvec2;
+
1565 
+
1568  typedef tvec3<float, lowp> lowp_fvec3;
+
1569 
+
1572  typedef tvec4<float, lowp> lowp_fvec4;
+
1573 
+
1574 
+
1577  typedef tvec1<float, mediump> mediump_vec1;
+
1578 
+
1581  typedef tvec2<float, mediump> mediump_vec2;
+
1582 
+
1585  typedef tvec3<float, mediump> mediump_vec3;
+
1586 
+
1589  typedef tvec4<float, mediump> mediump_vec4;
+
1590 
+
1593  typedef tvec1<float, mediump> mediump_fvec1;
+
1594 
+
1597  typedef tvec2<float, mediump> mediump_fvec2;
+
1598 
+
1601  typedef tvec3<float, mediump> mediump_fvec3;
+
1602 
+
1605  typedef tvec4<float, mediump> mediump_fvec4;
+
1606 
+
1607 
+
1610  typedef tvec1<float, highp> highp_vec1;
+
1611 
+
1614  typedef tvec2<float, highp> highp_vec2;
+
1615 
+
1618  typedef tvec3<float, highp> highp_vec3;
+
1619 
+
1622  typedef tvec4<float, highp> highp_vec4;
+
1623 
+
1626  typedef tvec1<float, highp> highp_fvec1;
+
1627 
+
1630  typedef tvec2<float, highp> highp_fvec2;
+
1631 
+
1634  typedef tvec3<float, highp> highp_fvec3;
+
1635 
+
1638  typedef tvec4<float, highp> highp_fvec4;
+
1639 
+
1640 
+
1643  typedef tvec1<f32, lowp> lowp_f32vec1;
+
1644 
+
1647  typedef tvec2<f32, lowp> lowp_f32vec2;
+
1648 
+
1651  typedef tvec3<f32, lowp> lowp_f32vec3;
+
1652 
+
1655  typedef tvec4<f32, lowp> lowp_f32vec4;
+
1656 
+
1659  typedef tvec1<f32, mediump> mediump_f32vec1;
+
1660 
+
1663  typedef tvec2<f32, mediump> mediump_f32vec2;
+
1664 
+
1667  typedef tvec3<f32, mediump> mediump_f32vec3;
+
1668 
+
1671  typedef tvec4<f32, mediump> mediump_f32vec4;
+
1672 
+
1675  typedef tvec1<f32, highp> highp_f32vec1;
+
1676 
+
1679  typedef tvec2<f32, highp> highp_f32vec2;
+
1680 
+
1683  typedef tvec3<f32, highp> highp_f32vec3;
+
1684 
+
1687  typedef tvec4<f32, highp> highp_f32vec4;
+
1688 
+
1689 
+
1692  typedef tvec1<f64, lowp> lowp_f64vec1;
+
1693 
+
1696  typedef tvec2<f64, lowp> lowp_f64vec2;
+
1697 
+
1700  typedef tvec3<f64, lowp> lowp_f64vec3;
+
1701 
+
1704  typedef tvec4<f64, lowp> lowp_f64vec4;
+
1705 
+
1708  typedef tvec1<f64, mediump> mediump_f64vec1;
+
1709 
+
1712  typedef tvec2<f64, mediump> mediump_f64vec2;
+
1713 
+
1716  typedef tvec3<f64, mediump> mediump_f64vec3;
+
1717 
+
1720  typedef tvec4<f64, mediump> mediump_f64vec4;
+
1721 
+
1724  typedef tvec1<f64, highp> highp_f64vec1;
+
1725 
+
1728  typedef tvec2<f64, highp> highp_f64vec2;
+
1729 
+
1732  typedef tvec3<f64, highp> highp_f64vec3;
+
1733 
+
1736  typedef tvec4<f64, highp> highp_f64vec4;
+
1737 
+
1738 
+
1740  // Float matrix types
+
1741 
+
1744  //typedef lowp_f32 lowp_fmat1x1;
+
1745 
+
1748  typedef tmat2x2<f32, lowp> lowp_fmat2x2;
+
1749 
+
1752  typedef tmat2x3<f32, lowp> lowp_fmat2x3;
+
1753 
+
1756  typedef tmat2x4<f32, lowp> lowp_fmat2x4;
+
1757 
+
1760  typedef tmat3x2<f32, lowp> lowp_fmat3x2;
+
1761 
+
1764  typedef tmat3x3<f32, lowp> lowp_fmat3x3;
+
1765 
+
1768  typedef tmat3x4<f32, lowp> lowp_fmat3x4;
+
1769 
+
1772  typedef tmat4x2<f32, lowp> lowp_fmat4x2;
+
1773 
+
1776  typedef tmat4x3<f32, lowp> lowp_fmat4x3;
+
1777 
+
1780  typedef tmat4x4<f32, lowp> lowp_fmat4x4;
+
1781 
+
1784  //typedef lowp_fmat1x1 lowp_fmat1;
+
1785 
+
1788  typedef lowp_fmat2x2 lowp_fmat2;
+
1789 
+
1792  typedef lowp_fmat3x3 lowp_fmat3;
+
1793 
+
1796  typedef lowp_fmat4x4 lowp_fmat4;
+
1797 
+
1798 
+
1801  //typedef mediump_f32 mediump_fmat1x1;
+
1802 
+
1805  typedef tmat2x2<f32, mediump> mediump_fmat2x2;
+
1806 
+
1809  typedef tmat2x3<f32, mediump> mediump_fmat2x3;
+
1810 
+
1813  typedef tmat2x4<f32, mediump> mediump_fmat2x4;
+
1814 
+
1817  typedef tmat3x2<f32, mediump> mediump_fmat3x2;
+
1818 
+
1821  typedef tmat3x3<f32, mediump> mediump_fmat3x3;
+
1822 
+
1825  typedef tmat3x4<f32, mediump> mediump_fmat3x4;
+
1826 
+
1829  typedef tmat4x2<f32, mediump> mediump_fmat4x2;
+
1830 
+
1833  typedef tmat4x3<f32, mediump> mediump_fmat4x3;
+
1834 
+
1837  typedef tmat4x4<f32, mediump> mediump_fmat4x4;
+
1838 
+
1841  //typedef mediump_fmat1x1 mediump_fmat1;
+
1842 
+
1845  typedef mediump_fmat2x2 mediump_fmat2;
+
1846 
+
1849  typedef mediump_fmat3x3 mediump_fmat3;
+
1850 
+
1853  typedef mediump_fmat4x4 mediump_fmat4;
+
1854 
+
1855 
+
1858  //typedef highp_f32 highp_fmat1x1;
+
1859 
+
1862  typedef tmat2x2<f32, highp> highp_fmat2x2;
+
1863 
+
1866  typedef tmat2x3<f32, highp> highp_fmat2x3;
+
1867 
+
1870  typedef tmat2x4<f32, highp> highp_fmat2x4;
+
1871 
+
1874  typedef tmat3x2<f32, highp> highp_fmat3x2;
+
1875 
+
1878  typedef tmat3x3<f32, highp> highp_fmat3x3;
+
1879 
+
1882  typedef tmat3x4<f32, highp> highp_fmat3x4;
+
1883 
+
1886  typedef tmat4x2<f32, highp> highp_fmat4x2;
+
1887 
+
1890  typedef tmat4x3<f32, highp> highp_fmat4x3;
+
1891 
+
1894  typedef tmat4x4<f32, highp> highp_fmat4x4;
+
1895 
+
1898  //typedef highp_fmat1x1 highp_fmat1;
+
1899 
+
1902  typedef highp_fmat2x2 highp_fmat2;
+
1903 
+
1906  typedef highp_fmat3x3 highp_fmat3;
+
1907 
+
1910  typedef highp_fmat4x4 highp_fmat4;
+
1911 
+
1912 
+
1915  //typedef f32 lowp_f32mat1x1;
+
1916 
+
1919  typedef tmat2x2<f32, lowp> lowp_f32mat2x2;
+
1920 
+
1923  typedef tmat2x3<f32, lowp> lowp_f32mat2x3;
+
1924 
+
1927  typedef tmat2x4<f32, lowp> lowp_f32mat2x4;
+
1928 
+
1931  typedef tmat3x2<f32, lowp> lowp_f32mat3x2;
+
1932 
+
1935  typedef tmat3x3<f32, lowp> lowp_f32mat3x3;
+
1936 
+
1939  typedef tmat3x4<f32, lowp> lowp_f32mat3x4;
+
1940 
+
1943  typedef tmat4x2<f32, lowp> lowp_f32mat4x2;
+
1944 
+
1947  typedef tmat4x3<f32, lowp> lowp_f32mat4x3;
+
1948 
+
1951  typedef tmat4x4<f32, lowp> lowp_f32mat4x4;
+
1952 
+
1955  //typedef detail::tmat1x1<f32, lowp> lowp_f32mat1;
+
1956 
+
1959  typedef lowp_f32mat2x2 lowp_f32mat2;
+
1960 
+
1963  typedef lowp_f32mat3x3 lowp_f32mat3;
+
1964 
+
1967  typedef lowp_f32mat4x4 lowp_f32mat4;
+
1968 
+
1969 
+
1972  //typedef f32 mediump_f32mat1x1;
+
1973 
+
1976  typedef tmat2x2<f32, mediump> mediump_f32mat2x2;
+
1977 
+
1980  typedef tmat2x3<f32, mediump> mediump_f32mat2x3;
+
1981 
+
1984  typedef tmat2x4<f32, mediump> mediump_f32mat2x4;
+
1985 
+
1988  typedef tmat3x2<f32, mediump> mediump_f32mat3x2;
+
1989 
+
1992  typedef tmat3x3<f32, mediump> mediump_f32mat3x3;
+
1993 
+
1996  typedef tmat3x4<f32, mediump> mediump_f32mat3x4;
+
1997 
+
2000  typedef tmat4x2<f32, mediump> mediump_f32mat4x2;
+
2001 
+
2004  typedef tmat4x3<f32, mediump> mediump_f32mat4x3;
+
2005 
+
2008  typedef tmat4x4<f32, mediump> mediump_f32mat4x4;
+
2009 
+
2012  //typedef detail::tmat1x1<f32, mediump> f32mat1;
+
2013 
+
2016  typedef mediump_f32mat2x2 mediump_f32mat2;
+
2017 
+
2020  typedef mediump_f32mat3x3 mediump_f32mat3;
+
2021 
+
2024  typedef mediump_f32mat4x4 mediump_f32mat4;
+
2025 
+
2026 
+
2029  //typedef f32 highp_f32mat1x1;
+
2030 
+
2033  typedef tmat2x2<f32, highp> highp_f32mat2x2;
+
2034 
+
2037  typedef tmat2x3<f32, highp> highp_f32mat2x3;
+
2038 
+
2041  typedef tmat2x4<f32, highp> highp_f32mat2x4;
+
2042 
+
2045  typedef tmat3x2<f32, highp> highp_f32mat3x2;
+
2046 
+
2049  typedef tmat3x3<f32, highp> highp_f32mat3x3;
+
2050 
+
2053  typedef tmat3x4<f32, highp> highp_f32mat3x4;
+
2054 
+
2057  typedef tmat4x2<f32, highp> highp_f32mat4x2;
+
2058 
+
2061  typedef tmat4x3<f32, highp> highp_f32mat4x3;
+
2062 
+
2065  typedef tmat4x4<f32, highp> highp_f32mat4x4;
+
2066 
+
2069  //typedef detail::tmat1x1<f32, highp> f32mat1;
+
2070 
+
2073  typedef highp_f32mat2x2 highp_f32mat2;
+
2074 
+
2077  typedef highp_f32mat3x3 highp_f32mat3;
+
2078 
+
2081  typedef highp_f32mat4x4 highp_f32mat4;
+
2082 
+
2083 
+
2086  //typedef f64 lowp_f64mat1x1;
+
2087 
+
2090  typedef tmat2x2<f64, lowp> lowp_f64mat2x2;
+
2091 
+
2094  typedef tmat2x3<f64, lowp> lowp_f64mat2x3;
+
2095 
+
2098  typedef tmat2x4<f64, lowp> lowp_f64mat2x4;
+
2099 
+
2102  typedef tmat3x2<f64, lowp> lowp_f64mat3x2;
+
2103 
+
2106  typedef tmat3x3<f64, lowp> lowp_f64mat3x3;
+
2107 
+
2110  typedef tmat3x4<f64, lowp> lowp_f64mat3x4;
+
2111 
+
2114  typedef tmat4x2<f64, lowp> lowp_f64mat4x2;
+
2115 
+
2118  typedef tmat4x3<f64, lowp> lowp_f64mat4x3;
+
2119 
+
2122  typedef tmat4x4<f64, lowp> lowp_f64mat4x4;
+
2123 
+
2126  //typedef lowp_f64mat1x1 lowp_f64mat1;
+
2127 
+
2130  typedef lowp_f64mat2x2 lowp_f64mat2;
+
2131 
+
2134  typedef lowp_f64mat3x3 lowp_f64mat3;
+
2135 
+
2138  typedef lowp_f64mat4x4 lowp_f64mat4;
+
2139 
+
2140 
+
2143  //typedef f64 Highp_f64mat1x1;
+
2144 
+
2147  typedef tmat2x2<f64, mediump> mediump_f64mat2x2;
+
2148 
+
2151  typedef tmat2x3<f64, mediump> mediump_f64mat2x3;
+
2152 
+
2155  typedef tmat2x4<f64, mediump> mediump_f64mat2x4;
+
2156 
+
2159  typedef tmat3x2<f64, mediump> mediump_f64mat3x2;
+
2160 
+
2163  typedef tmat3x3<f64, mediump> mediump_f64mat3x3;
+
2164 
+
2167  typedef tmat3x4<f64, mediump> mediump_f64mat3x4;
+
2168 
+
2171  typedef tmat4x2<f64, mediump> mediump_f64mat4x2;
+
2172 
+
2175  typedef tmat4x3<f64, mediump> mediump_f64mat4x3;
+
2176 
+
2179  typedef tmat4x4<f64, mediump> mediump_f64mat4x4;
+
2180 
+
2183  //typedef mediump_f64mat1x1 mediump_f64mat1;
+
2184 
+
2187  typedef mediump_f64mat2x2 mediump_f64mat2;
+
2188 
+
2191  typedef mediump_f64mat3x3 mediump_f64mat3;
+
2192 
+
2195  typedef mediump_f64mat4x4 mediump_f64mat4;
+
2196 
+
2199  //typedef f64 highp_f64mat1x1;
+
2200 
+
2203  typedef tmat2x2<f64, highp> highp_f64mat2x2;
+
2204 
+
2207  typedef tmat2x3<f64, highp> highp_f64mat2x3;
+
2208 
+
2211  typedef tmat2x4<f64, highp> highp_f64mat2x4;
+
2212 
+
2215  typedef tmat3x2<f64, highp> highp_f64mat3x2;
+
2216 
+
2219  typedef tmat3x3<f64, highp> highp_f64mat3x3;
+
2220 
+
2223  typedef tmat3x4<f64, highp> highp_f64mat3x4;
+
2224 
+
2227  typedef tmat4x2<f64, highp> highp_f64mat4x2;
+
2228 
+
2231  typedef tmat4x3<f64, highp> highp_f64mat4x3;
+
2232 
+
2235  typedef tmat4x4<f64, highp> highp_f64mat4x4;
+
2236 
+
2239  //typedef highp_f64mat1x1 highp_f64mat1;
+
2240 
+
2243  typedef highp_f64mat2x2 highp_f64mat2;
+
2244 
+
2247  typedef highp_f64mat3x3 highp_f64mat3;
+
2248 
+
2251  typedef highp_f64mat4x4 highp_f64mat4;
+
2252 
+
2254  // Quaternion types
+
2255 
+
2258  typedef tquat<f32, lowp> lowp_f32quat;
+
2259 
+
2262  typedef tquat<f64, lowp> lowp_f64quat;
+
2263 
+
2266  typedef tquat<f32, mediump> mediump_f32quat;
+
2267 
+
2270  typedef tquat<f64, mediump> mediump_f64quat;
+
2271 
+
2274  typedef tquat<f32, highp> highp_f32quat;
+
2275 
+
2278  typedef tquat<f64, highp> highp_f64quat;
+
2279 
+
2280 
+
2281 #if(defined(GLM_PRECISION_LOWP_FLOAT))
+
2282  typedef lowp_f32vec1 fvec1;
+
2283  typedef lowp_f32vec2 fvec2;
+
2284  typedef lowp_f32vec3 fvec3;
+
2285  typedef lowp_f32vec4 fvec4;
+
2286  typedef lowp_f32mat2 fmat2;
+
2287  typedef lowp_f32mat3 fmat3;
+
2288  typedef lowp_f32mat4 fmat4;
+
2289  typedef lowp_f32mat2x2 fmat2x2;
+
2290  typedef lowp_f32mat3x2 fmat3x2;
+
2291  typedef lowp_f32mat4x2 fmat4x2;
+
2292  typedef lowp_f32mat2x3 fmat2x3;
+
2293  typedef lowp_f32mat3x3 fmat3x3;
+
2294  typedef lowp_f32mat4x3 fmat4x3;
+
2295  typedef lowp_f32mat2x4 fmat2x4;
+
2296  typedef lowp_f32mat3x4 fmat3x4;
+
2297  typedef lowp_f32mat4x4 fmat4x4;
+
2298  typedef lowp_f32quat fquat;
+
2299 
+
2300  typedef lowp_f32vec1 f32vec1;
+
2301  typedef lowp_f32vec2 f32vec2;
+
2302  typedef lowp_f32vec3 f32vec3;
+
2303  typedef lowp_f32vec4 f32vec4;
+
2304  typedef lowp_f32mat2 f32mat2;
+
2305  typedef lowp_f32mat3 f32mat3;
+
2306  typedef lowp_f32mat4 f32mat4;
+
2307  typedef lowp_f32mat2x2 f32mat2x2;
+
2308  typedef lowp_f32mat3x2 f32mat3x2;
+
2309  typedef lowp_f32mat4x2 f32mat4x2;
+
2310  typedef lowp_f32mat2x3 f32mat2x3;
+
2311  typedef lowp_f32mat3x3 f32mat3x3;
+
2312  typedef lowp_f32mat4x3 f32mat4x3;
+
2313  typedef lowp_f32mat2x4 f32mat2x4;
+
2314  typedef lowp_f32mat3x4 f32mat3x4;
+
2315  typedef lowp_f32mat4x4 f32mat4x4;
+
2316  typedef lowp_f32quat f32quat;
+
2317 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
+
2318  typedef mediump_f32vec1 fvec1;
+
2319  typedef mediump_f32vec2 fvec2;
+
2320  typedef mediump_f32vec3 fvec3;
+
2321  typedef mediump_f32vec4 fvec4;
+
2322  typedef mediump_f32mat2 fmat2;
+
2323  typedef mediump_f32mat3 fmat3;
+
2324  typedef mediump_f32mat4 fmat4;
+
2325  typedef mediump_f32mat2x2 fmat2x2;
+
2326  typedef mediump_f32mat3x2 fmat3x2;
+
2327  typedef mediump_f32mat4x2 fmat4x2;
+
2328  typedef mediump_f32mat2x3 fmat2x3;
+
2329  typedef mediump_f32mat3x3 fmat3x3;
+
2330  typedef mediump_f32mat4x3 fmat4x3;
+
2331  typedef mediump_f32mat2x4 fmat2x4;
+
2332  typedef mediump_f32mat3x4 fmat3x4;
+
2333  typedef mediump_f32mat4x4 fmat4x4;
+
2334  typedef mediump_f32quat fquat;
+
2335 
+
2336  typedef mediump_f32vec1 f32vec1;
+
2337  typedef mediump_f32vec2 f32vec2;
+
2338  typedef mediump_f32vec3 f32vec3;
+
2339  typedef mediump_f32vec4 f32vec4;
+
2340  typedef mediump_f32mat2 f32mat2;
+
2341  typedef mediump_f32mat3 f32mat3;
+
2342  typedef mediump_f32mat4 f32mat4;
+
2343  typedef mediump_f32mat2x2 f32mat2x2;
+
2344  typedef mediump_f32mat3x2 f32mat3x2;
+
2345  typedef mediump_f32mat4x2 f32mat4x2;
+
2346  typedef mediump_f32mat2x3 f32mat2x3;
+
2347  typedef mediump_f32mat3x3 f32mat3x3;
+
2348  typedef mediump_f32mat4x3 f32mat4x3;
+
2349  typedef mediump_f32mat2x4 f32mat2x4;
+
2350  typedef mediump_f32mat3x4 f32mat3x4;
+
2351  typedef mediump_f32mat4x4 f32mat4x4;
+
2352  typedef mediump_f32quat f32quat;
+
2353 #else//if(defined(GLM_PRECISION_HIGHP_FLOAT))
+
2354  typedef highp_f32vec1 fvec1;
+
2357 
+
2360  typedef highp_f32vec2 fvec2;
+
2361 
+
2364  typedef highp_f32vec3 fvec3;
+
2365 
+
2368  typedef highp_f32vec4 fvec4;
+
2369 
+
2372  typedef highp_f32mat2x2 fmat2x2;
+
2373 
+
2376  typedef highp_f32mat2x3 fmat2x3;
+
2377 
+
2380  typedef highp_f32mat2x4 fmat2x4;
+
2381 
+
2384  typedef highp_f32mat3x2 fmat3x2;
+
2385 
+
2388  typedef highp_f32mat3x3 fmat3x3;
+
2389 
+
2392  typedef highp_f32mat3x4 fmat3x4;
+
2393 
+
2396  typedef highp_f32mat4x2 fmat4x2;
+
2397 
+
2400  typedef highp_f32mat4x3 fmat4x3;
+
2401 
+
2404  typedef highp_f32mat4x4 fmat4x4;
+
2405 
+
2408  typedef fmat2x2 fmat2;
+
2409 
+
2412  typedef fmat3x3 fmat3;
+
2413 
+
2416  typedef fmat4x4 fmat4;
+
2417 
+
2420  typedef highp_fquat fquat;
+
2421 
+
2422 
+
2423 
+
2426  typedef highp_f32vec1 f32vec1;
+
2427 
+
2430  typedef highp_f32vec2 f32vec2;
+
2431 
+
2434  typedef highp_f32vec3 f32vec3;
+
2435 
+
2438  typedef highp_f32vec4 f32vec4;
+
2439 
+
2442  typedef highp_f32mat2x2 f32mat2x2;
+
2443 
+
2446  typedef highp_f32mat2x3 f32mat2x3;
+
2447 
+
2450  typedef highp_f32mat2x4 f32mat2x4;
+
2451 
+
2454  typedef highp_f32mat3x2 f32mat3x2;
+
2455 
+
2458  typedef highp_f32mat3x3 f32mat3x3;
+
2459 
+
2462  typedef highp_f32mat3x4 f32mat3x4;
+
2463 
+
2466  typedef highp_f32mat4x2 f32mat4x2;
+
2467 
+
2470  typedef highp_f32mat4x3 f32mat4x3;
+
2471 
+
2474  typedef highp_f32mat4x4 f32mat4x4;
+
2475 
+
2478  typedef f32mat2x2 f32mat2;
+
2479 
+
2482  typedef f32mat3x3 f32mat3;
+
2483 
+
2486  typedef f32mat4x4 f32mat4;
+
2487 
+
2490  typedef highp_f32quat f32quat;
+
2491 #endif
+
2492 
+
2493 #if(defined(GLM_PRECISION_LOWP_DOUBLE))
+
2494  typedef lowp_f64vec1 f64vec1;
+
2495  typedef lowp_f64vec2 f64vec2;
+
2496  typedef lowp_f64vec3 f64vec3;
+
2497  typedef lowp_f64vec4 f64vec4;
+
2498  typedef lowp_f64mat2 f64mat2;
+
2499  typedef lowp_f64mat3 f64mat3;
+
2500  typedef lowp_f64mat4 f64mat4;
+
2501  typedef lowp_f64mat2x2 f64mat2x2;
+
2502  typedef lowp_f64mat3x2 f64mat3x2;
+
2503  typedef lowp_f64mat4x2 f64mat4x2;
+
2504  typedef lowp_f64mat2x3 f64mat2x3;
+
2505  typedef lowp_f64mat3x3 f64mat3x3;
+
2506  typedef lowp_f64mat4x3 f64mat4x3;
+
2507  typedef lowp_f64mat2x4 f64mat2x4;
+
2508  typedef lowp_f64mat3x4 f64mat3x4;
+
2509  typedef lowp_f64mat4x4 f64mat4x4;
+
2510  typedef lowp_f64quat f64quat;
+
2511 #elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE))
+
2512  typedef mediump_f64vec1 f64vec1;
+
2513  typedef mediump_f64vec2 f64vec2;
+
2514  typedef mediump_f64vec3 f64vec3;
+
2515  typedef mediump_f64vec4 f64vec4;
+
2516  typedef mediump_f64mat2 f64mat2;
+
2517  typedef mediump_f64mat3 f64mat3;
+
2518  typedef mediump_f64mat4 f64mat4;
+
2519  typedef mediump_f64mat2x2 f64mat2x2;
+
2520  typedef mediump_f64mat3x2 f64mat3x2;
+
2521  typedef mediump_f64mat4x2 f64mat4x2;
+
2522  typedef mediump_f64mat2x3 f64mat2x3;
+
2523  typedef mediump_f64mat3x3 f64mat3x3;
+
2524  typedef mediump_f64mat4x3 f64mat4x3;
+
2525  typedef mediump_f64mat2x4 f64mat2x4;
+
2526  typedef mediump_f64mat3x4 f64mat3x4;
+
2527  typedef mediump_f64mat4x4 f64mat4x4;
+
2528  typedef mediump_f64quat f64quat;
+
2529 #else
+
2530  typedef highp_f64vec1 f64vec1;
+
2533 
+
2536  typedef highp_f64vec2 f64vec2;
+
2537 
+
2540  typedef highp_f64vec3 f64vec3;
+
2541 
+
2544  typedef highp_f64vec4 f64vec4;
+
2545 
+
2548  typedef highp_f64mat2x2 f64mat2x2;
+
2549 
+
2552  typedef highp_f64mat2x3 f64mat2x3;
+
2553 
+
2556  typedef highp_f64mat2x4 f64mat2x4;
+
2557 
+
2560  typedef highp_f64mat3x2 f64mat3x2;
+
2561 
+
2564  typedef highp_f64mat3x3 f64mat3x3;
+
2565 
+
2568  typedef highp_f64mat3x4 f64mat3x4;
+
2569 
+
2572  typedef highp_f64mat4x2 f64mat4x2;
+
2573 
+
2576  typedef highp_f64mat4x3 f64mat4x3;
+
2577 
+
2580  typedef highp_f64mat4x4 f64mat4x4;
+
2581 
+
2584  typedef f64mat2x2 f64mat2;
+
2585 
+
2588  typedef f64mat3x3 f64mat3;
+
2589 
+
2592  typedef f64mat4x4 f64mat4;
+
2593 
+
2596  typedef highp_f64quat f64quat;
+
2597 #endif
+
2598 
+
2599 }//namespace glm
+
tvec2< float, highp > highp_vec2
2 components vector of high single-precision floating-point numbers.
Definition: type_vec.hpp:69
+
detail::int8 int8_t
8 bit signed integer type.
Definition: fwd.hpp:297
+
detail::uint32 lowp_uint32
Low precision 32 bit unsigned integer type.
Definition: fwd.hpp:740
+
detail::int64 lowp_int64_t
Low precision 64 bit signed integer type.
Definition: fwd.hpp:157
+
detail::int16 lowp_int16
Low precision 16 bit signed integer type.
Definition: fwd.hpp:133
+
highp_u16vec1 u16vec1
Default precision 16 bit unsigned integer scalar type.
Definition: fwd.hpp:1082
+
detail::uint32 u32
32 bit unsigned integer type.
Definition: fwd.hpp:931
+
tvec3< float, mediump > mediump_vec3
3 components vector of medium single-precision floating-point numbers.
Definition: type_vec.hpp:186
+
detail::uint16 lowp_uint16
Low precision 16 bit unsigned integer type.
Definition: fwd.hpp:736
+
highp_f32vec3 fvec3
Default single-precision floating-point vector of 3 components.
Definition: fwd.hpp:2364
+
highp_f32mat3x3 fmat3x3
Default single-precision floating-point 3x3 matrix.
Definition: fwd.hpp:2388
+
highp_i64vec4 i64vec4
Default precision 64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:723
+
f32mat3x3 f32mat3
Default single-precision floating-point 3x3 matrix.
Definition: fwd.hpp:2482
+
detail::uint8 mediump_u8
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:816
+
detail::int64 highp_i64
High precision 64 bit signed integer type.
Definition: fwd.hpp:269
+
highp_u32vec2 u32vec2
Default precision 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:1165
+
highp_u8vec4 u8vec4
Default precision 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:1014
+
detail::int64 highp_int64_t
High precision 64 bit signed integer type.
Definition: fwd.hpp:253
+
highp_i64vec2 i64vec2
Default precision 64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:715
+
detail::int32 int32_t
32 bit signed integer type.
Definition: fwd.hpp:305
+
highp_i16vec4 i16vec4
Default precision 16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:485
+
detail::int32 mediump_i32
Medium precision 32 bit signed integer type.
Definition: fwd.hpp:217
+
detail::int8 lowp_int8
Low precision 8 bit signed integer type.
Definition: fwd.hpp:129
+
tvec2< float, mediump > mediump_vec2
2 components vector of medium single-precision floating-point numbers.
Definition: type_vec.hpp:76
+
detail::uint64 u64
64 bit unsigned integer type.
Definition: fwd.hpp:935
+
detail::uint8 lowp_u8
Low precision 8 bit unsigned integer type.
Definition: fwd.hpp:766
+
detail::int8 i8
8 bit signed integer type.
Definition: fwd.hpp:314
+
detail::uint8 mediump_uint8
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:784
+
f64mat4x4 f64mat4
Default double-precision floating-point 4x4 matrix.
Definition: fwd.hpp:2592
+
detail::uint32 lowp_uint32_t
Low precision 32 bit unsigned integer type.
Definition: fwd.hpp:757
+
detail::int64 mediump_i64
Medium precision 64 bit signed integer type.
Definition: fwd.hpp:221
+
detail::int32 int32
32 bit signed integer type.
Definition: type_int.hpp:228
+
highp_i64vec3 i64vec3
Default precision 64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:719
+
detail::int32 highp_i32
High precision 32 bit signed integer type.
Definition: fwd.hpp:265
+
detail::uint32 lowp_u32
Low precision 32 bit unsigned integer type.
Definition: fwd.hpp:774
+
detail::int16 highp_i16
High precision 16 bit signed integer type.
Definition: fwd.hpp:261
+
detail::int8 highp_i8
High precision 8 bit signed integer type.
Definition: fwd.hpp:257
+
highp_u32vec3 u32vec3
Default precision 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:1169
+
fmat4x4 fmat4
Default single-precision floating-point 4x4 matrix.
Definition: fwd.hpp:2416
+
detail::uint32 mediump_u32
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:824
+
highp_f32vec2 fvec2
Default single-precision floating-point vector of 2 components.
Definition: fwd.hpp:2360
+
detail::int8 mediump_int8
Medium precision 8 bit signed integer type.
Definition: fwd.hpp:177
+
detail::uint32 highp_u32
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:874
+
tvec3< float, highp > highp_vec3
3 components vector of high single-precision floating-point numbers.
Definition: type_vec.hpp:179
+
detail::uint64 mediump_uint64_t
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:812
+
highp_i32vec1 i32vec1
Default precision 32 bit signed integer scalar type.
Definition: fwd.hpp:552
+
detail::uint8 highp_u8
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:866
+
highp_u16vec3 u16vec3
Default precision 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:1090
+
tvec4< float, highp > highp_vec4
4 components vector of high single-precision floating-point numbers.
Definition: type_vec.hpp:285
+
highp_i16vec2 i16vec2
Default precision 16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:477
+
f32mat2x2 f32mat2
Default single-precision floating-point 2x2 matrix.
Definition: fwd.hpp:2478
+
highp_i32vec4 i32vec4
Default precision 32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:564
+
tvec4< float, mediump > mediump_vec4
4 components vector of medium single-precision floating-point numbers.
Definition: type_vec.hpp:291
+
detail::uint8 uint8
8 bit unsigned integer type.
Definition: type_int.hpp:231
+
detail::int64 lowp_int64
Low precision 64 bit signed integer type.
Definition: fwd.hpp:141
+
highp_f32mat2x4 f32mat2x4
Default single-precision floating-point 2x4 matrix.
Definition: fwd.hpp:2450
+
highp_f32mat3x2 f32mat3x2
Default single-precision floating-point 3x2 matrix.
Definition: fwd.hpp:2454
+
highp_f64vec4 f64vec4
Default double-precision floating-point vector of 4 components.
Definition: fwd.hpp:2544
+
f64mat2x2 f64mat2
Default double-precision floating-point 2x2 matrix.
Definition: fwd.hpp:2584
+
detail::int32 lowp_i32
Low precision 32 bit signed integer type.
Definition: fwd.hpp:169
+
detail::uint64 mediump_uint64
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:796
+
highp_f32vec2 f32vec2
Default single-precision floating-point vector of 2 components.
Definition: fwd.hpp:2430
+
detail::uint16 u16
16 bit unsigned integer type.
Definition: fwd.hpp:927
+
highp_float64_t f64
Default 64 bit double-precision floating-point scalar.
Definition: fwd.hpp:1538
+
f64mat3x3 f64mat3
Default double-precision floating-point 3x3 matrix.
Definition: fwd.hpp:2588
+
highp_f64vec1 f64vec1
Default double-precision floating-point vector of 1 components.
Definition: fwd.hpp:2532
+
highp_f32vec4 fvec4
Default single-precision floating-point vector of 4 components.
Definition: fwd.hpp:2368
+
detail::int8 mediump_i8
Medium precision 8 bit signed integer type.
Definition: fwd.hpp:209
+
highp_f32mat4x4 f32mat4x4
Default single-precision floating-point 4x4 matrix.
Definition: fwd.hpp:2474
+
highp_f64mat2x2 f64mat2x2
Default double-precision floating-point 2x2 matrix.
Definition: fwd.hpp:2548
+
highp_float64_t float64_t
Default 64 bit double-precision floating-point scalar.
Definition: fwd.hpp:1530
+
highp_u8vec1 u8vec1
Default precision 8 bit unsigned integer scalar type.
Definition: fwd.hpp:1002
+
highp_f32mat4x2 fmat4x2
Default single-precision floating-point 4x2 matrix.
Definition: fwd.hpp:2396
+
highp_u8vec2 u8vec2
Default precision 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:1006
+
detail::int8 int8
8 bit signed integer type.
Definition: type_int.hpp:226
+
highp_u64vec1 u64vec1
Default precision 64 bit unsigned integer scalar type.
Definition: fwd.hpp:1320
+
detail::uint8 highp_uint8
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:834
+
detail::uint16 mediump_u16
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:820
+
highp_f64mat3x3 f64mat3x3
Default double-precision floating-point 3x3 matrix.
Definition: fwd.hpp:2564
+
detail::uint32 mediump_uint32
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:792
+
detail::int16 int16
16 bit signed integer type.
Definition: type_int.hpp:227
+
highp_f32mat4x2 f32mat4x2
Default single-precision floating-point 4x2 matrix.
Definition: fwd.hpp:2466
+
detail::int16 highp_int16
High precision 16 bit signed integer type.
Definition: fwd.hpp:229
+
float float32
Default 32 bit single-precision floating-point scalar.
Definition: type_float.hpp:84
+
detail::int32 highp_int32
High precision 32 bit signed integer type.
Definition: fwd.hpp:233
+
detail::int8 mediump_int8_t
Medium precision 8 bit signed integer type.
Definition: fwd.hpp:193
+
highp_f32quat f32quat
Default single-precision floating-point quaternion.
Definition: fwd.hpp:2490
+
detail::uint16 uint16
16 bit unsigned integer type.
Definition: type_int.hpp:232
+
highp_i8vec4 i8vec4
Default precision 8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:405
+
detail::int8 highp_int8
High precision 8 bit signed integer type.
Definition: fwd.hpp:225
+
highp_f64mat2x4 f64mat2x4
Default double-precision floating-point 2x4 matrix.
Definition: fwd.hpp:2556
+
highp_u16vec4 u16vec4
Default precision 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:1094
+
highp_u64vec2 u64vec2
Default precision 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:1324
+
detail::uint64 highp_uint64_t
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:862
+
highp_float32_t f32
Default 32 bit single-precision floating-point scalar.
Definition: fwd.hpp:1534
+
detail::int8 lowp_i8
Low precision 8 bit signed integer type.
Definition: fwd.hpp:161
+
highp_f32vec1 f32vec1
Default single-precision floating-point vector of 1 components.
Definition: fwd.hpp:2426
+
detail::uint32 uint32_t
32 bit unsigned integer type.
Definition: fwd.hpp:914
+
detail::uint8 u8
8 bit unsigned integer type.
Definition: fwd.hpp:923
+
detail::uint16 lowp_u16
Low precision 16 bit unsigned integer type.
Definition: fwd.hpp:770
+
highp_f32mat2x4 fmat2x4
Default single-precision floating-point 2x4 matrix.
Definition: fwd.hpp:2380
+
highp_f32vec1 fvec1
Default single-precision floating-point vector of 1 components.
Definition: fwd.hpp:2356
+
detail::int16 lowp_i16
Low precision 16 bit signed integer type.
Definition: fwd.hpp:165
+
detail::uint8 lowp_uint8_t
Low precision 8 bit unsigned integer type.
Definition: fwd.hpp:749
+
highp_i32vec2 i32vec2
Default precision 32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:556
+
Definition: _noise.hpp:40
+
detail::uint16 mediump_uint16
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:788
+
highp_f64quat f64quat
Default double-precision floating-point quaternion.
Definition: fwd.hpp:2596
+
detail::int8 highp_int8_t
High precision 8 bit signed integer type.
Definition: fwd.hpp:241
+
detail::uint8 highp_uint8_t
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:850
+
highp_i8vec1 i8vec1
Default precision 8 bit signed integer scalar type.
Definition: fwd.hpp:393
+
highp_i16vec1 i16vec1
Default precision 16 bit signed integer scalar type.
Definition: fwd.hpp:473
+
OpenGL Mathematics (glm.g-truc.net)
+
detail::int64 mediump_int64_t
Medium precision 64 bit signed integer type.
Definition: fwd.hpp:205
+
highp_f32mat2x2 fmat2x2
Default single-precision floating-point 2x2 matrix.
Definition: fwd.hpp:2372
+
detail::int8 lowp_int8_t
Low precision 8 bit signed integer type.
Definition: fwd.hpp:145
+
detail::uint16 highp_uint16
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:838
+
double float64
Default 64 bit double-precision floating-point scalar.
Definition: type_float.hpp:85
+
OpenGL Mathematics (glm.g-truc.net)
+
detail::uint64 lowp_uint64
Low precision 64 bit unsigned integer type.
Definition: fwd.hpp:744
+
highp_f32mat2x3 fmat2x3
Default single-precision floating-point 2x3 matrix.
Definition: fwd.hpp:2376
+
highp_float32_t float32_t
Default 32 bit single-precision floating-point scalar.
Definition: fwd.hpp:1526
+
highp_i8vec3 i8vec3
Default precision 8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:401
+
highp_f32mat3x2 fmat3x2
Default single-precision floating-point 3x2 matrix.
Definition: fwd.hpp:2384
+
detail::int16 mediump_i16
Medium precision 16 bit signed integer type.
Definition: fwd.hpp:213
+
detail::uint16 mediump_uint16_t
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:804
+
highp_u32vec4 u32vec4
Default precision 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:1173
+
highp_f64mat3x4 f64mat3x4
Default double-precision floating-point 3x4 matrix.
Definition: fwd.hpp:2568
+
detail::uint16 lowp_uint16_t
Low precision 16 bit unsigned integer type.
Definition: fwd.hpp:753
+
detail::int16 mediump_int16
Medium precision 16 bit signed integer type.
Definition: fwd.hpp:181
+
highp_f32mat3x4 fmat3x4
Default single-precision floating-point 3x4 matrix.
Definition: fwd.hpp:2392
+
highp_f32mat4x3 fmat4x3
Default single-precision floating-point 4x3 matrix.
Definition: fwd.hpp:2400
+
highp_u8vec3 u8vec3
Default precision 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:1010
+
highp_f64vec3 f64vec3
Default double-precision floating-point vector of 3 components.
Definition: fwd.hpp:2540
+
tvec2< float, lowp > lowp_vec2
2 components vector of low single-precision floating-point numbers.
Definition: type_vec.hpp:83
+
highp_u64vec4 u64vec4
Default precision 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:1332
+
detail::int16 mediump_int16_t
Medium precision 16 bit signed integer type.
Definition: fwd.hpp:197
+
detail::uint32 uint32
32 bit unsigned integer type.
Definition: type_int.hpp:233
+
detail::int16 lowp_int16_t
Low precision 16 bit signed integer type.
Definition: fwd.hpp:149
+
highp_f64mat4x3 f64mat4x3
Default double-precision floating-point 4x3 matrix.
Definition: fwd.hpp:2576
+
detail::uint32 mediump_uint32_t
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:808
+
detail::int32 mediump_int32_t
Medium precision 32 bit signed integer type.
Definition: fwd.hpp:201
+
detail::uint8 uint8_t
8 bit unsigned integer type.
Definition: fwd.hpp:906
+
highp_f64mat3x2 f64mat3x2
Default double-precision floating-point 3x2 matrix.
Definition: fwd.hpp:2560
+
highp_f32mat2x2 f32mat2x2
Default single-precision floating-point 2x2 matrix.
Definition: fwd.hpp:2442
+
highp_f32mat3x3 f32mat3x3
Default single-precision floating-point 3x3 matrix.
Definition: fwd.hpp:2458
+
detail::uint16 highp_uint16_t
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:854
+
highp_i8vec2 i8vec2
Default precision 8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:397
+
detail::int16 highp_int16_t
High precision 16 bit signed integer type.
Definition: fwd.hpp:245
+
detail::int32 lowp_int32
Low precision 32 bit signed integer type.
Definition: fwd.hpp:137
+
detail::uint64 highp_u64
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:878
+
highp_f64mat4x2 f64mat4x2
Default double-precision floating-point 4x2 matrix.
Definition: fwd.hpp:2572
+
detail::int32 mediump_int32
Medium precision 32 bit signed integer type.
Definition: fwd.hpp:185
+
detail::int64 int64_t
64 bit signed integer type.
Definition: fwd.hpp:309
+
tvec3< float, lowp > lowp_vec3
3 components vector of low single-precision floating-point numbers.
Definition: type_vec.hpp:193
+
f32mat4x4 f32mat4
Default single-precision floating-point 4x4 matrix.
Definition: fwd.hpp:2486
+
detail::uint64 lowp_u64
Low precision 64 bit unsigned integer type.
Definition: fwd.hpp:778
+
detail::uint64 uint64
64 bit unsigned integer type.
Definition: type_int.hpp:234
+
detail::uint64 mediump_u64
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:828
+
detail::int64 int64
64 bit signed integer type.
Definition: type_int.hpp:229
+
detail::uint64 lowp_uint64_t
Low precision 64 bit unsigned integer type.
Definition: fwd.hpp:761
+
detail::uint32 highp_uint32_t
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:858
+
highp_i16vec3 i16vec3
Default precision 16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:481
+
highp_f32mat4x4 fmat4x4
Default single-precision floating-point 4x4 matrix.
Definition: fwd.hpp:2404
+
detail::int32 highp_int32_t
32 bit signed integer type.
Definition: fwd.hpp:249
+
detail::uint16 uint16_t
16 bit unsigned integer type.
Definition: fwd.hpp:910
+
highp_f32vec3 f32vec3
Default single-precision floating-point vector of 3 components.
Definition: fwd.hpp:2434
+
highp_f64mat4x4 f64mat4x4
Default double-precision floating-point 4x4 matrix.
Definition: fwd.hpp:2580
+
highp_f64mat2x3 f64mat2x3
Default double-precision floating-point 2x3 matrix.
Definition: fwd.hpp:2552
+
detail::uint32 highp_uint32
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:842
+
detail::uint16 highp_u16
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:870
+
highp_f32mat2x3 f32mat2x3
Default single-precision floating-point 2x3 matrix.
Definition: fwd.hpp:2446
+
fmat2x2 fmat2
Default single-precision floating-point 2x2 matrix.
Definition: fwd.hpp:2408
+
detail::uint8 mediump_uint8_t
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:800
+
detail::int32 i32
32 bit signed integer type.
Definition: fwd.hpp:322
+
highp_f32vec4 f32vec4
Default single-precision floating-point vector of 4 components.
Definition: fwd.hpp:2438
+
highp_i32vec3 i32vec3
Default precision 32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:560
+
highp_u16vec2 u16vec2
Default precision 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:1086
+
detail::uint8 lowp_uint8
Low precision 8 bit unsigned integer type.
Definition: fwd.hpp:732
+
highp_i64vec1 i64vec1
Default precision 64 bit signed integer scalar type.
Definition: fwd.hpp:711
+
detail::int16 i16
16 bit signed integer type.
Definition: fwd.hpp:318
+
highp_f32mat3x4 f32mat3x4
Default single-precision floating-point 3x4 matrix.
Definition: fwd.hpp:2462
+
detail::uint64 uint64_t
64 bit unsigned integer type.
Definition: fwd.hpp:918
+
OpenGL Mathematics (glm.g-truc.net)
+
detail::int64 highp_int64
High precision 64 bit signed integer type.
Definition: fwd.hpp:237
+
highp_u32vec1 u32vec1
Default precision 32 bit unsigned integer scalar type.
Definition: fwd.hpp:1161
+
detail::int16 int16_t
16 bit signed integer type.
Definition: fwd.hpp:301
+
highp_f32mat4x3 f32mat4x3
Default single-precision floating-point 4x3 matrix.
Definition: fwd.hpp:2470
+
fmat3x3 fmat3
Default single-precision floating-point 3x3 matrix.
Definition: fwd.hpp:2412
+
detail::int64 mediump_int64
Medium precision 64 bit signed integer type.
Definition: fwd.hpp:189
+
detail::int32 lowp_int32_t
Low precision 32 bit signed integer type.
Definition: fwd.hpp:153
+
tvec4< float, lowp > lowp_vec4
4 components vector of low single-precision floating-point numbers.
Definition: type_vec.hpp:297
+
highp_f64vec2 f64vec2
Default double-precision floating-point vector of 2 components.
Definition: fwd.hpp:2536
+
detail::uint64 highp_uint64
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:846
+
detail::int64 i64
64 bit signed integer type.
Definition: fwd.hpp:326
+
highp_u64vec3 u64vec3
Default precision 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:1328
+
OpenGL Mathematics (glm.g-truc.net)
+
detail::int64 lowp_i64
Low precision 64 bit signed integer type.
Definition: fwd.hpp:173
+
+ + + + diff --git a/external/glm/doc/api/a00039.html b/external/glm/doc/api/a00039.html new file mode 100644 index 0000000..bcd1b0b --- /dev/null +++ b/external/glm/doc/api/a00039.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: geometric.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
geometric.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file geometric.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00039_source.html b/external/glm/doc/api/a00039_source.html new file mode 100644 index 0000000..c2cd668 --- /dev/null +++ b/external/glm/doc/api/a00039_source.html @@ -0,0 +1,65 @@ + + + + + + +0.9.7: geometric.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
geometric.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+ +
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00040.html b/external/glm/doc/api/a00040.html new file mode 100644 index 0000000..5108390 --- /dev/null +++ b/external/glm/doc/api/a00040.html @@ -0,0 +1,80 @@ + + + + + + +0.9.7: glm.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
glm.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+
Date
2009-05-01 / 2011-05-16
+
Author
Christophe Riccio
+

GLM Core (Dependence)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2005-01-14 / 2011-10-24
+
Author
Christophe Riccio
+ +

Definition in file glm.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00040_source.html b/external/glm/doc/api/a00040_source.html new file mode 100644 index 0000000..9c7680a --- /dev/null +++ b/external/glm/doc/api/a00040_source.html @@ -0,0 +1,119 @@ + + + + + + +0.9.7: glm.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
glm.hpp
+
+
+Go to the documentation of this file.
1 
+
81 #include "detail/_fixes.hpp"
+
82 
+
83 #pragma once
+
84 
+
85 #include <cmath>
+
86 #include <climits>
+
87 #include <cfloat>
+
88 #include <limits>
+
89 #include <cassert>
+
90 #include "fwd.hpp"
+
91 
+
92 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_CORE_INCLUDED_DISPLAYED))
+
93 # define GLM_MESSAGE_CORE_INCLUDED_DISPLAYED
+
94 # pragma message("GLM: Core library included")
+
95 #endif//GLM_MESSAGE
+
96 
+
97 #include "vec2.hpp"
+
98 #include "vec3.hpp"
+
99 #include "vec4.hpp"
+
100 #include "mat2x2.hpp"
+
101 #include "mat2x3.hpp"
+
102 #include "mat2x4.hpp"
+
103 #include "mat3x2.hpp"
+
104 #include "mat3x3.hpp"
+
105 #include "mat3x4.hpp"
+
106 #include "mat4x2.hpp"
+
107 #include "mat4x3.hpp"
+
108 #include "mat4x4.hpp"
+
109 
+
110 #include "trigonometric.hpp"
+
111 #include "exponential.hpp"
+
112 #include "common.hpp"
+
113 #include "packing.hpp"
+
114 #include "geometric.hpp"
+
115 #include "matrix.hpp"
+
116 #include "vector_relational.hpp"
+
117 #include "integer.hpp"
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00041.html b/external/glm/doc/api/a00041.html new file mode 100644 index 0000000..4758b4f --- /dev/null +++ b/external/glm/doc/api/a00041.html @@ -0,0 +1,88 @@ + + + + + + +0.9.7: gradient_paint.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
gradient_paint.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL T linearGradient (tvec2< T, P > const &Point0, tvec2< T, P > const &Point1, tvec2< T, P > const &Position)
 
template<typename T , precision P>
GLM_FUNC_DECL T radialGradient (tvec2< T, P > const &Center, T const &Radius, tvec2< T, P > const &Focal, tvec2< T, P > const &Position)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_gradient_paint

+
Date
2009-03-06 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTX_optimum_pow (dependence)
+ +

Definition in file gradient_paint.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00041_source.html b/external/glm/doc/api/a00041_source.html new file mode 100644 index 0000000..6ca3455 --- /dev/null +++ b/external/glm/doc/api/a00041_source.html @@ -0,0 +1,93 @@ + + + + + + +0.9.7: gradient_paint.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
gradient_paint.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 #include "../gtx/optimum_pow.hpp"
+
47 
+
48 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
49 # pragma message("GLM: GLM_GTX_gradient_paint extension included")
+
50 #endif
+
51 
+
52 namespace glm
+
53 {
+
56 
+
59  template <typename T, precision P>
+
60  GLM_FUNC_DECL T radialGradient(
+
61  tvec2<T, P> const & Center,
+
62  T const & Radius,
+
63  tvec2<T, P> const & Focal,
+
64  tvec2<T, P> const & Position);
+
65 
+
68  template <typename T, precision P>
+
69  GLM_FUNC_DECL T linearGradient(
+
70  tvec2<T, P> const & Point0,
+
71  tvec2<T, P> const & Point1,
+
72  tvec2<T, P> const & Position);
+
73 
+
75 }// namespace glm
+
76 
+
77 #include "gradient_paint.inl"
+
GLM_FUNC_DECL T linearGradient(tvec2< T, P > const &Point0, tvec2< T, P > const &Point1, tvec2< T, P > const &Position)
Return a color from a linear gradient.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL T radialGradient(tvec2< T, P > const &Center, T const &Radius, tvec2< T, P > const &Focal, tvec2< T, P > const &Position)
Return a color from a radial gradient.
+
+ + + + diff --git a/external/glm/doc/api/a00042.html b/external/glm/doc/api/a00042.html new file mode 100644 index 0000000..487fdee --- /dev/null +++ b/external/glm/doc/api/a00042.html @@ -0,0 +1,86 @@ + + + + + + +0.9.7: handed_coordinate_space.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
handed_coordinate_space.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL bool leftHanded (tvec3< T, P > const &tangent, tvec3< T, P > const &binormal, tvec3< T, P > const &normal)
 
template<typename T , precision P>
GLM_FUNC_DECL bool rightHanded (tvec3< T, P > const &tangent, tvec3< T, P > const &binormal, tvec3< T, P > const &normal)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_handed_coordinate_space

+
Date
2005-12-21 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file handed_coordinate_space.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00042_source.html b/external/glm/doc/api/a00042_source.html new file mode 100644 index 0000000..8ffadb9 --- /dev/null +++ b/external/glm/doc/api/a00042_source.html @@ -0,0 +1,91 @@ + + + + + + +0.9.7: handed_coordinate_space.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
handed_coordinate_space.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTX_handed_coordinate_space extension included")
+
49 #endif
+
50 
+
51 namespace glm
+
52 {
+
55 
+
58  template <typename T, precision P>
+
59  GLM_FUNC_DECL bool rightHanded(
+
60  tvec3<T, P> const & tangent,
+
61  tvec3<T, P> const & binormal,
+
62  tvec3<T, P> const & normal);
+
63 
+
66  template <typename T, precision P>
+
67  GLM_FUNC_DECL bool leftHanded(
+
68  tvec3<T, P> const & tangent,
+
69  tvec3<T, P> const & binormal,
+
70  tvec3<T, P> const & normal);
+
71 
+
73 }// namespace glm
+
74 
+
75 #include "handed_coordinate_space.inl"
+
GLM_FUNC_DECL bool rightHanded(tvec3< T, P > const &tangent, tvec3< T, P > const &binormal, tvec3< T, P > const &normal)
Return if a trihedron right handed or not.
+
GLM_FUNC_DECL bool leftHanded(tvec3< T, P > const &tangent, tvec3< T, P > const &binormal, tvec3< T, P > const &normal)
Return if a trihedron left handed or not.
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00043.html b/external/glm/doc/api/a00043.html new file mode 100644 index 0000000..e6c493c --- /dev/null +++ b/external/glm/doc/api/a00043.html @@ -0,0 +1,74 @@ + + + + + + +0.9.7: hash.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
hash.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_hash

+
Date
2015-03-07 / 2015-03-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file hash.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00043_source.html b/external/glm/doc/api/a00043_source.html new file mode 100644 index 0000000..18e4ccf --- /dev/null +++ b/external/glm/doc/api/a00043_source.html @@ -0,0 +1,185 @@ + + + + + + +0.9.7: hash.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
hash.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 #if !GLM_HAS_CXX11_STL
+
45 # error "GLM_GTX_hash requires C++11 standard library support"
+
46 #endif
+
47 
+
48 #include <functional>
+
49 
+
50 #include "../vec2.hpp"
+
51 #include "../vec3.hpp"
+
52 #include "../vec4.hpp"
+
53 #include "../gtc/vec1.hpp"
+
54 
+
55 #include "../gtc/quaternion.hpp"
+
56 #include "../gtx/dual_quaternion.hpp"
+
57 
+
58 #include "../mat2x2.hpp"
+
59 #include "../mat2x3.hpp"
+
60 #include "../mat2x4.hpp"
+
61 
+
62 #include "../mat3x2.hpp"
+
63 #include "../mat3x3.hpp"
+
64 #include "../mat3x4.hpp"
+
65 
+
66 #include "../mat4x2.hpp"
+
67 #include "../mat4x3.hpp"
+
68 #include "../mat4x4.hpp"
+
69 
+
70 namespace std
+
71 {
+
72  template <typename T, glm::precision P>
+
73  struct hash<glm::tvec1<T,P>>
+
74  {
+
75  GLM_FUNC_DECL size_t operator()(const glm::tvec1<T,P> &v) const;
+
76  };
+
77 
+
78  template <typename T, glm::precision P>
+
79  struct hash<glm::tvec2<T,P>>
+
80  {
+
81  GLM_FUNC_DECL size_t operator()(const glm::tvec2<T,P> &v) const;
+
82  };
+
83 
+
84  template <typename T, glm::precision P>
+
85  struct hash<glm::tvec3<T,P>>
+
86  {
+
87  GLM_FUNC_DECL size_t operator()(const glm::tvec3<T,P> &v) const;
+
88  };
+
89 
+
90  template <typename T, glm::precision P>
+
91  struct hash<glm::tvec4<T,P>>
+
92  {
+
93  GLM_FUNC_DECL size_t operator()(const glm::tvec4<T,P> &v) const;
+
94  };
+
95 
+
96  template <typename T, glm::precision P>
+
97  struct hash<glm::tquat<T,P>>
+
98  {
+
99  GLM_FUNC_DECL size_t operator()(const glm::tquat<T,P> &q) const;
+
100  };
+
101 
+
102  template <typename T, glm::precision P>
+
103  struct hash<glm::tdualquat<T,P>>
+
104  {
+
105  GLM_FUNC_DECL size_t operator()(const glm::tdualquat<T,P> &q) const;
+
106  };
+
107 
+
108  template <typename T, glm::precision P>
+
109  struct hash<glm::tmat2x2<T,P>>
+
110  {
+
111  GLM_FUNC_DECL size_t operator()(const glm::tmat2x2<T,P> &m) const;
+
112  };
+
113 
+
114  template <typename T, glm::precision P>
+
115  struct hash<glm::tmat2x3<T,P>>
+
116  {
+
117  GLM_FUNC_DECL size_t operator()(const glm::tmat2x3<T,P> &m) const;
+
118  };
+
119 
+
120  template <typename T, glm::precision P>
+
121  struct hash<glm::tmat2x4<T,P>>
+
122  {
+
123  GLM_FUNC_DECL size_t operator()(const glm::tmat2x4<T,P> &m) const;
+
124  };
+
125 
+
126  template <typename T, glm::precision P>
+
127  struct hash<glm::tmat3x2<T,P>>
+
128  {
+
129  GLM_FUNC_DECL size_t operator()(const glm::tmat3x2<T,P> &m) const;
+
130  };
+
131 
+
132  template <typename T, glm::precision P>
+
133  struct hash<glm::tmat3x3<T,P>>
+
134  {
+
135  GLM_FUNC_DECL size_t operator()(const glm::tmat3x3<T,P> &m) const;
+
136  };
+
137 
+
138  template <typename T, glm::precision P>
+
139  struct hash<glm::tmat3x4<T,P>>
+
140  {
+
141  GLM_FUNC_DECL size_t operator()(const glm::tmat3x4<T,P> &m) const;
+
142  };
+
143 
+
144  template <typename T, glm::precision P>
+
145  struct hash<glm::tmat4x2<T,P>>
+
146  {
+
147  GLM_FUNC_DECL size_t operator()(const glm::tmat4x2<T,P> &m) const;
+
148  };
+
149 
+
150  template <typename T, glm::precision P>
+
151  struct hash<glm::tmat4x3<T,P>>
+
152  {
+
153  GLM_FUNC_DECL size_t operator()(const glm::tmat4x3<T,P> &m) const;
+
154  };
+
155 
+
156  template <typename T, glm::precision P>
+
157  struct hash<glm::tmat4x4<T,P>>
+
158  {
+
159  GLM_FUNC_DECL size_t operator()(const glm::tmat4x4<T,P> &m) const;
+
160  };
+
161 } // namespace std
+
162 
+
163 #include "hash.inl"
+
Definition: hash.hpp:70
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00044.html b/external/glm/doc/api/a00044.html new file mode 100644 index 0000000..7970133 --- /dev/null +++ b/external/glm/doc/api/a00044.html @@ -0,0 +1,94 @@ + + + + + + +0.9.7: integer.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
gtc/integer.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<typename genIUType >
GLM_FUNC_DECL genIUType log2 (genIUType x)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType mod (genIUType x, genIUType y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > mod (vecType< T, P > const &x, T y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > mod (vecType< T, P > const &x, vecType< T, P > const &y)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_integer

+
Date
2014-11-17 / 2014-11-17
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTC_integer (dependence)
+ +

Definition in file gtc/integer.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00044_source.html b/external/glm/doc/api/a00044_source.html new file mode 100644 index 0000000..283a115 --- /dev/null +++ b/external/glm/doc/api/a00044_source.html @@ -0,0 +1,96 @@ + + + + + + +0.9.7: integer.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
gtc/integer.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependencies
+
46 #include "../detail/setup.hpp"
+
47 #include "../detail/precision.hpp"
+
48 #include "../detail/func_common.hpp"
+
49 #include "../detail/func_integer.hpp"
+
50 #include "../detail/func_exponential.hpp"
+
51 #include <limits>
+
52 
+
53 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
54 # pragma message("GLM: GLM_GTC_integer extension included")
+
55 #endif
+
56 
+
57 namespace glm
+
58 {
+
61 
+
64  template <typename genIUType>
+
65  GLM_FUNC_DECL genIUType log2(genIUType x);
+
66 
+
75  template <typename genIUType>
+
76  GLM_FUNC_DECL genIUType mod(genIUType x, genIUType y);
+
77 
+
87  template <typename T, precision P, template <typename, precision> class vecType>
+
88  GLM_FUNC_DECL vecType<T, P> mod(vecType<T, P> const & x, T y);
+
89 
+
99  template <typename T, precision P, template <typename, precision> class vecType>
+
100  GLM_FUNC_DECL vecType<T, P> mod(vecType<T, P> const & x, vecType<T, P> const & y);
+
101 
+
103 } //namespace glm
+
104 
+
105 #include "integer.inl"
+
GLM_FUNC_DECL genIUType log2(genIUType x)
Returns the log2 of x for integer values.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL genIUType mod(genIUType x, genIUType y)
Modulus.
+
+ + + + diff --git a/external/glm/doc/api/a00045.html b/external/glm/doc/api/a00045.html new file mode 100644 index 0000000..92975b9 --- /dev/null +++ b/external/glm/doc/api/a00045.html @@ -0,0 +1,105 @@ + + + + + + +0.9.7: integer.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
gtx/integer.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Typedefs

typedef signed int sint
 
+ + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType factorial (genType const &x)
 
GLM_FUNC_DECL unsigned int floor_log2 (unsigned int x)
 
GLM_FUNC_DECL int mod (int x, int y)
 
GLM_FUNC_DECL uint mod (uint x, uint y)
 
GLM_FUNC_DECL uint nlz (uint x)
 
GLM_FUNC_DECL int pow (int x, int y)
 
GLM_FUNC_DECL uint pow (uint x, uint y)
 
GLM_FUNC_DECL int sqrt (int x)
 
GLM_FUNC_DECL uint sqrt (uint x)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_integer

+
Date
2005-12-24 / 2011-10-13
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file gtx/integer.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00045_source.html b/external/glm/doc/api/a00045_source.html new file mode 100644 index 0000000..be1aed9 --- /dev/null +++ b/external/glm/doc/api/a00045_source.html @@ -0,0 +1,107 @@ + + + + + + +0.9.7: integer.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
gtx/integer.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 #include "../gtc/integer.hpp"
+
47 
+
48 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
49 # pragma message("GLM: GLM_GTX_integer extension included")
+
50 #endif
+
51 
+
52 namespace glm
+
53 {
+
56 
+
59  GLM_FUNC_DECL int pow(int x, int y);
+
60 
+
63  GLM_FUNC_DECL int sqrt(int x);
+
64 
+
67  GLM_FUNC_DECL unsigned int floor_log2(unsigned int x);
+
68 
+
71  GLM_FUNC_DECL int mod(int x, int y);
+
72 
+
75  template <typename genType>
+
76  GLM_FUNC_DECL genType factorial(genType const & x);
+
77 
+
80  typedef signed int sint;
+
81 
+
84  GLM_FUNC_DECL uint pow(uint x, uint y);
+
85 
+
88  GLM_FUNC_DECL uint sqrt(uint x);
+
89 
+
92  GLM_FUNC_DECL uint mod(uint x, uint y);
+
93 
+
96  GLM_FUNC_DECL uint nlz(uint x);
+
97 
+
99 }//namespace glm
+
100 
+
101 #include "integer.inl"
+
GLM_FUNC_DECL uint pow(uint x, uint y)
Returns x raised to the y power.
+
signed int sint
32bit signed integer.
Definition: gtx/integer.hpp:80
+
unsigned int uint
Unsigned integer type.
Definition: type_int.hpp:308
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL uint sqrt(uint x)
Returns the positive square root of x.
+
GLM_FUNC_DECL genType factorial(genType const &x)
Return the factorial value of a number (!12 max, integer only) From GLM_GTX_integer extension...
+
GLM_FUNC_DECL uint mod(uint x, uint y)
Modulus.
+
GLM_FUNC_DECL unsigned int floor_log2(unsigned int x)
Returns the floor log2 of x.
+
GLM_FUNC_DECL uint nlz(uint x)
Returns the number of leading zeros.
+
+ + + + diff --git a/external/glm/doc/api/a00046.html b/external/glm/doc/api/a00046.html new file mode 100644 index 0000000..cd66e66 --- /dev/null +++ b/external/glm/doc/api/a00046.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: integer.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
integer.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file integer.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00046_source.html b/external/glm/doc/api/a00046_source.html new file mode 100644 index 0000000..cd822b4 --- /dev/null +++ b/external/glm/doc/api/a00046_source.html @@ -0,0 +1,65 @@ + + + + + + +0.9.7: integer.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
integer.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "detail/func_integer.hpp"
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00047.html b/external/glm/doc/api/a00047.html new file mode 100644 index 0000000..25361d3 --- /dev/null +++ b/external/glm/doc/api/a00047.html @@ -0,0 +1,100 @@ + + + + + + +0.9.7: intersect.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
intersect.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL bool intersectLineSphere (genType const &point0, genType const &point1, genType const &sphereCenter, typename genType::value_type sphereRadius, genType &intersectionPosition1, genType &intersectionNormal1, genType &intersectionPosition2=genType(), genType &intersectionNormal2=genType())
 
template<typename genType >
GLM_FUNC_DECL bool intersectLineTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &position)
 
template<typename genType >
GLM_FUNC_DECL bool intersectRayPlane (genType const &orig, genType const &dir, genType const &planeOrig, genType const &planeNormal, typename genType::value_type &intersectionDistance)
 
template<typename genType >
GLM_FUNC_DECL bool intersectRaySphere (genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, typename genType::value_type const sphereRadiusSquered, typename genType::value_type &intersectionDistance)
 
template<typename genType >
GLM_FUNC_DECL bool intersectRaySphere (genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, const typename genType::value_type sphereRadius, genType &intersectionPosition, genType &intersectionNormal)
 
template<typename genType >
GLM_FUNC_DECL bool intersectRayTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &baryPosition)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_intersect

+
Date
2007-04-03 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTX_closest_point (dependence)
+ +

Definition in file intersect.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00047_source.html b/external/glm/doc/api/a00047_source.html new file mode 100644 index 0000000..f15720f --- /dev/null +++ b/external/glm/doc/api/a00047_source.html @@ -0,0 +1,120 @@ + + + + + + +0.9.7: intersect.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
intersect.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependency:
+
46 #include "../glm.hpp"
+
47 #include "../gtx/closest_point.hpp"
+
48 
+
49 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
50 # pragma message("GLM: GLM_GTX_closest_point extension included")
+
51 #endif
+
52 
+
53 namespace glm
+
54 {
+
57 
+
61  template <typename genType>
+
62  GLM_FUNC_DECL bool intersectRayPlane(
+
63  genType const & orig, genType const & dir,
+
64  genType const & planeOrig, genType const & planeNormal,
+
65  typename genType::value_type & intersectionDistance);
+
66 
+
69  template <typename genType>
+
70  GLM_FUNC_DECL bool intersectRayTriangle(
+
71  genType const & orig, genType const & dir,
+
72  genType const & vert0, genType const & vert1, genType const & vert2,
+
73  genType & baryPosition);
+
74 
+
77  template <typename genType>
+
78  GLM_FUNC_DECL bool intersectLineTriangle(
+
79  genType const & orig, genType const & dir,
+
80  genType const & vert0, genType const & vert1, genType const & vert2,
+
81  genType & position);
+
82 
+
86  template <typename genType>
+
87  GLM_FUNC_DECL bool intersectRaySphere(
+
88  genType const & rayStarting, genType const & rayNormalizedDirection,
+
89  genType const & sphereCenter, typename genType::value_type const sphereRadiusSquered,
+
90  typename genType::value_type & intersectionDistance);
+
91 
+
94  template <typename genType>
+
95  GLM_FUNC_DECL bool intersectRaySphere(
+
96  genType const & rayStarting, genType const & rayNormalizedDirection,
+
97  genType const & sphereCenter, const typename genType::value_type sphereRadius,
+
98  genType & intersectionPosition, genType & intersectionNormal);
+
99 
+
102  template <typename genType>
+
103  GLM_FUNC_DECL bool intersectLineSphere(
+
104  genType const & point0, genType const & point1,
+
105  genType const & sphereCenter, typename genType::value_type sphereRadius,
+
106  genType & intersectionPosition1, genType & intersectionNormal1,
+
107  genType & intersectionPosition2 = genType(), genType & intersectionNormal2 = genType());
+
108 
+
110 }//namespace glm
+
111 
+
112 #include "intersect.inl"
+
GLM_FUNC_DECL bool intersectRayTriangle(genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &baryPosition)
Compute the intersection of a ray and a triangle.
+
GLM_FUNC_DECL bool intersectRaySphere(genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, const typename genType::value_type sphereRadius, genType &intersectionPosition, genType &intersectionNormal)
Compute the intersection of a ray and a sphere.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL bool intersectRayPlane(genType const &orig, genType const &dir, genType const &planeOrig, genType const &planeNormal, typename genType::value_type &intersectionDistance)
Compute the intersection of a ray and a plane.
+
GLM_FUNC_DECL bool intersectLineTriangle(genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &position)
Compute the intersection of a line and a triangle.
+
GLM_FUNC_DECL bool intersectLineSphere(genType const &point0, genType const &point1, genType const &sphereCenter, typename genType::value_type sphereRadius, genType &intersectionPosition1, genType &intersectionNormal1, genType &intersectionPosition2=genType(), genType &intersectionNormal2=genType())
Compute the intersection of a line and a sphere.
+
+ + + + diff --git a/external/glm/doc/api/a00048.html b/external/glm/doc/api/a00048.html new file mode 100644 index 0000000..55d73ac --- /dev/null +++ b/external/glm/doc/api/a00048.html @@ -0,0 +1,78 @@ + + + + + + +0.9.7: intrinsic_common.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
intrinsic_common.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2009-05-11 / 2011-06-15
+
Author
Christophe Riccio
+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2009-06-05 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file intrinsic_common.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00048_source.html b/external/glm/doc/api/a00048_source.html new file mode 100644 index 0000000..f7d8765 --- /dev/null +++ b/external/glm/doc/api/a00048_source.html @@ -0,0 +1,122 @@ + + + + + + +0.9.7: intrinsic_common.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
intrinsic_common.hpp
+
+
+Go to the documentation of this file.
1 
+
29 #pragma once
+
30 
+
31 #include "setup.hpp"
+
32 
+
33 #if(!(GLM_ARCH & GLM_ARCH_SSE2))
+
34 # error "SSE2 instructions not supported or enabled"
+
35 #else
+
36 
+
37 namespace glm{
+
38 namespace detail
+
39 {
+
40  __m128 sse_abs_ps(__m128 x);
+
41 
+
42  __m128 sse_sgn_ps(__m128 x);
+
43 
+
44  //floor
+
45  __m128 sse_flr_ps(__m128 v);
+
46 
+
47  //trunc
+
48  __m128 sse_trc_ps(__m128 v);
+
49 
+
50  //round
+
51  __m128 sse_nd_ps(__m128 v);
+
52 
+
53  //roundEven
+
54  __m128 sse_rde_ps(__m128 v);
+
55 
+
56  __m128 sse_rnd_ps(__m128 x);
+
57 
+
58  __m128 sse_ceil_ps(__m128 v);
+
59 
+
60  __m128 sse_frc_ps(__m128 x);
+
61 
+
62  __m128 sse_mod_ps(__m128 x, __m128 y);
+
63 
+
64  __m128 sse_modf_ps(__m128 x, __m128i & i);
+
65 
+
66  //GLM_FUNC_QUALIFIER __m128 sse_min_ps(__m128 x, __m128 y)
+
67 
+
68  //GLM_FUNC_QUALIFIER __m128 sse_max_ps(__m128 x, __m128 y)
+
69 
+
70  __m128 sse_clp_ps(__m128 v, __m128 minVal, __m128 maxVal);
+
71 
+
72  __m128 sse_mix_ps(__m128 v1, __m128 v2, __m128 a);
+
73 
+
74  __m128 sse_stp_ps(__m128 edge, __m128 x);
+
75 
+
76  __m128 sse_ssp_ps(__m128 edge0, __m128 edge1, __m128 x);
+
77 
+
78  __m128 sse_nan_ps(__m128 x);
+
79 
+
80  __m128 sse_inf_ps(__m128 x);
+
81 
+
82 }//namespace detail
+
83 }//namespace glm
+
84 
+
85 #include "intrinsic_common.inl"
+
86 
+
87 #endif//GLM_ARCH
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00049.html b/external/glm/doc/api/a00049.html new file mode 100644 index 0000000..83dbdf7 --- /dev/null +++ b/external/glm/doc/api/a00049.html @@ -0,0 +1,72 @@ + + + + + + +0.9.7: intrinsic_exponential.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
intrinsic_exponential.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2009-05-11 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file intrinsic_exponential.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00049_source.html b/external/glm/doc/api/a00049_source.html new file mode 100644 index 0000000..0b2b23d --- /dev/null +++ b/external/glm/doc/api/a00049_source.html @@ -0,0 +1,112 @@ + + + + + + +0.9.7: intrinsic_exponential.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
intrinsic_exponential.hpp
+
+
+Go to the documentation of this file.
1 
+
29 #pragma once
+
30 
+
31 #include "setup.hpp"
+
32 
+
33 #if(!(GLM_ARCH & GLM_ARCH_SSE2))
+
34 # error "SSE2 instructions not supported or enabled"
+
35 #else
+
36 
+
37 namespace glm{
+
38 namespace detail
+
39 {
+
40 /*
+
41 GLM_FUNC_QUALIFIER __m128 sse_rsqrt_nr_ss(__m128 const x)
+
42 {
+
43  __m128 recip = _mm_rsqrt_ss( x ); // "estimate" opcode
+
44  const static __m128 three = { 3, 3, 3, 3 }; // aligned consts for fast load
+
45  const static __m128 half = { 0.5,0.5,0.5,0.5 };
+
46  __m128 halfrecip = _mm_mul_ss( half, recip );
+
47  __m128 threeminus_xrr = _mm_sub_ss( three, _mm_mul_ss( x, _mm_mul_ss ( recip, recip ) ) );
+
48  return _mm_mul_ss( halfrecip, threeminus_xrr );
+
49 }
+
50 
+
51 GLM_FUNC_QUALIFIER __m128 sse_normalize_fast_ps( float * RESTRICT vOut, float * RESTRICT vIn )
+
52 {
+
53  __m128 x = _mm_load_ss(&vIn[0]);
+
54  __m128 y = _mm_load_ss(&vIn[1]);
+
55  __m128 z = _mm_load_ss(&vIn[2]);
+
56 
+
57  const __m128 l = // compute x*x + y*y + z*z
+
58  _mm_add_ss(
+
59  _mm_add_ss( _mm_mul_ss(x,x),
+
60  _mm_mul_ss(y,y)
+
61  ),
+
62  _mm_mul_ss( z, z )
+
63  );
+
64 
+
65 
+
66  const __m128 rsqt = _mm_rsqrt_nr_ss( l );
+
67  _mm_store_ss( &vOut[0] , _mm_mul_ss( rsqt, x ) );
+
68  _mm_store_ss( &vOut[1] , _mm_mul_ss( rsqt, y ) );
+
69  _mm_store_ss( &vOut[2] , _mm_mul_ss( rsqt, z ) );
+
70 
+
71  return _mm_mul_ss( l , rsqt );
+
72 }
+
73 */
+
74 }//namespace detail
+
75 }//namespace glm
+
76 
+
77 #endif//GLM_ARCH
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00050.html b/external/glm/doc/api/a00050.html new file mode 100644 index 0000000..0763dec --- /dev/null +++ b/external/glm/doc/api/a00050.html @@ -0,0 +1,72 @@ + + + + + + +0.9.7: intrinsic_geometric.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
intrinsic_geometric.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2009-05-08 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file intrinsic_geometric.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00050_source.html b/external/glm/doc/api/a00050_source.html new file mode 100644 index 0000000..0beb87f --- /dev/null +++ b/external/glm/doc/api/a00050_source.html @@ -0,0 +1,110 @@ + + + + + + +0.9.7: intrinsic_geometric.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
intrinsic_geometric.hpp
+
+
+Go to the documentation of this file.
1 
+
29 #pragma once
+
30 
+
31 #include "setup.hpp"
+
32 
+
33 #if(!(GLM_ARCH & GLM_ARCH_SSE2))
+
34 # error "SSE2 instructions not supported or enabled"
+
35 #else
+
36 
+
37 #include "intrinsic_common.hpp"
+
38 
+
39 namespace glm{
+
40 namespace detail
+
41 {
+
42  //length
+
43  __m128 sse_len_ps(__m128 x);
+
44 
+
45  //distance
+
46  __m128 sse_dst_ps(__m128 p0, __m128 p1);
+
47 
+
48  //dot
+
49  __m128 sse_dot_ps(__m128 v1, __m128 v2);
+
50 
+
51  // SSE1
+
52  __m128 sse_dot_ss(__m128 v1, __m128 v2);
+
53 
+
54  //cross
+
55  __m128 sse_xpd_ps(__m128 v1, __m128 v2);
+
56 
+
57  //normalize
+
58  __m128 sse_nrm_ps(__m128 v);
+
59 
+
60  //faceforward
+
61  __m128 sse_ffd_ps(__m128 N, __m128 I, __m128 Nref);
+
62 
+
63  //reflect
+
64  __m128 sse_rfe_ps(__m128 I, __m128 N);
+
65 
+
66  //refract
+
67  __m128 sse_rfa_ps(__m128 I, __m128 N, __m128 eta);
+
68 
+
69 }//namespace detail
+
70 }//namespace glm
+
71 
+
72 #include "intrinsic_geometric.inl"
+
73 
+
74 #endif//GLM_ARCH
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00051.html b/external/glm/doc/api/a00051.html new file mode 100644 index 0000000..3752de6 --- /dev/null +++ b/external/glm/doc/api/a00051.html @@ -0,0 +1,72 @@ + + + + + + +0.9.7: intrinsic_integer.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
intrinsic_integer.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2009-05-11 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file intrinsic_integer.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00051_source.html b/external/glm/doc/api/a00051_source.html new file mode 100644 index 0000000..5d74cd6 --- /dev/null +++ b/external/glm/doc/api/a00051_source.html @@ -0,0 +1,83 @@ + + + + + + +0.9.7: intrinsic_integer.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
intrinsic_integer.hpp
+
+
+Go to the documentation of this file.
1 
+
29 #pragma once
+
30 
+
31 #include "glm/glm.hpp"
+
32 
+
33 #if(!(GLM_ARCH & GLM_ARCH_SSE2))
+
34 # error "SSE2 instructions not supported or enabled"
+
35 #else
+
36 
+
37 namespace glm{
+
38 namespace detail
+
39 {
+
40  __m128i _mm_bit_interleave_si128(__m128i x);
+
41  __m128i _mm_bit_interleave_si128(__m128i x, __m128i y);
+
42 
+
43 }//namespace detail
+
44 }//namespace glm
+
45 
+
46 #include "intrinsic_integer.inl"
+
47 
+
48 #endif//GLM_ARCH
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00052_source.html b/external/glm/doc/api/a00052_source.html new file mode 100644 index 0000000..ff72ca2 --- /dev/null +++ b/external/glm/doc/api/a00052_source.html @@ -0,0 +1,103 @@ + + + + + + +0.9.7: intrinsic_matrix.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
intrinsic_matrix.hpp
+
+
+
1 
+
29 #pragma once
+
30 
+
31 #include "setup.hpp"
+
32 
+
33 #if(!(GLM_ARCH & GLM_ARCH_SSE2))
+
34 # error "SSE2 instructions not supported or enabled"
+
35 #else
+
36 
+
37 #include "intrinsic_geometric.hpp"
+
38 
+
39 namespace glm{
+
40 namespace detail
+
41 {
+
42  void sse_add_ps(__m128 in1[4], __m128 in2[4], __m128 out[4]);
+
43 
+
44  void sse_sub_ps(__m128 in1[4], __m128 in2[4], __m128 out[4]);
+
45 
+
46  __m128 sse_mul_ps(__m128 m[4], __m128 v);
+
47 
+
48  __m128 sse_mul_ps(__m128 v, __m128 m[4]);
+
49 
+
50  void sse_mul_ps(__m128 const in1[4], __m128 const in2[4], __m128 out[4]);
+
51 
+
52  void sse_transpose_ps(__m128 const in[4], __m128 out[4]);
+
53 
+
54  void sse_inverse_ps(__m128 const in[4], __m128 out[4]);
+
55 
+
56  void sse_rotate_ps(__m128 const in[4], float Angle, float const v[3], __m128 out[4]);
+
57 
+
58  __m128 sse_det_ps(__m128 const m[4]);
+
59 
+
60  __m128 sse_slow_det_ps(__m128 const m[4]);
+
61 
+
62 }//namespace detail
+
63 }//namespace glm
+
64 
+
65 #include "intrinsic_matrix.inl"
+
66 
+
67 #endif//GLM_ARCH
+
OpenGL Mathematics (glm.g-truc.net)
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00053.html b/external/glm/doc/api/a00053.html new file mode 100644 index 0000000..53427b8 --- /dev/null +++ b/external/glm/doc/api/a00053.html @@ -0,0 +1,72 @@ + + + + + + +0.9.7: intrinsic_trigonometric.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
intrinsic_trigonometric.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2009-06-09 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file intrinsic_trigonometric.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00053_source.html b/external/glm/doc/api/a00053_source.html new file mode 100644 index 0000000..0e2a1dd --- /dev/null +++ b/external/glm/doc/api/a00053_source.html @@ -0,0 +1,81 @@ + + + + + + +0.9.7: intrinsic_trigonometric.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
intrinsic_trigonometric.hpp
+
+
+Go to the documentation of this file.
1 
+
29 #pragma once
+
30 
+
31 #include "setup.hpp"
+
32 
+
33 #if(!(GLM_ARCH & GLM_ARCH_SSE2))
+
34 # error "SSE2 instructions not supported or enabled"
+
35 #else
+
36 
+
37 namespace glm{
+
38 namespace detail
+
39 {
+
40 
+
41 }//namespace detail
+
42 }//namespace glm
+
43 
+
44 #include "intrinsic_trigonometric.inl"
+
45 
+
46 #endif//GLM_ARCH
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00054.html b/external/glm/doc/api/a00054.html new file mode 100644 index 0000000..df68a3e --- /dev/null +++ b/external/glm/doc/api/a00054.html @@ -0,0 +1,72 @@ + + + + + + +0.9.7: intrinsic_vector_relational.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
intrinsic_vector_relational.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2009-06-09 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file intrinsic_vector_relational.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00054_source.html b/external/glm/doc/api/a00054_source.html new file mode 100644 index 0000000..1b9dce7 --- /dev/null +++ b/external/glm/doc/api/a00054_source.html @@ -0,0 +1,81 @@ + + + + + + +0.9.7: intrinsic_vector_relational.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
intrinsic_vector_relational.hpp
+
+
+Go to the documentation of this file.
1 
+
29 #pragma once
+
30 
+
31 #include "setup.hpp"
+
32 
+
33 #if(!(GLM_ARCH & GLM_ARCH_SSE2))
+
34 # error "SSE2 instructions not supported or enabled"
+
35 #else
+
36 
+
37 namespace glm{
+
38 namespace detail
+
39 {
+
40 
+
41 }//namespace detail
+
42 }//namespace glm
+
43 
+
44 #include "intrinsic_vector_relational.inl"
+
45 
+
46 #endif//GLM_ARCH
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00055.html b/external/glm/doc/api/a00055.html new file mode 100644 index 0000000..7598e51 --- /dev/null +++ b/external/glm/doc/api/a00055.html @@ -0,0 +1,76 @@ + + + + + + +0.9.7: io.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
io.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_io

+
Date
2013-11-22 / 2014-11-25
+
Author
Jan P Springer (regni.nosp@m.rpsj.nosp@m.@gmai.nosp@m.l.co.nosp@m.m)
+
See also
GLM Core (dependence)
+
+GLM_GTC_quaternion (dependence)
+ +

Definition in file io.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00055_source.html b/external/glm/doc/api/a00055_source.html new file mode 100644 index 0000000..43cb20a --- /dev/null +++ b/external/glm/doc/api/a00055_source.html @@ -0,0 +1,245 @@ + + + + + + +0.9.7: io.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
io.hpp
+
+
+Go to the documentation of this file.
1 
+
47 #pragma once
+
48 
+
49 // Dependency:
+
50 #include "../glm.hpp"
+
51 #include "../gtx/quaternion.hpp"
+
52 
+
53 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
+
54 # pragma message("GLM: GLM_GTX_io extension included")
+
55 #endif
+
56 
+
57 #include <iosfwd> // std::basic_ostream<> (fwd)
+
58 #include <locale> // std::locale, std::locale::facet, std::locale::id
+
59 #include <utility> // std::pair<>
+
60 
+
61 namespace glm
+
62 {
+
65 
+
66  namespace io
+
67  {
+
68  enum order_type { column_major, row_major};
+
69 
+
70  template <typename CTy>
+
71  class format_punct : public std::locale::facet
+
72  {
+
73  typedef CTy char_type;
+
74 
+
75  public:
+
76 
+
77  static std::locale::id id;
+
78 
+
79  bool formatted;
+
80  unsigned precision;
+
81  unsigned width;
+
82  char_type separator;
+
83  char_type delim_left;
+
84  char_type delim_right;
+
85  char_type space;
+
86  char_type newline;
+
87  order_type order;
+
88 
+
89  explicit format_punct(size_t a = 0);
+
90  explicit format_punct(format_punct const&);
+
91  };
+
92 
+
93  template <typename CTy, typename CTr = std::char_traits<CTy> >
+
94  class basic_state_saver {
+
95 
+
96  public:
+
97 
+
98  explicit basic_state_saver(std::basic_ios<CTy,CTr>&);
+
99  ~basic_state_saver();
+
100 
+
101  private:
+
102 
+
103  typedef ::std::basic_ios<CTy,CTr> state_type;
+
104  typedef typename state_type::char_type char_type;
+
105  typedef ::std::ios_base::fmtflags flags_type;
+
106  typedef ::std::streamsize streamsize_type;
+
107  typedef ::std::locale const locale_type;
+
108 
+
109  state_type& state_;
+
110  flags_type flags_;
+
111  streamsize_type precision_;
+
112  streamsize_type width_;
+
113  char_type fill_;
+
114  locale_type locale_;
+
115 
+
116  basic_state_saver& operator=(basic_state_saver const&);
+
117  };
+
118 
+
119  typedef basic_state_saver<char> state_saver;
+
120  typedef basic_state_saver<wchar_t> wstate_saver;
+
121 
+
122  template <typename CTy, typename CTr = std::char_traits<CTy> >
+
123  class basic_format_saver
+
124  {
+
125  public:
+
126 
+
127  explicit basic_format_saver(std::basic_ios<CTy,CTr>&);
+
128  ~basic_format_saver();
+
129 
+
130  private:
+
131 
+
132  basic_state_saver<CTy> const bss_;
+
133 
+
134  basic_format_saver& operator=(basic_format_saver const&);
+
135  };
+
136 
+
137  typedef basic_format_saver<char> format_saver;
+
138  typedef basic_format_saver<wchar_t> wformat_saver;
+
139 
+
140  struct precision
+
141  {
+
142  unsigned value;
+
143 
+
144  explicit precision(unsigned);
+
145  };
+
146 
+
147  struct width
+
148  {
+
149  unsigned value;
+
150 
+
151  explicit width(unsigned);
+
152  };
+
153 
+
154  template <typename CTy>
+
155  struct delimeter
+
156  {
+
157  CTy value[3];
+
158 
+
159  explicit delimeter(CTy /* left */, CTy /* right */, CTy /* separator */ = ',');
+
160  };
+
161 
+
162  struct order
+
163  {
+
164  order_type value;
+
165 
+
166  explicit order(order_type);
+
167  };
+
168 
+
169  // functions, inlined (inline)
+
170 
+
171  template <typename FTy, typename CTy, typename CTr>
+
172  FTy const& get_facet(std::basic_ios<CTy,CTr>&);
+
173  template <typename FTy, typename CTy, typename CTr>
+
174  std::basic_ios<CTy,CTr>& formatted(std::basic_ios<CTy,CTr>&);
+
175  template <typename FTy, typename CTy, typename CTr>
+
176  std::basic_ios<CTy,CTr>& unformattet(std::basic_ios<CTy,CTr>&);
+
177 
+
178  template <typename CTy, typename CTr>
+
179  std::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>&, precision const&);
+
180  template <typename CTy, typename CTr>
+
181  std::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>&, width const&);
+
182  template <typename CTy, typename CTr>
+
183  std::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>&, delimeter<CTy> const&);
+
184  template <typename CTy, typename CTr>
+
185  std::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>&, order const&);
+
186  }//namespace io
+
187 
+
188  template <typename CTy, typename CTr, typename T, precision P>
+
189  GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tquat<T,P> const&);
+
190  template <typename CTy, typename CTr, typename T, precision P>
+
191  GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tvec1<T,P> const&);
+
192  template <typename CTy, typename CTr, typename T, precision P>
+
193  GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tvec2<T,P> const&);
+
194  template <typename CTy, typename CTr, typename T, precision P>
+
195  GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tvec3<T,P> const&);
+
196  template <typename CTy, typename CTr, typename T, precision P>
+
197  GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tvec4<T,P> const&);
+
198  template <typename CTy, typename CTr, typename T, precision P>
+
199  GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat2x2<T,P> const&);
+
200  template <typename CTy, typename CTr, typename T, precision P>
+
201  GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat2x3<T,P> const&);
+
202  template <typename CTy, typename CTr, typename T, precision P>
+
203  GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat2x4<T,P> const&);
+
204  template <typename CTy, typename CTr, typename T, precision P>
+
205  GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat3x2<T,P> const&);
+
206  template <typename CTy, typename CTr, typename T, precision P>
+
207  GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat3x3<T,P> const&);
+
208  template <typename CTy, typename CTr, typename T, precision P>
+
209  GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat3x4<T,P> const&);
+
210  template <typename CTy, typename CTr, typename T, precision P>
+
211  GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat4x2<T,P> const&);
+
212  template <typename CTy, typename CTr, typename T, precision P>
+
213  GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat4x3<T,P> const&);
+
214  template <typename CTy, typename CTr, typename T, precision P>
+
215  GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat4x4<T,P> const&);
+
216 
+
217  template <typename CTy, typename CTr, typename T, precision P>
+
218  GLM_FUNC_DECL std::basic_ostream<CTy,CTr> & operator<<(
+
219  std::basic_ostream<CTy,CTr> &,
+
220  std::pair<tmat4x4<T,P> const,
+
221  tmat4x4<T,P> const> const &);
+
222 
+
223  template <typename CTy, typename CTr, typename T, precision P>
+
224  GLM_FUNC_DECL std::basic_ostream<CTy,CTr> & operator<<(
+
225  std::basic_ostream<CTy,CTr> &,
+
226  std::pair<tmat4x4<T,P>,
+
227  tmat4x4<T,P> > const &);
+
228 
+
230 }//namespace glm
+
231 
+
232 #include "io.inl"
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00056.html b/external/glm/doc/api/a00056.html new file mode 100644 index 0000000..e53bdf5 --- /dev/null +++ b/external/glm/doc/api/a00056.html @@ -0,0 +1,86 @@ + + + + + + +0.9.7: log_base.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
log_base.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType log (genType x, genType base)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > sign (vecType< T, P > const &x, vecType< T, P > const &base)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_log_base

+
Date
2008-10-24 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file log_base.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00056_source.html b/external/glm/doc/api/a00056_source.html new file mode 100644 index 0000000..e40f9cd --- /dev/null +++ b/external/glm/doc/api/a00056_source.html @@ -0,0 +1,89 @@ + + + + + + +0.9.7: log_base.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
log_base.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTX_log_base extension included")
+
49 #endif
+
50 
+
51 namespace glm
+
52 {
+
55 
+
58  template <typename genType>
+
59  GLM_FUNC_DECL genType log(
+
60  genType x,
+
61  genType base);
+
62 
+
65  template <typename T, precision P, template <typename, precision> class vecType>
+
66  GLM_FUNC_DECL vecType<T, P> sign(
+
67  vecType<T, P> const & x,
+
68  vecType<T, P> const & base);
+
69 
+
71 }//namespace glm
+
72 
+
73 #include "log_base.inl"
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL vecType< T, P > sign(vecType< T, P > const &x, vecType< T, P > const &base)
Logarithm for any base.
+
GLM_FUNC_DECL genType log(genType x, genType base)
Logarithm for any base.
+
+ + + + diff --git a/external/glm/doc/api/a00057_source.html b/external/glm/doc/api/a00057_source.html new file mode 100644 index 0000000..6785d38 --- /dev/null +++ b/external/glm/doc/api/a00057_source.html @@ -0,0 +1,2457 @@ + + + + + + +0.9.7: man.doxy Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
man.doxy
+
+
+
1 # Doxyfile 1.8.10
+
2 
+
3 # This file describes the settings to be used by the documentation system
+
4 # doxygen (www.doxygen.org) for a project.
+
5 #
+
6 # All text after a double hash (##) is considered a comment and is placed in
+
7 # front of the TAG it is preceding.
+
8 #
+
9 # All text after a single hash (#) is considered a comment and will be ignored.
+
10 # The format is:
+
11 # TAG = value [value, ...]
+
12 # For lists, items can also be appended using:
+
13 # TAG += value [value, ...]
+
14 # Values that contain spaces should be placed between quotes (\" \").
+
15 
+
16 #---------------------------------------------------------------------------
+
17 # Project related configuration options
+
18 #---------------------------------------------------------------------------
+
19 
+
20 # This tag specifies the encoding used for all characters in the config file
+
21 # that follow. The default is UTF-8 which is also the encoding used for all text
+
22 # before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
+
23 # built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
+
24 # for the list of possible encodings.
+
25 # The default value is: UTF-8.
+
26 
+
27 DOXYFILE_ENCODING = UTF-8
+
28 
+
29 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+
30 # double-quotes, unless you are using Doxywizard) that should identify the
+
31 # project for which the documentation is generated. This name is used in the
+
32 # title of most generated pages and in a few other places.
+
33 # The default value is: My Project.
+
34 
+
35 PROJECT_NAME = 0.9.7
+
36 
+
37 # The PROJECT_NUMBER tag can be used to enter a project or revision number. This
+
38 # could be handy for archiving the generated documentation or if some version
+
39 # control system is used.
+
40 
+
41 PROJECT_NUMBER =
+
42 
+
43 # Using the PROJECT_BRIEF tag one can provide an optional one line description
+
44 # for a project that appears at the top of each page and should give viewer a
+
45 # quick idea about the purpose of the project. Keep the description short.
+
46 
+
47 PROJECT_BRIEF =
+
48 
+
49 # With the PROJECT_LOGO tag one can specify a logo or an icon that is included
+
50 # in the documentation. The maximum height of the logo should not exceed 55
+
51 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
+
52 # the logo to the output directory.
+
53 
+
54 PROJECT_LOGO = E:/Source/G-Truc/glm/doc/logo.png
+
55 
+
56 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+
57 # into which the generated documentation will be written. If a relative path is
+
58 # entered, it will be relative to the location where doxygen was started. If
+
59 # left blank the current directory will be used.
+
60 
+
61 OUTPUT_DIRECTORY = .
+
62 
+
63 # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
+
64 # directories (in 2 levels) under the output directory of each output format and
+
65 # will distribute the generated files over these directories. Enabling this
+
66 # option can be useful when feeding doxygen a huge amount of source files, where
+
67 # putting all generated files in the same directory would otherwise causes
+
68 # performance problems for the file system.
+
69 # The default value is: NO.
+
70 
+
71 CREATE_SUBDIRS = NO
+
72 
+
73 # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
+
74 # characters to appear in the names of generated files. If set to NO, non-ASCII
+
75 # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
+
76 # U+3044.
+
77 # The default value is: NO.
+
78 
+
79 ALLOW_UNICODE_NAMES = NO
+
80 
+
81 # The OUTPUT_LANGUAGE tag is used to specify the language in which all
+
82 # documentation generated by doxygen is written. Doxygen will use this
+
83 # information to generate all constant output in the proper language.
+
84 # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
+
85 # Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
+
86 # Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
+
87 # Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
+
88 # Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
+
89 # Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
+
90 # Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
+
91 # Ukrainian and Vietnamese.
+
92 # The default value is: English.
+
93 
+
94 OUTPUT_LANGUAGE = English
+
95 
+
96 # If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
+
97 # descriptions after the members that are listed in the file and class
+
98 # documentation (similar to Javadoc). Set to NO to disable this.
+
99 # The default value is: YES.
+
100 
+
101 BRIEF_MEMBER_DESC = NO
+
102 
+
103 # If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
+
104 # description of a member or function before the detailed description
+
105 #
+
106 # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+
107 # brief descriptions will be completely suppressed.
+
108 # The default value is: YES.
+
109 
+
110 REPEAT_BRIEF = YES
+
111 
+
112 # This tag implements a quasi-intelligent brief description abbreviator that is
+
113 # used to form the text in various listings. Each string in this list, if found
+
114 # as the leading text of the brief description, will be stripped from the text
+
115 # and the result, after processing the whole list, is used as the annotated
+
116 # text. Otherwise, the brief description is used as-is. If left blank, the
+
117 # following values are used ($name is automatically replaced with the name of
+
118 # the entity):The $name class, The $name widget, The $name file, is, provides,
+
119 # specifies, contains, represents, a, an and the.
+
120 
+
121 ABBREVIATE_BRIEF = "The $name class " \
+
122  "The $name widget " \
+
123  "The $name file " \
+
124  is \
+
125  provides \
+
126  specifies \
+
127  contains \
+
128  represents \
+
129  a \
+
130  an \
+
131  the
+
132 
+
133 # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+
134 # doxygen will generate a detailed section even if there is only a brief
+
135 # description.
+
136 # The default value is: NO.
+
137 
+
138 ALWAYS_DETAILED_SEC = NO
+
139 
+
140 # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+
141 # inherited members of a class in the documentation of that class as if those
+
142 # members were ordinary class members. Constructors, destructors and assignment
+
143 # operators of the base classes will not be shown.
+
144 # The default value is: NO.
+
145 
+
146 INLINE_INHERITED_MEMB = NO
+
147 
+
148 # If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
+
149 # before files name in the file list and in the header files. If set to NO the
+
150 # shortest path that makes the file name unique will be used
+
151 # The default value is: YES.
+
152 
+
153 FULL_PATH_NAMES = NO
+
154 
+
155 # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
+
156 # Stripping is only done if one of the specified strings matches the left-hand
+
157 # part of the path. The tag can be used to show relative paths in the file list.
+
158 # If left blank the directory from which doxygen is run is used as the path to
+
159 # strip.
+
160 #
+
161 # Note that you can specify absolute paths here, but also relative paths, which
+
162 # will be relative from the directory where doxygen is started.
+
163 # This tag requires that the tag FULL_PATH_NAMES is set to YES.
+
164 
+
165 STRIP_FROM_PATH = "C:/Documents and Settings/Groove/ "
+
166 
+
167 # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
+
168 # path mentioned in the documentation of a class, which tells the reader which
+
169 # header file to include in order to use a class. If left blank only the name of
+
170 # the header file containing the class definition is used. Otherwise one should
+
171 # specify the list of include paths that are normally passed to the compiler
+
172 # using the -I flag.
+
173 
+
174 STRIP_FROM_INC_PATH =
+
175 
+
176 # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
+
177 # less readable) file names. This can be useful is your file systems doesn't
+
178 # support long names like on DOS, Mac, or CD-ROM.
+
179 # The default value is: NO.
+
180 
+
181 SHORT_NAMES = YES
+
182 
+
183 # If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
+
184 # first line (until the first dot) of a Javadoc-style comment as the brief
+
185 # description. If set to NO, the Javadoc-style will behave just like regular Qt-
+
186 # style comments (thus requiring an explicit @brief command for a brief
+
187 # description.)
+
188 # The default value is: NO.
+
189 
+
190 JAVADOC_AUTOBRIEF = YES
+
191 
+
192 # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
+
193 # line (until the first dot) of a Qt-style comment as the brief description. If
+
194 # set to NO, the Qt-style will behave just like regular Qt-style comments (thus
+
195 # requiring an explicit \brief command for a brief description.)
+
196 # The default value is: NO.
+
197 
+
198 QT_AUTOBRIEF = NO
+
199 
+
200 # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
+
201 # multi-line C++ special comment block (i.e. a block of
+
202 # a brief description. This used to be the default behavior. The new default is
+
203 # to treat a multi-line C++ comment block as a detailed description. Set this
+
204 # tag to YES if you prefer the old behavior instead.
+
205 #
+
206 # Note that setting this tag to YES also means that rational rose comments are
+
207 # not recognized any more.
+
208 # The default value is: NO.
+
209 
+
210 MULTILINE_CPP_IS_BRIEF = NO
+
211 
+
212 # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+
213 # documentation from any documented member that it re-implements.
+
214 # The default value is: YES.
+
215 
+
216 INHERIT_DOCS = YES
+
217 
+
218 # If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
+
219 # page for each member. If set to NO, the documentation of a member will be part
+
220 # of the file/class/namespace that contains it.
+
221 # The default value is: NO.
+
222 
+
223 SEPARATE_MEMBER_PAGES = NO
+
224 
+
225 # The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
+
226 # uses this value to replace tabs by spaces in code fragments.
+
227 # Minimum value: 1, maximum value: 16, default value: 4.
+
228 
+
229 TAB_SIZE = 8
+
230 
+
231 # This tag can be used to specify a number of aliases that act as commands in
+
232 # the documentation. An alias has the form:
+
233 # name=value
+
234 # For example adding
+
235 # "sideeffect=@par Side Effects:\n"
+
236 # will allow you to put the command \sideeffect (or @sideeffect) in the
+
237 # documentation, which will result in a user-defined paragraph with heading
+
238 # "Side Effects:". You can put \n's in the value part of an alias to insert
+
239 # newlines.
+
240 
+
241 ALIASES =
+
242 
+
243 # This tag can be used to specify a number of word-keyword mappings (TCL only).
+
244 # A mapping has the form "name=value". For example adding "class=itcl::class"
+
245 # will allow you to use the command class in the itcl::class meaning.
+
246 
+
247 TCL_SUBST =
+
248 
+
249 # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+
250 # only. Doxygen will then generate output that is more tailored for C. For
+
251 # instance, some of the names that are used will be different. The list of all
+
252 # members will be omitted, etc.
+
253 # The default value is: NO.
+
254 
+
255 OPTIMIZE_OUTPUT_FOR_C = NO
+
256 
+
257 # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+
258 # Python sources only. Doxygen will then generate output that is more tailored
+
259 # for that language. For instance, namespaces will be presented as packages,
+
260 # qualified scopes will look different, etc.
+
261 # The default value is: NO.
+
262 
+
263 OPTIMIZE_OUTPUT_JAVA = NO
+
264 
+
265 # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+
266 # sources. Doxygen will then generate output that is tailored for Fortran.
+
267 # The default value is: NO.
+
268 
+
269 OPTIMIZE_FOR_FORTRAN = NO
+
270 
+
271 # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+
272 # sources. Doxygen will then generate output that is tailored for VHDL.
+
273 # The default value is: NO.
+
274 
+
275 OPTIMIZE_OUTPUT_VHDL = NO
+
276 
+
277 # Doxygen selects the parser to use depending on the extension of the files it
+
278 # parses. With this tag you can assign which parser to use for a given
+
279 # extension. Doxygen has a built-in mapping, but you can override or extend it
+
280 # using this tag. The format is ext=language, where ext is a file extension, and
+
281 # language is one of the parsers supported by doxygen: IDL, Java, Javascript,
+
282 # C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
+
283 # FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
+
284 # Fortran. In the later case the parser tries to guess whether the code is fixed
+
285 # or free formatted code, this is the default for Fortran type files), VHDL. For
+
286 # instance to make doxygen treat .inc files as Fortran files (default is PHP),
+
287 # and .f files as C (default is Fortran), use: inc=Fortran f=C.
+
288 #
+
289 # Note: For files without extension you can use no_extension as a placeholder.
+
290 #
+
291 # Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+
292 # the files are not read by doxygen.
+
293 
+
294 EXTENSION_MAPPING =
+
295 
+
296 # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+
297 # according to the Markdown format, which allows for more readable
+
298 # documentation. See http://daringfireball.net/projects/markdown/ for details.
+
299 # The output of markdown processing is further processed by doxygen, so you can
+
300 # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+
301 # case of backward compatibilities issues.
+
302 # The default value is: YES.
+
303 
+
304 MARKDOWN_SUPPORT = YES
+
305 
+
306 # When enabled doxygen tries to link words that correspond to documented
+
307 # classes, or namespaces to their corresponding documentation. Such a link can
+
308 # be prevented in individual cases by putting a % sign in front of the word or
+
309 # globally by setting AUTOLINK_SUPPORT to NO.
+
310 # The default value is: YES.
+
311 
+
312 AUTOLINK_SUPPORT = YES
+
313 
+
314 # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+
315 # to include (a tag file for) the STL sources as input, then you should set this
+
316 # tag to YES in order to let doxygen match functions declarations and
+
317 # definitions whose arguments contain STL classes (e.g. func(std::string);
+
318 # versus func(std::string) {}). This also make the inheritance and collaboration
+
319 # diagrams that involve STL classes more complete and accurate.
+
320 # The default value is: NO.
+
321 
+
322 BUILTIN_STL_SUPPORT = NO
+
323 
+
324 # If you use Microsoft's C++/CLI language, you should set this option to YES to
+
325 # enable parsing support.
+
326 # The default value is: NO.
+
327 
+
328 CPP_CLI_SUPPORT = NO
+
329 
+
330 # Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+
331 # http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
+
332 # will parse them like normal C++ but will assume all classes use public instead
+
333 # of private inheritance when no explicit protection keyword is present.
+
334 # The default value is: NO.
+
335 
+
336 SIP_SUPPORT = NO
+
337 
+
338 # For Microsoft's IDL there are propget and propput attributes to indicate
+
339 # getter and setter methods for a property. Setting this option to YES will make
+
340 # doxygen to replace the get and set methods by a property in the documentation.
+
341 # This will only work if the methods are indeed getting or setting a simple
+
342 # type. If this is not the case, or you want to show the methods anyway, you
+
343 # should set this option to NO.
+
344 # The default value is: YES.
+
345 
+
346 IDL_PROPERTY_SUPPORT = YES
+
347 
+
348 # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+
349 # tag is set to YES then doxygen will reuse the documentation of the first
+
350 # member in the group (if any) for the other members of the group. By default
+
351 # all members of a group must be documented explicitly.
+
352 # The default value is: NO.
+
353 
+
354 DISTRIBUTE_GROUP_DOC = NO
+
355 
+
356 # If one adds a struct or class to a group and this option is enabled, then also
+
357 # any nested class or struct is added to the same group. By default this option
+
358 # is disabled and one has to add nested compounds explicitly via \ingroup.
+
359 # The default value is: NO.
+
360 
+
361 GROUP_NESTED_COMPOUNDS = NO
+
362 
+
363 # Set the SUBGROUPING tag to YES to allow class member groups of the same type
+
364 # (for instance a group of public functions) to be put as a subgroup of that
+
365 # type (e.g. under the Public Functions section). Set it to NO to prevent
+
366 # subgrouping. Alternatively, this can be done per class using the
+
367 # \nosubgrouping command.
+
368 # The default value is: YES.
+
369 
+
370 SUBGROUPING = NO
+
371 
+
372 # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+
373 # are shown inside the group in which they are included (e.g. using \ingroup)
+
374 # instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+
375 # and RTF).
+
376 #
+
377 # Note that this feature does not work in combination with
+
378 # SEPARATE_MEMBER_PAGES.
+
379 # The default value is: NO.
+
380 
+
381 INLINE_GROUPED_CLASSES = NO
+
382 
+
383 # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+
384 # with only public data fields or simple typedef fields will be shown inline in
+
385 # the documentation of the scope in which they are defined (i.e. file,
+
386 # namespace, or group documentation), provided this scope is documented. If set
+
387 # to NO, structs, classes, and unions are shown on a separate page (for HTML and
+
388 # Man pages) or section (for LaTeX and RTF).
+
389 # The default value is: NO.
+
390 
+
391 INLINE_SIMPLE_STRUCTS = NO
+
392 
+
393 # When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
+
394 # enum is documented as struct, union, or enum with the name of the typedef. So
+
395 # typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+
396 # with name TypeT. When disabled the typedef will appear as a member of a file,
+
397 # namespace, or class. And the struct will be named TypeS. This can typically be
+
398 # useful for C code in case the coding convention dictates that all compound
+
399 # types are typedef'ed and only the typedef is referenced, never the tag name.
+
400 # The default value is: NO.
+
401 
+
402 TYPEDEF_HIDES_STRUCT = NO
+
403 
+
404 # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+
405 # cache is used to resolve symbols given their name and scope. Since this can be
+
406 # an expensive process and often the same symbol appears multiple times in the
+
407 # code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+
408 # doxygen will become slower. If the cache is too large, memory is wasted. The
+
409 # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+
410 # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+
411 # symbols. At the end of a run doxygen will report the cache usage and suggest
+
412 # the optimal cache size from a speed point of view.
+
413 # Minimum value: 0, maximum value: 9, default value: 0.
+
414 
+
415 LOOKUP_CACHE_SIZE = 0
+
416 
+
417 #---------------------------------------------------------------------------
+
418 # Build related configuration options
+
419 #---------------------------------------------------------------------------
+
420 
+
421 # If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
+
422 # documentation are documented, even if no documentation was available. Private
+
423 # class members and static file members will be hidden unless the
+
424 # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
+
425 # Note: This will also disable the warnings about undocumented members that are
+
426 # normally produced when WARNINGS is set to YES.
+
427 # The default value is: NO.
+
428 
+
429 EXTRACT_ALL = NO
+
430 
+
431 # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
+
432 # be included in the documentation.
+
433 # The default value is: NO.
+
434 
+
435 EXTRACT_PRIVATE = NO
+
436 
+
437 # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
+
438 # scope will be included in the documentation.
+
439 # The default value is: NO.
+
440 
+
441 EXTRACT_PACKAGE = NO
+
442 
+
443 # If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
+
444 # included in the documentation.
+
445 # The default value is: NO.
+
446 
+
447 EXTRACT_STATIC = YES
+
448 
+
449 # If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
+
450 # locally in source files will be included in the documentation. If set to NO,
+
451 # only classes defined in header files are included. Does not have any effect
+
452 # for Java sources.
+
453 # The default value is: YES.
+
454 
+
455 EXTRACT_LOCAL_CLASSES = NO
+
456 
+
457 # This flag is only useful for Objective-C code. If set to YES, local methods,
+
458 # which are defined in the implementation section but not in the interface are
+
459 # included in the documentation. If set to NO, only methods in the interface are
+
460 # included.
+
461 # The default value is: NO.
+
462 
+
463 EXTRACT_LOCAL_METHODS = NO
+
464 
+
465 # If this flag is set to YES, the members of anonymous namespaces will be
+
466 # extracted and appear in the documentation as a namespace called
+
467 # 'anonymous_namespace{file}', where file will be replaced with the base name of
+
468 # the file that contains the anonymous namespace. By default anonymous namespace
+
469 # are hidden.
+
470 # The default value is: NO.
+
471 
+
472 EXTRACT_ANON_NSPACES = NO
+
473 
+
474 # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+
475 # undocumented members inside documented classes or files. If set to NO these
+
476 # members will be included in the various overviews, but no documentation
+
477 # section is generated. This option has no effect if EXTRACT_ALL is enabled.
+
478 # The default value is: NO.
+
479 
+
480 HIDE_UNDOC_MEMBERS = YES
+
481 
+
482 # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
+
483 # undocumented classes that are normally visible in the class hierarchy. If set
+
484 # to NO, these classes will be included in the various overviews. This option
+
485 # has no effect if EXTRACT_ALL is enabled.
+
486 # The default value is: NO.
+
487 
+
488 HIDE_UNDOC_CLASSES = YES
+
489 
+
490 # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
+
491 # (class|struct|union) declarations. If set to NO, these declarations will be
+
492 # included in the documentation.
+
493 # The default value is: NO.
+
494 
+
495 HIDE_FRIEND_COMPOUNDS = YES
+
496 
+
497 # If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
+
498 # documentation blocks found inside the body of a function. If set to NO, these
+
499 # blocks will be appended to the function's detailed documentation block.
+
500 # The default value is: NO.
+
501 
+
502 HIDE_IN_BODY_DOCS = YES
+
503 
+
504 # The INTERNAL_DOCS tag determines if documentation that is typed after a
+
505 # \internal command is included. If the tag is set to NO then the documentation
+
506 # will be excluded. Set it to YES to include the internal documentation.
+
507 # The default value is: NO.
+
508 
+
509 INTERNAL_DOCS = NO
+
510 
+
511 # If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
+
512 # names in lower-case letters. If set to YES, upper-case letters are also
+
513 # allowed. This is useful if you have classes or files whose names only differ
+
514 # in case and if your file system supports case sensitive file names. Windows
+
515 # and Mac users are advised to set this option to NO.
+
516 # The default value is: system dependent.
+
517 
+
518 CASE_SENSE_NAMES = YES
+
519 
+
520 # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+
521 # their full class and namespace scopes in the documentation. If set to YES, the
+
522 # scope will be hidden.
+
523 # The default value is: NO.
+
524 
+
525 HIDE_SCOPE_NAMES = YES
+
526 
+
527 # If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
+
528 # append additional text to a page's title, such as Class Reference. If set to
+
529 # YES the compound reference will be hidden.
+
530 # The default value is: NO.
+
531 
+
532 HIDE_COMPOUND_REFERENCE= NO
+
533 
+
534 # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+
535 # the files that are included by a file in the documentation of that file.
+
536 # The default value is: YES.
+
537 
+
538 SHOW_INCLUDE_FILES = NO
+
539 
+
540 # If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
+
541 # grouped member an include statement to the documentation, telling the reader
+
542 # which file to include in order to use the member.
+
543 # The default value is: NO.
+
544 
+
545 SHOW_GROUPED_MEMB_INC = NO
+
546 
+
547 # If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+
548 # files with double quotes in the documentation rather than with sharp brackets.
+
549 # The default value is: NO.
+
550 
+
551 FORCE_LOCAL_INCLUDES = NO
+
552 
+
553 # If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+
554 # documentation for inline members.
+
555 # The default value is: YES.
+
556 
+
557 INLINE_INFO = NO
+
558 
+
559 # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
+
560 # (detailed) documentation of file and class members alphabetically by member
+
561 # name. If set to NO, the members will appear in declaration order.
+
562 # The default value is: YES.
+
563 
+
564 SORT_MEMBER_DOCS = YES
+
565 
+
566 # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+
567 # descriptions of file, namespace and class members alphabetically by member
+
568 # name. If set to NO, the members will appear in declaration order. Note that
+
569 # this will also influence the order of the classes in the class list.
+
570 # The default value is: NO.
+
571 
+
572 SORT_BRIEF_DOCS = YES
+
573 
+
574 # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+
575 # (brief and detailed) documentation of class members so that constructors and
+
576 # destructors are listed first. If set to NO the constructors will appear in the
+
577 # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+
578 # Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+
579 # member documentation.
+
580 # Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+
581 # detailed member documentation.
+
582 # The default value is: NO.
+
583 
+
584 SORT_MEMBERS_CTORS_1ST = NO
+
585 
+
586 # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
+
587 # of group names into alphabetical order. If set to NO the group names will
+
588 # appear in their defined order.
+
589 # The default value is: NO.
+
590 
+
591 SORT_GROUP_NAMES = NO
+
592 
+
593 # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
+
594 # fully-qualified names, including namespaces. If set to NO, the class list will
+
595 # be sorted only by class name, not including the namespace part.
+
596 # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+
597 # Note: This option applies only to the class list, not to the alphabetical
+
598 # list.
+
599 # The default value is: NO.
+
600 
+
601 SORT_BY_SCOPE_NAME = YES
+
602 
+
603 # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+
604 # type resolution of all parameters of a function it will reject a match between
+
605 # the prototype and the implementation of a member function even if there is
+
606 # only one candidate or it is obvious which candidate to choose by doing a
+
607 # simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+
608 # accept a match between prototype and implementation in such cases.
+
609 # The default value is: NO.
+
610 
+
611 STRICT_PROTO_MATCHING = NO
+
612 
+
613 # The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
+
614 # list. This list is created by putting \todo commands in the documentation.
+
615 # The default value is: YES.
+
616 
+
617 GENERATE_TODOLIST = YES
+
618 
+
619 # The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
+
620 # list. This list is created by putting \test commands in the documentation.
+
621 # The default value is: YES.
+
622 
+
623 GENERATE_TESTLIST = YES
+
624 
+
625 # The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
+
626 # list. This list is created by putting \bug commands in the documentation.
+
627 # The default value is: YES.
+
628 
+
629 GENERATE_BUGLIST = YES
+
630 
+
631 # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
+
632 # the deprecated list. This list is created by putting \deprecated commands in
+
633 # the documentation.
+
634 # The default value is: YES.
+
635 
+
636 GENERATE_DEPRECATEDLIST= YES
+
637 
+
638 # The ENABLED_SECTIONS tag can be used to enable conditional documentation
+
639 # sections, marked by \if <section_label> ... \endif and \cond <section_label>
+
640 # ... \endcond blocks.
+
641 
+
642 ENABLED_SECTIONS =
+
643 
+
644 # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+
645 # initial value of a variable or macro / define can have for it to appear in the
+
646 # documentation. If the initializer consists of more lines than specified here
+
647 # it will be hidden. Use a value of 0 to hide initializers completely. The
+
648 # appearance of the value of individual variables and macros / defines can be
+
649 # controlled using \showinitializer or \hideinitializer command in the
+
650 # documentation regardless of this setting.
+
651 # Minimum value: 0, maximum value: 10000, default value: 30.
+
652 
+
653 MAX_INITIALIZER_LINES = 30
+
654 
+
655 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
+
656 # the bottom of the documentation of classes and structs. If set to YES, the
+
657 # list will mention the files that were used to generate the documentation.
+
658 # The default value is: YES.
+
659 
+
660 SHOW_USED_FILES = NO
+
661 
+
662 # Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
+
663 # will remove the Files entry from the Quick Index and from the Folder Tree View
+
664 # (if specified).
+
665 # The default value is: YES.
+
666 
+
667 SHOW_FILES = YES
+
668 
+
669 # Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
+
670 # page. This will remove the Namespaces entry from the Quick Index and from the
+
671 # Folder Tree View (if specified).
+
672 # The default value is: YES.
+
673 
+
674 SHOW_NAMESPACES = YES
+
675 
+
676 # The FILE_VERSION_FILTER tag can be used to specify a program or script that
+
677 # doxygen should invoke to get the current version for each file (typically from
+
678 # the version control system). Doxygen will invoke the program by executing (via
+
679 # popen()) the command command input-file, where command is the value of the
+
680 # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
+
681 # by doxygen. Whatever the program writes to standard output is used as the file
+
682 # version. For an example see the documentation.
+
683 
+
684 FILE_VERSION_FILTER =
+
685 
+
686 # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+
687 # by doxygen. The layout file controls the global structure of the generated
+
688 # output files in an output format independent way. To create the layout file
+
689 # that represents doxygen's defaults, run doxygen with the -l option. You can
+
690 # optionally specify a file name after the option, if omitted DoxygenLayout.xml
+
691 # will be used as the name of the layout file.
+
692 #
+
693 # Note that if you run doxygen from a directory containing a file called
+
694 # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+
695 # tag is left empty.
+
696 
+
697 LAYOUT_FILE =
+
698 
+
699 # The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+
700 # the reference definitions. This must be a list of .bib files. The .bib
+
701 # extension is automatically appended if omitted. This requires the bibtex tool
+
702 # to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
+
703 # For LaTeX the style of the bibliography can be controlled using
+
704 # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+
705 # search path. See also \cite for info how to create references.
+
706 
+
707 CITE_BIB_FILES =
+
708 
+
709 #---------------------------------------------------------------------------
+
710 # Configuration options related to warning and progress messages
+
711 #---------------------------------------------------------------------------
+
712 
+
713 # The QUIET tag can be used to turn on/off the messages that are generated to
+
714 # standard output by doxygen. If QUIET is set to YES this implies that the
+
715 # messages are off.
+
716 # The default value is: NO.
+
717 
+
718 QUIET = NO
+
719 
+
720 # The WARNINGS tag can be used to turn on/off the warning messages that are
+
721 # generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
+
722 # this implies that the warnings are on.
+
723 #
+
724 # Tip: Turn warnings on while writing the documentation.
+
725 # The default value is: YES.
+
726 
+
727 WARNINGS = YES
+
728 
+
729 # If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
+
730 # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
+
731 # will automatically be disabled.
+
732 # The default value is: YES.
+
733 
+
734 WARN_IF_UNDOCUMENTED = YES
+
735 
+
736 # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
+
737 # potential errors in the documentation, such as not documenting some parameters
+
738 # in a documented function, or documenting parameters that don't exist or using
+
739 # markup commands wrongly.
+
740 # The default value is: YES.
+
741 
+
742 WARN_IF_DOC_ERROR = YES
+
743 
+
744 # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+
745 # are documented, but have no documentation for their parameters or return
+
746 # value. If set to NO, doxygen will only warn about wrong or incomplete
+
747 # parameter documentation, but not about the absence of documentation.
+
748 # The default value is: NO.
+
749 
+
750 WARN_NO_PARAMDOC = NO
+
751 
+
752 # The WARN_FORMAT tag determines the format of the warning messages that doxygen
+
753 # can produce. The string should contain the $file, $line, and $text tags, which
+
754 # will be replaced by the file and line number from which the warning originated
+
755 # and the warning text. Optionally the format may contain $version, which will
+
756 # be replaced by the version of the file (if it could be obtained via
+
757 # FILE_VERSION_FILTER)
+
758 # The default value is: $file:$line: $text.
+
759 
+
760 WARN_FORMAT = "$file:$line: $text"
+
761 
+
762 # The WARN_LOGFILE tag can be used to specify a file to which warning and error
+
763 # messages should be written. If left blank the output is written to standard
+
764 # error (stderr).
+
765 
+
766 WARN_LOGFILE =
+
767 
+
768 #---------------------------------------------------------------------------
+
769 # Configuration options related to the input files
+
770 #---------------------------------------------------------------------------
+
771 
+
772 # The INPUT tag is used to specify the files and/or directories that contain
+
773 # documented source files. You may enter file names like myfile.cpp or
+
774 # directories like /usr/src/myproject. Separate the files or directories with
+
775 # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
+
776 # Note: If this tag is empty the current directory is searched.
+
777 
+
778 INPUT = ../glm \
+
779  .
+
780 
+
781 # This tag can be used to specify the character encoding of the source files
+
782 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+
783 # libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+
784 # documentation (see: http://www.gnu.org/software/libiconv) for the list of
+
785 # possible encodings.
+
786 # The default value is: UTF-8.
+
787 
+
788 INPUT_ENCODING = UTF-8
+
789 
+
790 # If the value of the INPUT tag contains directories, you can use the
+
791 # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
+
792 # *.h) to filter out the source-files in the directories.
+
793 #
+
794 # Note that for custom extensions or not directly supported extensions you also
+
795 # need to set EXTENSION_MAPPING for the extension otherwise the files are not
+
796 # read by doxygen.
+
797 #
+
798 # If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
+
799 # *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
+
800 # *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
+
801 # *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd,
+
802 # *.vhdl, *.ucf, *.qsf, *.as and *.js.
+
803 
+
804 FILE_PATTERNS = *.hpp \
+
805  *.doxy
+
806 
+
807 # The RECURSIVE tag can be used to specify whether or not subdirectories should
+
808 # be searched for input files as well.
+
809 # The default value is: NO.
+
810 
+
811 RECURSIVE = YES
+
812 
+
813 # The EXCLUDE tag can be used to specify files and/or directories that should be
+
814 # excluded from the INPUT source files. This way you can easily exclude a
+
815 # subdirectory from a directory tree whose root is specified with the INPUT tag.
+
816 #
+
817 # Note that relative paths are relative to the directory from which doxygen is
+
818 # run.
+
819 
+
820 EXCLUDE =
+
821 
+
822 # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+
823 # directories that are symbolic links (a Unix file system feature) are excluded
+
824 # from the input.
+
825 # The default value is: NO.
+
826 
+
827 EXCLUDE_SYMLINKS = NO
+
828 
+
829 # If the value of the INPUT tag contains directories, you can use the
+
830 # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+
831 # certain files from those directories.
+
832 #
+
833 # Note that the wildcards are matched against the file with absolute path, so to
+
834 # exclude all test directories for example use the pattern */test/*
+
835 
+
836 EXCLUDE_PATTERNS =
+
837 
+
838 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+
839 # (namespaces, classes, functions, etc.) that should be excluded from the
+
840 # output. The symbol name can be a fully qualified name, a word, or if the
+
841 # wildcard * is used, a substring. Examples: ANamespace, AClass,
+
842 # AClass::ANamespace, ANamespace::*Test
+
843 #
+
844 # Note that the wildcards are matched against the file with absolute path, so to
+
845 # exclude all test directories use the pattern */test/*
+
846 
+
847 EXCLUDE_SYMBOLS =
+
848 
+
849 # The EXAMPLE_PATH tag can be used to specify one or more files or directories
+
850 # that contain example code fragments that are included (see the \include
+
851 # command).
+
852 
+
853 EXAMPLE_PATH =
+
854 
+
855 # If the value of the EXAMPLE_PATH tag contains directories, you can use the
+
856 # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
+
857 # *.h) to filter out the source-files in the directories. If left blank all
+
858 # files are included.
+
859 
+
860 EXAMPLE_PATTERNS = *
+
861 
+
862 # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+
863 # searched for input files to be used with the \include or \dontinclude commands
+
864 # irrespective of the value of the RECURSIVE tag.
+
865 # The default value is: NO.
+
866 
+
867 EXAMPLE_RECURSIVE = NO
+
868 
+
869 # The IMAGE_PATH tag can be used to specify one or more files or directories
+
870 # that contain images that are to be included in the documentation (see the
+
871 # \image command).
+
872 
+
873 IMAGE_PATH =
+
874 
+
875 # The INPUT_FILTER tag can be used to specify a program that doxygen should
+
876 # invoke to filter for each input file. Doxygen will invoke the filter program
+
877 # by executing (via popen()) the command:
+
878 #
+
879 # <filter> <input-file>
+
880 #
+
881 # where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
+
882 # name of an input file. Doxygen will then use the output that the filter
+
883 # program writes to standard output. If FILTER_PATTERNS is specified, this tag
+
884 # will be ignored.
+
885 #
+
886 # Note that the filter must not add or remove lines; it is applied before the
+
887 # code is scanned, but not when the output code is generated. If lines are added
+
888 # or removed, the anchors will not be placed correctly.
+
889 
+
890 INPUT_FILTER =
+
891 
+
892 # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+
893 # basis. Doxygen will compare the file name with each pattern and apply the
+
894 # filter if there is a match. The filters are a list of the form: pattern=filter
+
895 # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
+
896 # filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+
897 # patterns match the file name, INPUT_FILTER is applied.
+
898 
+
899 FILTER_PATTERNS =
+
900 
+
901 # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+
902 # INPUT_FILTER) will also be used to filter the input files that are used for
+
903 # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
904 # The default value is: NO.
+
905 
+
906 FILTER_SOURCE_FILES = NO
+
907 
+
908 # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+
909 # pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+
910 # it is also possible to disable source filtering for a specific pattern using
+
911 # *.ext= (so without naming a filter).
+
912 # This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
+
913 
+
914 FILTER_SOURCE_PATTERNS =
+
915 
+
916 # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+
917 # is part of the input, its contents will be placed on the main page
+
918 # (index.html). This can be useful if you have a project on for instance GitHub
+
919 # and want to reuse the introduction page also for the doxygen output.
+
920 
+
921 USE_MDFILE_AS_MAINPAGE =
+
922 
+
923 #---------------------------------------------------------------------------
+
924 # Configuration options related to source browsing
+
925 #---------------------------------------------------------------------------
+
926 
+
927 # If the SOURCE_BROWSER tag is set to YES then a list of source files will be
+
928 # generated. Documented entities will be cross-referenced with these sources.
+
929 #
+
930 # Note: To get rid of all source code in the generated output, make sure that
+
931 # also VERBATIM_HEADERS is set to NO.
+
932 # The default value is: NO.
+
933 
+
934 SOURCE_BROWSER = YES
+
935 
+
936 # Setting the INLINE_SOURCES tag to YES will include the body of functions,
+
937 # classes and enums directly into the documentation.
+
938 # The default value is: NO.
+
939 
+
940 INLINE_SOURCES = NO
+
941 
+
942 # Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+
943 # special comment blocks from generated source code fragments. Normal C, C++ and
+
944 # Fortran comments will always remain visible.
+
945 # The default value is: YES.
+
946 
+
947 STRIP_CODE_COMMENTS = YES
+
948 
+
949 # If the REFERENCED_BY_RELATION tag is set to YES then for each documented
+
950 # function all documented functions referencing it will be listed.
+
951 # The default value is: NO.
+
952 
+
953 REFERENCED_BY_RELATION = YES
+
954 
+
955 # If the REFERENCES_RELATION tag is set to YES then for each documented function
+
956 # all documented entities called/used by that function will be listed.
+
957 # The default value is: NO.
+
958 
+
959 REFERENCES_RELATION = YES
+
960 
+
961 # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
+
962 # to YES then the hyperlinks from functions in REFERENCES_RELATION and
+
963 # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
+
964 # link to the documentation.
+
965 # The default value is: YES.
+
966 
+
967 REFERENCES_LINK_SOURCE = YES
+
968 
+
969 # If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+
970 # source code will show a tooltip with additional information such as prototype,
+
971 # brief description and links to the definition and documentation. Since this
+
972 # will make the HTML file larger and loading of large files a bit slower, you
+
973 # can opt to disable this feature.
+
974 # The default value is: YES.
+
975 # This tag requires that the tag SOURCE_BROWSER is set to YES.
+
976 
+
977 SOURCE_TOOLTIPS = YES
+
978 
+
979 # If the USE_HTAGS tag is set to YES then the references to source code will
+
980 # point to the HTML generated by the htags(1) tool instead of doxygen built-in
+
981 # source browser. The htags tool is part of GNU's global source tagging system
+
982 # (see http://www.gnu.org/software/global/global.html). You will need version
+
983 # 4.8.6 or higher.
+
984 #
+
985 # To use it do the following:
+
986 # - Install the latest version of global
+
987 # - Enable SOURCE_BROWSER and USE_HTAGS in the config file
+
988 # - Make sure the INPUT points to the root of the source tree
+
989 # - Run doxygen as normal
+
990 #
+
991 # Doxygen will invoke htags (and that will in turn invoke gtags), so these
+
992 # tools must be available from the command line (i.e. in the search path).
+
993 #
+
994 # The result: instead of the source browser generated by doxygen, the links to
+
995 # source code will now point to the output of htags.
+
996 # The default value is: NO.
+
997 # This tag requires that the tag SOURCE_BROWSER is set to YES.
+
998 
+
999 USE_HTAGS = NO
+
1000 
+
1001 # If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
+
1002 # verbatim copy of the header file for each class for which an include is
+
1003 # specified. Set to NO to disable this.
+
1004 # See also: Section \class.
+
1005 # The default value is: YES.
+
1006 
+
1007 VERBATIM_HEADERS = YES
+
1008 
+
1009 #---------------------------------------------------------------------------
+
1010 # Configuration options related to the alphabetical class index
+
1011 #---------------------------------------------------------------------------
+
1012 
+
1013 # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
+
1014 # compounds will be generated. Enable this if the project contains a lot of
+
1015 # classes, structs, unions or interfaces.
+
1016 # The default value is: YES.
+
1017 
+
1018 ALPHABETICAL_INDEX = NO
+
1019 
+
1020 # The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+
1021 # which the alphabetical index list will be split.
+
1022 # Minimum value: 1, maximum value: 20, default value: 5.
+
1023 # This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
1024 
+
1025 COLS_IN_ALPHA_INDEX = 5
+
1026 
+
1027 # In case all classes in a project start with a common prefix, all classes will
+
1028 # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
+
1029 # can be used to specify a prefix (or a list of prefixes) that should be ignored
+
1030 # while generating the index headers.
+
1031 # This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
1032 
+
1033 IGNORE_PREFIX =
+
1034 
+
1035 #---------------------------------------------------------------------------
+
1036 # Configuration options related to the HTML output
+
1037 #---------------------------------------------------------------------------
+
1038 
+
1039 # If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
+
1040 # The default value is: YES.
+
1041 
+
1042 GENERATE_HTML = YES
+
1043 
+
1044 # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
+
1045 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+
1046 # it.
+
1047 # The default directory is: html.
+
1048 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1049 
+
1050 HTML_OUTPUT = html
+
1051 
+
1052 # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
+
1053 # generated HTML page (for example: .htm, .php, .asp).
+
1054 # The default value is: .html.
+
1055 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1056 
+
1057 HTML_FILE_EXTENSION = .html
+
1058 
+
1059 # The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+
1060 # each generated HTML page. If the tag is left blank doxygen will generate a
+
1061 # standard header.
+
1062 #
+
1063 # To get valid HTML the header file that includes any scripts and style sheets
+
1064 # that doxygen needs, which is dependent on the configuration options used (e.g.
+
1065 # the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+
1066 # default header using
+
1067 # doxygen -w html new_header.html new_footer.html new_stylesheet.css
+
1068 # YourConfigFile
+
1069 # and then modify the file new_header.html. See also section "Doxygen usage"
+
1070 # for information on how to generate the default header that doxygen normally
+
1071 # uses.
+
1072 # Note: The header is subject to change so you typically have to regenerate the
+
1073 # default header when upgrading to a newer version of doxygen. For a description
+
1074 # of the possible markers and block names see the documentation.
+
1075 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1076 
+
1077 HTML_HEADER =
+
1078 
+
1079 # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+
1080 # generated HTML page. If the tag is left blank doxygen will generate a standard
+
1081 # footer. See HTML_HEADER for more information on how to generate a default
+
1082 # footer and what special commands can be used inside the footer. See also
+
1083 # section "Doxygen usage" for information on how to generate the default footer
+
1084 # that doxygen normally uses.
+
1085 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1086 
+
1087 HTML_FOOTER =
+
1088 
+
1089 # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
+
1090 # sheet that is used by each HTML page. It can be used to fine-tune the look of
+
1091 # the HTML output. If left blank doxygen will generate a default style sheet.
+
1092 # See also section "Doxygen usage" for information on how to generate the style
+
1093 # sheet that doxygen normally uses.
+
1094 # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+
1095 # it is more robust and this tag (HTML_STYLESHEET) will in the future become
+
1096 # obsolete.
+
1097 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1098 
+
1099 HTML_STYLESHEET =
+
1100 
+
1101 # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+
1102 # cascading style sheets that are included after the standard style sheets
+
1103 # created by doxygen. Using this option one can overrule certain style aspects.
+
1104 # This is preferred over using HTML_STYLESHEET since it does not replace the
+
1105 # standard style sheet and is therefore more robust against future updates.
+
1106 # Doxygen will copy the style sheet files to the output directory.
+
1107 # Note: The order of the extra style sheet files is of importance (e.g. the last
+
1108 # style sheet in the list overrules the setting of the previous ones in the
+
1109 # list). For an example see the documentation.
+
1110 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1111 
+
1112 HTML_EXTRA_STYLESHEET =
+
1113 
+
1114 # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+
1115 # other source files which should be copied to the HTML output directory. Note
+
1116 # that these files will be copied to the base HTML output directory. Use the
+
1117 # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+
1118 # files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+
1119 # files will be copied as-is; there are no commands or markers available.
+
1120 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1121 
+
1122 HTML_EXTRA_FILES =
+
1123 
+
1124 # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+
1125 # will adjust the colors in the style sheet and background images according to
+
1126 # this color. Hue is specified as an angle on a colorwheel, see
+
1127 # http://en.wikipedia.org/wiki/Hue for more information. For instance the value
+
1128 # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+
1129 # purple, and 360 is red again.
+
1130 # Minimum value: 0, maximum value: 359, default value: 220.
+
1131 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1132 
+
1133 HTML_COLORSTYLE_HUE = 220
+
1134 
+
1135 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+
1136 # in the HTML output. For a value of 0 the output will use grayscales only. A
+
1137 # value of 255 will produce the most vivid colors.
+
1138 # Minimum value: 0, maximum value: 255, default value: 100.
+
1139 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1140 
+
1141 HTML_COLORSTYLE_SAT = 100
+
1142 
+
1143 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+
1144 # luminance component of the colors in the HTML output. Values below 100
+
1145 # gradually make the output lighter, whereas values above 100 make the output
+
1146 # darker. The value divided by 100 is the actual gamma applied, so 80 represents
+
1147 # a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+
1148 # change the gamma.
+
1149 # Minimum value: 40, maximum value: 240, default value: 80.
+
1150 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1151 
+
1152 HTML_COLORSTYLE_GAMMA = 80
+
1153 
+
1154 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+
1155 # page will contain the date and time when the page was generated. Setting this
+
1156 # to YES can help to show when doxygen was last run and thus if the
+
1157 # documentation is up to date.
+
1158 # The default value is: NO.
+
1159 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1160 
+
1161 HTML_TIMESTAMP = NO
+
1162 
+
1163 # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+
1164 # documentation will contain sections that can be hidden and shown after the
+
1165 # page has loaded.
+
1166 # The default value is: NO.
+
1167 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1168 
+
1169 HTML_DYNAMIC_SECTIONS = NO
+
1170 
+
1171 # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+
1172 # shown in the various tree structured indices initially; the user can expand
+
1173 # and collapse entries dynamically later on. Doxygen will expand the tree to
+
1174 # such a level that at most the specified number of entries are visible (unless
+
1175 # a fully collapsed tree already exceeds this amount). So setting the number of
+
1176 # entries 1 will produce a full collapsed tree by default. 0 is a special value
+
1177 # representing an infinite number of entries and will result in a full expanded
+
1178 # tree by default.
+
1179 # Minimum value: 0, maximum value: 9999, default value: 100.
+
1180 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1181 
+
1182 HTML_INDEX_NUM_ENTRIES = 100
+
1183 
+
1184 # If the GENERATE_DOCSET tag is set to YES, additional index files will be
+
1185 # generated that can be used as input for Apple's Xcode 3 integrated development
+
1186 # environment (see: http://developer.apple.com/tools/xcode/), introduced with
+
1187 # OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
+
1188 # Makefile in the HTML output directory. Running make will produce the docset in
+
1189 # that directory and running make install will install the docset in
+
1190 # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
+
1191 # startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+
1192 # for more information.
+
1193 # The default value is: NO.
+
1194 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1195 
+
1196 GENERATE_DOCSET = NO
+
1197 
+
1198 # This tag determines the name of the docset feed. A documentation feed provides
+
1199 # an umbrella under which multiple documentation sets from a single provider
+
1200 # (such as a company or product suite) can be grouped.
+
1201 # The default value is: Doxygen generated docs.
+
1202 # This tag requires that the tag GENERATE_DOCSET is set to YES.
+
1203 
+
1204 DOCSET_FEEDNAME = "Doxygen generated docs"
+
1205 
+
1206 # This tag specifies a string that should uniquely identify the documentation
+
1207 # set bundle. This should be a reverse domain-name style string, e.g.
+
1208 # com.mycompany.MyDocSet. Doxygen will append .docset to the name.
+
1209 # The default value is: org.doxygen.Project.
+
1210 # This tag requires that the tag GENERATE_DOCSET is set to YES.
+
1211 
+
1212 DOCSET_BUNDLE_ID = org.doxygen.Project
+
1213 
+
1214 # The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+
1215 # the documentation publisher. This should be a reverse domain-name style
+
1216 # string, e.g. com.mycompany.MyDocSet.documentation.
+
1217 # The default value is: org.doxygen.Publisher.
+
1218 # This tag requires that the tag GENERATE_DOCSET is set to YES.
+
1219 
+
1220 DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+
1221 
+
1222 # The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+
1223 # The default value is: Publisher.
+
1224 # This tag requires that the tag GENERATE_DOCSET is set to YES.
+
1225 
+
1226 DOCSET_PUBLISHER_NAME = Publisher
+
1227 
+
1228 # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+
1229 # additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+
1230 # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+
1231 # (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+
1232 # Windows.
+
1233 #
+
1234 # The HTML Help Workshop contains a compiler that can convert all HTML output
+
1235 # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+
1236 # files are now used as the Windows 98 help format, and will replace the old
+
1237 # Windows help format (.hlp) on all Windows platforms in the future. Compressed
+
1238 # HTML files also contain an index, a table of contents, and you can search for
+
1239 # words in the documentation. The HTML workshop also contains a viewer for
+
1240 # compressed HTML files.
+
1241 # The default value is: NO.
+
1242 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1243 
+
1244 GENERATE_HTMLHELP = NO
+
1245 
+
1246 # The CHM_FILE tag can be used to specify the file name of the resulting .chm
+
1247 # file. You can add a path in front of the file if the result should not be
+
1248 # written to the html output directory.
+
1249 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
1250 
+
1251 CHM_FILE =
+
1252 
+
1253 # The HHC_LOCATION tag can be used to specify the location (absolute path
+
1254 # including file name) of the HTML help compiler (hhc.exe). If non-empty,
+
1255 # doxygen will try to run the HTML help compiler on the generated index.hhp.
+
1256 # The file has to be specified with full path.
+
1257 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
1258 
+
1259 HHC_LOCATION =
+
1260 
+
1261 # The GENERATE_CHI flag controls if a separate .chi index file is generated
+
1262 # (YES) or that it should be included in the master .chm file (NO).
+
1263 # The default value is: NO.
+
1264 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
1265 
+
1266 GENERATE_CHI = NO
+
1267 
+
1268 # The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
+
1269 # and project file content.
+
1270 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
1271 
+
1272 CHM_INDEX_ENCODING =
+
1273 
+
1274 # The BINARY_TOC flag controls whether a binary table of contents is generated
+
1275 # (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
+
1276 # enables the Previous and Next buttons.
+
1277 # The default value is: NO.
+
1278 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
1279 
+
1280 BINARY_TOC = NO
+
1281 
+
1282 # The TOC_EXPAND flag can be set to YES to add extra items for group members to
+
1283 # the table of contents of the HTML help documentation and to the tree view.
+
1284 # The default value is: NO.
+
1285 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
1286 
+
1287 TOC_EXPAND = NO
+
1288 
+
1289 # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+
1290 # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
+
1291 # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
+
1292 # (.qch) of the generated HTML documentation.
+
1293 # The default value is: NO.
+
1294 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1295 
+
1296 GENERATE_QHP = NO
+
1297 
+
1298 # If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
+
1299 # the file name of the resulting .qch file. The path specified is relative to
+
1300 # the HTML output folder.
+
1301 # This tag requires that the tag GENERATE_QHP is set to YES.
+
1302 
+
1303 QCH_FILE =
+
1304 
+
1305 # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+
1306 # Project output. For more information please see Qt Help Project / Namespace
+
1307 # (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
+
1308 # The default value is: org.doxygen.Project.
+
1309 # This tag requires that the tag GENERATE_QHP is set to YES.
+
1310 
+
1311 QHP_NAMESPACE = org.doxygen.Project
+
1312 
+
1313 # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+
1314 # Help Project output. For more information please see Qt Help Project / Virtual
+
1315 # Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
+
1316 # folders).
+
1317 # The default value is: doc.
+
1318 # This tag requires that the tag GENERATE_QHP is set to YES.
+
1319 
+
1320 QHP_VIRTUAL_FOLDER = doc
+
1321 
+
1322 # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+
1323 # filter to add. For more information please see Qt Help Project / Custom
+
1324 # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+
1325 # filters).
+
1326 # This tag requires that the tag GENERATE_QHP is set to YES.
+
1327 
+
1328 QHP_CUST_FILTER_NAME =
+
1329 
+
1330 # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+
1331 # custom filter to add. For more information please see Qt Help Project / Custom
+
1332 # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+
1333 # filters).
+
1334 # This tag requires that the tag GENERATE_QHP is set to YES.
+
1335 
+
1336 QHP_CUST_FILTER_ATTRS =
+
1337 
+
1338 # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+
1339 # project's filter section matches. Qt Help Project / Filter Attributes (see:
+
1340 # http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
+
1341 # This tag requires that the tag GENERATE_QHP is set to YES.
+
1342 
+
1343 QHP_SECT_FILTER_ATTRS =
+
1344 
+
1345 # The QHG_LOCATION tag can be used to specify the location of Qt's
+
1346 # qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
+
1347 # generated .qhp file.
+
1348 # This tag requires that the tag GENERATE_QHP is set to YES.
+
1349 
+
1350 QHG_LOCATION =
+
1351 
+
1352 # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+
1353 # generated, together with the HTML files, they form an Eclipse help plugin. To
+
1354 # install this plugin and make it available under the help contents menu in
+
1355 # Eclipse, the contents of the directory containing the HTML and XML files needs
+
1356 # to be copied into the plugins directory of eclipse. The name of the directory
+
1357 # within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+
1358 # After copying Eclipse needs to be restarted before the help appears.
+
1359 # The default value is: NO.
+
1360 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1361 
+
1362 GENERATE_ECLIPSEHELP = NO
+
1363 
+
1364 # A unique identifier for the Eclipse help plugin. When installing the plugin
+
1365 # the directory name containing the HTML and XML files should also have this
+
1366 # name. Each documentation set should have its own identifier.
+
1367 # The default value is: org.doxygen.Project.
+
1368 # This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
+
1369 
+
1370 ECLIPSE_DOC_ID = org.doxygen.Project
+
1371 
+
1372 # If you want full control over the layout of the generated HTML pages it might
+
1373 # be necessary to disable the index and replace it with your own. The
+
1374 # DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+
1375 # of each HTML page. A value of NO enables the index and the value YES disables
+
1376 # it. Since the tabs in the index contain the same information as the navigation
+
1377 # tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+
1378 # The default value is: NO.
+
1379 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1380 
+
1381 DISABLE_INDEX = NO
+
1382 
+
1383 # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+
1384 # structure should be generated to display hierarchical information. If the tag
+
1385 # value is set to YES, a side panel will be generated containing a tree-like
+
1386 # index structure (just like the one that is generated for HTML Help). For this
+
1387 # to work a browser that supports JavaScript, DHTML, CSS and frames is required
+
1388 # (i.e. any modern browser). Windows users are probably better off using the
+
1389 # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
+
1390 # further fine-tune the look of the index. As an example, the default style
+
1391 # sheet generated by doxygen has an example that shows how to put an image at
+
1392 # the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+
1393 # the same information as the tab index, you could consider setting
+
1394 # DISABLE_INDEX to YES when enabling this option.
+
1395 # The default value is: NO.
+
1396 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1397 
+
1398 GENERATE_TREEVIEW = NO
+
1399 
+
1400 # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+
1401 # doxygen will group on one line in the generated HTML documentation.
+
1402 #
+
1403 # Note that a value of 0 will completely suppress the enum values from appearing
+
1404 # in the overview section.
+
1405 # Minimum value: 0, maximum value: 20, default value: 4.
+
1406 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1407 
+
1408 ENUM_VALUES_PER_LINE = 4
+
1409 
+
1410 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
+
1411 # to set the initial width (in pixels) of the frame in which the tree is shown.
+
1412 # Minimum value: 0, maximum value: 1500, default value: 250.
+
1413 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1414 
+
1415 TREEVIEW_WIDTH = 250
+
1416 
+
1417 # If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
+
1418 # external symbols imported via tag files in a separate window.
+
1419 # The default value is: NO.
+
1420 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1421 
+
1422 EXT_LINKS_IN_WINDOW = NO
+
1423 
+
1424 # Use this tag to change the font size of LaTeX formulas included as images in
+
1425 # the HTML documentation. When you change the font size after a successful
+
1426 # doxygen run you need to manually remove any form_*.png images from the HTML
+
1427 # output directory to force them to be regenerated.
+
1428 # Minimum value: 8, maximum value: 50, default value: 10.
+
1429 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1430 
+
1431 FORMULA_FONTSIZE = 10
+
1432 
+
1433 # Use the FORMULA_TRANPARENT tag to determine whether or not the images
+
1434 # generated for formulas are transparent PNGs. Transparent PNGs are not
+
1435 # supported properly for IE 6.0, but are supported on all modern browsers.
+
1436 #
+
1437 # Note that when changing this option you need to delete any form_*.png files in
+
1438 # the HTML output directory before the changes have effect.
+
1439 # The default value is: YES.
+
1440 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1441 
+
1442 FORMULA_TRANSPARENT = YES
+
1443 
+
1444 # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+
1445 # http://www.mathjax.org) which uses client side Javascript for the rendering
+
1446 # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
+
1447 # installed or if you want to formulas look prettier in the HTML output. When
+
1448 # enabled you may also need to install MathJax separately and configure the path
+
1449 # to it using the MATHJAX_RELPATH option.
+
1450 # The default value is: NO.
+
1451 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1452 
+
1453 USE_MATHJAX = NO
+
1454 
+
1455 # When MathJax is enabled you can set the default output format to be used for
+
1456 # the MathJax output. See the MathJax site (see:
+
1457 # http://docs.mathjax.org/en/latest/output.html) for more details.
+
1458 # Possible values are: HTML-CSS (which is slower, but has the best
+
1459 # compatibility), NativeMML (i.e. MathML) and SVG.
+
1460 # The default value is: HTML-CSS.
+
1461 # This tag requires that the tag USE_MATHJAX is set to YES.
+
1462 
+
1463 MATHJAX_FORMAT = HTML-CSS
+
1464 
+
1465 # When MathJax is enabled you need to specify the location relative to the HTML
+
1466 # output directory using the MATHJAX_RELPATH option. The destination directory
+
1467 # should contain the MathJax.js script. For instance, if the mathjax directory
+
1468 # is located at the same level as the HTML output directory, then
+
1469 # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+
1470 # Content Delivery Network so you can quickly see the result without installing
+
1471 # MathJax. However, it is strongly recommended to install a local copy of
+
1472 # MathJax from http://www.mathjax.org before deployment.
+
1473 # The default value is: http://cdn.mathjax.org/mathjax/latest.
+
1474 # This tag requires that the tag USE_MATHJAX is set to YES.
+
1475 
+
1476 MATHJAX_RELPATH = http://www.mathjax.org/mathjax
+
1477 
+
1478 # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+
1479 # extension names that should be enabled during MathJax rendering. For example
+
1480 # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+
1481 # This tag requires that the tag USE_MATHJAX is set to YES.
+
1482 
+
1483 MATHJAX_EXTENSIONS =
+
1484 
+
1485 # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+
1486 # of code that will be used on startup of the MathJax code. See the MathJax site
+
1487 # (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+
1488 # example see the documentation.
+
1489 # This tag requires that the tag USE_MATHJAX is set to YES.
+
1490 
+
1491 MATHJAX_CODEFILE =
+
1492 
+
1493 # When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+
1494 # the HTML output. The underlying search engine uses javascript and DHTML and
+
1495 # should work on any modern browser. Note that when using HTML help
+
1496 # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+
1497 # there is already a search function so this one should typically be disabled.
+
1498 # For large projects the javascript based search engine can be slow, then
+
1499 # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+
1500 # search using the keyboard; to jump to the search box use <access key> + S
+
1501 # (what the <access key> is depends on the OS and browser, but it is typically
+
1502 # <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
+
1503 # key> to jump into the search results window, the results can be navigated
+
1504 # using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
+
1505 # the search. The filter options can be selected when the cursor is inside the
+
1506 # search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
+
1507 # to select a filter and <Enter> or <escape> to activate or cancel the filter
+
1508 # option.
+
1509 # The default value is: YES.
+
1510 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1511 
+
1512 SEARCHENGINE = NO
+
1513 
+
1514 # When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+
1515 # implemented using a web server instead of a web client using Javascript. There
+
1516 # are two flavors of web server based searching depending on the EXTERNAL_SEARCH
+
1517 # setting. When disabled, doxygen will generate a PHP script for searching and
+
1518 # an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
+
1519 # and searching needs to be provided by external tools. See the section
+
1520 # "External Indexing and Searching" for details.
+
1521 # The default value is: NO.
+
1522 # This tag requires that the tag SEARCHENGINE is set to YES.
+
1523 
+
1524 SERVER_BASED_SEARCH = NO
+
1525 
+
1526 # When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+
1527 # script for searching. Instead the search results are written to an XML file
+
1528 # which needs to be processed by an external indexer. Doxygen will invoke an
+
1529 # external search engine pointed to by the SEARCHENGINE_URL option to obtain the
+
1530 # search results.
+
1531 #
+
1532 # Doxygen ships with an example indexer (doxyindexer) and search engine
+
1533 # (doxysearch.cgi) which are based on the open source search engine library
+
1534 # Xapian (see: http://xapian.org/).
+
1535 #
+
1536 # See the section "External Indexing and Searching" for details.
+
1537 # The default value is: NO.
+
1538 # This tag requires that the tag SEARCHENGINE is set to YES.
+
1539 
+
1540 EXTERNAL_SEARCH = NO
+
1541 
+
1542 # The SEARCHENGINE_URL should point to a search engine hosted by a web server
+
1543 # which will return the search results when EXTERNAL_SEARCH is enabled.
+
1544 #
+
1545 # Doxygen ships with an example indexer (doxyindexer) and search engine
+
1546 # (doxysearch.cgi) which are based on the open source search engine library
+
1547 # Xapian (see: http://xapian.org/). See the section "External Indexing and
+
1548 # Searching" for details.
+
1549 # This tag requires that the tag SEARCHENGINE is set to YES.
+
1550 
+
1551 SEARCHENGINE_URL =
+
1552 
+
1553 # When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+
1554 # search data is written to a file for indexing by an external tool. With the
+
1555 # SEARCHDATA_FILE tag the name of this file can be specified.
+
1556 # The default file is: searchdata.xml.
+
1557 # This tag requires that the tag SEARCHENGINE is set to YES.
+
1558 
+
1559 SEARCHDATA_FILE = searchdata.xml
+
1560 
+
1561 # When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
+
1562 # EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+
1563 # useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+
1564 # projects and redirect the results back to the right project.
+
1565 # This tag requires that the tag SEARCHENGINE is set to YES.
+
1566 
+
1567 EXTERNAL_SEARCH_ID =
+
1568 
+
1569 # The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+
1570 # projects other than the one defined by this configuration file, but that are
+
1571 # all added to the same external search index. Each project needs to have a
+
1572 # unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
+
1573 # to a relative location where the documentation can be found. The format is:
+
1574 # EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
+
1575 # This tag requires that the tag SEARCHENGINE is set to YES.
+
1576 
+
1577 EXTRA_SEARCH_MAPPINGS =
+
1578 
+
1579 #---------------------------------------------------------------------------
+
1580 # Configuration options related to the LaTeX output
+
1581 #---------------------------------------------------------------------------
+
1582 
+
1583 # If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
+
1584 # The default value is: YES.
+
1585 
+
1586 GENERATE_LATEX = NO
+
1587 
+
1588 # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
+
1589 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+
1590 # it.
+
1591 # The default directory is: latex.
+
1592 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1593 
+
1594 LATEX_OUTPUT = latex
+
1595 
+
1596 # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+
1597 # invoked.
+
1598 #
+
1599 # Note that when enabling USE_PDFLATEX this option is only used for generating
+
1600 # bitmaps for formulas in the HTML output, but not in the Makefile that is
+
1601 # written to the output directory.
+
1602 # The default file is: latex.
+
1603 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1604 
+
1605 LATEX_CMD_NAME = latex
+
1606 
+
1607 # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
+
1608 # index for LaTeX.
+
1609 # The default file is: makeindex.
+
1610 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1611 
+
1612 MAKEINDEX_CMD_NAME = makeindex
+
1613 
+
1614 # If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
+
1615 # documents. This may be useful for small projects and may help to save some
+
1616 # trees in general.
+
1617 # The default value is: NO.
+
1618 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1619 
+
1620 COMPACT_LATEX = NO
+
1621 
+
1622 # The PAPER_TYPE tag can be used to set the paper type that is used by the
+
1623 # printer.
+
1624 # Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
+
1625 # 14 inches) and executive (7.25 x 10.5 inches).
+
1626 # The default value is: a4.
+
1627 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1628 
+
1629 PAPER_TYPE = a4wide
+
1630 
+
1631 # The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
+
1632 # that should be included in the LaTeX output. The package can be specified just
+
1633 # by its name or with the correct syntax as to be used with the LaTeX
+
1634 # \usepackage command. To get the times font for instance you can specify :
+
1635 # EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
+
1636 # To use the option intlimits with the amsmath package you can specify:
+
1637 # EXTRA_PACKAGES=[intlimits]{amsmath}
+
1638 # If left blank no extra packages will be included.
+
1639 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1640 
+
1641 EXTRA_PACKAGES =
+
1642 
+
1643 # The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
+
1644 # generated LaTeX document. The header should contain everything until the first
+
1645 # chapter. If it is left blank doxygen will generate a standard header. See
+
1646 # section "Doxygen usage" for information on how to let doxygen write the
+
1647 # default header to a separate file.
+
1648 #
+
1649 # Note: Only use a user-defined header if you know what you are doing! The
+
1650 # following commands have a special meaning inside the header: $title,
+
1651 # $datetime, $date, $doxygenversion, $projectname, $projectnumber,
+
1652 # $projectbrief, $projectlogo. Doxygen will replace $title with the empty
+
1653 # string, for the replacement values of the other commands the user is referred
+
1654 # to HTML_HEADER.
+
1655 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1656 
+
1657 LATEX_HEADER =
+
1658 
+
1659 # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
+
1660 # generated LaTeX document. The footer should contain everything after the last
+
1661 # chapter. If it is left blank doxygen will generate a standard footer. See
+
1662 # LATEX_HEADER for more information on how to generate a default footer and what
+
1663 # special commands can be used inside the footer.
+
1664 #
+
1665 # Note: Only use a user-defined footer if you know what you are doing!
+
1666 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1667 
+
1668 LATEX_FOOTER =
+
1669 
+
1670 # The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+
1671 # LaTeX style sheets that are included after the standard style sheets created
+
1672 # by doxygen. Using this option one can overrule certain style aspects. Doxygen
+
1673 # will copy the style sheet files to the output directory.
+
1674 # Note: The order of the extra style sheet files is of importance (e.g. the last
+
1675 # style sheet in the list overrules the setting of the previous ones in the
+
1676 # list).
+
1677 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1678 
+
1679 LATEX_EXTRA_STYLESHEET =
+
1680 
+
1681 # The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
+
1682 # other source files which should be copied to the LATEX_OUTPUT output
+
1683 # directory. Note that the files will be copied as-is; there are no commands or
+
1684 # markers available.
+
1685 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1686 
+
1687 LATEX_EXTRA_FILES =
+
1688 
+
1689 # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
+
1690 # prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
+
1691 # contain links (just like the HTML output) instead of page references. This
+
1692 # makes the output suitable for online browsing using a PDF viewer.
+
1693 # The default value is: YES.
+
1694 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1695 
+
1696 PDF_HYPERLINKS = NO
+
1697 
+
1698 # If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+
1699 # the PDF file directly from the LaTeX files. Set this option to YES, to get a
+
1700 # higher quality PDF documentation.
+
1701 # The default value is: YES.
+
1702 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1703 
+
1704 USE_PDFLATEX = YES
+
1705 
+
1706 # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
+
1707 # command to the generated LaTeX files. This will instruct LaTeX to keep running
+
1708 # if errors occur, instead of asking the user for help. This option is also used
+
1709 # when generating formulas in HTML.
+
1710 # The default value is: NO.
+
1711 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1712 
+
1713 LATEX_BATCHMODE = NO
+
1714 
+
1715 # If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+
1716 # index chapters (such as File Index, Compound Index, etc.) in the output.
+
1717 # The default value is: NO.
+
1718 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1719 
+
1720 LATEX_HIDE_INDICES = NO
+
1721 
+
1722 # If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
+
1723 # code with syntax highlighting in the LaTeX output.
+
1724 #
+
1725 # Note that which sources are shown also depends on other settings such as
+
1726 # SOURCE_BROWSER.
+
1727 # The default value is: NO.
+
1728 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1729 
+
1730 LATEX_SOURCE_CODE = NO
+
1731 
+
1732 # The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+
1733 # bibliography, e.g. plainnat, or ieeetr. See
+
1734 # http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+
1735 # The default value is: plain.
+
1736 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1737 
+
1738 LATEX_BIB_STYLE = plain
+
1739 
+
1740 #---------------------------------------------------------------------------
+
1741 # Configuration options related to the RTF output
+
1742 #---------------------------------------------------------------------------
+
1743 
+
1744 # If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
+
1745 # RTF output is optimized for Word 97 and may not look too pretty with other RTF
+
1746 # readers/editors.
+
1747 # The default value is: NO.
+
1748 
+
1749 GENERATE_RTF = NO
+
1750 
+
1751 # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
+
1752 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+
1753 # it.
+
1754 # The default directory is: rtf.
+
1755 # This tag requires that the tag GENERATE_RTF is set to YES.
+
1756 
+
1757 RTF_OUTPUT = glm.rtf
+
1758 
+
1759 # If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
+
1760 # documents. This may be useful for small projects and may help to save some
+
1761 # trees in general.
+
1762 # The default value is: NO.
+
1763 # This tag requires that the tag GENERATE_RTF is set to YES.
+
1764 
+
1765 COMPACT_RTF = NO
+
1766 
+
1767 # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
+
1768 # contain hyperlink fields. The RTF file will contain links (just like the HTML
+
1769 # output) instead of page references. This makes the output suitable for online
+
1770 # browsing using Word or some other Word compatible readers that support those
+
1771 # fields.
+
1772 #
+
1773 # Note: WordPad (write) and others do not support links.
+
1774 # The default value is: NO.
+
1775 # This tag requires that the tag GENERATE_RTF is set to YES.
+
1776 
+
1777 RTF_HYPERLINKS = YES
+
1778 
+
1779 # Load stylesheet definitions from file. Syntax is similar to doxygen's config
+
1780 # file, i.e. a series of assignments. You only have to provide replacements,
+
1781 # missing definitions are set to their default value.
+
1782 #
+
1783 # See also section "Doxygen usage" for information on how to generate the
+
1784 # default style sheet that doxygen normally uses.
+
1785 # This tag requires that the tag GENERATE_RTF is set to YES.
+
1786 
+
1787 RTF_STYLESHEET_FILE =
+
1788 
+
1789 # Set optional variables used in the generation of an RTF document. Syntax is
+
1790 # similar to doxygen's config file. A template extensions file can be generated
+
1791 # using doxygen -e rtf extensionFile.
+
1792 # This tag requires that the tag GENERATE_RTF is set to YES.
+
1793 
+
1794 RTF_EXTENSIONS_FILE =
+
1795 
+
1796 # If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
+
1797 # with syntax highlighting in the RTF output.
+
1798 #
+
1799 # Note that which sources are shown also depends on other settings such as
+
1800 # SOURCE_BROWSER.
+
1801 # The default value is: NO.
+
1802 # This tag requires that the tag GENERATE_RTF is set to YES.
+
1803 
+
1804 RTF_SOURCE_CODE = NO
+
1805 
+
1806 #---------------------------------------------------------------------------
+
1807 # Configuration options related to the man page output
+
1808 #---------------------------------------------------------------------------
+
1809 
+
1810 # If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
+
1811 # classes and files.
+
1812 # The default value is: NO.
+
1813 
+
1814 GENERATE_MAN = NO
+
1815 
+
1816 # The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
+
1817 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+
1818 # it. A directory man3 will be created inside the directory specified by
+
1819 # MAN_OUTPUT.
+
1820 # The default directory is: man.
+
1821 # This tag requires that the tag GENERATE_MAN is set to YES.
+
1822 
+
1823 MAN_OUTPUT = man
+
1824 
+
1825 # The MAN_EXTENSION tag determines the extension that is added to the generated
+
1826 # man pages. In case the manual section does not start with a number, the number
+
1827 # 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
+
1828 # optional.
+
1829 # The default value is: .3.
+
1830 # This tag requires that the tag GENERATE_MAN is set to YES.
+
1831 
+
1832 MAN_EXTENSION = .3
+
1833 
+
1834 # The MAN_SUBDIR tag determines the name of the directory created within
+
1835 # MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
+
1836 # MAN_EXTENSION with the initial . removed.
+
1837 # This tag requires that the tag GENERATE_MAN is set to YES.
+
1838 
+
1839 MAN_SUBDIR =
+
1840 
+
1841 # If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
+
1842 # will generate one additional man file for each entity documented in the real
+
1843 # man page(s). These additional files only source the real man page, but without
+
1844 # them the man command would be unable to find the correct page.
+
1845 # The default value is: NO.
+
1846 # This tag requires that the tag GENERATE_MAN is set to YES.
+
1847 
+
1848 MAN_LINKS = NO
+
1849 
+
1850 #---------------------------------------------------------------------------
+
1851 # Configuration options related to the XML output
+
1852 #---------------------------------------------------------------------------
+
1853 
+
1854 # If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
+
1855 # captures the structure of the code including all documentation.
+
1856 # The default value is: NO.
+
1857 
+
1858 GENERATE_XML = NO
+
1859 
+
1860 # The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
+
1861 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+
1862 # it.
+
1863 # The default directory is: xml.
+
1864 # This tag requires that the tag GENERATE_XML is set to YES.
+
1865 
+
1866 XML_OUTPUT = xml
+
1867 
+
1868 # If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
+
1869 # listings (including syntax highlighting and cross-referencing information) to
+
1870 # the XML output. Note that enabling this will significantly increase the size
+
1871 # of the XML output.
+
1872 # The default value is: YES.
+
1873 # This tag requires that the tag GENERATE_XML is set to YES.
+
1874 
+
1875 XML_PROGRAMLISTING = YES
+
1876 
+
1877 #---------------------------------------------------------------------------
+
1878 # Configuration options related to the DOCBOOK output
+
1879 #---------------------------------------------------------------------------
+
1880 
+
1881 # If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
+
1882 # that can be used to generate PDF.
+
1883 # The default value is: NO.
+
1884 
+
1885 GENERATE_DOCBOOK = NO
+
1886 
+
1887 # The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
+
1888 # If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
+
1889 # front of it.
+
1890 # The default directory is: docbook.
+
1891 # This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
1892 
+
1893 DOCBOOK_OUTPUT = docbook
+
1894 
+
1895 # If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
+
1896 # program listings (including syntax highlighting and cross-referencing
+
1897 # information) to the DOCBOOK output. Note that enabling this will significantly
+
1898 # increase the size of the DOCBOOK output.
+
1899 # The default value is: NO.
+
1900 # This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
1901 
+
1902 DOCBOOK_PROGRAMLISTING = NO
+
1903 
+
1904 #---------------------------------------------------------------------------
+
1905 # Configuration options for the AutoGen Definitions output
+
1906 #---------------------------------------------------------------------------
+
1907 
+
1908 # If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
+
1909 # AutoGen Definitions (see http://autogen.sf.net) file that captures the
+
1910 # structure of the code including all documentation. Note that this feature is
+
1911 # still experimental and incomplete at the moment.
+
1912 # The default value is: NO.
+
1913 
+
1914 GENERATE_AUTOGEN_DEF = NO
+
1915 
+
1916 #---------------------------------------------------------------------------
+
1917 # Configuration options related to the Perl module output
+
1918 #---------------------------------------------------------------------------
+
1919 
+
1920 # If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
+
1921 # file that captures the structure of the code including all documentation.
+
1922 #
+
1923 # Note that this feature is still experimental and incomplete at the moment.
+
1924 # The default value is: NO.
+
1925 
+
1926 GENERATE_PERLMOD = NO
+
1927 
+
1928 # If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
+
1929 # Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
+
1930 # output from the Perl module output.
+
1931 # The default value is: NO.
+
1932 # This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
1933 
+
1934 PERLMOD_LATEX = NO
+
1935 
+
1936 # If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
+
1937 # formatted so it can be parsed by a human reader. This is useful if you want to
+
1938 # understand what is going on. On the other hand, if this tag is set to NO, the
+
1939 # size of the Perl module output will be much smaller and Perl will parse it
+
1940 # just the same.
+
1941 # The default value is: YES.
+
1942 # This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
1943 
+
1944 PERLMOD_PRETTY = YES
+
1945 
+
1946 # The names of the make variables in the generated doxyrules.make file are
+
1947 # prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
+
1948 # so different doxyrules.make files included by the same Makefile don't
+
1949 # overwrite each other's variables.
+
1950 # This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
1951 
+
1952 PERLMOD_MAKEVAR_PREFIX =
+
1953 
+
1954 #---------------------------------------------------------------------------
+
1955 # Configuration options related to the preprocessor
+
1956 #---------------------------------------------------------------------------
+
1957 
+
1958 # If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
+
1959 # C-preprocessor directives found in the sources and include files.
+
1960 # The default value is: YES.
+
1961 
+
1962 ENABLE_PREPROCESSING = YES
+
1963 
+
1964 # If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
+
1965 # in the source code. If set to NO, only conditional compilation will be
+
1966 # performed. Macro expansion can be done in a controlled way by setting
+
1967 # EXPAND_ONLY_PREDEF to YES.
+
1968 # The default value is: NO.
+
1969 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
1970 
+
1971 MACRO_EXPANSION = NO
+
1972 
+
1973 # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
+
1974 # the macro expansion is limited to the macros specified with the PREDEFINED and
+
1975 # EXPAND_AS_DEFINED tags.
+
1976 # The default value is: NO.
+
1977 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
1978 
+
1979 EXPAND_ONLY_PREDEF = NO
+
1980 
+
1981 # If the SEARCH_INCLUDES tag is set to YES, the include files in the
+
1982 # INCLUDE_PATH will be searched if a #include is found.
+
1983 # The default value is: YES.
+
1984 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
1985 
+
1986 SEARCH_INCLUDES = YES
+
1987 
+
1988 # The INCLUDE_PATH tag can be used to specify one or more directories that
+
1989 # contain include files that are not input files but should be processed by the
+
1990 # preprocessor.
+
1991 # This tag requires that the tag SEARCH_INCLUDES is set to YES.
+
1992 
+
1993 INCLUDE_PATH =
+
1994 
+
1995 # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+
1996 # patterns (like *.h and *.hpp) to filter out the header-files in the
+
1997 # directories. If left blank, the patterns specified with FILE_PATTERNS will be
+
1998 # used.
+
1999 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
2000 
+
2001 INCLUDE_FILE_PATTERNS =
+
2002 
+
2003 # The PREDEFINED tag can be used to specify one or more macro names that are
+
2004 # defined before the preprocessor is started (similar to the -D option of e.g.
+
2005 # gcc). The argument of the tag is a list of macros of the form: name or
+
2006 # name=definition (no spaces). If the definition and the "=" are omitted, "=1"
+
2007 # is assumed. To prevent a macro definition from being undefined via #undef or
+
2008 # recursively expanded use the := operator instead of the = operator.
+
2009 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
2010 
+
2011 PREDEFINED =
+
2012 
+
2013 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
+
2014 # tag can be used to specify a list of macro names that should be expanded. The
+
2015 # macro definition that is found in the sources will be used. Use the PREDEFINED
+
2016 # tag if you want to use a different macro definition that overrules the
+
2017 # definition found in the source code.
+
2018 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
2019 
+
2020 EXPAND_AS_DEFINED =
+
2021 
+
2022 # If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+
2023 # remove all references to function-like macros that are alone on a line, have
+
2024 # an all uppercase name, and do not end with a semicolon. Such function macros
+
2025 # are typically used for boiler-plate code, and will confuse the parser if not
+
2026 # removed.
+
2027 # The default value is: YES.
+
2028 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
2029 
+
2030 SKIP_FUNCTION_MACROS = YES
+
2031 
+
2032 #---------------------------------------------------------------------------
+
2033 # Configuration options related to external references
+
2034 #---------------------------------------------------------------------------
+
2035 
+
2036 # The TAGFILES tag can be used to specify one or more tag files. For each tag
+
2037 # file the location of the external documentation should be added. The format of
+
2038 # a tag file without this location is as follows:
+
2039 # TAGFILES = file1 file2 ...
+
2040 # Adding location for the tag files is done as follows:
+
2041 # TAGFILES = file1=loc1 "file2 = loc2" ...
+
2042 # where loc1 and loc2 can be relative or absolute paths or URLs. See the
+
2043 # section "Linking to external documentation" for more information about the use
+
2044 # of tag files.
+
2045 # Note: Each tag file must have a unique name (where the name does NOT include
+
2046 # the path). If a tag file is not located in the directory in which doxygen is
+
2047 # run, you must also specify the path to the tagfile here.
+
2048 
+
2049 TAGFILES =
+
2050 
+
2051 # When a file name is specified after GENERATE_TAGFILE, doxygen will create a
+
2052 # tag file that is based on the input files it reads. See section "Linking to
+
2053 # external documentation" for more information about the usage of tag files.
+
2054 
+
2055 GENERATE_TAGFILE =
+
2056 
+
2057 # If the ALLEXTERNALS tag is set to YES, all external class will be listed in
+
2058 # the class index. If set to NO, only the inherited external classes will be
+
2059 # listed.
+
2060 # The default value is: NO.
+
2061 
+
2062 ALLEXTERNALS = NO
+
2063 
+
2064 # If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
+
2065 # in the modules index. If set to NO, only the current project's groups will be
+
2066 # listed.
+
2067 # The default value is: YES.
+
2068 
+
2069 EXTERNAL_GROUPS = YES
+
2070 
+
2071 # If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
+
2072 # the related pages index. If set to NO, only the current project's pages will
+
2073 # be listed.
+
2074 # The default value is: YES.
+
2075 
+
2076 EXTERNAL_PAGES = YES
+
2077 
+
2078 # The PERL_PATH should be the absolute path and name of the perl script
+
2079 # interpreter (i.e. the result of 'which perl').
+
2080 # The default file (with absolute path) is: /usr/bin/perl.
+
2081 
+
2082 PERL_PATH = /usr/bin/perl
+
2083 
+
2084 #---------------------------------------------------------------------------
+
2085 # Configuration options related to the dot tool
+
2086 #---------------------------------------------------------------------------
+
2087 
+
2088 # If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
+
2089 # (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
+
2090 # NO turns the diagrams off. Note that this option also works with HAVE_DOT
+
2091 # disabled, but it is recommended to install and use dot, since it yields more
+
2092 # powerful graphs.
+
2093 # The default value is: YES.
+
2094 
+
2095 CLASS_DIAGRAMS = YES
+
2096 
+
2097 # You can define message sequence charts within doxygen comments using the \msc
+
2098 # command. Doxygen will then run the mscgen tool (see:
+
2099 # http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
+
2100 # documentation. The MSCGEN_PATH tag allows you to specify the directory where
+
2101 # the mscgen tool resides. If left empty the tool is assumed to be found in the
+
2102 # default search path.
+
2103 
+
2104 MSCGEN_PATH =
+
2105 
+
2106 # You can include diagrams made with dia in doxygen documentation. Doxygen will
+
2107 # then run dia to produce the diagram and insert it in the documentation. The
+
2108 # DIA_PATH tag allows you to specify the directory where the dia binary resides.
+
2109 # If left empty dia is assumed to be found in the default search path.
+
2110 
+
2111 DIA_PATH =
+
2112 
+
2113 # If set to YES the inheritance and collaboration graphs will hide inheritance
+
2114 # and usage relations if the target is undocumented or is not a class.
+
2115 # The default value is: YES.
+
2116 
+
2117 HIDE_UNDOC_RELATIONS = YES
+
2118 
+
2119 # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+
2120 # available from the path. This tool is part of Graphviz (see:
+
2121 # http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
+
2122 # Bell Labs. The other options in this section have no effect if this option is
+
2123 # set to NO
+
2124 # The default value is: NO.
+
2125 
+
2126 HAVE_DOT = NO
+
2127 
+
2128 # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
+
2129 # to run in parallel. When set to 0 doxygen will base this on the number of
+
2130 # processors available in the system. You can set it explicitly to a value
+
2131 # larger than 0 to get control over the balance between CPU load and processing
+
2132 # speed.
+
2133 # Minimum value: 0, maximum value: 32, default value: 0.
+
2134 # This tag requires that the tag HAVE_DOT is set to YES.
+
2135 
+
2136 DOT_NUM_THREADS = 0
+
2137 
+
2138 # When you want a differently looking font in the dot files that doxygen
+
2139 # generates you can specify the font name using DOT_FONTNAME. You need to make
+
2140 # sure dot is able to find the font, which can be done by putting it in a
+
2141 # standard location or by setting the DOTFONTPATH environment variable or by
+
2142 # setting DOT_FONTPATH to the directory containing the font.
+
2143 # The default value is: Helvetica.
+
2144 # This tag requires that the tag HAVE_DOT is set to YES.
+
2145 
+
2146 DOT_FONTNAME = Helvetica
+
2147 
+
2148 # The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
+
2149 # dot graphs.
+
2150 # Minimum value: 4, maximum value: 24, default value: 10.
+
2151 # This tag requires that the tag HAVE_DOT is set to YES.
+
2152 
+
2153 DOT_FONTSIZE = 10
+
2154 
+
2155 # By default doxygen will tell dot to use the default font as specified with
+
2156 # DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
+
2157 # the path where dot can find it using this tag.
+
2158 # This tag requires that the tag HAVE_DOT is set to YES.
+
2159 
+
2160 DOT_FONTPATH =
+
2161 
+
2162 # If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
+
2163 # each documented class showing the direct and indirect inheritance relations.
+
2164 # Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
+
2165 # The default value is: YES.
+
2166 # This tag requires that the tag HAVE_DOT is set to YES.
+
2167 
+
2168 CLASS_GRAPH = YES
+
2169 
+
2170 # If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
+
2171 # graph for each documented class showing the direct and indirect implementation
+
2172 # dependencies (inheritance, containment, and class references variables) of the
+
2173 # class with other documented classes.
+
2174 # The default value is: YES.
+
2175 # This tag requires that the tag HAVE_DOT is set to YES.
+
2176 
+
2177 COLLABORATION_GRAPH = YES
+
2178 
+
2179 # If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
+
2180 # groups, showing the direct groups dependencies.
+
2181 # The default value is: YES.
+
2182 # This tag requires that the tag HAVE_DOT is set to YES.
+
2183 
+
2184 GROUP_GRAPHS = YES
+
2185 
+
2186 # If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
+
2187 # collaboration diagrams in a style similar to the OMG's Unified Modeling
+
2188 # Language.
+
2189 # The default value is: NO.
+
2190 # This tag requires that the tag HAVE_DOT is set to YES.
+
2191 
+
2192 UML_LOOK = NO
+
2193 
+
2194 # If the UML_LOOK tag is enabled, the fields and methods are shown inside the
+
2195 # class node. If there are many fields or methods and many nodes the graph may
+
2196 # become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
+
2197 # number of items for each type to make the size more manageable. Set this to 0
+
2198 # for no limit. Note that the threshold may be exceeded by 50% before the limit
+
2199 # is enforced. So when you set the threshold to 10, up to 15 fields may appear,
+
2200 # but if the number exceeds 15, the total amount of fields shown is limited to
+
2201 # 10.
+
2202 # Minimum value: 0, maximum value: 100, default value: 10.
+
2203 # This tag requires that the tag HAVE_DOT is set to YES.
+
2204 
+
2205 UML_LIMIT_NUM_FIELDS = 10
+
2206 
+
2207 # If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
+
2208 # collaboration graphs will show the relations between templates and their
+
2209 # instances.
+
2210 # The default value is: NO.
+
2211 # This tag requires that the tag HAVE_DOT is set to YES.
+
2212 
+
2213 TEMPLATE_RELATIONS = NO
+
2214 
+
2215 # If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
+
2216 # YES then doxygen will generate a graph for each documented file showing the
+
2217 # direct and indirect include dependencies of the file with other documented
+
2218 # files.
+
2219 # The default value is: YES.
+
2220 # This tag requires that the tag HAVE_DOT is set to YES.
+
2221 
+
2222 INCLUDE_GRAPH = YES
+
2223 
+
2224 # If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
+
2225 # set to YES then doxygen will generate a graph for each documented file showing
+
2226 # the direct and indirect include dependencies of the file with other documented
+
2227 # files.
+
2228 # The default value is: YES.
+
2229 # This tag requires that the tag HAVE_DOT is set to YES.
+
2230 
+
2231 INCLUDED_BY_GRAPH = YES
+
2232 
+
2233 # If the CALL_GRAPH tag is set to YES then doxygen will generate a call
+
2234 # dependency graph for every global function or class method.
+
2235 #
+
2236 # Note that enabling this option will significantly increase the time of a run.
+
2237 # So in most cases it will be better to enable call graphs for selected
+
2238 # functions only using the \callgraph command. Disabling a call graph can be
+
2239 # accomplished by means of the command \hidecallgraph.
+
2240 # The default value is: NO.
+
2241 # This tag requires that the tag HAVE_DOT is set to YES.
+
2242 
+
2243 CALL_GRAPH = YES
+
2244 
+
2245 # If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
+
2246 # dependency graph for every global function or class method.
+
2247 #
+
2248 # Note that enabling this option will significantly increase the time of a run.
+
2249 # So in most cases it will be better to enable caller graphs for selected
+
2250 # functions only using the \callergraph command. Disabling a caller graph can be
+
2251 # accomplished by means of the command \hidecallergraph.
+
2252 # The default value is: NO.
+
2253 # This tag requires that the tag HAVE_DOT is set to YES.
+
2254 
+
2255 CALLER_GRAPH = YES
+
2256 
+
2257 # If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+
2258 # hierarchy of all classes instead of a textual one.
+
2259 # The default value is: YES.
+
2260 # This tag requires that the tag HAVE_DOT is set to YES.
+
2261 
+
2262 GRAPHICAL_HIERARCHY = YES
+
2263 
+
2264 # If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
+
2265 # dependencies a directory has on other directories in a graphical way. The
+
2266 # dependency relations are determined by the #include relations between the
+
2267 # files in the directories.
+
2268 # The default value is: YES.
+
2269 # This tag requires that the tag HAVE_DOT is set to YES.
+
2270 
+
2271 DIRECTORY_GRAPH = YES
+
2272 
+
2273 # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+
2274 # generated by dot. For an explanation of the image formats see the section
+
2275 # output formats in the documentation of the dot tool (Graphviz (see:
+
2276 # http://www.graphviz.org/)).
+
2277 # Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
+
2278 # to make the SVG files visible in IE 9+ (other browsers do not have this
+
2279 # requirement).
+
2280 # Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo,
+
2281 # png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
+
2282 # png:gdiplus:gdiplus.
+
2283 # The default value is: png.
+
2284 # This tag requires that the tag HAVE_DOT is set to YES.
+
2285 
+
2286 DOT_IMAGE_FORMAT = png
+
2287 
+
2288 # If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+
2289 # enable generation of interactive SVG images that allow zooming and panning.
+
2290 #
+
2291 # Note that this requires a modern browser other than Internet Explorer. Tested
+
2292 # and working are Firefox, Chrome, Safari, and Opera.
+
2293 # Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
+
2294 # the SVG files visible. Older versions of IE do not have SVG support.
+
2295 # The default value is: NO.
+
2296 # This tag requires that the tag HAVE_DOT is set to YES.
+
2297 
+
2298 INTERACTIVE_SVG = NO
+
2299 
+
2300 # The DOT_PATH tag can be used to specify the path where the dot tool can be
+
2301 # found. If left blank, it is assumed the dot tool can be found in the path.
+
2302 # This tag requires that the tag HAVE_DOT is set to YES.
+
2303 
+
2304 DOT_PATH =
+
2305 
+
2306 # The DOTFILE_DIRS tag can be used to specify one or more directories that
+
2307 # contain dot files that are included in the documentation (see the \dotfile
+
2308 # command).
+
2309 # This tag requires that the tag HAVE_DOT is set to YES.
+
2310 
+
2311 DOTFILE_DIRS =
+
2312 
+
2313 # The MSCFILE_DIRS tag can be used to specify one or more directories that
+
2314 # contain msc files that are included in the documentation (see the \mscfile
+
2315 # command).
+
2316 
+
2317 MSCFILE_DIRS =
+
2318 
+
2319 # The DIAFILE_DIRS tag can be used to specify one or more directories that
+
2320 # contain dia files that are included in the documentation (see the \diafile
+
2321 # command).
+
2322 
+
2323 DIAFILE_DIRS =
+
2324 
+
2325 # When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
+
2326 # path where java can find the plantuml.jar file. If left blank, it is assumed
+
2327 # PlantUML is not used or called during a preprocessing step. Doxygen will
+
2328 # generate a warning when it encounters a \startuml command in this case and
+
2329 # will not generate output for the diagram.
+
2330 
+
2331 PLANTUML_JAR_PATH =
+
2332 
+
2333 # When using plantuml, the specified paths are searched for files specified by
+
2334 # the !include statement in a plantuml block.
+
2335 
+
2336 PLANTUML_INCLUDE_PATH =
+
2337 
+
2338 # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
+
2339 # that will be shown in the graph. If the number of nodes in a graph becomes
+
2340 # larger than this value, doxygen will truncate the graph, which is visualized
+
2341 # by representing a node as a red box. Note that doxygen if the number of direct
+
2342 # children of the root node in a graph is already larger than
+
2343 # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
+
2344 # the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
2345 # Minimum value: 0, maximum value: 10000, default value: 50.
+
2346 # This tag requires that the tag HAVE_DOT is set to YES.
+
2347 
+
2348 DOT_GRAPH_MAX_NODES = 50
+
2349 
+
2350 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
+
2351 # generated by dot. A depth value of 3 means that only nodes reachable from the
+
2352 # root by following a path via at most 3 edges will be shown. Nodes that lay
+
2353 # further from the root node will be omitted. Note that setting this option to 1
+
2354 # or 2 may greatly reduce the computation time needed for large code bases. Also
+
2355 # note that the size of a graph can be further restricted by
+
2356 # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
2357 # Minimum value: 0, maximum value: 1000, default value: 0.
+
2358 # This tag requires that the tag HAVE_DOT is set to YES.
+
2359 
+
2360 MAX_DOT_GRAPH_DEPTH = 1000
+
2361 
+
2362 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+
2363 # background. This is disabled by default, because dot on Windows does not seem
+
2364 # to support this out of the box.
+
2365 #
+
2366 # Warning: Depending on the platform used, enabling this option may lead to
+
2367 # badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+
2368 # read).
+
2369 # The default value is: NO.
+
2370 # This tag requires that the tag HAVE_DOT is set to YES.
+
2371 
+
2372 DOT_TRANSPARENT = NO
+
2373 
+
2374 # Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
+
2375 # files in one run (i.e. multiple -o and -T options on the command line). This
+
2376 # makes dot run faster, but since only newer versions of dot (>1.8.10) support
+
2377 # this, this feature is disabled by default.
+
2378 # The default value is: NO.
+
2379 # This tag requires that the tag HAVE_DOT is set to YES.
+
2380 
+
2381 DOT_MULTI_TARGETS = NO
+
2382 
+
2383 # If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+
2384 # explaining the meaning of the various boxes and arrows in the dot generated
+
2385 # graphs.
+
2386 # The default value is: YES.
+
2387 # This tag requires that the tag HAVE_DOT is set to YES.
+
2388 
+
2389 GENERATE_LEGEND = YES
+
2390 
+
2391 # If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
+
2392 # files that are used to generate the various graphs.
+
2393 # The default value is: YES.
+
2394 # This tag requires that the tag HAVE_DOT is set to YES.
+
2395 
+
2396 DOT_CLEANUP = YES
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00058.html b/external/glm/doc/api/a00058.html new file mode 100644 index 0000000..e9dd025 --- /dev/null +++ b/external/glm/doc/api/a00058.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: mat2x2.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mat2x2.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file mat2x2.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00058_source.html b/external/glm/doc/api/a00058_source.html new file mode 100644 index 0000000..f182e64 --- /dev/null +++ b/external/glm/doc/api/a00058_source.html @@ -0,0 +1,88 @@ + + + + + + +0.9.7: mat2x2.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mat2x2.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "detail/type_mat2x2.hpp"
+
36 
+
37 namespace glm
+
38 {
+
44  typedef tmat2x2<float, lowp> lowp_mat2;
+
45 
+
51  typedef tmat2x2<float, mediump> mediump_mat2;
+
52 
+
58  typedef tmat2x2<float, highp> highp_mat2;
+
59 
+
65  typedef tmat2x2<float, lowp> lowp_mat2x2;
+
66 
+
72  typedef tmat2x2<float, mediump> mediump_mat2x2;
+
73 
+
79  typedef tmat2x2<float, highp> highp_mat2x2;
+
80 
+
81 }//namespace glm
+
tmat2x2< float, mediump > mediump_mat2
2 columns of 2 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:72
+
OpenGL Mathematics (glm.g-truc.net)
+
tmat2x2< float, mediump > mediump_mat2x2
2 columns of 2 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:93
+
Definition: _noise.hpp:40
+
tmat2x2< float, lowp > lowp_mat2x2
2 columns of 2 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:86
+
tmat2x2< float, highp > highp_mat2
2 columns of 2 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:79
+
tmat2x2< float, highp > highp_mat2x2
2 columns of 2 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:100
+
tmat2x2< float, lowp > lowp_mat2
2 columns of 2 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:65
+
+ + + + diff --git a/external/glm/doc/api/a00059.html b/external/glm/doc/api/a00059.html new file mode 100644 index 0000000..044915b --- /dev/null +++ b/external/glm/doc/api/a00059.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: mat2x3.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mat2x3.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file mat2x3.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00059_source.html b/external/glm/doc/api/a00059_source.html new file mode 100644 index 0000000..784348a --- /dev/null +++ b/external/glm/doc/api/a00059_source.html @@ -0,0 +1,80 @@ + + + + + + +0.9.7: mat2x3.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mat2x3.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "detail/type_mat2x3.hpp"
+
36 
+
37 namespace glm
+
38 {
+
44  typedef tmat2x3<float, lowp> lowp_mat2x3;
+
45 
+
51  typedef tmat2x3<float, mediump> mediump_mat2x3;
+
52 
+
58  typedef tmat2x3<float, highp> highp_mat2x3;
+
59 
+
60 }//namespace glm
+
61 
+
OpenGL Mathematics (glm.g-truc.net)
+
tmat2x3< float, lowp > lowp_mat2x3
2 columns of 3 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:112
+
tmat2x3< float, mediump > mediump_mat2x3
2 columns of 3 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:119
+
tmat2x3< float, highp > highp_mat2x3
2 columns of 3 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:126
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00060.html b/external/glm/doc/api/a00060.html new file mode 100644 index 0000000..b07f429 --- /dev/null +++ b/external/glm/doc/api/a00060.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: mat2x4.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mat2x4.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file mat2x4.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00060_source.html b/external/glm/doc/api/a00060_source.html new file mode 100644 index 0000000..a572c75 --- /dev/null +++ b/external/glm/doc/api/a00060_source.html @@ -0,0 +1,79 @@ + + + + + + +0.9.7: mat2x4.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mat2x4.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "detail/type_mat2x4.hpp"
+
36 
+
37 namespace glm
+
38 {
+
44  typedef tmat2x4<float, lowp> lowp_mat2x4;
+
45 
+
51  typedef tmat2x4<float, mediump> mediump_mat2x4;
+
52 
+
58  typedef tmat2x4<float, highp> highp_mat2x4;
+
59 
+
60 }//namespace glm
+
tmat2x4< float, mediump > mediump_mat2x4
2 columns of 4 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:145
+
OpenGL Mathematics (glm.g-truc.net)
+
tmat2x4< float, lowp > lowp_mat2x4
2 columns of 4 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:138
+
tmat2x4< float, highp > highp_mat2x4
2 columns of 4 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:152
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00061.html b/external/glm/doc/api/a00061.html new file mode 100644 index 0000000..1c2251f --- /dev/null +++ b/external/glm/doc/api/a00061.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: mat3x2.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mat3x2.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file mat3x2.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00061_source.html b/external/glm/doc/api/a00061_source.html new file mode 100644 index 0000000..9f9b131 --- /dev/null +++ b/external/glm/doc/api/a00061_source.html @@ -0,0 +1,79 @@ + + + + + + +0.9.7: mat3x2.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mat3x2.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "detail/type_mat3x2.hpp"
+
36 
+
37 namespace glm
+
38 {
+
44  typedef tmat3x2<float, lowp> lowp_mat3x2;
+
45 
+
51  typedef tmat3x2<float, mediump> mediump_mat3x2;
+
52 
+
58  typedef tmat3x2<float, highp> highp_mat3x2;
+
59 
+
60 }//namespace
+
OpenGL Mathematics (glm.g-truc.net)
+
tmat3x2< float, highp > highp_mat3x2
3 columns of 2 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:178
+
tmat3x2< float, lowp > lowp_mat3x2
3 columns of 2 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:164
+
Definition: _noise.hpp:40
+
tmat3x2< float, mediump > mediump_mat3x2
3 columns of 2 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:171
+
+ + + + diff --git a/external/glm/doc/api/a00062.html b/external/glm/doc/api/a00062.html new file mode 100644 index 0000000..a29ea7d --- /dev/null +++ b/external/glm/doc/api/a00062.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: mat3x3.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mat3x3.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file mat3x3.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00062_source.html b/external/glm/doc/api/a00062_source.html new file mode 100644 index 0000000..53861a6 --- /dev/null +++ b/external/glm/doc/api/a00062_source.html @@ -0,0 +1,88 @@ + + + + + + +0.9.7: mat3x3.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mat3x3.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "detail/type_mat3x3.hpp"
+
36 
+
37 namespace glm
+
38 {
+
44  typedef tmat3x3<float, lowp> lowp_mat3;
+
45 
+
51  typedef tmat3x3<float, mediump> mediump_mat3;
+
52 
+
58  typedef tmat3x3<float, highp> highp_mat3;
+
59 
+
65  typedef tmat3x3<float, lowp> lowp_mat3x3;
+
66 
+
72  typedef tmat3x3<float, mediump> mediump_mat3x3;
+
73 
+
79  typedef tmat3x3<float, highp> highp_mat3x3;
+
80 
+
81 }//namespace glm
+
tmat3x3< float, mediump > mediump_mat3
3 columns of 3 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:197
+
tmat3x3< float, highp > highp_mat3x3
3 columns of 3 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:225
+
tmat3x3< float, lowp > lowp_mat3
3 columns of 3 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:190
+
tmat3x3< float, mediump > mediump_mat3x3
3 columns of 3 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:218
+
Definition: _noise.hpp:40
+
tmat3x3< float, lowp > lowp_mat3x3
3 columns of 3 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:211
+
OpenGL Mathematics (glm.g-truc.net)
+
tmat3x3< float, highp > highp_mat3
3 columns of 3 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:204
+
+ + + + diff --git a/external/glm/doc/api/a00063.html b/external/glm/doc/api/a00063.html new file mode 100644 index 0000000..c2976b7 --- /dev/null +++ b/external/glm/doc/api/a00063.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: mat3x4.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mat3x4.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file mat3x4.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00063_source.html b/external/glm/doc/api/a00063_source.html new file mode 100644 index 0000000..03d24b7 --- /dev/null +++ b/external/glm/doc/api/a00063_source.html @@ -0,0 +1,79 @@ + + + + + + +0.9.7: mat3x4.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mat3x4.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "detail/type_mat3x4.hpp"
+
36 
+
37 namespace glm
+
38 {
+
44  typedef tmat3x4<float, lowp> lowp_mat3x4;
+
45 
+
51  typedef tmat3x4<float, mediump> mediump_mat3x4;
+
52 
+
58  typedef tmat3x4<float, highp> highp_mat3x4;
+
59 
+
60 }//namespace glm
+
tmat3x4< float, mediump > mediump_mat3x4
3 columns of 4 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:244
+
OpenGL Mathematics (glm.g-truc.net)
+
Definition: _noise.hpp:40
+
tmat3x4< float, lowp > lowp_mat3x4
3 columns of 4 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:237
+
tmat3x4< float, highp > highp_mat3x4
3 columns of 4 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:251
+
+ + + + diff --git a/external/glm/doc/api/a00064.html b/external/glm/doc/api/a00064.html new file mode 100644 index 0000000..e75f7e3 --- /dev/null +++ b/external/glm/doc/api/a00064.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: mat4x2.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mat4x2.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file mat4x2.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00064_source.html b/external/glm/doc/api/a00064_source.html new file mode 100644 index 0000000..f6fb419 --- /dev/null +++ b/external/glm/doc/api/a00064_source.html @@ -0,0 +1,79 @@ + + + + + + +0.9.7: mat4x2.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mat4x2.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "detail/type_mat4x2.hpp"
+
36 
+
37 namespace glm
+
38 {
+
44  typedef tmat4x2<float, lowp> lowp_mat4x2;
+
45 
+
51  typedef tmat4x2<float, mediump> mediump_mat4x2;
+
52 
+
58  typedef tmat4x2<float, highp> highp_mat4x2;
+
59 
+
60 }//namespace glm
+
OpenGL Mathematics (glm.g-truc.net)
+
tmat4x2< float, lowp > lowp_mat4x2
4 columns of 2 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:263
+
Definition: _noise.hpp:40
+
tmat4x2< float, mediump > mediump_mat4x2
4 columns of 2 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:270
+
tmat4x2< float, highp > highp_mat4x2
4 columns of 2 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:277
+
+ + + + diff --git a/external/glm/doc/api/a00065_source.html b/external/glm/doc/api/a00065_source.html new file mode 100644 index 0000000..d18acc9 --- /dev/null +++ b/external/glm/doc/api/a00065_source.html @@ -0,0 +1,79 @@ + + + + + + +0.9.7: mat4x3.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mat4x3.hpp
+
+
+
1 
+
33 #pragma once
+
34 
+
35 #include "detail/type_mat4x3.hpp"
+
36 
+
37 namespace glm
+
38 {
+
44  typedef tmat4x3<float, lowp> lowp_mat4x3;
+
45 
+
51  typedef tmat4x3<float, mediump> mediump_mat4x3;
+
52 
+
58  typedef tmat4x3<float, highp> highp_mat4x3;
+
59 
+
60 }//namespace glm
+
tmat4x3< float, highp > highp_mat4x3
4 columns of 3 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:303
+
tmat4x3< float, lowp > lowp_mat4x3
4 columns of 3 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:289
+
Definition: _noise.hpp:40
+
tmat4x3< float, mediump > mediump_mat4x3
4 columns of 3 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:296
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00066.html b/external/glm/doc/api/a00066.html new file mode 100644 index 0000000..e9d3ffd --- /dev/null +++ b/external/glm/doc/api/a00066.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: mat4x4.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mat4x4.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file mat4x4.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00066_source.html b/external/glm/doc/api/a00066_source.html new file mode 100644 index 0000000..1924241 --- /dev/null +++ b/external/glm/doc/api/a00066_source.html @@ -0,0 +1,88 @@ + + + + + + +0.9.7: mat4x4.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mat4x4.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "detail/type_mat4x4.hpp"
+
36 
+
37 namespace glm
+
38 {
+
44  typedef tmat4x4<float, lowp> lowp_mat4;
+
45 
+
51  typedef tmat4x4<float, mediump> mediump_mat4;
+
52 
+
58  typedef tmat4x4<float, highp> highp_mat4;
+
59 
+
65  typedef tmat4x4<float, lowp> lowp_mat4x4;
+
66 
+
72  typedef tmat4x4<float, mediump> mediump_mat4x4;
+
73 
+
79  typedef tmat4x4<float, highp> highp_mat4x4;
+
80 
+
81 }//namespace glm
+
tmat4x4< float, lowp > lowp_mat4x4
4 columns of 4 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:337
+
tmat4x4< float, highp > highp_mat4
4 columns of 4 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:330
+
OpenGL Mathematics (glm.g-truc.net)
+
Definition: _noise.hpp:40
+
tmat4x4< float, lowp > lowp_mat4
4 columns of 4 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:316
+
tmat4x4< float, highp > highp_mat4x4
4 columns of 4 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:351
+
tmat4x4< float, mediump > mediump_mat4
4 columns of 4 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:323
+
tmat4x4< float, mediump > mediump_mat4x4
4 columns of 4 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:344
+
+ + + + diff --git a/external/glm/doc/api/a00067.html b/external/glm/doc/api/a00067.html new file mode 100644 index 0000000..c317f8a --- /dev/null +++ b/external/glm/doc/api/a00067.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: matrix.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
matrix.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file matrix.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00067_source.html b/external/glm/doc/api/a00067_source.html new file mode 100644 index 0000000..fb3c749 --- /dev/null +++ b/external/glm/doc/api/a00067_source.html @@ -0,0 +1,65 @@ + + + + + + +0.9.7: matrix.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
matrix.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "detail/func_matrix.hpp"
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00068.html b/external/glm/doc/api/a00068.html new file mode 100644 index 0000000..2728d67 --- /dev/null +++ b/external/glm/doc/api/a00068.html @@ -0,0 +1,92 @@ + + + + + + +0.9.7: matrix_access.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
matrix_access.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType::col_type column (genType const &m, length_t index)
 
template<typename genType >
GLM_FUNC_DECL genType column (genType const &m, length_t index, typename genType::col_type const &x)
 
template<typename genType >
GLM_FUNC_DECL genType::row_type row (genType const &m, length_t index)
 
template<typename genType >
GLM_FUNC_DECL genType row (genType const &m, length_t index, typename genType::row_type const &x)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_matrix_access

+
Date
2005-12-27 / 2011-05-16
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file matrix_access.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00068_source.html b/external/glm/doc/api/a00068_source.html new file mode 100644 index 0000000..08a5368 --- /dev/null +++ b/external/glm/doc/api/a00068_source.html @@ -0,0 +1,101 @@ + + + + + + +0.9.7: matrix_access.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
matrix_access.hpp
+
+
+Go to the documentation of this file.
1 
+
41 #pragma once
+
42 
+
43 // Dependency:
+
44 #include "../detail/setup.hpp"
+
45 
+
46 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
47 # pragma message("GLM: GLM_GTC_matrix_access extension included")
+
48 #endif
+
49 
+
50 namespace glm
+
51 {
+
54 
+
57  template <typename genType>
+
58  GLM_FUNC_DECL typename genType::row_type row(
+
59  genType const & m,
+
60  length_t index);
+
61 
+
64  template <typename genType>
+
65  GLM_FUNC_DECL genType row(
+
66  genType const & m,
+
67  length_t index,
+
68  typename genType::row_type const & x);
+
69 
+
72  template <typename genType>
+
73  GLM_FUNC_DECL typename genType::col_type column(
+
74  genType const & m,
+
75  length_t index);
+
76 
+
79  template <typename genType>
+
80  GLM_FUNC_DECL genType column(
+
81  genType const & m,
+
82  length_t index,
+
83  typename genType::col_type const & x);
+
84 
+
86 }//namespace glm
+
87 
+
88 #include "matrix_access.inl"
+
GLM_FUNC_DECL genType column(genType const &m, length_t index, typename genType::col_type const &x)
Set a specific column to a matrix.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL genType row(genType const &m, length_t index, typename genType::row_type const &x)
Set a specific row to a matrix.
+
+ + + + diff --git a/external/glm/doc/api/a00069.html b/external/glm/doc/api/a00069.html new file mode 100644 index 0000000..543624f --- /dev/null +++ b/external/glm/doc/api/a00069.html @@ -0,0 +1,88 @@ + + + + + + +0.9.7: matrix_cross_product.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
matrix_cross_product.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > matrixCross3 (tvec3< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > matrixCross4 (tvec3< T, P > const &x)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_matrix_cross_product

+
Date
2005-12-21 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTX_extented_min_max (dependence)
+ +

Definition in file matrix_cross_product.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00069_source.html b/external/glm/doc/api/a00069_source.html new file mode 100644 index 0000000..faebf03 --- /dev/null +++ b/external/glm/doc/api/a00069_source.html @@ -0,0 +1,87 @@ + + + + + + +0.9.7: matrix_cross_product.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
matrix_cross_product.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependency:
+
46 #include "../glm.hpp"
+
47 
+
48 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
49 # pragma message("GLM: GLM_GTX_matrix_cross_product extension included")
+
50 #endif
+
51 
+
52 namespace glm
+
53 {
+
56 
+
59  template <typename T, precision P>
+
60  GLM_FUNC_DECL tmat3x3<T, P> matrixCross3(
+
61  tvec3<T, P> const & x);
+
62 
+
65  template <typename T, precision P>
+
66  GLM_FUNC_DECL tmat4x4<T, P> matrixCross4(
+
67  tvec3<T, P> const & x);
+
68 
+
70 }//namespace glm
+
71 
+
72 #include "matrix_cross_product.inl"
+
GLM_FUNC_DECL tmat4x4< T, P > matrixCross4(tvec3< T, P > const &x)
Build a cross product matrix.
+
GLM_FUNC_DECL tmat3x3< T, P > matrixCross3(tvec3< T, P > const &x)
Build a cross product matrix.
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00070.html b/external/glm/doc/api/a00070.html new file mode 100644 index 0000000..d9d1cda --- /dev/null +++ b/external/glm/doc/api/a00070.html @@ -0,0 +1,83 @@ + + + + + + +0.9.7: matrix_decompose.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
matrix_decompose.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL bool decompose (tmat4x4< T, P > const &modelMatrix, tvec3< T, P > &scale, tquat< T, P > &orientation, tvec3< T, P > &translation, tvec3< T, P > &skew, tvec4< T, P > &perspective)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_matrix_decompose

+
Date
2014-08-29 / 2014-08-29
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file matrix_decompose.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00070_source.html b/external/glm/doc/api/a00070_source.html new file mode 100644 index 0000000..82477bf --- /dev/null +++ b/external/glm/doc/api/a00070_source.html @@ -0,0 +1,90 @@ + + + + + + +0.9.7: matrix_decompose.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
matrix_decompose.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependencies
+
45 #include "../mat4x4.hpp"
+
46 #include "../vec3.hpp"
+
47 #include "../vec4.hpp"
+
48 #include "../gtc/quaternion.hpp"
+
49 #include "../gtc/matrix_transform.hpp"
+
50 
+
51 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
52 # pragma message("GLM: GLM_GTX_matrix_decompose extension included")
+
53 #endif
+
54 
+
55 namespace glm
+
56 {
+
59 
+
62  template <typename T, precision P>
+
63  GLM_FUNC_DECL bool decompose(
+
64  tmat4x4<T, P> const & modelMatrix,
+
65  tvec3<T, P> & scale, tquat<T, P> & orientation, tvec3<T, P> & translation, tvec3<T, P> & skew, tvec4<T, P> & perspective);
+
66 
+
68 }//namespace glm
+
69 
+
70 #include "matrix_decompose.inl"
+
GLM_FUNC_DECL tmat4x4< T, defaultp > perspective(T fovy, T aspect, T near, T far)
Creates a matrix for a symetric perspective-view frustum based on the default handedness.
+
GLM_FUNC_DECL tmat4x4< T, P > orientation(tvec3< T, P > const &Normal, tvec3< T, P > const &Up)
Build a rotation matrix from a normal and a up vector.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL bool decompose(tmat4x4< T, P > const &modelMatrix, tvec3< T, P > &scale, tquat< T, P > &orientation, tvec3< T, P > &translation, tvec3< T, P > &skew, tvec4< T, P > &perspective)
Decomposes a model matrix to translations, rotation and scale components.
+
GLM_FUNC_DECL tmat4x4< T, P > scale(tmat4x4< T, P > const &m, tvec3< T, P > const &v)
Builds a scale 4 * 4 matrix created from 3 scalars.
+
+ + + + diff --git a/external/glm/doc/api/a00071.html b/external/glm/doc/api/a00071.html new file mode 100644 index 0000000..c2ede18 --- /dev/null +++ b/external/glm/doc/api/a00071.html @@ -0,0 +1,272 @@ + + + + + + +0.9.7: matrix_integer.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
matrix_integer.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef tmat2x2< int, highp > highp_imat2
 
typedef tmat2x2< int, highp > highp_imat2x2
 
typedef tmat2x3< int, highp > highp_imat2x3
 
typedef tmat2x4< int, highp > highp_imat2x4
 
typedef tmat3x3< int, highp > highp_imat3
 
typedef tmat3x2< int, highp > highp_imat3x2
 
typedef tmat3x3< int, highp > highp_imat3x3
 
typedef tmat3x4< int, highp > highp_imat3x4
 
typedef tmat4x4< int, highp > highp_imat4
 
typedef tmat4x2< int, highp > highp_imat4x2
 
typedef tmat4x3< int, highp > highp_imat4x3
 
typedef tmat4x4< int, highp > highp_imat4x4
 
typedef tmat2x2< uint, highp > highp_umat2
 
typedef tmat2x2< uint, highp > highp_umat2x2
 
typedef tmat2x3< uint, highp > highp_umat2x3
 
typedef tmat2x4< uint, highp > highp_umat2x4
 
typedef tmat3x3< uint, highp > highp_umat3
 
typedef tmat3x2< uint, highp > highp_umat3x2
 
typedef tmat3x3< uint, highp > highp_umat3x3
 
typedef tmat3x4< uint, highp > highp_umat3x4
 
typedef tmat4x4< uint, highp > highp_umat4
 
typedef tmat4x2< uint, highp > highp_umat4x2
 
typedef tmat4x3< uint, highp > highp_umat4x3
 
typedef tmat4x4< uint, highp > highp_umat4x4
 
typedef mediump_imat2 imat2
 
typedef mediump_imat2x2 imat2x2
 
typedef mediump_imat2x3 imat2x3
 
typedef mediump_imat2x4 imat2x4
 
typedef mediump_imat3 imat3
 
typedef mediump_imat3x2 imat3x2
 
typedef mediump_imat3x3 imat3x3
 
typedef mediump_imat3x4 imat3x4
 
typedef mediump_imat4 imat4
 
typedef mediump_imat4x2 imat4x2
 
typedef mediump_imat4x3 imat4x3
 
typedef mediump_imat4x4 imat4x4
 
typedef tmat2x2< int, lowp > lowp_imat2
 
typedef tmat2x2< int, lowp > lowp_imat2x2
 
typedef tmat2x3< int, lowp > lowp_imat2x3
 
typedef tmat2x4< int, lowp > lowp_imat2x4
 
typedef tmat3x3< int, lowp > lowp_imat3
 
typedef tmat3x2< int, lowp > lowp_imat3x2
 
typedef tmat3x3< int, lowp > lowp_imat3x3
 
typedef tmat3x4< int, lowp > lowp_imat3x4
 
typedef tmat4x4< int, lowp > lowp_imat4
 
typedef tmat4x2< int, lowp > lowp_imat4x2
 
typedef tmat4x3< int, lowp > lowp_imat4x3
 
typedef tmat4x4< int, lowp > lowp_imat4x4
 
typedef tmat2x2< uint, lowp > lowp_umat2
 
typedef tmat2x2< uint, lowp > lowp_umat2x2
 
typedef tmat2x3< uint, lowp > lowp_umat2x3
 
typedef tmat2x4< uint, lowp > lowp_umat2x4
 
typedef tmat3x3< uint, lowp > lowp_umat3
 
typedef tmat3x2< uint, lowp > lowp_umat3x2
 
typedef tmat3x3< uint, lowp > lowp_umat3x3
 
typedef tmat3x4< uint, lowp > lowp_umat3x4
 
typedef tmat4x4< uint, lowp > lowp_umat4
 
typedef tmat4x2< uint, lowp > lowp_umat4x2
 
typedef tmat4x3< uint, lowp > lowp_umat4x3
 
typedef tmat4x4< uint, lowp > lowp_umat4x4
 
typedef tmat2x2< int, mediump > mediump_imat2
 
typedef tmat2x2< int, mediump > mediump_imat2x2
 
typedef tmat2x3< int, mediump > mediump_imat2x3
 
typedef tmat2x4< int, mediump > mediump_imat2x4
 
typedef tmat3x3< int, mediump > mediump_imat3
 
typedef tmat3x2< int, mediump > mediump_imat3x2
 
typedef tmat3x3< int, mediump > mediump_imat3x3
 
typedef tmat3x4< int, mediump > mediump_imat3x4
 
typedef tmat4x4< int, mediump > mediump_imat4
 
typedef tmat4x2< int, mediump > mediump_imat4x2
 
typedef tmat4x3< int, mediump > mediump_imat4x3
 
typedef tmat4x4< int, mediump > mediump_imat4x4
 
typedef tmat2x2< uint, mediump > mediump_umat2
 
typedef tmat2x2< uint, mediump > mediump_umat2x2
 
typedef tmat2x3< uint, mediump > mediump_umat2x3
 
typedef tmat2x4< uint, mediump > mediump_umat2x4
 
typedef tmat3x3< uint, mediump > mediump_umat3
 
typedef tmat3x2< uint, mediump > mediump_umat3x2
 
typedef tmat3x3< uint, mediump > mediump_umat3x3
 
typedef tmat3x4< uint, mediump > mediump_umat3x4
 
typedef tmat4x4< uint, mediump > mediump_umat4
 
typedef tmat4x2< uint, mediump > mediump_umat4x2
 
typedef tmat4x3< uint, mediump > mediump_umat4x3
 
typedef tmat4x4< uint, mediump > mediump_umat4x4
 
typedef mediump_umat2 umat2
 
typedef mediump_umat2x2 umat2x2
 
typedef mediump_umat2x3 umat2x3
 
typedef mediump_umat2x4 umat2x4
 
typedef mediump_umat3 umat3
 
typedef mediump_umat3x2 umat3x2
 
typedef mediump_umat3x3 umat3x3
 
typedef mediump_umat3x4 umat3x4
 
typedef mediump_umat4 umat4
 
typedef mediump_umat4x2 umat4x2
 
typedef mediump_umat4x3 umat4x3
 
typedef mediump_umat4x4 umat4x4
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_matrix_integer

+
Date
2011-01-20 / 2011-06-05
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file matrix_integer.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00071_source.html b/external/glm/doc/api/a00071_source.html new file mode 100644 index 0000000..b478192 --- /dev/null +++ b/external/glm/doc/api/a00071_source.html @@ -0,0 +1,438 @@ + + + + + + +0.9.7: matrix_integer.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
matrix_integer.hpp
+
+
+Go to the documentation of this file.
1 
+
41 #pragma once
+
42 
+
43 // Dependency:
+
44 #include "../mat2x2.hpp"
+
45 #include "../mat2x3.hpp"
+
46 #include "../mat2x4.hpp"
+
47 #include "../mat3x2.hpp"
+
48 #include "../mat3x3.hpp"
+
49 #include "../mat3x4.hpp"
+
50 #include "../mat4x2.hpp"
+
51 #include "../mat4x3.hpp"
+
52 #include "../mat4x4.hpp"
+
53 
+
54 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
55 # pragma message("GLM: GLM_GTC_matrix_integer extension included")
+
56 #endif
+
57 
+
58 namespace glm
+
59 {
+
62 
+
65  typedef tmat2x2<int, highp> highp_imat2;
+
66 
+
69  typedef tmat3x3<int, highp> highp_imat3;
+
70 
+
73  typedef tmat4x4<int, highp> highp_imat4;
+
74 
+
77  typedef tmat2x2<int, highp> highp_imat2x2;
+
78 
+
81  typedef tmat2x3<int, highp> highp_imat2x3;
+
82 
+
85  typedef tmat2x4<int, highp> highp_imat2x4;
+
86 
+
89  typedef tmat3x2<int, highp> highp_imat3x2;
+
90 
+
93  typedef tmat3x3<int, highp> highp_imat3x3;
+
94 
+
97  typedef tmat3x4<int, highp> highp_imat3x4;
+
98 
+
101  typedef tmat4x2<int, highp> highp_imat4x2;
+
102 
+
105  typedef tmat4x3<int, highp> highp_imat4x3;
+
106 
+
109  typedef tmat4x4<int, highp> highp_imat4x4;
+
110 
+
111 
+
114  typedef tmat2x2<int, mediump> mediump_imat2;
+
115 
+
118  typedef tmat3x3<int, mediump> mediump_imat3;
+
119 
+
122  typedef tmat4x4<int, mediump> mediump_imat4;
+
123 
+
124 
+
127  typedef tmat2x2<int, mediump> mediump_imat2x2;
+
128 
+
131  typedef tmat2x3<int, mediump> mediump_imat2x3;
+
132 
+
135  typedef tmat2x4<int, mediump> mediump_imat2x4;
+
136 
+
139  typedef tmat3x2<int, mediump> mediump_imat3x2;
+
140 
+
143  typedef tmat3x3<int, mediump> mediump_imat3x3;
+
144 
+
147  typedef tmat3x4<int, mediump> mediump_imat3x4;
+
148 
+
151  typedef tmat4x2<int, mediump> mediump_imat4x2;
+
152 
+
155  typedef tmat4x3<int, mediump> mediump_imat4x3;
+
156 
+
159  typedef tmat4x4<int, mediump> mediump_imat4x4;
+
160 
+
161 
+
164  typedef tmat2x2<int, lowp> lowp_imat2;
+
165 
+
168  typedef tmat3x3<int, lowp> lowp_imat3;
+
169 
+
172  typedef tmat4x4<int, lowp> lowp_imat4;
+
173 
+
174 
+
177  typedef tmat2x2<int, lowp> lowp_imat2x2;
+
178 
+
181  typedef tmat2x3<int, lowp> lowp_imat2x3;
+
182 
+
185  typedef tmat2x4<int, lowp> lowp_imat2x4;
+
186 
+
189  typedef tmat3x2<int, lowp> lowp_imat3x2;
+
190 
+
193  typedef tmat3x3<int, lowp> lowp_imat3x3;
+
194 
+
197  typedef tmat3x4<int, lowp> lowp_imat3x4;
+
198 
+
201  typedef tmat4x2<int, lowp> lowp_imat4x2;
+
202 
+
205  typedef tmat4x3<int, lowp> lowp_imat4x3;
+
206 
+
209  typedef tmat4x4<int, lowp> lowp_imat4x4;
+
210 
+
211 
+
214  typedef tmat2x2<uint, highp> highp_umat2;
+
215 
+
218  typedef tmat3x3<uint, highp> highp_umat3;
+
219 
+
222  typedef tmat4x4<uint, highp> highp_umat4;
+
223 
+
226  typedef tmat2x2<uint, highp> highp_umat2x2;
+
227 
+
230  typedef tmat2x3<uint, highp> highp_umat2x3;
+
231 
+
234  typedef tmat2x4<uint, highp> highp_umat2x4;
+
235 
+
238  typedef tmat3x2<uint, highp> highp_umat3x2;
+
239 
+
242  typedef tmat3x3<uint, highp> highp_umat3x3;
+
243 
+
246  typedef tmat3x4<uint, highp> highp_umat3x4;
+
247 
+
250  typedef tmat4x2<uint, highp> highp_umat4x2;
+
251 
+
254  typedef tmat4x3<uint, highp> highp_umat4x3;
+
255 
+
258  typedef tmat4x4<uint, highp> highp_umat4x4;
+
259 
+
260 
+
263  typedef tmat2x2<uint, mediump> mediump_umat2;
+
264 
+
267  typedef tmat3x3<uint, mediump> mediump_umat3;
+
268 
+
271  typedef tmat4x4<uint, mediump> mediump_umat4;
+
272 
+
273 
+
276  typedef tmat2x2<uint, mediump> mediump_umat2x2;
+
277 
+
280  typedef tmat2x3<uint, mediump> mediump_umat2x3;
+
281 
+
284  typedef tmat2x4<uint, mediump> mediump_umat2x4;
+
285 
+
288  typedef tmat3x2<uint, mediump> mediump_umat3x2;
+
289 
+
292  typedef tmat3x3<uint, mediump> mediump_umat3x3;
+
293 
+
296  typedef tmat3x4<uint, mediump> mediump_umat3x4;
+
297 
+
300  typedef tmat4x2<uint, mediump> mediump_umat4x2;
+
301 
+
304  typedef tmat4x3<uint, mediump> mediump_umat4x3;
+
305 
+
308  typedef tmat4x4<uint, mediump> mediump_umat4x4;
+
309 
+
310 
+
313  typedef tmat2x2<uint, lowp> lowp_umat2;
+
314 
+
317  typedef tmat3x3<uint, lowp> lowp_umat3;
+
318 
+
321  typedef tmat4x4<uint, lowp> lowp_umat4;
+
322 
+
323 
+
326  typedef tmat2x2<uint, lowp> lowp_umat2x2;
+
327 
+
330  typedef tmat2x3<uint, lowp> lowp_umat2x3;
+
331 
+
334  typedef tmat2x4<uint, lowp> lowp_umat2x4;
+
335 
+
338  typedef tmat3x2<uint, lowp> lowp_umat3x2;
+
339 
+
342  typedef tmat3x3<uint, lowp> lowp_umat3x3;
+
343 
+
346  typedef tmat3x4<uint, lowp> lowp_umat3x4;
+
347 
+
350  typedef tmat4x2<uint, lowp> lowp_umat4x2;
+
351 
+
354  typedef tmat4x3<uint, lowp> lowp_umat4x3;
+
355 
+
358  typedef tmat4x4<uint, lowp> lowp_umat4x4;
+
359 
+
360 #if(defined(GLM_PRECISION_HIGHP_INT))
+
361  typedef highp_imat2 imat2;
+
362  typedef highp_imat3 imat3;
+
363  typedef highp_imat4 imat4;
+
364  typedef highp_imat2x2 imat2x2;
+
365  typedef highp_imat2x3 imat2x3;
+
366  typedef highp_imat2x4 imat2x4;
+
367  typedef highp_imat3x2 imat3x2;
+
368  typedef highp_imat3x3 imat3x3;
+
369  typedef highp_imat3x4 imat3x4;
+
370  typedef highp_imat4x2 imat4x2;
+
371  typedef highp_imat4x3 imat4x3;
+
372  typedef highp_imat4x4 imat4x4;
+
373 #elif(defined(GLM_PRECISION_LOWP_INT))
+
374  typedef lowp_imat2 imat2;
+
375  typedef lowp_imat3 imat3;
+
376  typedef lowp_imat4 imat4;
+
377  typedef lowp_imat2x2 imat2x2;
+
378  typedef lowp_imat2x3 imat2x3;
+
379  typedef lowp_imat2x4 imat2x4;
+
380  typedef lowp_imat3x2 imat3x2;
+
381  typedef lowp_imat3x3 imat3x3;
+
382  typedef lowp_imat3x4 imat3x4;
+
383  typedef lowp_imat4x2 imat4x2;
+
384  typedef lowp_imat4x3 imat4x3;
+
385  typedef lowp_imat4x4 imat4x4;
+
386 #else //if(defined(GLM_PRECISION_MEDIUMP_INT))
+
387 
+
390  typedef mediump_imat2 imat2;
+
391 
+
394  typedef mediump_imat3 imat3;
+
395 
+
398  typedef mediump_imat4 imat4;
+
399 
+
402  typedef mediump_imat2x2 imat2x2;
+
403 
+
406  typedef mediump_imat2x3 imat2x3;
+
407 
+
410  typedef mediump_imat2x4 imat2x4;
+
411 
+
414  typedef mediump_imat3x2 imat3x2;
+
415 
+
418  typedef mediump_imat3x3 imat3x3;
+
419 
+
422  typedef mediump_imat3x4 imat3x4;
+
423 
+
426  typedef mediump_imat4x2 imat4x2;
+
427 
+
430  typedef mediump_imat4x3 imat4x3;
+
431 
+
434  typedef mediump_imat4x4 imat4x4;
+
435 #endif//GLM_PRECISION
+
436 
+
437 #if(defined(GLM_PRECISION_HIGHP_UINT))
+
438  typedef highp_umat2 umat2;
+
439  typedef highp_umat3 umat3;
+
440  typedef highp_umat4 umat4;
+
441  typedef highp_umat2x2 umat2x2;
+
442  typedef highp_umat2x3 umat2x3;
+
443  typedef highp_umat2x4 umat2x4;
+
444  typedef highp_umat3x2 umat3x2;
+
445  typedef highp_umat3x3 umat3x3;
+
446  typedef highp_umat3x4 umat3x4;
+
447  typedef highp_umat4x2 umat4x2;
+
448  typedef highp_umat4x3 umat4x3;
+
449  typedef highp_umat4x4 umat4x4;
+
450 #elif(defined(GLM_PRECISION_LOWP_UINT))
+
451  typedef lowp_umat2 umat2;
+
452  typedef lowp_umat3 umat3;
+
453  typedef lowp_umat4 umat4;
+
454  typedef lowp_umat2x2 umat2x2;
+
455  typedef lowp_umat2x3 umat2x3;
+
456  typedef lowp_umat2x4 umat2x4;
+
457  typedef lowp_umat3x2 umat3x2;
+
458  typedef lowp_umat3x3 umat3x3;
+
459  typedef lowp_umat3x4 umat3x4;
+
460  typedef lowp_umat4x2 umat4x2;
+
461  typedef lowp_umat4x3 umat4x3;
+
462  typedef lowp_umat4x4 umat4x4;
+
463 #else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
+
464 
+
467  typedef mediump_umat2 umat2;
+
468 
+
471  typedef mediump_umat3 umat3;
+
472 
+
475  typedef mediump_umat4 umat4;
+
476 
+
479  typedef mediump_umat2x2 umat2x2;
+
480 
+
483  typedef mediump_umat2x3 umat2x3;
+
484 
+
487  typedef mediump_umat2x4 umat2x4;
+
488 
+
491  typedef mediump_umat3x2 umat3x2;
+
492 
+
495  typedef mediump_umat3x3 umat3x3;
+
496 
+
499  typedef mediump_umat3x4 umat3x4;
+
500 
+
503  typedef mediump_umat4x2 umat4x2;
+
504 
+
507  typedef mediump_umat4x3 umat4x3;
+
508 
+
511  typedef mediump_umat4x4 umat4x4;
+
512 #endif//GLM_PRECISION
+
513 
+
515 }//namespace glm
+
mediump_imat4 imat4
Signed integer 4x4 matrix.
+
tmat2x2< uint, lowp > lowp_umat2
Low-precision unsigned integer 2x2 matrix.
+
tmat4x2< int, mediump > mediump_imat4x2
Medium-precision signed integer 4x2 matrix.
+
tmat2x3< uint, mediump > mediump_umat2x3
Medium-precision unsigned integer 2x3 matrix.
+
tmat3x4< uint, mediump > mediump_umat3x4
Medium-precision unsigned integer 3x4 matrix.
+
tmat2x2< uint, highp > highp_umat2x2
High-precision unsigned integer 2x2 matrix.
+
mediump_umat2x3 umat2x3
Unsigned integer 2x3 matrix.
+
tmat2x2< uint, mediump > mediump_umat2x2
Medium-precision unsigned integer 2x2 matrix.
+
mediump_umat2 umat2
Unsigned integer 2x2 matrix.
+
tmat4x3< uint, lowp > lowp_umat4x3
Low-precision unsigned integer 4x3 matrix.
+
tmat2x3< uint, lowp > lowp_umat2x3
Low-precision unsigned integer 2x3 matrix.
+
tmat4x3< uint, highp > highp_umat4x3
High-precision unsigned integer 4x3 matrix.
+
tmat2x4< uint, lowp > lowp_umat2x4
Low-precision unsigned integer 2x4 matrix.
+
tmat4x4< uint, highp > highp_umat4x4
High-precision unsigned integer 4x4 matrix.
+
tmat3x2< uint, lowp > lowp_umat3x2
Low-precision unsigned integer 3x2 matrix.
+
tmat3x3< int, lowp > lowp_imat3x3
Low-precision signed integer 3x3 matrix.
+
tmat4x4< uint, mediump > mediump_umat4
Medium-precision unsigned integer 4x4 matrix.
+
tmat3x4< int, mediump > mediump_imat3x4
Medium-precision signed integer 3x4 matrix.
+
tmat2x3< uint, highp > highp_umat2x3
High-precision unsigned integer 2x3 matrix.
+
mediump_umat2x4 umat2x4
Unsigned integer 2x4 matrix.
+
mediump_imat2x3 imat2x3
Signed integer 2x3 matrix.
+
tmat3x3< uint, lowp > lowp_umat3x3
Low-precision unsigned integer 3x3 matrix.
+
tmat4x4< uint, mediump > mediump_umat4x4
Medium-precision unsigned integer 4x4 matrix.
+
tmat4x3< int, highp > highp_imat4x3
High-precision signed integer 4x3 matrix.
+
tmat3x3< uint, highp > highp_umat3x3
High-precision unsigned integer 3x3 matrix.
+
tmat3x2< int, highp > highp_imat3x2
High-precision signed integer 3x2 matrix.
+
tmat4x4< uint, lowp > lowp_umat4
Low-precision unsigned integer 4x4 matrix.
+
tmat3x3< int, lowp > lowp_imat3
Low-precision signed integer 3x3 matrix.
+
mediump_imat4x2 imat4x2
Signed integer 4x2 matrix.
+
tmat4x4< uint, highp > highp_umat4
High-precision unsigned integer 4x4 matrix.
+
mediump_umat4x3 umat4x3
Unsigned integer 4x3 matrix.
+
tmat2x3< int, lowp > lowp_imat2x3
Low-precision signed integer 2x3 matrix.
+
tmat4x2< uint, lowp > lowp_umat4x2
Low-precision unsigned integer 4x2 matrix.
+
tmat2x3< int, mediump > mediump_imat2x3
Medium-precision signed integer 2x3 matrix.
+
tmat4x4< int, highp > highp_imat4
High-precision signed integer 4x4 matrix.
+
mediump_umat4x2 umat4x2
Unsigned integer 4x2 matrix.
+
mediump_imat3 imat3
Signed integer 3x3 matrix.
+
mediump_umat3x3 umat3x3
Unsigned integer 3x3 matrix.
+
tmat4x4< uint, lowp > lowp_umat4x4
Low-precision unsigned integer 4x4 matrix.
+
tmat4x3< int, mediump > mediump_imat4x3
Medium-precision signed integer 4x3 matrix.
+
mediump_umat2x2 umat2x2
Unsigned integer 2x2 matrix.
+
tmat4x4< int, lowp > lowp_imat4
Low-precision signed integer 4x4 matrix.
+
tmat2x2< int, lowp > lowp_imat2x2
Low-precision signed integer 2x2 matrix.
+
tmat4x2< uint, mediump > mediump_umat4x2
Medium-precision unsigned integer 4x2 matrix.
+
tmat4x3< int, lowp > lowp_imat4x3
Low-precision signed integer 4x3 matrix.
+
tmat2x2< int, highp > highp_imat2x2
High-precision signed integer 2x2 matrix.
+
tmat2x2< uint, highp > highp_umat2
High-precision unsigned integer 2x2 matrix.
+
mediump_imat4x3 imat4x3
Signed integer 4x3 matrix.
+
tmat3x2< int, mediump > mediump_imat3x2
Medium-precision signed integer 3x2 matrix.
+
tmat4x3< uint, mediump > mediump_umat4x3
Medium-precision unsigned integer 4x3 matrix.
+
mediump_umat3x2 umat3x2
Unsigned integer 3x2 matrix.
+
Definition: _noise.hpp:40
+
mediump_umat3 umat3
Unsigned integer 3x3 matrix.
+
tmat2x4< int, highp > highp_imat2x4
High-precision signed integer 2x4 matrix.
+
tmat2x4< int, lowp > lowp_imat2x4
Low-precision signed integer 2x4 matrix.
+
tmat4x2< int, highp > highp_imat4x2
High-precision signed integer 4x2 matrix.
+
mediump_imat3x4 imat3x4
Signed integer 3x4 matrix.
+
tmat2x2< uint, mediump > mediump_umat2
Medium-precision unsigned integer 2x2 matrix.
+
tmat2x4< uint, mediump > mediump_umat2x4
Medium-precision unsigned integer 2x4 matrix.
+
tmat3x2< int, lowp > lowp_imat3x2
Low-precision signed integer 3x2 matrix.
+
mediump_imat2x4 imat2x4
Signed integer 2x4 matrix.
+
tmat4x2< int, lowp > lowp_imat4x2
Low-precision signed integer 4x2 matrix.
+
tmat2x3< int, highp > highp_imat2x3
High-precision signed integer 2x3 matrix.
+
mediump_umat4 umat4
Unsigned integer 4x4 matrix.
+
tmat3x3< int, mediump > mediump_imat3
Medium-precision signed integer 3x3 matrix.
+
tmat2x4< int, mediump > mediump_imat2x4
Medium-precision signed integer 2x4 matrix.
+
mediump_umat3x4 umat3x4
Unsigned integer 3x4 matrix.
+
tmat2x2< int, lowp > lowp_imat2
Low-precision signed integer 2x2 matrix.
+
tmat3x3< int, highp > highp_imat3x3
High-precision signed integer 3x3 matrix.
+
tmat3x4< uint, highp > highp_umat3x4
High-precision unsigned integer 3x4 matrix.
+
mediump_imat4x4 imat4x4
Signed integer 4x4 matrix.
+
mediump_imat2x2 imat2x2
Signed integer 2x2 matrix.
+
tmat2x2< int, mediump > mediump_imat2x2
Medium-precision signed integer 2x2 matrix.
+
tmat2x2< int, mediump > mediump_imat2
Medium-precision signed integer 2x2 matrix.
+
tmat3x3< uint, mediump > mediump_umat3
Medium-precision unsigned integer 3x3 matrix.
+
tmat4x4< int, lowp > lowp_imat4x4
Low-precision signed integer 4x4 matrix.
+
tmat4x4< int, highp > highp_imat4x4
High-precision signed integer 4x4 matrix.
+
tmat3x3< int, mediump > mediump_imat3x3
Medium-precision signed integer 3x3 matrix.
+
tmat3x4< int, highp > highp_imat3x4
High-precision signed integer 3x4 matrix.
+
tmat3x3< uint, lowp > lowp_umat3
Low-precision unsigned integer 3x3 matrix.
+
tmat3x2< uint, highp > highp_umat3x2
High-precision unsigned integer 3x2 matrix.
+
tmat4x4< int, mediump > mediump_imat4x4
Medium-precision signed integer 4x4 matrix.
+
tmat3x2< uint, mediump > mediump_umat3x2
Medium-precision unsigned integer 3x2 matrix.
+
tmat4x2< uint, highp > highp_umat4x2
High-precision unsigned integer 4x2 matrix.
+
tmat3x3< int, highp > highp_imat3
High-precision signed integer 3x3 matrix.
+
tmat3x4< uint, lowp > lowp_umat3x4
Low-precision unsigned integer 3x4 matrix.
+
tmat3x3< uint, mediump > mediump_umat3x3
Medium-precision unsigned integer 3x3 matrix.
+
tmat2x4< uint, highp > highp_umat2x4
High-precision unsigned integer 2x4 matrix.
+
mediump_imat3x3 imat3x3
Signed integer 3x3 matrix.
+
mediump_umat4x4 umat4x4
Unsigned integer 4x4 matrix.
+
tmat4x4< int, mediump > mediump_imat4
Medium-precision signed integer 4x4 matrix.
+
mediump_imat2 imat2
Signed integer 2x2 matrix.
+
mediump_imat3x2 imat3x2
Signed integer 3x2 matrix.
+
tmat3x4< int, lowp > lowp_imat3x4
Low-precision signed integer 3x4 matrix.
+
tmat2x2< int, highp > highp_imat2
High-precision signed integer 2x2 matrix.
+
tmat2x2< uint, lowp > lowp_umat2x2
Low-precision unsigned integer 2x2 matrix.
+
tmat3x3< uint, highp > highp_umat3
High-precision unsigned integer 3x3 matrix.
+
+ + + + diff --git a/external/glm/doc/api/a00072.html b/external/glm/doc/api/a00072.html new file mode 100644 index 0000000..81fd34b --- /dev/null +++ b/external/glm/doc/api/a00072.html @@ -0,0 +1,92 @@ + + + + + + +0.9.7: matrix_interpolation.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
matrix_interpolation.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL void axisAngle (tmat4x4< T, P > const &mat, tvec3< T, P > &axis, T &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > axisAngleMatrix (tvec3< T, P > const &axis, T const angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > extractMatrixRotation (tmat4x4< T, P > const &mat)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > interpolate (tmat4x4< T, P > const &m1, tmat4x4< T, P > const &m2, T const delta)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_matrix_interpolation

+
Date
2011-03-05 / 2011-06-07
+
Author
Ghenadii Ursachi (the.a.nosp@m.ster.nosp@m.oth@g.nosp@m.mail.nosp@m..com)
+
See also
GLM Core (dependence)
+ +

Definition in file matrix_interpolation.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00072_source.html b/external/glm/doc/api/a00072_source.html new file mode 100644 index 0000000..a023120 --- /dev/null +++ b/external/glm/doc/api/a00072_source.html @@ -0,0 +1,104 @@ + + + + + + +0.9.7: matrix_interpolation.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
matrix_interpolation.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTX_matrix_interpolation extension included")
+
49 #endif
+
50 
+
51 namespace glm
+
52 {
+
55 
+
58  template <typename T, precision P>
+
59  GLM_FUNC_DECL void axisAngle(
+
60  tmat4x4<T, P> const & mat,
+
61  tvec3<T, P> & axis,
+
62  T & angle);
+
63 
+
66  template <typename T, precision P>
+
67  GLM_FUNC_DECL tmat4x4<T, P> axisAngleMatrix(
+
68  tvec3<T, P> const & axis,
+
69  T const angle);
+
70 
+
73  template <typename T, precision P>
+
74  GLM_FUNC_DECL tmat4x4<T, P> extractMatrixRotation(
+
75  tmat4x4<T, P> const & mat);
+
76 
+
80  template <typename T, precision P>
+
81  GLM_FUNC_DECL tmat4x4<T, P> interpolate(
+
82  tmat4x4<T, P> const & m1,
+
83  tmat4x4<T, P> const & m2,
+
84  T const delta);
+
85 
+
87 }//namespace glm
+
88 
+
89 #include "matrix_interpolation.inl"
+
GLM_FUNC_DECL tmat4x4< T, P > extractMatrixRotation(tmat4x4< T, P > const &mat)
Extracts the rotation part of a matrix.
+
GLM_FUNC_DECL tmat4x4< T, P > interpolate(tmat4x4< T, P > const &m1, tmat4x4< T, P > const &m2, T const delta)
Build a interpolation of 4 * 4 matrixes.
+
GLM_FUNC_DECL tvec3< T, P > axis(tquat< T, P > const &x)
Returns the q rotation axis.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL void axisAngle(tmat4x4< T, P > const &mat, tvec3< T, P > &axis, T &angle)
Get the axis and angle of the rotation from a matrix.
+
GLM_FUNC_DECL T angle(tquat< T, P > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL tmat4x4< T, P > axisAngleMatrix(tvec3< T, P > const &axis, T const angle)
Build a matrix from axis and angle.
+
+ + + + diff --git a/external/glm/doc/api/a00073.html b/external/glm/doc/api/a00073.html new file mode 100644 index 0000000..70b2029 --- /dev/null +++ b/external/glm/doc/api/a00073.html @@ -0,0 +1,86 @@ + + + + + + +0.9.7: matrix_inverse.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
matrix_inverse.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType affineInverse (genType const &m)
 
template<typename genType >
GLM_FUNC_DECL genType inverseTranspose (genType const &m)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_matrix_inverse

+
Date
2005-12-21 / 2011-06-05
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file matrix_inverse.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00073_source.html b/external/glm/doc/api/a00073_source.html new file mode 100644 index 0000000..35d125e --- /dev/null +++ b/external/glm/doc/api/a00073_source.html @@ -0,0 +1,89 @@ + + + + + + +0.9.7: matrix_inverse.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
matrix_inverse.hpp
+
+
+Go to the documentation of this file.
1 
+
41 #pragma once
+
42 
+
43 // Dependencies
+
44 #include "../detail/setup.hpp"
+
45 #include "../matrix.hpp"
+
46 #include "../mat2x2.hpp"
+
47 #include "../mat3x3.hpp"
+
48 #include "../mat4x4.hpp"
+
49 
+
50 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
51 # pragma message("GLM: GLM_GTC_matrix_inverse extension included")
+
52 #endif
+
53 
+
54 namespace glm
+
55 {
+
58 
+
64  template <typename genType>
+
65  GLM_FUNC_DECL genType affineInverse(genType const & m);
+
66 
+
72  template <typename genType>
+
73  GLM_FUNC_DECL genType inverseTranspose(genType const & m);
+
74 
+
76 }//namespace glm
+
77 
+
78 #include "matrix_inverse.inl"
+
GLM_FUNC_DECL genType inverseTranspose(genType const &m)
Compute the inverse transpose of a matrix.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL genType affineInverse(genType const &m)
Fast matrix inverse for affine matrix.
+
+ + + + diff --git a/external/glm/doc/api/a00074.html b/external/glm/doc/api/a00074.html new file mode 100644 index 0000000..6db9983 --- /dev/null +++ b/external/glm/doc/api/a00074.html @@ -0,0 +1,118 @@ + + + + + + +0.9.7: matrix_major_storage.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
matrix_major_storage.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tmat2x2< T, P > colMajor2 (tvec2< T, P > const &v1, tvec2< T, P > const &v2)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat2x2< T, P > colMajor2 (tmat2x2< T, P > const &m)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > colMajor3 (tvec3< T, P > const &v1, tvec3< T, P > const &v2, tvec3< T, P > const &v3)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > colMajor3 (tmat3x3< T, P > const &m)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > colMajor4 (tvec4< T, P > const &v1, tvec4< T, P > const &v2, tvec4< T, P > const &v3, tvec4< T, P > const &v4)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > colMajor4 (tmat4x4< T, P > const &m)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat2x2< T, P > rowMajor2 (tvec2< T, P > const &v1, tvec2< T, P > const &v2)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat2x2< T, P > rowMajor2 (tmat2x2< T, P > const &m)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > rowMajor3 (tvec3< T, P > const &v1, tvec3< T, P > const &v2, tvec3< T, P > const &v3)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > rowMajor3 (tmat3x3< T, P > const &m)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > rowMajor4 (tvec4< T, P > const &v1, tvec4< T, P > const &v2, tvec4< T, P > const &v3, tvec4< T, P > const &v4)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > rowMajor4 (tmat4x4< T, P > const &m)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_matrix_major_storage

+
Date
2006-04-19 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTX_extented_min_max (dependence)
+ +

Definition in file matrix_major_storage.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00074_source.html b/external/glm/doc/api/a00074_source.html new file mode 100644 index 0000000..c3bd54b --- /dev/null +++ b/external/glm/doc/api/a00074_source.html @@ -0,0 +1,143 @@ + + + + + + +0.9.7: matrix_major_storage.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
matrix_major_storage.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependency:
+
46 #include "../glm.hpp"
+
47 
+
48 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
49 # pragma message("GLM: GLM_GTX_matrix_major_storage extension included")
+
50 #endif
+
51 
+
52 namespace glm
+
53 {
+
56 
+
59  template <typename T, precision P>
+
60  GLM_FUNC_DECL tmat2x2<T, P> rowMajor2(
+
61  tvec2<T, P> const & v1,
+
62  tvec2<T, P> const & v2);
+
63 
+
66  template <typename T, precision P>
+
67  GLM_FUNC_DECL tmat2x2<T, P> rowMajor2(
+
68  tmat2x2<T, P> const & m);
+
69 
+
72  template <typename T, precision P>
+
73  GLM_FUNC_DECL tmat3x3<T, P> rowMajor3(
+
74  tvec3<T, P> const & v1,
+
75  tvec3<T, P> const & v2,
+
76  tvec3<T, P> const & v3);
+
77 
+
80  template <typename T, precision P>
+
81  GLM_FUNC_DECL tmat3x3<T, P> rowMajor3(
+
82  tmat3x3<T, P> const & m);
+
83 
+
86  template <typename T, precision P>
+
87  GLM_FUNC_DECL tmat4x4<T, P> rowMajor4(
+
88  tvec4<T, P> const & v1,
+
89  tvec4<T, P> const & v2,
+
90  tvec4<T, P> const & v3,
+
91  tvec4<T, P> const & v4);
+
92 
+
95  template <typename T, precision P>
+
96  GLM_FUNC_DECL tmat4x4<T, P> rowMajor4(
+
97  tmat4x4<T, P> const & m);
+
98 
+
101  template <typename T, precision P>
+
102  GLM_FUNC_DECL tmat2x2<T, P> colMajor2(
+
103  tvec2<T, P> const & v1,
+
104  tvec2<T, P> const & v2);
+
105 
+
108  template <typename T, precision P>
+
109  GLM_FUNC_DECL tmat2x2<T, P> colMajor2(
+
110  tmat2x2<T, P> const & m);
+
111 
+
114  template <typename T, precision P>
+
115  GLM_FUNC_DECL tmat3x3<T, P> colMajor3(
+
116  tvec3<T, P> const & v1,
+
117  tvec3<T, P> const & v2,
+
118  tvec3<T, P> const & v3);
+
119 
+
122  template <typename T, precision P>
+
123  GLM_FUNC_DECL tmat3x3<T, P> colMajor3(
+
124  tmat3x3<T, P> const & m);
+
125 
+
128  template <typename T, precision P>
+
129  GLM_FUNC_DECL tmat4x4<T, P> colMajor4(
+
130  tvec4<T, P> const & v1,
+
131  tvec4<T, P> const & v2,
+
132  tvec4<T, P> const & v3,
+
133  tvec4<T, P> const & v4);
+
134 
+
137  template <typename T, precision P>
+
138  GLM_FUNC_DECL tmat4x4<T, P> colMajor4(
+
139  tmat4x4<T, P> const & m);
+
140 
+
142 }//namespace glm
+
143 
+
144 #include "matrix_major_storage.inl"
+
GLM_FUNC_DECL tmat2x2< T, P > colMajor2(tmat2x2< T, P > const &m)
Build a column major matrix from other matrix.
+
GLM_FUNC_DECL tmat4x4< T, P > colMajor4(tmat4x4< T, P > const &m)
Build a column major matrix from other matrix.
+
GLM_FUNC_DECL tmat4x4< T, P > rowMajor4(tmat4x4< T, P > const &m)
Build a row major matrix from other matrix.
+
GLM_FUNC_DECL tmat2x2< T, P > rowMajor2(tmat2x2< T, P > const &m)
Build a row major matrix from other matrix.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL tmat3x3< T, P > rowMajor3(tmat3x3< T, P > const &m)
Build a row major matrix from other matrix.
+
GLM_FUNC_DECL tmat3x3< T, P > colMajor3(tmat3x3< T, P > const &m)
Build a column major matrix from other matrix.
+
+ + + + diff --git a/external/glm/doc/api/a00075.html b/external/glm/doc/api/a00075.html new file mode 100644 index 0000000..9aa4b80 --- /dev/null +++ b/external/glm/doc/api/a00075.html @@ -0,0 +1,107 @@ + + + + + + +0.9.7: matrix_operation.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
matrix_operation.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tmat2x2< T, P > diagonal2x2 (tvec2< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat2x3< T, P > diagonal2x3 (tvec2< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat2x4< T, P > diagonal2x4 (tvec2< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x2< T, P > diagonal3x2 (tvec2< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > diagonal3x3 (tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x4< T, P > diagonal3x4 (tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x2< T, P > diagonal4x2 (tvec2< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x3< T, P > diagonal4x3 (tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > diagonal4x4 (tvec4< T, P > const &v)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_matrix_operation

+
Date
2009-08-29 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file matrix_operation.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00075_source.html b/external/glm/doc/api/a00075_source.html new file mode 100644 index 0000000..9130d00 --- /dev/null +++ b/external/glm/doc/api/a00075_source.html @@ -0,0 +1,122 @@ + + + + + + +0.9.7: matrix_operation.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
matrix_operation.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTX_matrix_operation extension included")
+
49 #endif
+
50 
+
51 namespace glm
+
52 {
+
55 
+
58  template <typename T, precision P>
+
59  GLM_FUNC_DECL tmat2x2<T, P> diagonal2x2(
+
60  tvec2<T, P> const & v);
+
61 
+
64  template <typename T, precision P>
+
65  GLM_FUNC_DECL tmat2x3<T, P> diagonal2x3(
+
66  tvec2<T, P> const & v);
+
67 
+
70  template <typename T, precision P>
+
71  GLM_FUNC_DECL tmat2x4<T, P> diagonal2x4(
+
72  tvec2<T, P> const & v);
+
73 
+
76  template <typename T, precision P>
+
77  GLM_FUNC_DECL tmat3x2<T, P> diagonal3x2(
+
78  tvec2<T, P> const & v);
+
79 
+
82  template <typename T, precision P>
+
83  GLM_FUNC_DECL tmat3x3<T, P> diagonal3x3(
+
84  tvec3<T, P> const & v);
+
85 
+
88  template <typename T, precision P>
+
89  GLM_FUNC_DECL tmat3x4<T, P> diagonal3x4(
+
90  tvec3<T, P> const & v);
+
91 
+
94  template <typename T, precision P>
+
95  GLM_FUNC_DECL tmat4x2<T, P> diagonal4x2(
+
96  tvec2<T, P> const & v);
+
97 
+
100  template <typename T, precision P>
+
101  GLM_FUNC_DECL tmat4x3<T, P> diagonal4x3(
+
102  tvec3<T, P> const & v);
+
103 
+
106  template <typename T, precision P>
+
107  GLM_FUNC_DECL tmat4x4<T, P> diagonal4x4(
+
108  tvec4<T, P> const & v);
+
109 
+
111 }//namespace glm
+
112 
+
113 #include "matrix_operation.inl"
+
GLM_FUNC_DECL tmat3x4< T, P > diagonal3x4(tvec3< T, P > const &v)
Build a diagonal matrix.
+
GLM_FUNC_DECL tmat3x2< T, P > diagonal3x2(tvec2< T, P > const &v)
Build a diagonal matrix.
+
GLM_FUNC_DECL tmat4x2< T, P > diagonal4x2(tvec2< T, P > const &v)
Build a diagonal matrix.
+
GLM_FUNC_DECL tmat2x4< T, P > diagonal2x4(tvec2< T, P > const &v)
Build a diagonal matrix.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL tmat4x3< T, P > diagonal4x3(tvec3< T, P > const &v)
Build a diagonal matrix.
+
GLM_FUNC_DECL tmat4x4< T, P > diagonal4x4(tvec4< T, P > const &v)
Build a diagonal matrix.
+
GLM_FUNC_DECL tmat2x2< T, P > diagonal2x2(tvec2< T, P > const &v)
Build a diagonal matrix.
+
GLM_FUNC_DECL tmat3x3< T, P > diagonal3x3(tvec3< T, P > const &v)
Build a diagonal matrix.
+
GLM_FUNC_DECL tmat2x3< T, P > diagonal2x3(tvec2< T, P > const &v)
Build a diagonal matrix.
+
+ + + + diff --git a/external/glm/doc/api/a00076.html b/external/glm/doc/api/a00076.html new file mode 100644 index 0000000..3f902ac --- /dev/null +++ b/external/glm/doc/api/a00076.html @@ -0,0 +1,106 @@ + + + + + + +0.9.7: matrix_query.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
matrix_query.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class matType>
GLM_FUNC_DECL bool isIdentity (matType< T, P > const &m, T const &epsilon)
 
template<typename T , precision P>
GLM_FUNC_DECL bool isNormalized (tmat2x2< T, P > const &m, T const &epsilon)
 
template<typename T , precision P>
GLM_FUNC_DECL bool isNormalized (tmat3x3< T, P > const &m, T const &epsilon)
 
template<typename T , precision P>
GLM_FUNC_DECL bool isNormalized (tmat4x4< T, P > const &m, T const &epsilon)
 
template<typename T , precision P>
GLM_FUNC_DECL bool isNull (tmat2x2< T, P > const &m, T const &epsilon)
 
template<typename T , precision P>
GLM_FUNC_DECL bool isNull (tmat3x3< T, P > const &m, T const &epsilon)
 
template<typename T , precision P>
GLM_FUNC_DECL bool isNull (tmat4x4< T, P > const &m, T const &epsilon)
 
template<typename T , precision P, template< typename, precision > class matType>
GLM_FUNC_DECL bool isOrthogonal (matType< T, P > const &m, T const &epsilon)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_matrix_query

+
Date
2007-03-05 / 2011-08-28
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTX_vector_query (dependence)
+ +

Definition in file matrix_query.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00076_source.html b/external/glm/doc/api/a00076_source.html new file mode 100644 index 0000000..11cb594 --- /dev/null +++ b/external/glm/doc/api/a00076_source.html @@ -0,0 +1,108 @@ + + + + + + +0.9.7: matrix_query.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
matrix_query.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependency:
+
46 #include "../glm.hpp"
+
47 #include "../gtx/vector_query.hpp"
+
48 #include <limits>
+
49 
+
50 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
51 # pragma message("GLM: GLM_GTX_matrix_query extension included")
+
52 #endif
+
53 
+
54 namespace glm
+
55 {
+
58 
+
61  template<typename T, precision P>
+
62  GLM_FUNC_DECL bool isNull(tmat2x2<T, P> const & m, T const & epsilon);
+
63 
+
66  template<typename T, precision P>
+
67  GLM_FUNC_DECL bool isNull(tmat3x3<T, P> const & m, T const & epsilon);
+
68 
+
71  template<typename T, precision P>
+
72  GLM_FUNC_DECL bool isNull(tmat4x4<T, P> const & m, T const & epsilon);
+
73 
+
76  template<typename T, precision P, template <typename, precision> class matType>
+
77  GLM_FUNC_DECL bool isIdentity(matType<T, P> const & m, T const & epsilon);
+
78 
+
81  template<typename T, precision P>
+
82  GLM_FUNC_DECL bool isNormalized(tmat2x2<T, P> const & m, T const & epsilon);
+
83 
+
86  template<typename T, precision P>
+
87  GLM_FUNC_DECL bool isNormalized(tmat3x3<T, P> const & m, T const & epsilon);
+
88 
+
91  template<typename T, precision P>
+
92  GLM_FUNC_DECL bool isNormalized(tmat4x4<T, P> const & m, T const & epsilon);
+
93 
+
96  template<typename T, precision P, template <typename, precision> class matType>
+
97  GLM_FUNC_DECL bool isOrthogonal(matType<T, P> const & m, T const & epsilon);
+
98 
+
100 }//namespace glm
+
101 
+
102 #include "matrix_query.inl"
+
GLM_FUNC_DECL bool isNull(tmat4x4< T, P > const &m, T const &epsilon)
Return whether a matrix is a null matrix.
+
GLM_FUNC_DECL genType epsilon()
Return the epsilon constant for floating point types.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL bool isIdentity(matType< T, P > const &m, T const &epsilon)
Return whether a matrix is an identity matrix.
+
GLM_FUNC_DECL bool isNormalized(tmat4x4< T, P > const &m, T const &epsilon)
Return whether a matrix is a normalized matrix.
+
GLM_FUNC_DECL bool isOrthogonal(matType< T, P > const &m, T const &epsilon)
Return whether a matrix is an orthonormalized matrix.
+
+ + + + diff --git a/external/glm/doc/api/a00077.html b/external/glm/doc/api/a00077.html new file mode 100644 index 0000000..7f0fe33 --- /dev/null +++ b/external/glm/doc/api/a00077.html @@ -0,0 +1,147 @@ + + + + + + +0.9.7: matrix_transform.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
matrix_transform.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > frustum (T left, T right, T bottom, T top, T near, T far)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > infinitePerspective (T fovy, T aspect, T near)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > lookAt (tvec3< T, P > const &eye, tvec3< T, P > const &center, tvec3< T, P > const &up)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > lookAtLH (tvec3< T, P > const &eye, tvec3< T, P > const &center, tvec3< T, P > const &up)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > lookAtRH (tvec3< T, P > const &eye, tvec3< T, P > const &center, tvec3< T, P > const &up)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > ortho (T left, T right, T bottom, T top, T zNear, T zFar)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > ortho (T left, T right, T bottom, T top)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > perspective (T fovy, T aspect, T near, T far)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > perspectiveFov (T fov, T width, T height, T near, T far)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > perspectiveFovLH (T fov, T width, T height, T near, T far)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > perspectiveFovRH (T fov, T width, T height, T near, T far)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > perspectiveLH (T fovy, T aspect, T near, T far)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > perspectiveRH (T fovy, T aspect, T near, T far)
 
template<typename T , precision P, typename U >
GLM_FUNC_DECL tmat4x4< T, P > pickMatrix (tvec2< T, P > const &center, tvec2< T, P > const &delta, tvec4< U, P > const &viewport)
 
template<typename T , typename U , precision P>
GLM_FUNC_DECL tvec3< T, P > project (tvec3< T, P > const &obj, tmat4x4< T, P > const &model, tmat4x4< T, P > const &proj, tvec4< U, P > const &viewport)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > rotate (tmat4x4< T, P > const &m, T angle, tvec3< T, P > const &axis)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > scale (tmat4x4< T, P > const &m, tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > translate (tmat4x4< T, P > const &m, tvec3< T, P > const &v)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > tweakedInfinitePerspective (T fovy, T aspect, T near)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > tweakedInfinitePerspective (T fovy, T aspect, T near, T ep)
 
template<typename T , typename U , precision P>
GLM_FUNC_DECL tvec3< T, P > unProject (tvec3< T, P > const &win, tmat4x4< T, P > const &model, tmat4x4< T, P > const &proj, tvec4< U, P > const &viewport)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_matrix_transform

+
Date
2009-04-29 / 2011-05-16
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTX_transform
+
+GLM_GTX_transform2
+ +

Definition in file matrix_transform.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00077_source.html b/external/glm/doc/api/a00077_source.html new file mode 100644 index 0000000..28b22c1 --- /dev/null +++ b/external/glm/doc/api/a00077_source.html @@ -0,0 +1,240 @@ + + + + + + +0.9.7: matrix_transform.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
matrix_transform.hpp
+
+
+Go to the documentation of this file.
1 
+
50 #pragma once
+
51 
+
52 // Dependencies
+
53 #include "../mat4x4.hpp"
+
54 #include "../vec2.hpp"
+
55 #include "../vec3.hpp"
+
56 #include "../vec4.hpp"
+
57 #include "../gtc/constants.hpp"
+
58 
+
59 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
60 # pragma message("GLM: GLM_GTC_matrix_transform extension included")
+
61 #endif
+
62 
+
63 namespace glm
+
64 {
+
67 
+
86  template <typename T, precision P>
+
87  GLM_FUNC_DECL tmat4x4<T, P> translate(
+
88  tmat4x4<T, P> const & m,
+
89  tvec3<T, P> const & v);
+
90 
+
100  template <typename T, precision P>
+
101  GLM_FUNC_DECL tmat4x4<T, P> rotate(
+
102  tmat4x4<T, P> const & m,
+
103  T angle,
+
104  tvec3<T, P> const & axis);
+
105 
+
114  template <typename T, precision P>
+
115  GLM_FUNC_DECL tmat4x4<T, P> scale(
+
116  tmat4x4<T, P> const & m,
+
117  tvec3<T, P> const & v);
+
118 
+
130  template <typename T>
+
131  GLM_FUNC_DECL tmat4x4<T, defaultp> ortho(
+
132  T left,
+
133  T right,
+
134  T bottom,
+
135  T top,
+
136  T zNear,
+
137  T zFar);
+
138 
+
148  template <typename T>
+
149  GLM_FUNC_DECL tmat4x4<T, defaultp> ortho(
+
150  T left,
+
151  T right,
+
152  T bottom,
+
153  T top);
+
154 
+
165  template <typename T>
+
166  GLM_FUNC_DECL tmat4x4<T, defaultp> frustum(
+
167  T left,
+
168  T right,
+
169  T bottom,
+
170  T top,
+
171  T near,
+
172  T far);
+
173 
+
182  template <typename T>
+
183  GLM_FUNC_DECL tmat4x4<T, defaultp> perspective(
+
184  T fovy,
+
185  T aspect,
+
186  T near,
+
187  T far);
+
188 
+
189 
+
198  template <typename T>
+
199  GLM_FUNC_DECL tmat4x4<T, defaultp> perspectiveRH(
+
200  T fovy,
+
201  T aspect,
+
202  T near,
+
203  T far);
+
204 
+
213  template <typename T>
+
214  GLM_FUNC_DECL tmat4x4<T, defaultp> perspectiveLH(
+
215  T fovy,
+
216  T aspect,
+
217  T near,
+
218  T far);
+
219 
+
229  template <typename T>
+
230  GLM_FUNC_DECL tmat4x4<T, defaultp> perspectiveFov(
+
231  T fov,
+
232  T width,
+
233  T height,
+
234  T near,
+
235  T far);
+
236 
+
246  template <typename T>
+
247  GLM_FUNC_DECL tmat4x4<T, defaultp> perspectiveFovRH(
+
248  T fov,
+
249  T width,
+
250  T height,
+
251  T near,
+
252  T far);
+
253 
+
263  template <typename T>
+
264  GLM_FUNC_DECL tmat4x4<T, defaultp> perspectiveFovLH(
+
265  T fov,
+
266  T width,
+
267  T height,
+
268  T near,
+
269  T far);
+
270 
+
278  template <typename T>
+
279  GLM_FUNC_DECL tmat4x4<T, defaultp> infinitePerspective(
+
280  T fovy, T aspect, T near);
+
281 
+
289  template <typename T>
+
290  GLM_FUNC_DECL tmat4x4<T, defaultp> tweakedInfinitePerspective(
+
291  T fovy, T aspect, T near);
+
292 
+
301  template <typename T>
+
302  GLM_FUNC_DECL tmat4x4<T, defaultp> tweakedInfinitePerspective(
+
303  T fovy, T aspect, T near, T ep);
+
304 
+
315  template <typename T, typename U, precision P>
+
316  GLM_FUNC_DECL tvec3<T, P> project(
+
317  tvec3<T, P> const & obj,
+
318  tmat4x4<T, P> const & model,
+
319  tmat4x4<T, P> const & proj,
+
320  tvec4<U, P> const & viewport);
+
321 
+
332  template <typename T, typename U, precision P>
+
333  GLM_FUNC_DECL tvec3<T, P> unProject(
+
334  tvec3<T, P> const & win,
+
335  tmat4x4<T, P> const & model,
+
336  tmat4x4<T, P> const & proj,
+
337  tvec4<U, P> const & viewport);
+
338 
+
347  template <typename T, precision P, typename U>
+
348  GLM_FUNC_DECL tmat4x4<T, P> pickMatrix(
+
349  tvec2<T, P> const & center,
+
350  tvec2<T, P> const & delta,
+
351  tvec4<U, P> const & viewport);
+
352 
+
360  template <typename T, precision P>
+
361  GLM_FUNC_DECL tmat4x4<T, P> lookAt(
+
362  tvec3<T, P> const & eye,
+
363  tvec3<T, P> const & center,
+
364  tvec3<T, P> const & up);
+
365 
+
373  template <typename T, precision P>
+
374  GLM_FUNC_DECL tmat4x4<T, P> lookAtRH(
+
375  tvec3<T, P> const & eye,
+
376  tvec3<T, P> const & center,
+
377  tvec3<T, P> const & up);
+
378 
+
386  template <typename T, precision P>
+
387  GLM_FUNC_DECL tmat4x4<T, P> lookAtLH(
+
388  tvec3<T, P> const & eye,
+
389  tvec3<T, P> const & center,
+
390  tvec3<T, P> const & up);
+
391 
+
393 }//namespace glm
+
394 
+
395 #include "matrix_transform.inl"
+
GLM_FUNC_DECL vecType proj(vecType const &x, vecType const &Normal)
Projects x on Normal.
+
GLM_FUNC_DECL tmat4x4< T, P > translate(tmat4x4< T, P > const &m, tvec3< T, P > const &v)
Builds a translation 4 * 4 matrix created from a vector of 3 components.
+
GLM_FUNC_DECL tmat4x4< T, defaultp > perspectiveFov(T fov, T width, T height, T near, T far)
Builds a perspective projection matrix based on a field of view and the default handedness.
+
GLM_FUNC_DECL tmat4x4< T, defaultp > tweakedInfinitePerspective(T fovy, T aspect, T near, T ep)
Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics har...
+
GLM_FUNC_DECL tmat4x4< T, defaultp > perspective(T fovy, T aspect, T near, T far)
Creates a matrix for a symetric perspective-view frustum based on the default handedness.
+
GLM_FUNC_DECL tmat4x4< T, defaultp > perspectiveRH(T fovy, T aspect, T near, T far)
Creates a matrix for a right handed, symetric perspective-view frustum.
+
GLM_FUNC_DECL tvec3< T, P > unProject(tvec3< T, P > const &win, tmat4x4< T, P > const &model, tmat4x4< T, P > const &proj, tvec4< U, P > const &viewport)
Map the specified window coordinates (win.x, win.y, win.z) into object coordinates.
+
GLM_FUNC_DECL tmat4x4< T, defaultp > ortho(T left, T right, T bottom, T top)
Creates a matrix for projecting two-dimensional coordinates onto the screen.
+
GLM_FUNC_DECL tmat4x4< T, P > lookAt(tvec3< T, P > const &eye, tvec3< T, P > const &center, tvec3< T, P > const &up)
Build a look at view matrix based on the default handedness.
+
GLM_FUNC_DECL tmat4x4< T, P > pickMatrix(tvec2< T, P > const &center, tvec2< T, P > const &delta, tvec4< U, P > const &viewport)
Define a picking region.
+
GLM_FUNC_DECL tmat4x4< T, defaultp > perspectiveLH(T fovy, T aspect, T near, T far)
Creates a matrix for a left handed, symetric perspective-view frustum.
+
GLM_FUNC_DECL tmat4x4< T, defaultp > infinitePerspective(T fovy, T aspect, T near)
Creates a matrix for a symmetric perspective-view frustum with far plane at infinite.
+
GLM_FUNC_DECL tvec3< T, P > project(tvec3< T, P > const &obj, tmat4x4< T, P > const &model, tmat4x4< T, P > const &proj, tvec4< U, P > const &viewport)
Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates.
+
GLM_FUNC_DECL tvec3< T, P > axis(tquat< T, P > const &x)
Returns the q rotation axis.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL tmat4x4< T, defaultp > perspectiveFovRH(T fov, T width, T height, T near, T far)
Builds a right handed perspective projection matrix based on a field of view.
+
GLM_FUNC_DECL T angle(tquat< T, P > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL tmat4x4< T, defaultp > frustum(T left, T right, T bottom, T top, T near, T far)
Creates a frustum matrix.
+
GLM_FUNC_DECL tmat4x4< T, P > lookAtLH(tvec3< T, P > const &eye, tvec3< T, P > const &center, tvec3< T, P > const &up)
Build a left handed look at view matrix.
+
GLM_FUNC_DECL tmat4x4< T, P > rotate(tmat4x4< T, P > const &m, T angle, tvec3< T, P > const &axis)
Builds a rotation 4 * 4 matrix created from an axis vector and an angle.
+
GLM_FUNC_DECL tmat4x4< T, defaultp > perspectiveFovLH(T fov, T width, T height, T near, T far)
Builds a left handed perspective projection matrix based on a field of view.
+
GLM_FUNC_DECL tmat4x4< T, P > lookAtRH(tvec3< T, P > const &eye, tvec3< T, P > const &center, tvec3< T, P > const &up)
Build a right handed look at view matrix.
+
GLM_FUNC_DECL tmat4x4< T, P > scale(tmat4x4< T, P > const &m, tvec3< T, P > const &v)
Builds a scale 4 * 4 matrix created from 3 scalars.
+
+ + + + diff --git a/external/glm/doc/api/a00078.html b/external/glm/doc/api/a00078.html new file mode 100644 index 0000000..2da3820 --- /dev/null +++ b/external/glm/doc/api/a00078.html @@ -0,0 +1,95 @@ + + + + + + +0.9.7: matrix_transform_2d.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
matrix_transform_2d.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_QUALIFIER tmat3x3< T, P > rotate (tmat3x3< T, P > const &m, T angle)
 
template<typename T , precision P>
GLM_FUNC_QUALIFIER tmat3x3< T, P > scale (tmat3x3< T, P > const &m, tvec2< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_QUALIFIER tmat3x3< T, P > shearX (tmat3x3< T, P > const &m, T y)
 
template<typename T , precision P>
GLM_FUNC_QUALIFIER tmat3x3< T, P > shearY (tmat3x3< T, P > const &m, T x)
 
template<typename T , precision P>
GLM_FUNC_QUALIFIER tmat3x3< T, P > translate (tmat3x3< T, P > const &m, tvec2< T, P > const &v)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_matrix_transform_2d

+
Date
2014-02-20
+
Author
Miguel �ngel Pérez Martínez
+
See also
GLM Core (dependence)
+ +

Definition in file matrix_transform_2d.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00078_source.html b/external/glm/doc/api/a00078_source.html new file mode 100644 index 0000000..0c2076c --- /dev/null +++ b/external/glm/doc/api/a00078_source.html @@ -0,0 +1,110 @@ + + + + + + +0.9.7: matrix_transform_2d.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
matrix_transform_2d.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../mat3x3.hpp"
+
46 #include "../vec2.hpp"
+
47 
+
48 
+
49 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
50 # pragma message("GLM: GLM_GTX_matrix_transform_2d extension included")
+
51 #endif
+
52 
+
53 namespace glm
+
54 {
+
57 
+
62  template <typename T, precision P>
+
63  GLM_FUNC_QUALIFIER tmat3x3<T, P> translate(
+
64  tmat3x3<T, P> const & m,
+
65  tvec2<T, P> const & v);
+
66 
+
71  template <typename T, precision P>
+
72  GLM_FUNC_QUALIFIER tmat3x3<T, P> rotate(
+
73  tmat3x3<T, P> const & m,
+
74  T angle);
+
75 
+
80  template <typename T, precision P>
+
81  GLM_FUNC_QUALIFIER tmat3x3<T, P> scale(
+
82  tmat3x3<T, P> const & m,
+
83  tvec2<T, P> const & v);
+
84 
+
89  template <typename T, precision P>
+
90  GLM_FUNC_QUALIFIER tmat3x3<T, P> shearX(
+
91  tmat3x3<T, P> const & m,
+
92  T y);
+
93 
+
98  template <typename T, precision P>
+
99  GLM_FUNC_QUALIFIER tmat3x3<T, P> shearY(
+
100  tmat3x3<T, P> const & m,
+
101  T x);
+
102 
+
104 }//namespace glm
+
105 
+
106 #include "matrix_transform_2d.inl"
+
GLM_FUNC_QUALIFIER tmat3x3< T, P > scale(tmat3x3< T, P > const &m, tvec2< T, P > const &v)
Builds a scale 3 * 3 matrix created from a vector of 2 components.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL T angle(tquat< T, P > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_QUALIFIER tmat3x3< T, P > translate(tmat3x3< T, P > const &m, tvec2< T, P > const &v)
Builds a translation 3 * 3 matrix created from a vector of 2 components.
+
GLM_FUNC_QUALIFIER tmat3x3< T, P > rotate(tmat3x3< T, P > const &m, T angle)
Builds a rotation 3 * 3 matrix created from an angle.
+
GLM_FUNC_QUALIFIER tmat3x3< T, P > shearY(tmat3x3< T, P > const &m, T x)
Builds a vertical (parallel to the y axis) shear 3 * 3 matrix.
+
GLM_FUNC_QUALIFIER tmat3x3< T, P > shearX(tmat3x3< T, P > const &m, T y)
Builds an horizontal (parallel to the x axis) shear 3 * 3 matrix.
+
+ + + + diff --git a/external/glm/doc/api/a00079.html b/external/glm/doc/api/a00079.html new file mode 100644 index 0000000..6826a28 --- /dev/null +++ b/external/glm/doc/api/a00079.html @@ -0,0 +1,84 @@ + + + + + + +0.9.7: mixed_product.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
mixed_product.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Functions

+template<typename T , precision P>
GLM_FUNC_DECL T mixedProduct (tvec3< T, P > const &v1, tvec3< T, P > const &v2, tvec3< T, P > const &v3)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_mixed_producte

+
Date
2007-04-03 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file mixed_product.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00079_source.html b/external/glm/doc/api/a00079_source.html new file mode 100644 index 0000000..ba94101 --- /dev/null +++ b/external/glm/doc/api/a00079_source.html @@ -0,0 +1,84 @@ + + + + + + +0.9.7: mixed_product.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
mixed_product.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTX_mixed_product extension included")
+
49 #endif
+
50 
+
51 namespace glm
+
52 {
+
55 
+
57  template <typename T, precision P>
+
58  GLM_FUNC_DECL T mixedProduct(
+
59  tvec3<T, P> const & v1,
+
60  tvec3<T, P> const & v2,
+
61  tvec3<T, P> const & v3);
+
62 
+
64 }// namespace glm
+
65 
+
66 #include "mixed_product.inl"
+
GLM_FUNC_DECL T mixedProduct(tvec3< T, P > const &v1, tvec3< T, P > const &v2, tvec3< T, P > const &v3)
Mixed product of 3 vectors (from GLM_GTX_mixed_product extension)
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00080.html b/external/glm/doc/api/a00080.html new file mode 100644 index 0000000..9aecd22 --- /dev/null +++ b/external/glm/doc/api/a00080.html @@ -0,0 +1,89 @@ + + + + + + +0.9.7: noise.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
noise.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T perlin (vecType< T, P > const &p)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T perlin (vecType< T, P > const &p, vecType< T, P > const &rep)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T simplex (vecType< T, P > const &p)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_noise

+
Date
2011-04-21 / 2011-09-27
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file noise.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00080_source.html b/external/glm/doc/api/a00080_source.html new file mode 100644 index 0000000..c84f65b --- /dev/null +++ b/external/glm/doc/api/a00080_source.html @@ -0,0 +1,100 @@ + + + + + + +0.9.7: noise.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
noise.hpp
+
+
+Go to the documentation of this file.
1 
+
45 #pragma once
+
46 
+
47 // Dependencies
+
48 #include "../detail/setup.hpp"
+
49 #include "../detail/precision.hpp"
+
50 #include "../detail/_noise.hpp"
+
51 #include "../geometric.hpp"
+
52 #include "../common.hpp"
+
53 #include "../vector_relational.hpp"
+
54 #include "../vec2.hpp"
+
55 #include "../vec3.hpp"
+
56 #include "../vec4.hpp"
+
57 
+
58 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
59 # pragma message("GLM: GLM_GTC_noise extension included")
+
60 #endif
+
61 
+
62 namespace glm
+
63 {
+
66 
+
69  template <typename T, precision P, template<typename, precision> class vecType>
+
70  GLM_FUNC_DECL T perlin(
+
71  vecType<T, P> const & p);
+
72 
+
75  template <typename T, precision P, template<typename, precision> class vecType>
+
76  GLM_FUNC_DECL T perlin(
+
77  vecType<T, P> const & p,
+
78  vecType<T, P> const & rep);
+
79 
+
82  template <typename T, precision P, template<typename, precision> class vecType>
+
83  GLM_FUNC_DECL T simplex(
+
84  vecType<T, P> const & p);
+
85 
+
87 }//namespace glm
+
88 
+
89 #include "noise.inl"
+
GLM_FUNC_DECL T simplex(vecType< T, P > const &p)
Simplex noise.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL T perlin(vecType< T, P > const &p, vecType< T, P > const &rep)
Periodic perlin noise.
+
+ + + + diff --git a/external/glm/doc/api/a00081.html b/external/glm/doc/api/a00081.html new file mode 100644 index 0000000..7bf8f84 --- /dev/null +++ b/external/glm/doc/api/a00081.html @@ -0,0 +1,112 @@ + + + + + + +0.9.7: norm.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
norm.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL T distance2 (T const &p0, T const &p1)
 
template<typename genType >
GLM_FUNC_DECL genType::value_type distance2 (genType const &p0, genType const &p1)
 
template<typename T , precision P>
GLM_FUNC_DECL T l1Norm (tvec3< T, P > const &x, tvec3< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL T l1Norm (tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL T l2Norm (tvec3< T, P > const &x, tvec3< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL T l2Norm (tvec3< T, P > const &x)
 
template<typename T >
GLM_FUNC_DECL T length2 (T const &x)
 
template<typename genType >
GLM_FUNC_DECL genType::value_type length2 (genType const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL T lxNorm (tvec3< T, P > const &x, tvec3< T, P > const &y, unsigned int Depth)
 
template<typename T , precision P>
GLM_FUNC_DECL T lxNorm (tvec3< T, P > const &x, unsigned int Depth)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_norm

+
Date
2005-12-21 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTX_quaternion (dependence)
+ +

Definition in file norm.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00081_source.html b/external/glm/doc/api/a00081_source.html new file mode 100644 index 0000000..7648764 --- /dev/null +++ b/external/glm/doc/api/a00081_source.html @@ -0,0 +1,130 @@ + + + + + + +0.9.7: norm.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
norm.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependency:
+
46 #include "../glm.hpp"
+
47 #include "../gtx/quaternion.hpp"
+
48 
+
49 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
50 # pragma message("GLM: GLM_GTX_norm extension included")
+
51 #endif
+
52 
+
53 namespace glm
+
54 {
+
57 
+
60  template <typename T>
+
61  GLM_FUNC_DECL T length2(
+
62  T const & x);
+
63 
+
66  template <typename genType>
+
67  GLM_FUNC_DECL typename genType::value_type length2(
+
68  genType const & x);
+
69 
+
72  template <typename T>
+
73  GLM_FUNC_DECL T distance2(
+
74  T const & p0,
+
75  T const & p1);
+
76 
+
79  template <typename genType>
+
80  GLM_FUNC_DECL typename genType::value_type distance2(
+
81  genType const & p0,
+
82  genType const & p1);
+
83 
+
86  template <typename T, precision P>
+
87  GLM_FUNC_DECL T l1Norm(
+
88  tvec3<T, P> const & x,
+
89  tvec3<T, P> const & y);
+
90 
+
93  template <typename T, precision P>
+
94  GLM_FUNC_DECL T l1Norm(
+
95  tvec3<T, P> const & v);
+
96 
+
99  template <typename T, precision P>
+
100  GLM_FUNC_DECL T l2Norm(
+
101  tvec3<T, P> const & x,
+
102  tvec3<T, P> const & y);
+
103 
+
106  template <typename T, precision P>
+
107  GLM_FUNC_DECL T l2Norm(
+
108  tvec3<T, P> const & x);
+
109 
+
112  template <typename T, precision P>
+
113  GLM_FUNC_DECL T lxNorm(
+
114  tvec3<T, P> const & x,
+
115  tvec3<T, P> const & y,
+
116  unsigned int Depth);
+
117 
+
120  template <typename T, precision P>
+
121  GLM_FUNC_DECL T lxNorm(
+
122  tvec3<T, P> const & x,
+
123  unsigned int Depth);
+
124 
+
126 }//namespace glm
+
127 
+
128 #include "norm.inl"
+
GLM_FUNC_DECL T lxNorm(tvec3< T, P > const &x, unsigned int Depth)
Returns the L norm of v.
+
GLM_FUNC_DECL genType::value_type distance2(genType const &p0, genType const &p1)
Returns the squared distance between p0 and p1, i.e., length2(p0 - p1).
+
GLM_FUNC_DECL T l2Norm(tvec3< T, P > const &x)
Returns the L2 norm of v.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL T l1Norm(tvec3< T, P > const &v)
Returns the L1 norm of v.
+
GLM_FUNC_DECL genType::value_type length2(genType const &x)
Returns the squared length of x.
+
+ + + + diff --git a/external/glm/doc/api/a00082.html b/external/glm/doc/api/a00082.html new file mode 100644 index 0000000..d9bbc61 --- /dev/null +++ b/external/glm/doc/api/a00082.html @@ -0,0 +1,85 @@ + + + + + + +0.9.7: normal.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
normal.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > triangleNormal (tvec3< T, P > const &p1, tvec3< T, P > const &p2, tvec3< T, P > const &p3)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_normal

+
Date
2005-12-21 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTX_extented_min_max (dependence)
+ +

Definition in file normal.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00082_source.html b/external/glm/doc/api/a00082_source.html new file mode 100644 index 0000000..09c74b4 --- /dev/null +++ b/external/glm/doc/api/a00082_source.html @@ -0,0 +1,84 @@ + + + + + + +0.9.7: normal.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
normal.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependency:
+
46 #include "../glm.hpp"
+
47 
+
48 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
49 # pragma message("GLM: GLM_GTX_normal extension included")
+
50 #endif
+
51 
+
52 namespace glm
+
53 {
+
56 
+
59  template <typename T, precision P>
+
60  GLM_FUNC_DECL tvec3<T, P> triangleNormal(
+
61  tvec3<T, P> const & p1,
+
62  tvec3<T, P> const & p2,
+
63  tvec3<T, P> const & p3);
+
64 
+
66 }//namespace glm
+
67 
+
68 #include "normal.inl"
+
GLM_FUNC_DECL tvec3< T, P > triangleNormal(tvec3< T, P > const &p1, tvec3< T, P > const &p2, tvec3< T, P > const &p3)
Computes triangle normal from triangle points.
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00083.html b/external/glm/doc/api/a00083.html new file mode 100644 index 0000000..a9204db --- /dev/null +++ b/external/glm/doc/api/a00083.html @@ -0,0 +1,88 @@ + + + + + + +0.9.7: normalize_dot.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
normalize_dot.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T fastNormalizeDot (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T normalizeDot (vecType< T, P > const &x, vecType< T, P > const &y)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_normalize_dot

+
Date
2007-09-28 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTX_fast_square_root (dependence)
+ +

Definition in file normalize_dot.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00083_source.html b/external/glm/doc/api/a00083_source.html new file mode 100644 index 0000000..b86653e --- /dev/null +++ b/external/glm/doc/api/a00083_source.html @@ -0,0 +1,85 @@ + + + + + + +0.9.7: normalize_dot.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
normalize_dot.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependency:
+
46 #include "../gtx/fast_square_root.hpp"
+
47 
+
48 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
49 # pragma message("GLM: GLM_GTX_normalize_dot extension included")
+
50 #endif
+
51 
+
52 namespace glm
+
53 {
+
56 
+
61  template <typename T, precision P, template <typename, precision> class vecType>
+
62  GLM_FUNC_DECL T normalizeDot(vecType<T, P> const & x, vecType<T, P> const & y);
+
63 
+
68  template <typename T, precision P, template <typename, precision> class vecType>
+
69  GLM_FUNC_DECL T fastNormalizeDot(vecType<T, P> const & x, vecType<T, P> const & y);
+
70 
+
72 }//namespace glm
+
73 
+
74 #include "normalize_dot.inl"
+
GLM_FUNC_DECL T fastNormalizeDot(vecType< T, P > const &x, vecType< T, P > const &y)
Normalize parameters and returns the dot product of x and y.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL T normalizeDot(vecType< T, P > const &x, vecType< T, P > const &y)
Normalize parameters and returns the dot product of x and y.
+
+ + + + diff --git a/external/glm/doc/api/a00084.html b/external/glm/doc/api/a00084.html new file mode 100644 index 0000000..1a2a1e2 --- /dev/null +++ b/external/glm/doc/api/a00084.html @@ -0,0 +1,114 @@ + + + + + + +0.9.7: number_precision.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
number_precision.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

+typedef f32 f32mat1
 
+typedef f32 f32mat1x1
 
+typedef f32 f32vec1
 
+typedef f64 f64mat1
 
+typedef f64 f64mat1x1
 
+typedef f64 f64vec1
 
+typedef u16 u16vec1
 
+typedef u32 u32vec1
 
+typedef u64 u64vec1
 
+typedef u8 u8vec1
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_number_precision

+
Date
2007-05-10 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTC_type_precision (dependence)
+
+GLM_GTC_quaternion (dependence)
+ +

Definition in file number_precision.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00084_source.html b/external/glm/doc/api/a00084_source.html new file mode 100644 index 0000000..b145b8d --- /dev/null +++ b/external/glm/doc/api/a00084_source.html @@ -0,0 +1,115 @@ + + + + + + +0.9.7: number_precision.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
number_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
44 #pragma once
+
45 
+
46 // Dependency:
+
47 #include "../glm.hpp"
+
48 #include "../gtc/type_precision.hpp"
+
49 
+
50 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
51 # pragma message("GLM: GLM_GTX_number_precision extension included")
+
52 #endif
+
53 
+
54 namespace glm{
+
55 namespace gtx
+
56 {
+
58  // Unsigned int vector types
+
59 
+
62 
+
63  typedef u8 u8vec1;
+
64  typedef u16 u16vec1;
+
65  typedef u32 u32vec1;
+
66  typedef u64 u64vec1;
+
67 
+
69  // Float vector types
+
70 
+
71  typedef f32 f32vec1;
+
72  typedef f64 f64vec1;
+
73 
+
75  // Float matrix types
+
76 
+
77  typedef f32 f32mat1;
+
78  typedef f32 f32mat1x1;
+
79  typedef f64 f64mat1;
+
80  typedef f64 f64mat1x1;
+
81 
+
83 }//namespace gtx
+
84 }//namespace glm
+
85 
+
86 #include "number_precision.inl"
+
detail::uint32 u32
32 bit unsigned integer type.
Definition: fwd.hpp:931
+
f32 f32mat1x1
Single-precision floating-point scalar. (from GLM_GTX_number_precision extension) ...
+
detail::uint64 u64
64 bit unsigned integer type.
Definition: fwd.hpp:935
+
u8 u8vec1
8bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
+
f32 f32mat1
Single-precision floating-point scalar. (from GLM_GTX_number_precision extension) ...
+
f32 f32vec1
Single-precision floating-point scalar. (from GLM_GTX_number_precision extension) ...
+
detail::uint16 u16
16 bit unsigned integer type.
Definition: fwd.hpp:927
+
highp_float64_t f64
Default 64 bit double-precision floating-point scalar.
Definition: fwd.hpp:1538
+
f64 f64vec1
Single-precision floating-point scalar. (from GLM_GTX_number_precision extension) ...
+
f64 f64mat1x1
Double-precision floating-point scalar. (from GLM_GTX_number_precision extension) ...
+
highp_float32_t f32
Default 32 bit single-precision floating-point scalar.
Definition: fwd.hpp:1534
+
detail::uint8 u8
8 bit unsigned integer type.
Definition: fwd.hpp:923
+
u16 u16vec1
16bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
+
Definition: _noise.hpp:40
+
f64 f64mat1
Double-precision floating-point scalar. (from GLM_GTX_number_precision extension) ...
+
u64 u64vec1
64bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
+
u32 u32vec1
32bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
+
+ + + + diff --git a/external/glm/doc/api/a00085.html b/external/glm/doc/api/a00085.html new file mode 100644 index 0000000..6fd8d18 --- /dev/null +++ b/external/glm/doc/api/a00085.html @@ -0,0 +1,89 @@ + + + + + + +0.9.7: optimum_pow.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
optimum_pow.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType pow2 (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType pow3 (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType pow4 (genType const &x)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_optimum_pow

+
Date
2005-12-21 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file optimum_pow.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00085_source.html b/external/glm/doc/api/a00085_source.html new file mode 100644 index 0000000..bb0e89c --- /dev/null +++ b/external/glm/doc/api/a00085_source.html @@ -0,0 +1,91 @@ + + + + + + +0.9.7: optimum_pow.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
optimum_pow.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTX_optimum_pow extension included")
+
49 #endif
+
50 
+
51 namespace glm{
+
52 namespace gtx
+
53 {
+
56 
+
60  template <typename genType>
+
61  GLM_FUNC_DECL genType pow2(genType const & x);
+
62 
+
66  template <typename genType>
+
67  GLM_FUNC_DECL genType pow3(genType const & x);
+
68 
+
72  template <typename genType>
+
73  GLM_FUNC_DECL genType pow4(genType const & x);
+
74 
+
76 }//namespace gtx
+
77 }//namespace glm
+
78 
+
79 #include "optimum_pow.inl"
+
GLM_FUNC_DECL genType pow3(genType const &x)
Returns x raised to the power of 3.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL genType pow4(genType const &x)
Returns x raised to the power of 4.
+
GLM_FUNC_DECL genType pow2(genType const &x)
Returns x raised to the power of 2.
+
+ + + + diff --git a/external/glm/doc/api/a00086.html b/external/glm/doc/api/a00086.html new file mode 100644 index 0000000..9ad4894 --- /dev/null +++ b/external/glm/doc/api/a00086.html @@ -0,0 +1,88 @@ + + + + + + +0.9.7: orthonormalize.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
orthonormalize.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > orthonormalize (tmat3x3< T, P > const &m)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > orthonormalize (tvec3< T, P > const &x, tvec3< T, P > const &y)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_orthonormalize

+
Date
2005-12-21 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTX_extented_min_max (dependence)
+ +

Definition in file orthonormalize.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00086_source.html b/external/glm/doc/api/a00086_source.html new file mode 100644 index 0000000..3d3bbf6 --- /dev/null +++ b/external/glm/doc/api/a00086_source.html @@ -0,0 +1,86 @@ + + + + + + +0.9.7: orthonormalize.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
orthonormalize.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependency:
+
46 #include "../vec3.hpp"
+
47 #include "../mat3x3.hpp"
+
48 #include "../geometric.hpp"
+
49 
+
50 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
51 # pragma message("GLM: GLM_GTX_orthonormalize extension included")
+
52 #endif
+
53 
+
54 namespace glm
+
55 {
+
58 
+
62  template <typename T, precision P>
+
63  GLM_FUNC_DECL tmat3x3<T, P> orthonormalize(tmat3x3<T, P> const & m);
+
64 
+
68  template <typename T, precision P>
+
69  GLM_FUNC_DECL tvec3<T, P> orthonormalize(tvec3<T, P> const & x, tvec3<T, P> const & y);
+
70 
+
72 }//namespace glm
+
73 
+
74 #include "orthonormalize.inl"
+
GLM_FUNC_DECL tvec3< T, P > orthonormalize(tvec3< T, P > const &x, tvec3< T, P > const &y)
Orthonormalizes x according y.
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00087.html b/external/glm/doc/api/a00087.html new file mode 100644 index 0000000..c3eec70 --- /dev/null +++ b/external/glm/doc/api/a00087.html @@ -0,0 +1,140 @@ + + + + + + +0.9.7: packing.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
gtc/packing.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GLM_FUNC_DECL uint32 packF2x11_1x10 (vec3 const &v)
 
GLM_FUNC_DECL uint16 packHalf1x16 (float v)
 
GLM_FUNC_DECL uint64 packHalf4x16 (vec4 const &v)
 
GLM_FUNC_DECL uint32 packI3x10_1x2 (ivec4 const &v)
 
GLM_FUNC_DECL uint16 packSnorm1x16 (float v)
 
GLM_FUNC_DECL uint8 packSnorm1x8 (float s)
 
GLM_FUNC_DECL uint16 packSnorm2x8 (vec2 const &v)
 
GLM_FUNC_DECL uint32 packSnorm3x10_1x2 (vec4 const &v)
 
GLM_FUNC_DECL uint64 packSnorm4x16 (vec4 const &v)
 
GLM_FUNC_DECL uint32 packU3x10_1x2 (uvec4 const &v)
 
GLM_FUNC_DECL uint16 packUnorm1x16 (float v)
 
GLM_FUNC_DECL uint8 packUnorm1x8 (float v)
 
GLM_FUNC_DECL uint16 packUnorm2x8 (vec2 const &v)
 
GLM_FUNC_DECL uint32 packUnorm3x10_1x2 (vec4 const &v)
 
GLM_FUNC_DECL uint64 packUnorm4x16 (vec4 const &v)
 
GLM_FUNC_DECL vec3 unpackF2x11_1x10 (uint32 p)
 
GLM_FUNC_DECL float unpackHalf1x16 (uint16 v)
 
GLM_FUNC_DECL vec4 unpackHalf4x16 (uint64 p)
 
GLM_FUNC_DECL ivec4 unpackI3x10_1x2 (uint32 p)
 
GLM_FUNC_DECL float unpackSnorm1x16 (uint16 p)
 
GLM_FUNC_DECL float unpackSnorm1x8 (uint8 p)
 
GLM_FUNC_DECL vec2 unpackSnorm2x8 (uint16 p)
 
GLM_FUNC_DECL vec4 unpackSnorm3x10_1x2 (uint32 p)
 
GLM_FUNC_DECL vec4 unpackSnorm4x16 (uint64 p)
 
GLM_FUNC_DECL uvec4 unpackU3x10_1x2 (uint32 p)
 
GLM_FUNC_DECL float unpackUnorm1x16 (uint16 p)
 
GLM_FUNC_DECL float unpackUnorm1x8 (uint8 p)
 
GLM_FUNC_DECL vec2 unpackUnorm2x8 (uint16 p)
 
GLM_FUNC_DECL vec4 unpackUnorm3x10_1x2 (uint32 p)
 
GLM_FUNC_DECL vec4 unpackUnorm4x16 (uint64 p)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_packing

+
Date
2013-08-08 / 2013-08-08
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file gtc/packing.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00087_source.html b/external/glm/doc/api/a00087_source.html new file mode 100644 index 0000000..ff97023 --- /dev/null +++ b/external/glm/doc/api/a00087_source.html @@ -0,0 +1,173 @@ + + + + + + +0.9.7: packing.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
gtc/packing.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependency:
+
46 #include "type_precision.hpp"
+
47 
+
48 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
49 # pragma message("GLM: GLM_GTC_packing extension included")
+
50 #endif
+
51 
+
52 namespace glm
+
53 {
+
56 
+
68  GLM_FUNC_DECL uint8 packUnorm1x8(float v);
+
69 
+
80  GLM_FUNC_DECL float unpackUnorm1x8(uint8 p);
+
81 
+
96  GLM_FUNC_DECL uint16 packUnorm2x8(vec2 const & v);
+
97 
+
112  GLM_FUNC_DECL vec2 unpackUnorm2x8(uint16 p);
+
113 
+
125  GLM_FUNC_DECL uint8 packSnorm1x8(float s);
+
126 
+
138  GLM_FUNC_DECL float unpackSnorm1x8(uint8 p);
+
139 
+
154  GLM_FUNC_DECL uint16 packSnorm2x8(vec2 const & v);
+
155 
+
170  GLM_FUNC_DECL vec2 unpackSnorm2x8(uint16 p);
+
171 
+
183  GLM_FUNC_DECL uint16 packUnorm1x16(float v);
+
184 
+
196  GLM_FUNC_DECL float unpackUnorm1x16(uint16 p);
+
197 
+
212  GLM_FUNC_DECL uint64 packUnorm4x16(vec4 const & v);
+
213 
+
228  GLM_FUNC_DECL vec4 unpackUnorm4x16(uint64 p);
+
229 
+
241  GLM_FUNC_DECL uint16 packSnorm1x16(float v);
+
242 
+
254  GLM_FUNC_DECL float unpackSnorm1x16(uint16 p);
+
255 
+
270  GLM_FUNC_DECL uint64 packSnorm4x16(vec4 const & v);
+
271 
+
286  GLM_FUNC_DECL vec4 unpackSnorm4x16(uint64 p);
+
287 
+
297  GLM_FUNC_DECL uint16 packHalf1x16(float v);
+
298 
+
308  GLM_FUNC_DECL float unpackHalf1x16(uint16 v);
+
309 
+
321  GLM_FUNC_DECL uint64 packHalf4x16(vec4 const & v);
+
322 
+
334  GLM_FUNC_DECL vec4 unpackHalf4x16(uint64 p);
+
335 
+
347  GLM_FUNC_DECL uint32 packI3x10_1x2(ivec4 const & v);
+
348 
+
358  GLM_FUNC_DECL ivec4 unpackI3x10_1x2(uint32 p);
+
359 
+
371  GLM_FUNC_DECL uint32 packU3x10_1x2(uvec4 const & v);
+
372 
+
382  GLM_FUNC_DECL uvec4 unpackU3x10_1x2(uint32 p);
+
383 
+
400  GLM_FUNC_DECL uint32 packSnorm3x10_1x2(vec4 const & v);
+
401 
+
417  GLM_FUNC_DECL vec4 unpackSnorm3x10_1x2(uint32 p);
+
418 
+
435  GLM_FUNC_DECL uint32 packUnorm3x10_1x2(vec4 const & v);
+
436 
+
452  GLM_FUNC_DECL vec4 unpackUnorm3x10_1x2(uint32 p);
+
453 
+
463  GLM_FUNC_DECL uint32 packF2x11_1x10(vec3 const & v);
+
464 
+
473  GLM_FUNC_DECL vec3 unpackF2x11_1x10(uint32 p);
+
474 
+
476 }// namespace glm
+
477 
+
478 #include "packing.inl"
+
GLM_FUNC_DECL uint16 packUnorm1x16(float v)
First, converts the normalized floating-point value v into a 16-bit integer value.
+
GLM_FUNC_DECL float unpackUnorm1x16(uint16 p)
First, unpacks a single 16-bit unsigned integer p into a of 16-bit unsigned integers.
+
GLM_FUNC_DECL uint64 packUnorm4x16(vec4 const &v)
First, converts each component of the normalized floating-point value v into 16-bit integer values...
+
GLM_FUNC_DECL uint16 packSnorm1x16(float v)
First, converts the normalized floating-point value v into 16-bit integer value.
+
GLM_FUNC_DECL float unpackHalf1x16(uint16 v)
Returns a floating-point scalar with components obtained by unpacking a 16-bit unsigned integer into ...
+
GLM_FUNC_DECL uint32 packUnorm3x10_1x2(vec4 const &v)
First, converts the first three components of the normalized floating-point value v into 10-bit unsig...
+
GLM_FUNC_DECL vec3 unpackF2x11_1x10(uint32 p)
First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and ...
+
GLM_FUNC_DECL ivec4 unpackI3x10_1x2(uint32 p)
Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit signed integers...
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL uint64 packSnorm4x16(vec4 const &v)
First, converts each component of the normalized floating-point value v into 16-bit integer values...
+
GLM_FUNC_DECL vec2 unpackUnorm2x8(uint16 p)
First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit unsigned integers.
+
highp_uvec4 uvec4
4 components vector of unsigned integer numbers.
Definition: type_vec.hpp:481
+
GLM_FUNC_DECL uint16 packUnorm2x8(vec2 const &v)
First, converts each component of the normalized floating-point value v into 8-bit integer values...
+
GLM_FUNC_DECL vec4 unpackHalf4x16(uint64 p)
Returns a four-component floating-point vector with components obtained by unpacking a 64-bit unsigne...
+
highp_vec2 vec2
2 components vector of floating-point numbers.
Definition: type_vec.hpp:390
+
GLM_FUNC_DECL uint32 packSnorm3x10_1x2(vec4 const &v)
First, converts the first three components of the normalized floating-point value v into 10-bit signe...
+
GLM_FUNC_DECL vec4 unpackUnorm4x16(uint64 p)
First, unpacks a single 64-bit unsigned integer p into four 16-bit unsigned integers.
+
GLM_FUNC_DECL uint32 packI3x10_1x2(ivec4 const &v)
Returns an unsigned integer obtained by converting the components of a four-component signed integer ...
+
GLM_FUNC_DECL float unpackUnorm1x8(uint8 p)
Convert a single 8-bit integer to a normalized floating-point value.
+
GLM_FUNC_DECL vec4 unpackSnorm3x10_1x2(uint32 p)
First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL uint16 packSnorm2x8(vec2 const &v)
First, converts each component of the normalized floating-point value v into 8-bit integer values...
+
highp_ivec4 ivec4
4 components vector of signed integer numbers.
Definition: type_vec.hpp:454
+
GLM_FUNC_DECL uint8 packSnorm1x8(float s)
First, converts the normalized floating-point value v into 8-bit integer value.
+
highp_vec4 vec4
4 components vector of floating-point numbers.
Definition: type_vec.hpp:400
+
GLM_FUNC_DECL uint32 packU3x10_1x2(uvec4 const &v)
Returns an unsigned integer obtained by converting the components of a four-component unsigned intege...
+
GLM_FUNC_DECL uint64 packHalf4x16(vec4 const &v)
Returns an unsigned integer obtained by converting the components of a four-component floating-point ...
+
highp_vec3 vec3
3 components vector of floating-point numbers.
Definition: type_vec.hpp:395
+
GLM_FUNC_DECL uvec4 unpackU3x10_1x2(uint32 p)
Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit unsigned integers...
+
GLM_FUNC_DECL uint8 packUnorm1x8(float v)
First, converts the normalized floating-point value v into a 8-bit integer value. ...
+
GLM_FUNC_DECL vec4 unpackSnorm4x16(uint64 p)
First, unpacks a single 64-bit unsigned integer p into four 16-bit signed integers.
+
GLM_FUNC_DECL float unpackSnorm1x16(uint16 p)
First, unpacks a single 16-bit unsigned integer p into a single 16-bit signed integers.
+
GLM_FUNC_DECL vec4 unpackUnorm3x10_1x2(uint32 p)
First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers.
+
GLM_FUNC_DECL vec2 unpackSnorm2x8(uint16 p)
First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit signed integers.
+
GLM_FUNC_DECL float unpackSnorm1x8(uint8 p)
First, unpacks a single 8-bit unsigned integer p into a single 8-bit signed integers.
+
GLM_FUNC_DECL uint16 packHalf1x16(float v)
Returns an unsigned integer obtained by converting the components of a floating-point scalar to the 1...
+
GLM_FUNC_DECL uint32 packF2x11_1x10(vec3 const &v)
First, converts the first two components of the normalized floating-point value v into 11-bit signles...
+
+ + + + diff --git a/external/glm/doc/api/a00088.html b/external/glm/doc/api/a00088.html new file mode 100644 index 0000000..048f97a --- /dev/null +++ b/external/glm/doc/api/a00088.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: packing.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
packing.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file packing.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00088_source.html b/external/glm/doc/api/a00088_source.html new file mode 100644 index 0000000..af98a97 --- /dev/null +++ b/external/glm/doc/api/a00088_source.html @@ -0,0 +1,65 @@ + + + + + + +0.9.7: packing.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
packing.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "detail/func_packing.hpp"
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00089_source.html b/external/glm/doc/api/a00089_source.html new file mode 100644 index 0000000..36f060b --- /dev/null +++ b/external/glm/doc/api/a00089_source.html @@ -0,0 +1,61 @@ + + + + + + +0.9.7: pages.doxy Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
pages.doxy
+
+
+
1 
+
+ + + + diff --git a/external/glm/doc/api/a00090.html b/external/glm/doc/api/a00090.html new file mode 100644 index 0000000..ced6e85 --- /dev/null +++ b/external/glm/doc/api/a00090.html @@ -0,0 +1,85 @@ + + + + + + +0.9.7: perpendicular.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
perpendicular.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Functions

template<typename vecType >
GLM_FUNC_DECL vecType perp (vecType const &x, vecType const &Normal)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_perpendicular

+
Date
2005-12-21 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTX_projection (dependence)
+ +

Definition in file perpendicular.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00090_source.html b/external/glm/doc/api/a00090_source.html new file mode 100644 index 0000000..6525507 --- /dev/null +++ b/external/glm/doc/api/a00090_source.html @@ -0,0 +1,84 @@ + + + + + + +0.9.7: perpendicular.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
perpendicular.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependency:
+
46 #include "../glm.hpp"
+
47 #include "../gtx/projection.hpp"
+
48 
+
49 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
50 # pragma message("GLM: GLM_GTX_perpendicular extension included")
+
51 #endif
+
52 
+
53 namespace glm
+
54 {
+
57 
+
60  template <typename vecType>
+
61  GLM_FUNC_DECL vecType perp(
+
62  vecType const & x,
+
63  vecType const & Normal);
+
64 
+
66 }//namespace glm
+
67 
+
68 #include "perpendicular.inl"
+
GLM_FUNC_DECL vecType perp(vecType const &x, vecType const &Normal)
Projects x a perpendicular axis of Normal.
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00091.html b/external/glm/doc/api/a00091.html new file mode 100644 index 0000000..8430ec6 --- /dev/null +++ b/external/glm/doc/api/a00091.html @@ -0,0 +1,86 @@ + + + + + + +0.9.7: polar_coordinates.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
polar_coordinates.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > euclidean (tvec2< T, P > const &polar)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > polar (tvec3< T, P > const &euclidean)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_polar_coordinates

+
Date
2007-03-06 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file polar_coordinates.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00091_source.html b/external/glm/doc/api/a00091_source.html new file mode 100644 index 0000000..85f3957 --- /dev/null +++ b/external/glm/doc/api/a00091_source.html @@ -0,0 +1,87 @@ + + + + + + +0.9.7: polar_coordinates.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
polar_coordinates.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTX_polar_coordinates extension included")
+
49 #endif
+
50 
+
51 namespace glm
+
52 {
+
55 
+
59  template <typename T, precision P>
+
60  GLM_FUNC_DECL tvec3<T, P> polar(
+
61  tvec3<T, P> const & euclidean);
+
62 
+
66  template <typename T, precision P>
+
67  GLM_FUNC_DECL tvec3<T, P> euclidean(
+
68  tvec2<T, P> const & polar);
+
69 
+
71 }//namespace glm
+
72 
+
73 #include "polar_coordinates.inl"
+
GLM_FUNC_DECL tvec3< T, P > euclidean(tvec2< T, P > const &polar)
Convert Polar to Euclidean coordinates.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL tvec3< T, P > polar(tvec3< T, P > const &euclidean)
Convert Euclidean to Polar coordinates, x is the xz distance, y, the latitude and z the longitude...
+
+ + + + diff --git a/external/glm/doc/api/a00092.html b/external/glm/doc/api/a00092.html new file mode 100644 index 0000000..b9cc995 --- /dev/null +++ b/external/glm/doc/api/a00092.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: precision.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
precision.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-04-01 / 2013-04-01
+
Author
Christophe Riccio
+ +

Definition in file precision.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00092_source.html b/external/glm/doc/api/a00092_source.html new file mode 100644 index 0000000..7d19976 --- /dev/null +++ b/external/glm/doc/api/a00092_source.html @@ -0,0 +1,74 @@ + + + + + + +0.9.7: precision.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
precision.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 namespace glm
+
36 {
+
37  enum precision
+
38  {
+
39  highp,
+
40  mediump,
+
41  lowp,
+
42  defaultp = highp
+
43  };
+
44 }//namespace glm
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00093.html b/external/glm/doc/api/a00093.html new file mode 100644 index 0000000..e1b7779 --- /dev/null +++ b/external/glm/doc/api/a00093.html @@ -0,0 +1,83 @@ + + + + + + +0.9.7: projection.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
projection.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Functions

template<typename vecType >
GLM_FUNC_DECL vecType proj (vecType const &x, vecType const &Normal)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_projection

+
Date
2005-12-21 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file projection.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00093_source.html b/external/glm/doc/api/a00093_source.html new file mode 100644 index 0000000..880b858 --- /dev/null +++ b/external/glm/doc/api/a00093_source.html @@ -0,0 +1,81 @@ + + + + + + +0.9.7: projection.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
projection.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../geometric.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTX_projection extension included")
+
49 #endif
+
50 
+
51 namespace glm
+
52 {
+
55 
+
59  template <typename vecType>
+
60  GLM_FUNC_DECL vecType proj(vecType const & x, vecType const & Normal);
+
61 
+
63 }//namespace glm
+
64 
+
65 #include "projection.inl"
+
GLM_FUNC_DECL vecType proj(vecType const &x, vecType const &Normal)
Projects x on Normal.
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00094.html b/external/glm/doc/api/a00094.html new file mode 100644 index 0000000..1fb0bc3 --- /dev/null +++ b/external/glm/doc/api/a00094.html @@ -0,0 +1,162 @@ + + + + + + +0.9.7: quaternion.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
gtc/quaternion.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL T angle (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > angleAxis (T const &angle, tvec3< T, P > const &axis)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > axis (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > conjugate (tquat< T, P > const &q)
 
template<typename T , precision P, template< typename, precision > class quatType>
GLM_FUNC_DECL T dot (quatType< T, P > const &x, quatType< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< bool, P > equal (tquat< T, P > const &x, tquat< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > eulerAngles (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< bool, P > greaterThan (tquat< T, P > const &x, tquat< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< bool, P > greaterThanEqual (tquat< T, P > const &x, tquat< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > inverse (tquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL T length (tquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > lerp (tquat< T, P > const &x, tquat< T, P > const &y, T a)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< bool, P > lessThan (tquat< T, P > const &x, tquat< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< bool, P > lessThanEqual (tquat< T, P > const &x, tquat< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > mat3_cast (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > mat4_cast (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > mix (tquat< T, P > const &x, tquat< T, P > const &y, T a)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > normalize (tquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< bool, P > notEqual (tquat< T, P > const &x, tquat< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL T pitch (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > quat_cast (tmat3x3< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > quat_cast (tmat4x4< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL T roll (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > rotate (tquat< T, P > const &q, T const &angle, tvec3< T, P > const &axis)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > slerp (tquat< T, P > const &x, tquat< T, P > const &y, T a)
 
template<typename T , precision P>
GLM_FUNC_DECL T yaw (tquat< T, P > const &x)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_quaternion

+
Date
2009-05-21 / 2012-12-20
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+gtc_half_float (dependence)
+
+GLM_GTC_constants (dependence)
+ +

Definition in file gtc/quaternion.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00094_source.html b/external/glm/doc/api/a00094_source.html new file mode 100644 index 0000000..26b913c --- /dev/null +++ b/external/glm/doc/api/a00094_source.html @@ -0,0 +1,295 @@ + + + + + + +0.9.7: quaternion.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
gtc/quaternion.hpp
+
+
+Go to the documentation of this file.
1 
+
44 #pragma once
+
45 
+
46 // Dependency:
+
47 #include "../mat3x3.hpp"
+
48 #include "../mat4x4.hpp"
+
49 #include "../vec3.hpp"
+
50 #include "../vec4.hpp"
+
51 #include "../gtc/constants.hpp"
+
52 
+
53 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
54 # pragma message("GLM: GLM_GTC_quaternion extension included")
+
55 #endif
+
56 
+
57 namespace glm
+
58 {
+
61 
+
62  template <typename T, precision P = defaultp>
+
63  struct tquat
+
64  {
+
65  // -- Implementation detail --
+
66 
+
67  typedef tquat<T, P> type;
+
68  typedef T value_type;
+
69 
+
70 # ifdef GLM_META_PROG_HELPERS
+
71  static GLM_RELAXED_CONSTEXPR length_t components = 4;
+
72  static GLM_RELAXED_CONSTEXPR precision prec = P;
+
73 # endif//GLM_META_PROG_HELPERS
+
74 
+
75  // -- Data --
+
76 
+
77  T x, y, z, w;
+
78 
+
79  // -- Component accesses --
+
80 
+
81 # ifdef GLM_FORCE_SIZE_FUNC
+
82  typedef size_t size_type;
+
84  GLM_FUNC_DECL GLM_CONSTEXPR size_type size() const;
+
85 
+
86  GLM_FUNC_DECL T & operator[](size_type i);
+
87  GLM_FUNC_DECL T const & operator[](size_type i) const;
+
88 # else
+
89  typedef length_t length_type;
+
91  GLM_FUNC_DECL GLM_CONSTEXPR length_type length() const;
+
92 
+
93  GLM_FUNC_DECL T & operator[](length_type i);
+
94  GLM_FUNC_DECL T const & operator[](length_type i) const;
+
95 # endif//GLM_FORCE_SIZE_FUNC
+
96 
+
97  // -- Implicit basic constructors --
+
98 
+
99  GLM_FUNC_DECL tquat() GLM_DEFAULT_CTOR;
+
100  GLM_FUNC_DECL tquat(tquat<T, P> const & q) GLM_DEFAULT;
+
101  template <precision Q>
+
102  GLM_FUNC_DECL tquat(tquat<T, Q> const & q);
+
103 
+
104  // -- Explicit basic constructors --
+
105 
+
106  GLM_FUNC_DECL explicit tquat(ctor);
+
107  GLM_FUNC_DECL explicit tquat(T const & s, tvec3<T, P> const & v);
+
108  GLM_FUNC_DECL tquat(T const & w, T const & x, T const & y, T const & z);
+
109 
+
110  // -- Conversion constructors --
+
111 
+
112  template <typename U, precision Q>
+
113  GLM_FUNC_DECL GLM_EXPLICIT tquat(tquat<U, Q> const & q);
+
114 
+
116 # if GLM_HAS_EXPLICIT_CONVERSION_OPERATORS
+
117  GLM_FUNC_DECL explicit operator tmat3x3<T, P>();
+
118  GLM_FUNC_DECL explicit operator tmat4x4<T, P>();
+
119 # endif
+
120 
+
127  GLM_FUNC_DECL explicit tquat(tvec3<T, P> const & u, tvec3<T, P> const & v);
+
128 
+
130  GLM_FUNC_DECL explicit tquat(tvec3<T, P> const & eulerAngles);
+
131  GLM_FUNC_DECL explicit tquat(tmat3x3<T, P> const & m);
+
132  GLM_FUNC_DECL explicit tquat(tmat4x4<T, P> const & m);
+
133 
+
134  // -- Unary arithmetic operators --
+
135 
+
136  GLM_FUNC_DECL tquat<T, P> & operator=(tquat<T, P> const & m) GLM_DEFAULT;
+
137 
+
138  template <typename U>
+
139  GLM_FUNC_DECL tquat<T, P> & operator=(tquat<U, P> const & m);
+
140  template <typename U>
+
141  GLM_FUNC_DECL tquat<T, P> & operator+=(tquat<U, P> const & q);
+
142  template <typename U>
+
143  GLM_FUNC_DECL tquat<T, P> & operator*=(tquat<U, P> const & q);
+
144  template <typename U>
+
145  GLM_FUNC_DECL tquat<T, P> & operator*=(U s);
+
146  template <typename U>
+
147  GLM_FUNC_DECL tquat<T, P> & operator/=(U s);
+
148  };
+
149 
+
150  // -- Unary bit operators --
+
151 
+
152  template <typename T, precision P>
+
153  GLM_FUNC_DECL tquat<T, P> operator-(tquat<T, P> const & q);
+
154 
+
155  // -- Binary operators --
+
156 
+
157  template <typename T, precision P>
+
158  GLM_FUNC_DECL tquat<T, P> operator+(tquat<T, P> const & q, tquat<T, P> const & p);
+
159 
+
160  template <typename T, precision P>
+
161  GLM_FUNC_DECL tquat<T, P> operator*(tquat<T, P> const & q, tquat<T, P> const & p);
+
162 
+
163  template <typename T, precision P>
+
164  GLM_FUNC_DECL tvec3<T, P> operator*(tquat<T, P> const & q, tvec3<T, P> const & v);
+
165 
+
166  template <typename T, precision P>
+
167  GLM_FUNC_DECL tvec3<T, P> operator*(tvec3<T, P> const & v, tquat<T, P> const & q);
+
168 
+
169  template <typename T, precision P>
+
170  GLM_FUNC_DECL tvec4<T, P> operator*(tquat<T, P> const & q, tvec4<T, P> const & v);
+
171 
+
172  template <typename T, precision P>
+
173  GLM_FUNC_DECL tvec4<T, P> operator*(tvec4<T, P> const & v, tquat<T, P> const & q);
+
174 
+
175  template <typename T, precision P>
+
176  GLM_FUNC_DECL tquat<T, P> operator*(tquat<T, P> const & q, T const & s);
+
177 
+
178  template <typename T, precision P>
+
179  GLM_FUNC_DECL tquat<T, P> operator*(T const & s, tquat<T, P> const & q);
+
180 
+
181  template <typename T, precision P>
+
182  GLM_FUNC_DECL tquat<T, P> operator/(tquat<T, P> const & q, T const & s);
+
183 
+
187  template <typename T, precision P>
+
188  GLM_FUNC_DECL T length(tquat<T, P> const & q);
+
189 
+
193  template <typename T, precision P>
+
194  GLM_FUNC_DECL tquat<T, P> normalize(tquat<T, P> const & q);
+
195 
+
199  template <typename T, precision P, template <typename, precision> class quatType>
+
200  GLM_FUNC_DECL T dot(quatType<T, P> const & x, quatType<T, P> const & y);
+
201 
+
212  template <typename T, precision P>
+
213  GLM_FUNC_DECL tquat<T, P> mix(tquat<T, P> const & x, tquat<T, P> const & y, T a);
+
214 
+
223  template <typename T, precision P>
+
224  GLM_FUNC_DECL tquat<T, P> lerp(tquat<T, P> const & x, tquat<T, P> const & y, T a);
+
225 
+
234  template <typename T, precision P>
+
235  GLM_FUNC_DECL tquat<T, P> slerp(tquat<T, P> const & x, tquat<T, P> const & y, T a);
+
236 
+
240  template <typename T, precision P>
+
241  GLM_FUNC_DECL tquat<T, P> conjugate(tquat<T, P> const & q);
+
242 
+
246  template <typename T, precision P>
+
247  GLM_FUNC_DECL tquat<T, P> inverse(tquat<T, P> const & q);
+
248 
+
256  template <typename T, precision P>
+
257  GLM_FUNC_DECL tquat<T, P> rotate(tquat<T, P> const & q, T const & angle, tvec3<T, P> const & axis);
+
258 
+
263  template <typename T, precision P>
+
264  GLM_FUNC_DECL tvec3<T, P> eulerAngles(tquat<T, P> const & x);
+
265 
+
269  template <typename T, precision P>
+
270  GLM_FUNC_DECL T roll(tquat<T, P> const & x);
+
271 
+
275  template <typename T, precision P>
+
276  GLM_FUNC_DECL T pitch(tquat<T, P> const & x);
+
277 
+
281  template <typename T, precision P>
+
282  GLM_FUNC_DECL T yaw(tquat<T, P> const & x);
+
283 
+
287  template <typename T, precision P>
+
288  GLM_FUNC_DECL tmat3x3<T, P> mat3_cast(tquat<T, P> const & x);
+
289 
+
293  template <typename T, precision P>
+
294  GLM_FUNC_DECL tmat4x4<T, P> mat4_cast(tquat<T, P> const & x);
+
295 
+
299  template <typename T, precision P>
+
300  GLM_FUNC_DECL tquat<T, P> quat_cast(tmat3x3<T, P> const & x);
+
301 
+
305  template <typename T, precision P>
+
306  GLM_FUNC_DECL tquat<T, P> quat_cast(tmat4x4<T, P> const & x);
+
307 
+
311  template <typename T, precision P>
+
312  GLM_FUNC_DECL T angle(tquat<T, P> const & x);
+
313 
+
317  template <typename T, precision P>
+
318  GLM_FUNC_DECL tvec3<T, P> axis(tquat<T, P> const & x);
+
319 
+
326  template <typename T, precision P>
+
327  GLM_FUNC_DECL tquat<T, P> angleAxis(T const & angle, tvec3<T, P> const & axis);
+
328 
+
334  template <typename T, precision P>
+
335  GLM_FUNC_DECL tvec4<bool, P> lessThan(tquat<T, P> const & x, tquat<T, P> const & y);
+
336 
+
342  template <typename T, precision P>
+
343  GLM_FUNC_DECL tvec4<bool, P> lessThanEqual(tquat<T, P> const & x, tquat<T, P> const & y);
+
344 
+
350  template <typename T, precision P>
+
351  GLM_FUNC_DECL tvec4<bool, P> greaterThan(tquat<T, P> const & x, tquat<T, P> const & y);
+
352 
+
358  template <typename T, precision P>
+
359  GLM_FUNC_DECL tvec4<bool, P> greaterThanEqual(tquat<T, P> const & x, tquat<T, P> const & y);
+
360 
+
366  template <typename T, precision P>
+
367  GLM_FUNC_DECL tvec4<bool, P> equal(tquat<T, P> const & x, tquat<T, P> const & y);
+
368 
+
374  template <typename T, precision P>
+
375  GLM_FUNC_DECL tvec4<bool, P> notEqual(tquat<T, P> const & x, tquat<T, P> const & y);
+
377 } //namespace glm
+
378 
+
379 #include "quaternion.inl"
+
GLM_FUNC_DECL tquat< T, P > rotate(tquat< T, P > const &q, T const &angle, tvec3< T, P > const &axis)
Rotates a quaternion from a vector of 3 components axis and an angle.
+
GLM_FUNC_DECL T pitch(tquat< T, P > const &x)
Returns pitch value of euler angles expressed in radians.
+
GLM_FUNC_DECL tvec4< bool, P > greaterThanEqual(tquat< T, P > const &x, tquat< T, P > const &y)
Returns the component-wise comparison of result x >= y.
+
GLM_FUNC_DECL tquat< T, P > conjugate(tquat< T, P > const &q)
Returns the q conjugate.
+
GLM_FUNC_DECL tvec4< bool, P > equal(tquat< T, P > const &x, tquat< T, P > const &y)
Returns the component-wise comparison of result x == y.
+
GLM_FUNC_DECL tmat4x4< T, P > mat4_cast(tquat< T, P > const &x)
Converts a quaternion to a 4 * 4 matrix.
+
GLM_FUNC_DECL tquat< T, P > quat_cast(tmat4x4< T, P > const &x)
Converts a 4 * 4 matrix to a quaternion.
+
GLM_FUNC_DECL tquat< T, P > lerp(tquat< T, P > const &x, tquat< T, P > const &y, T a)
Linear interpolation of two quaternions.
+
GLM_FUNC_DECL tvec3< T, P > axis(tquat< T, P > const &x)
Returns the q rotation axis.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL tvec4< bool, P > lessThanEqual(tquat< T, P > const &x, tquat< T, P > const &y)
Returns the component-wise comparison of result x <= y.
+
GLM_FUNC_DECL T length(tquat< T, P > const &q)
Returns the length of the quaternion.
+
GLM_FUNC_DECL tvec4< bool, P > notEqual(tquat< T, P > const &x, tquat< T, P > const &y)
Returns the component-wise comparison of result x != y.
+
GLM_FUNC_DECL tvec4< bool, P > greaterThan(tquat< T, P > const &x, tquat< T, P > const &y)
Returns the component-wise comparison of result x > y.
+
GLM_FUNC_DECL tvec3< T, P > eulerAngles(tquat< T, P > const &x)
Returns euler angles, yitch as x, yaw as y, roll as z.
+
GLM_FUNC_DECL T angle(tquat< T, P > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL tquat< T, P > normalize(tquat< T, P > const &q)
Returns the normalized quaternion.
+
GLM_FUNC_DECL T dot(quatType< T, P > const &x, quatType< T, P > const &y)
Returns dot product of q1 and q2, i.e., q1[0] * q2[0] + q1[1] * q2[1] + ...
+
GLM_FUNC_DECL T yaw(tquat< T, P > const &x)
Returns yaw value of euler angles expressed in radians.
+
GLM_FUNC_DECL tquat< T, P > slerp(tquat< T, P > const &x, tquat< T, P > const &y, T a)
Spherical linear interpolation of two quaternions.
+
GLM_FUNC_DECL tmat3x3< T, P > mat3_cast(tquat< T, P > const &x)
Converts a quaternion to a 3 * 3 matrix.
+
GLM_FUNC_DECL tquat< T, P > mix(tquat< T, P > const &x, tquat< T, P > const &y, T a)
Spherical linear interpolation of two quaternions.
+
GLM_FUNC_DECL tquat< T, P > inverse(tquat< T, P > const &q)
Returns the q inverse.
+
GLM_FUNC_DECL T roll(tquat< T, P > const &x)
Returns roll value of euler angles expressed in radians.
+
GLM_FUNC_DECL tquat< T, P > angleAxis(T const &angle, tvec3< T, P > const &axis)
Build a quaternion from an angle and a normalized axis.
+
GLM_FUNC_DECL tvec4< bool, P > lessThan(tquat< T, P > const &x, tquat< T, P > const &y)
Returns the component-wise comparison result of x < y.
+
+ + + + diff --git a/external/glm/doc/api/a00095.html b/external/glm/doc/api/a00095.html new file mode 100644 index 0000000..3eb71ac --- /dev/null +++ b/external/glm/doc/api/a00095.html @@ -0,0 +1,136 @@ + + + + + + +0.9.7: quaternion.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
gtx/quaternion.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > cross (tquat< T, P > const &q, tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > cross (tvec3< T, P > const &v, tquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > exp (tquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL T extractRealComponent (tquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > fastMix (tquat< T, P > const &x, tquat< T, P > const &y, T const &a)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > intermediate (tquat< T, P > const &prev, tquat< T, P > const &curr, tquat< T, P > const &next)
 
template<typename T , precision P>
GLM_FUNC_DECL T length2 (tquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > log (tquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > pow (tquat< T, P > const &x, T const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > rotate (tquat< T, P > const &q, tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< T, P > rotate (tquat< T, P > const &q, tvec4< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > rotation (tvec3< T, P > const &orig, tvec3< T, P > const &dest)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > shortMix (tquat< T, P > const &x, tquat< T, P > const &y, T const &a)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > squad (tquat< T, P > const &q1, tquat< T, P > const &q2, tquat< T, P > const &s1, tquat< T, P > const &s2, T const &h)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > toMat3 (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > toMat4 (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > toQuat (tmat3x3< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > toQuat (tmat4x4< T, P > const &x)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_quaternion

+
Date
2005-12-21 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTX_extented_min_max (dependence)
+ +

Definition in file gtx/quaternion.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00095_source.html b/external/glm/doc/api/a00095_source.html new file mode 100644 index 0000000..64260ce --- /dev/null +++ b/external/glm/doc/api/a00095_source.html @@ -0,0 +1,189 @@ + + + + + + +0.9.7: quaternion.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
gtx/quaternion.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependency:
+
46 #include "../glm.hpp"
+
47 #include "../gtc/constants.hpp"
+
48 #include "../gtc/quaternion.hpp"
+
49 #include "../gtx/norm.hpp"
+
50 
+
51 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
52 # pragma message("GLM: GLM_GTX_quaternion extension included")
+
53 #endif
+
54 
+
55 namespace glm
+
56 {
+
59 
+
63  template<typename T, precision P>
+
64  GLM_FUNC_DECL tvec3<T, P> cross(
+
65  tquat<T, P> const & q,
+
66  tvec3<T, P> const & v);
+
67 
+
71  template<typename T, precision P>
+
72  GLM_FUNC_DECL tvec3<T, P> cross(
+
73  tvec3<T, P> const & v,
+
74  tquat<T, P> const & q);
+
75 
+
80  template<typename T, precision P>
+
81  GLM_FUNC_DECL tquat<T, P> squad(
+
82  tquat<T, P> const & q1,
+
83  tquat<T, P> const & q2,
+
84  tquat<T, P> const & s1,
+
85  tquat<T, P> const & s2,
+
86  T const & h);
+
87 
+
91  template<typename T, precision P>
+
92  GLM_FUNC_DECL tquat<T, P> intermediate(
+
93  tquat<T, P> const & prev,
+
94  tquat<T, P> const & curr,
+
95  tquat<T, P> const & next);
+
96 
+
100  template<typename T, precision P>
+
101  GLM_FUNC_DECL tquat<T, P> exp(
+
102  tquat<T, P> const & q);
+
103 
+
107  template<typename T, precision P>
+
108  GLM_FUNC_DECL tquat<T, P> log(
+
109  tquat<T, P> const & q);
+
110 
+
114  template<typename T, precision P>
+
115  GLM_FUNC_DECL tquat<T, P> pow(
+
116  tquat<T, P> const & x,
+
117  T const & y);
+
118 
+
122  //template<typename T, precision P>
+
123  //tquat<T, P> sqrt(
+
124  // tquat<T, P> const & q);
+
125 
+
129  template<typename T, precision P>
+
130  GLM_FUNC_DECL tvec3<T, P> rotate(
+
131  tquat<T, P> const & q,
+
132  tvec3<T, P> const & v);
+
133 
+
137  template<typename T, precision P>
+
138  GLM_FUNC_DECL tvec4<T, P> rotate(
+
139  tquat<T, P> const & q,
+
140  tvec4<T, P> const & v);
+
141 
+
145  template<typename T, precision P>
+
146  GLM_FUNC_DECL T extractRealComponent(
+
147  tquat<T, P> const & q);
+
148 
+
152  template<typename T, precision P>
+
153  GLM_FUNC_DECL tmat3x3<T, P> toMat3(
+
154  tquat<T, P> const & x){return mat3_cast(x);}
+
155 
+
159  template<typename T, precision P>
+
160  GLM_FUNC_DECL tmat4x4<T, P> toMat4(
+
161  tquat<T, P> const & x){return mat4_cast(x);}
+
162 
+
166  template<typename T, precision P>
+
167  GLM_FUNC_DECL tquat<T, P> toQuat(
+
168  tmat3x3<T, P> const & x){return quat_cast(x);}
+
169 
+
173  template<typename T, precision P>
+
174  GLM_FUNC_DECL tquat<T, P> toQuat(
+
175  tmat4x4<T, P> const & x){return quat_cast(x);}
+
176 
+
180  template<typename T, precision P>
+
181  GLM_FUNC_DECL tquat<T, P> shortMix(
+
182  tquat<T, P> const & x,
+
183  tquat<T, P> const & y,
+
184  T const & a);
+
185 
+
189  template<typename T, precision P>
+
190  GLM_FUNC_DECL tquat<T, P> fastMix(
+
191  tquat<T, P> const & x,
+
192  tquat<T, P> const & y,
+
193  T const & a);
+
194 
+
200  template<typename T, precision P>
+
201  GLM_FUNC_DECL tquat<T, P> rotation(
+
202  tvec3<T, P> const & orig,
+
203  tvec3<T, P> const & dest);
+
204 
+
208  template<typename T, precision P>
+
209  GLM_FUNC_DECL T length2(tquat<T, P> const & q);
+
210 
+
212 }//namespace glm
+
213 
+
214 #include "quaternion.inl"
+
GLM_FUNC_DECL tquat< T, P > intermediate(tquat< T, P > const &prev, tquat< T, P > const &curr, tquat< T, P > const &next)
Returns an intermediate control point for squad interpolation.
+
GLM_FUNC_DECL T extractRealComponent(tquat< T, P > const &q)
Extract the real component of a quaternion.
+
GLM_FUNC_DECL tmat3x3< T, P > toMat3(tquat< T, P > const &x)
Converts a quaternion to a 3 * 3 matrix.
+
GLM_FUNC_DECL tquat< T, P > exp(tquat< T, P > const &q)
Returns a exp of a quaternion.
+
GLM_FUNC_DECL tquat< T, P > fastMix(tquat< T, P > const &x, tquat< T, P > const &y, T const &a)
Quaternion normalized linear interpolation.
+
GLM_FUNC_DECL tquat< T, P > squad(tquat< T, P > const &q1, tquat< T, P > const &q2, tquat< T, P > const &s1, tquat< T, P > const &s2, T const &h)
Compute a point on a path according squad equation.
+
GLM_FUNC_DECL tmat4x4< T, P > toMat4(tquat< T, P > const &x)
Converts a quaternion to a 4 * 4 matrix.
+
GLM_FUNC_DECL tmat4x4< T, P > mat4_cast(tquat< T, P > const &x)
Converts a quaternion to a 4 * 4 matrix.
+
GLM_FUNC_DECL tquat< T, P > shortMix(tquat< T, P > const &x, tquat< T, P > const &y, T const &a)
Quaternion interpolation using the rotation short path.
+
GLM_FUNC_DECL tquat< T, P > toQuat(tmat4x4< T, P > const &x)
Converts a 4 * 4 matrix to a quaternion.
+
GLM_FUNC_DECL tvec3< T, P > cross(tvec3< T, P > const &v, tquat< T, P > const &q)
Compute a cross product between a vector and a quaternion.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL tvec4< T, P > rotate(tquat< T, P > const &q, tvec4< T, P > const &v)
Rotates a 4 components vector by a quaternion.
+
GLM_FUNC_DECL tquat< T, P > quat_cast(tmat3x3< T, P > const &x)
Converts a 3 * 3 matrix to a quaternion.
+
GLM_FUNC_DECL tquat< T, P > rotation(tvec3< T, P > const &orig, tvec3< T, P > const &dest)
Compute the rotation between two vectors.
+
GLM_FUNC_DECL tmat3x3< T, P > mat3_cast(tquat< T, P > const &x)
Converts a quaternion to a 3 * 3 matrix.
+
GLM_FUNC_DECL tquat< T, P > log(tquat< T, P > const &q)
Returns a log of a quaternion.
+
GLM_FUNC_DECL T length2(tquat< T, P > const &q)
Returns the squared length of x.
+
GLM_FUNC_DECL tquat< T, P > pow(tquat< T, P > const &x, T const &y)
Returns x raised to the y power.
+
+ + + + diff --git a/external/glm/doc/api/a00096.html b/external/glm/doc/api/a00096.html new file mode 100644 index 0000000..f5d7fdd --- /dev/null +++ b/external/glm/doc/api/a00096.html @@ -0,0 +1,102 @@ + + + + + + +0.9.7: random.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
random.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL tvec3< T, defaultp > ballRand (T Radius)
 
template<typename T >
GLM_FUNC_DECL tvec2< T, defaultp > circularRand (T Radius)
 
template<typename T >
GLM_FUNC_DECL tvec2< T, defaultp > diskRand (T Radius)
 
template<typename genType >
GLM_FUNC_DECL genType gaussRand (genType Mean, genType Deviation)
 
template<typename genTYpe >
GLM_FUNC_DECL genTYpe linearRand (genTYpe Min, genTYpe Max)
 
template<typename T >
GLM_FUNC_DECL tvec3< T, defaultp > sphericalRand (T Radius)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_random

+
Date
2011-09-18 / 2011-09-18
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+gtc_half_float (dependence)
+
+gtx_random (extended)
+ +

Definition in file random.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00096_source.html b/external/glm/doc/api/a00096_source.html new file mode 100644 index 0000000..4ccadda --- /dev/null +++ b/external/glm/doc/api/a00096_source.html @@ -0,0 +1,115 @@ + + + + + + +0.9.7: random.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
random.hpp
+
+
+Go to the documentation of this file.
1 
+
44 #pragma once
+
45 
+
46 // Dependency:
+
47 #include "../vec2.hpp"
+
48 #include "../vec3.hpp"
+
49 
+
50 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
51 # pragma message("GLM: GLM_GTC_random extension included")
+
52 #endif
+
53 
+
54 namespace glm
+
55 {
+
58 
+
65  template <typename genTYpe>
+
66  GLM_FUNC_DECL genTYpe linearRand(
+
67  genTYpe Min,
+
68  genTYpe Max);
+
69 
+
70  template <typename T, precision P, template <typename, precision> class vecType>
+
71  GLM_FUNC_DECL vecType<T, P> linearRand(
+
72  vecType<T, P> const & Min,
+
73  vecType<T, P> const & Max);
+
74 
+
80  template <typename genType>
+
81  GLM_FUNC_DECL genType gaussRand(
+
82  genType Mean,
+
83  genType Deviation);
+
84 
+
89  template <typename T>
+
90  GLM_FUNC_DECL tvec2<T, defaultp> circularRand(
+
91  T Radius);
+
92 
+
97  template <typename T>
+
98  GLM_FUNC_DECL tvec3<T, defaultp> sphericalRand(
+
99  T Radius);
+
100 
+
105  template <typename T>
+
106  GLM_FUNC_DECL tvec2<T, defaultp> diskRand(
+
107  T Radius);
+
108 
+
113  template <typename T>
+
114  GLM_FUNC_DECL tvec3<T, defaultp> ballRand(
+
115  T Radius);
+
116 
+
118 }//namespace glm
+
119 
+
120 #include "random.inl"
+
GLM_FUNC_DECL tvec3< T, defaultp > ballRand(T Radius)
Generate a random 3D vector which coordinates are regulary distributed within the volume of a ball of...
+
GLM_FUNC_DECL tvec2< T, defaultp > circularRand(T Radius)
Generate a random 2D vector which coordinates are regulary distributed on a circle of a given radius...
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL genType gaussRand(genType Mean, genType Deviation)
Generate random numbers in the interval [Min, Max], according a gaussian distribution.
+
GLM_FUNC_DECL genTYpe linearRand(genTYpe Min, genTYpe Max)
Generate random numbers in the interval [Min, Max], according a linear distribution.
+
GLM_FUNC_DECL tvec3< T, defaultp > sphericalRand(T Radius)
Generate a random 3D vector which coordinates are regulary distributed on a sphere of a given radius...
+
GLM_FUNC_DECL tvec2< T, defaultp > diskRand(T Radius)
Generate a random 2D vector which coordinates are regulary distributed within the area of a disk of a...
+
+ + + + diff --git a/external/glm/doc/api/a00097.html b/external/glm/doc/api/a00097.html new file mode 100644 index 0000000..f643bd3 --- /dev/null +++ b/external/glm/doc/api/a00097.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: range.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
range.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_range

+
Date
2014-09-19 / 2014-09-19
+
Author
Joshua Moerman
+ +

Definition in file range.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00097_source.html b/external/glm/doc/api/a00097_source.html new file mode 100644 index 0000000..5f7820c --- /dev/null +++ b/external/glm/doc/api/a00097_source.html @@ -0,0 +1,122 @@ + + + + + + +0.9.7: range.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
range.hpp
+
+
+Go to the documentation of this file.
1 
+
41 #pragma once
+
42 
+
43 // Dependencies
+
44 #include "../detail/setup.hpp"
+
45 
+
46 #if !GLM_HAS_RANGE_FOR
+
47 # error "GLM_GTX_range requires C++11 suppport or 'range for'"
+
48 #endif
+
49 
+
50 #include "../gtc/type_ptr.hpp"
+
51 
+
52 namespace glm{
+
53 namespace detail
+
54 {
+
55  /* The glm types provide a .length() member, but for matrices
+
56  this only defines the number of columns, so we need to work around this */
+
57  template <typename T, precision P>
+
58  detail::component_count_t number_of_elements_(tvec2<T, P> const & v){
+
59  return detail::component_count(v);
+
60  }
+
61 
+
62  template <typename T, precision P>
+
63  detail::component_count_t number_of_elements_(tvec3<T, P> const & v){
+
64  return detail::component_count(v);
+
65  }
+
66 
+
67  template <typename T, precision P>
+
68  detail::component_count_t number_of_elements_(tvec4<T, P> const & v){
+
69  return detail::component_count(v);
+
70  }
+
71 
+
72  template <typename genType>
+
73  detail::component_count_t number_of_elements_(genType const & m){
+
74  return detail::component_count(m) * detail::component_count(m[0]);
+
75  }
+
76 }//namespace
+
77 
+
80 
+
81  template <typename genType>
+
82  const typename genType::value_type * begin(genType const & v){
+
83  return value_ptr(v);
+
84  }
+
85 
+
86  template <typename genType>
+
87  const typename genType::value_type * end(genType const & v){
+
88  return begin(v) + detail::number_of_elements_(v);
+
89  }
+
90 
+
91  template <typename genType>
+
92  typename genType::value_type * begin(genType& v){
+
93  return value_ptr(v);
+
94  }
+
95 
+
96  template <typename genType>
+
97  typename genType::value_type * end(genType& v){
+
98  return begin(v) + detail::number_of_elements_(v);
+
99  }
+
100 
+
102 }//namespace glm
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL genType::value_type const * value_ptr(genType const &vec)
Return the constant address to the data of the input parameter.
+
+ + + + diff --git a/external/glm/doc/api/a00098.html b/external/glm/doc/api/a00098.html new file mode 100644 index 0000000..f12a577 --- /dev/null +++ b/external/glm/doc/api/a00098.html @@ -0,0 +1,88 @@ + + + + + + +0.9.7: raw_data.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
raw_data.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Typedefs

typedef detail::uint8 byte
 
typedef detail::uint32 dword
 
typedef detail::uint64 qword
 
typedef detail::uint16 word
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_raw_data

+
Date
2008-11-19 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file raw_data.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00098_source.html b/external/glm/doc/api/a00098_source.html new file mode 100644 index 0000000..3872d21 --- /dev/null +++ b/external/glm/doc/api/a00098_source.html @@ -0,0 +1,90 @@ + + + + + + +0.9.7: raw_data.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
raw_data.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependencies
+
45 #include "../detail/setup.hpp"
+
46 #include "../detail/type_int.hpp"
+
47 
+
48 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
49 # pragma message("GLM: GLM_GTX_raw_data extension included")
+
50 #endif
+
51 
+
52 namespace glm
+
53 {
+
56 
+
59  typedef detail::uint8 byte;
+
60 
+
63  typedef detail::uint16 word;
+
64 
+
67  typedef detail::uint32 dword;
+
68 
+
71  typedef detail::uint64 qword;
+
72 
+
74 }// namespace glm
+
75 
+
76 #include "raw_data.inl"
+
detail::uint16 word
Type for word numbers.
Definition: raw_data.hpp:63
+
detail::uint8 byte
Type for byte numbers.
Definition: raw_data.hpp:59
+
Definition: _noise.hpp:40
+
detail::uint32 dword
Type for dword numbers.
Definition: raw_data.hpp:67
+
detail::uint64 qword
Type for qword numbers.
Definition: raw_data.hpp:71
+
+ + + + diff --git a/external/glm/doc/api/a00099.html b/external/glm/doc/api/a00099.html new file mode 100644 index 0000000..c8ad706 --- /dev/null +++ b/external/glm/doc/api/a00099.html @@ -0,0 +1,116 @@ + + + + + + +0.9.7: reciprocal.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
reciprocal.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType acot (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType acoth (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType acsc (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType acsch (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType asec (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType asech (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType cot (genType const &angle)
 
template<typename genType >
GLM_FUNC_DECL genType coth (genType const &angle)
 
template<typename genType >
GLM_FUNC_DECL genType csc (genType const &angle)
 
template<typename genType >
GLM_FUNC_DECL genType csch (genType const &angle)
 
template<typename genType >
GLM_FUNC_DECL genType sec (genType const &angle)
 
template<typename genType >
GLM_FUNC_DECL genType sech (genType const &angle)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_reciprocal

+
Date
2008-10-09 / 2012-01-25
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file reciprocal.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00099_source.html b/external/glm/doc/api/a00099_source.html new file mode 100644 index 0000000..9f3d6f4 --- /dev/null +++ b/external/glm/doc/api/a00099_source.html @@ -0,0 +1,126 @@ + + + + + + +0.9.7: reciprocal.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
reciprocal.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependencies
+
45 #include "../detail/setup.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTC_reciprocal extension included")
+
49 #endif
+
50 
+
51 namespace glm
+
52 {
+
55 
+
60  template <typename genType>
+
61  GLM_FUNC_DECL genType sec(genType const & angle);
+
62 
+
67  template <typename genType>
+
68  GLM_FUNC_DECL genType csc(genType const & angle);
+
69 
+
74  template <typename genType>
+
75  GLM_FUNC_DECL genType cot(genType const & angle);
+
76 
+
80  template <typename genType>
+
81  GLM_FUNC_DECL genType asec(genType const & x);
+
82 
+
86  template <typename genType>
+
87  GLM_FUNC_DECL genType acsc(genType const & x);
+
88 
+
92  template <typename genType>
+
93  GLM_FUNC_DECL genType acot(genType const & x);
+
94 
+
98  template <typename genType>
+
99  GLM_FUNC_DECL genType sech(genType const & angle);
+
100 
+
104  template <typename genType>
+
105  GLM_FUNC_DECL genType csch(genType const & angle);
+
106 
+
110  template <typename genType>
+
111  GLM_FUNC_DECL genType coth(genType const & angle);
+
112 
+
116  template <typename genType>
+
117  GLM_FUNC_DECL genType asech(genType const & x);
+
118 
+
122  template <typename genType>
+
123  GLM_FUNC_DECL genType acsch(genType const & x);
+
124 
+
128  template <typename genType>
+
129  GLM_FUNC_DECL genType acoth(genType const & x);
+
130 
+
132 }//namespace glm
+
133 
+
134 #include "reciprocal.inl"
+
GLM_FUNC_DECL genType asech(genType const &x)
Inverse secant hyperbolic function.
+
GLM_FUNC_DECL genType cot(genType const &angle)
Cotangent function.
+
GLM_FUNC_DECL genType csch(genType const &angle)
Cosecant hyperbolic function.
+
GLM_FUNC_DECL genType asec(genType const &x)
Inverse secant function.
+
GLM_FUNC_DECL genType acot(genType const &x)
Inverse cotangent function.
+
GLM_FUNC_DECL genType csc(genType const &angle)
Cosecant function.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL genType sec(genType const &angle)
Secant function.
+
GLM_FUNC_DECL T angle(tquat< T, P > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL genType acoth(genType const &x)
Inverse cotangent hyperbolic function.
+
GLM_FUNC_DECL genType acsch(genType const &x)
Inverse cosecant hyperbolic function.
+
GLM_FUNC_DECL genType coth(genType const &angle)
Cotangent hyperbolic function.
+
GLM_FUNC_DECL genType acsc(genType const &x)
Inverse cosecant function.
+
GLM_FUNC_DECL genType sech(genType const &angle)
Secant hyperbolic function.
+
+ + + + diff --git a/external/glm/doc/api/a00100.html b/external/glm/doc/api/a00100.html new file mode 100644 index 0000000..e959201 --- /dev/null +++ b/external/glm/doc/api/a00100.html @@ -0,0 +1,90 @@ + + + + + + +0.9.7: rotate_normalized_axis.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
rotate_normalized_axis.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > rotateNormalizedAxis (tmat4x4< T, P > const &m, T const &angle, tvec3< T, P > const &axis)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > rotateNormalizedAxis (tquat< T, P > const &q, T const &angle, tvec3< T, P > const &axis)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_rotate_normalized_axis

+
Date
2012-12-13 / 2012-12-13
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTC_matrix_transform
+
+GLM_GTC_quaternion
+ +

Definition in file rotate_normalized_axis.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00100_source.html b/external/glm/doc/api/a00100_source.html new file mode 100644 index 0000000..d85c47a --- /dev/null +++ b/external/glm/doc/api/a00100_source.html @@ -0,0 +1,94 @@ + + + + + + +0.9.7: rotate_normalized_axis.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
rotate_normalized_axis.hpp
+
+
+Go to the documentation of this file.
1 
+
44 #pragma once
+
45 
+
46 // Dependency:
+
47 #include "../glm.hpp"
+
48 #include "../gtc/epsilon.hpp"
+
49 #include "../gtc/quaternion.hpp"
+
50 
+
51 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
52 # pragma message("GLM: GLM_GTX_rotate_normalized_axis extension included")
+
53 #endif
+
54 
+
55 namespace glm
+
56 {
+
59 
+
71  template <typename T, precision P>
+
72  GLM_FUNC_DECL tmat4x4<T, P> rotateNormalizedAxis(
+
73  tmat4x4<T, P> const & m,
+
74  T const & angle,
+
75  tvec3<T, P> const & axis);
+
76 
+
84  template <typename T, precision P>
+
85  GLM_FUNC_DECL tquat<T, P> rotateNormalizedAxis(
+
86  tquat<T, P> const & q,
+
87  T const & angle,
+
88  tvec3<T, P> const & axis);
+
89 
+
91 }//namespace glm
+
92 
+
93 #include "rotate_normalized_axis.inl"
+
GLM_FUNC_DECL tquat< T, P > rotateNormalizedAxis(tquat< T, P > const &q, T const &angle, tvec3< T, P > const &axis)
Rotates a quaternion from a vector of 3 components normalized axis and an angle.
+
GLM_FUNC_DECL tvec3< T, P > axis(tquat< T, P > const &x)
Returns the q rotation axis.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL T angle(tquat< T, P > const &x)
Returns the quaternion rotation angle.
+
+ + + + diff --git a/external/glm/doc/api/a00101.html b/external/glm/doc/api/a00101.html new file mode 100644 index 0000000..6d5b08a --- /dev/null +++ b/external/glm/doc/api/a00101.html @@ -0,0 +1,115 @@ + + + + + + +0.9.7: rotate_vector.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
rotate_vector.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > orientation (tvec3< T, P > const &Normal, tvec3< T, P > const &Up)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec2< T, P > rotate (tvec2< T, P > const &v, T const &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > rotate (tvec3< T, P > const &v, T const &angle, tvec3< T, P > const &normal)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< T, P > rotate (tvec4< T, P > const &v, T const &angle, tvec3< T, P > const &normal)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > rotateX (tvec3< T, P > const &v, T const &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< T, P > rotateX (tvec4< T, P > const &v, T const &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > rotateY (tvec3< T, P > const &v, T const &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< T, P > rotateY (tvec4< T, P > const &v, T const &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > rotateZ (tvec3< T, P > const &v, T const &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< T, P > rotateZ (tvec4< T, P > const &v, T const &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > slerp (tvec3< T, P > const &x, tvec3< T, P > const &y, T const &a)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_rotate_vector

+
Date
2006-11-02 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTX_transform (dependence)
+ +

Definition in file rotate_vector.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00101_source.html b/external/glm/doc/api/a00101_source.html new file mode 100644 index 0000000..a333c38 --- /dev/null +++ b/external/glm/doc/api/a00101_source.html @@ -0,0 +1,143 @@ + + + + + + +0.9.7: rotate_vector.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
rotate_vector.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependency:
+
46 #include "../glm.hpp"
+
47 #include "../gtx/transform.hpp"
+
48 
+
49 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
50 # pragma message("GLM: GLM_GTX_rotate_vector extension included")
+
51 #endif
+
52 
+
53 namespace glm
+
54 {
+
57 
+
65  template <typename T, precision P>
+
66  GLM_FUNC_DECL tvec3<T, P> slerp(
+
67  tvec3<T, P> const & x,
+
68  tvec3<T, P> const & y,
+
69  T const & a);
+
70 
+
73  template <typename T, precision P>
+
74  GLM_FUNC_DECL tvec2<T, P> rotate(
+
75  tvec2<T, P> const & v,
+
76  T const & angle);
+
77 
+
80  template <typename T, precision P>
+
81  GLM_FUNC_DECL tvec3<T, P> rotate(
+
82  tvec3<T, P> const & v,
+
83  T const & angle,
+
84  tvec3<T, P> const & normal);
+
85 
+
88  template <typename T, precision P>
+
89  GLM_FUNC_DECL tvec4<T, P> rotate(
+
90  tvec4<T, P> const & v,
+
91  T const & angle,
+
92  tvec3<T, P> const & normal);
+
93 
+
96  template <typename T, precision P>
+
97  GLM_FUNC_DECL tvec3<T, P> rotateX(
+
98  tvec3<T, P> const & v,
+
99  T const & angle);
+
100 
+
103  template <typename T, precision P>
+
104  GLM_FUNC_DECL tvec3<T, P> rotateY(
+
105  tvec3<T, P> const & v,
+
106  T const & angle);
+
107 
+
110  template <typename T, precision P>
+
111  GLM_FUNC_DECL tvec3<T, P> rotateZ(
+
112  tvec3<T, P> const & v,
+
113  T const & angle);
+
114 
+
117  template <typename T, precision P>
+
118  GLM_FUNC_DECL tvec4<T, P> rotateX(
+
119  tvec4<T, P> const & v,
+
120  T const & angle);
+
121 
+
124  template <typename T, precision P>
+
125  GLM_FUNC_DECL tvec4<T, P> rotateY(
+
126  tvec4<T, P> const & v,
+
127  T const & angle);
+
128 
+
131  template <typename T, precision P>
+
132  GLM_FUNC_DECL tvec4<T, P> rotateZ(
+
133  tvec4<T, P> const & v,
+
134  T const & angle);
+
135 
+
138  template <typename T, precision P>
+
139  GLM_FUNC_DECL tmat4x4<T, P> orientation(
+
140  tvec3<T, P> const & Normal,
+
141  tvec3<T, P> const & Up);
+
142 
+
144 }//namespace glm
+
145 
+
146 #include "rotate_vector.inl"
+
GLM_FUNC_DECL tvec4< T, P > rotateZ(tvec4< T, P > const &v, T const &angle)
Rotate a four dimensional vector around the X axis.
+
GLM_FUNC_DECL tmat4x4< T, P > orientation(tvec3< T, P > const &Normal, tvec3< T, P > const &Up)
Build a rotation matrix from a normal and a up vector.
+
GLM_FUNC_DECL tvec4< T, P > rotate(tvec4< T, P > const &v, T const &angle, tvec3< T, P > const &normal)
Rotate a four dimensional vector around an axis.
+
GLM_FUNC_DECL tvec4< T, P > rotateX(tvec4< T, P > const &v, T const &angle)
Rotate a four dimentionnals vector around the X axis.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL T angle(tquat< T, P > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL tvec3< T, P > slerp(tvec3< T, P > const &x, tvec3< T, P > const &y, T const &a)
Returns Spherical interpolation between two vectors.
+
GLM_FUNC_DECL tvec4< T, P > rotateY(tvec4< T, P > const &v, T const &angle)
Rotate a four dimensional vector around the X axis.
+
+ + + + diff --git a/external/glm/doc/api/a00102.html b/external/glm/doc/api/a00102.html new file mode 100644 index 0000000..1314d7d --- /dev/null +++ b/external/glm/doc/api/a00102.html @@ -0,0 +1,133 @@ + + + + + + +0.9.7: round.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
round.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType ceilMultiple (genType Source, genType Multiple)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > ceilMultiple (vecType< T, P > const &Source, vecType< T, P > const &Multiple)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType ceilPowerOfTwo (genIUType Value)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > ceilPowerOfTwo (vecType< T, P > const &value)
 
template<typename genType >
GLM_FUNC_DECL genType floorMultiple (genType Source, genType Multiple)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > floorMultiple (vecType< T, P > const &Source, vecType< T, P > const &Multiple)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType floorPowerOfTwo (genIUType Value)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > floorPowerOfTwo (vecType< T, P > const &value)
 
template<typename genIUType >
GLM_FUNC_DECL bool isMultiple (genIUType Value, genIUType Multiple)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > isMultiple (vecType< T, P > const &Value, T Multiple)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > isMultiple (vecType< T, P > const &Value, vecType< T, P > const &Multiple)
 
template<typename genIUType >
GLM_FUNC_DECL bool isPowerOfTwo (genIUType Value)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > isPowerOfTwo (vecType< T, P > const &value)
 
template<typename genType >
GLM_FUNC_DECL genType roundMultiple (genType Source, genType Multiple)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > roundMultiple (vecType< T, P > const &Source, vecType< T, P > const &Multiple)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType roundPowerOfTwo (genIUType Value)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > roundPowerOfTwo (vecType< T, P > const &value)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_round

+
Date
2014-11-03 / 2014-11-03
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTC_round (dependence)
+ +

Definition in file round.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00102_source.html b/external/glm/doc/api/a00102_source.html new file mode 100644 index 0000000..fc7fa8a --- /dev/null +++ b/external/glm/doc/api/a00102_source.html @@ -0,0 +1,149 @@ + + + + + + +0.9.7: round.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
round.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependencies
+
46 #include "../detail/setup.hpp"
+
47 #include "../detail/precision.hpp"
+
48 #include "../detail/_vectorize.hpp"
+
49 #include "../vector_relational.hpp"
+
50 #include "../common.hpp"
+
51 #include <limits>
+
52 
+
53 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
54 # pragma message("GLM: GLM_GTC_integer extension included")
+
55 #endif
+
56 
+
57 namespace glm
+
58 {
+
61 
+
65  template <typename genIUType>
+
66  GLM_FUNC_DECL bool isPowerOfTwo(genIUType Value);
+
67 
+
71  template <typename T, precision P, template <typename, precision> class vecType>
+
72  GLM_FUNC_DECL vecType<bool, P> isPowerOfTwo(vecType<T, P> const & value);
+
73 
+
78  template <typename genIUType>
+
79  GLM_FUNC_DECL genIUType ceilPowerOfTwo(genIUType Value);
+
80 
+
85  template <typename T, precision P, template <typename, precision> class vecType>
+
86  GLM_FUNC_DECL vecType<T, P> ceilPowerOfTwo(vecType<T, P> const & value);
+
87 
+
92  template <typename genIUType>
+
93  GLM_FUNC_DECL genIUType floorPowerOfTwo(genIUType Value);
+
94 
+
99  template <typename T, precision P, template <typename, precision> class vecType>
+
100  GLM_FUNC_DECL vecType<T, P> floorPowerOfTwo(vecType<T, P> const & value);
+
101 
+
105  template <typename genIUType>
+
106  GLM_FUNC_DECL genIUType roundPowerOfTwo(genIUType Value);
+
107 
+
111  template <typename T, precision P, template <typename, precision> class vecType>
+
112  GLM_FUNC_DECL vecType<T, P> roundPowerOfTwo(vecType<T, P> const & value);
+
113 
+
117  template <typename genIUType>
+
118  GLM_FUNC_DECL bool isMultiple(genIUType Value, genIUType Multiple);
+
119 
+
123  template <typename T, precision P, template <typename, precision> class vecType>
+
124  GLM_FUNC_DECL vecType<bool, P> isMultiple(vecType<T, P> const & Value, T Multiple);
+
125 
+
129  template <typename T, precision P, template <typename, precision> class vecType>
+
130  GLM_FUNC_DECL vecType<bool, P> isMultiple(vecType<T, P> const & Value, vecType<T, P> const & Multiple);
+
131 
+
139  template <typename genType>
+
140  GLM_FUNC_DECL genType ceilMultiple(genType Source, genType Multiple);
+
141 
+
149  template <typename T, precision P, template <typename, precision> class vecType>
+
150  GLM_FUNC_DECL vecType<T, P> ceilMultiple(vecType<T, P> const & Source, vecType<T, P> const & Multiple);
+
151 
+
159  template <typename genType>
+
160  GLM_FUNC_DECL genType floorMultiple(
+
161  genType Source,
+
162  genType Multiple);
+
163 
+
171  template <typename T, precision P, template <typename, precision> class vecType>
+
172  GLM_FUNC_DECL vecType<T, P> floorMultiple(
+
173  vecType<T, P> const & Source,
+
174  vecType<T, P> const & Multiple);
+
175 
+
183  template <typename genType>
+
184  GLM_FUNC_DECL genType roundMultiple(
+
185  genType Source,
+
186  genType Multiple);
+
187 
+
195  template <typename T, precision P, template <typename, precision> class vecType>
+
196  GLM_FUNC_DECL vecType<T, P> roundMultiple(
+
197  vecType<T, P> const & Source,
+
198  vecType<T, P> const & Multiple);
+
199 
+
201 } //namespace glm
+
202 
+
203 #include "round.inl"
+
GLM_FUNC_DECL vecType< bool, P > isPowerOfTwo(vecType< T, P > const &value)
Return true if the value is a power of two number.
+
GLM_FUNC_DECL vecType< T, P > roundPowerOfTwo(vecType< T, P > const &value)
Return the power of two number which value is the closet to the input value.
+
GLM_FUNC_DECL vecType< T, P > floorPowerOfTwo(vecType< T, P > const &value)
Return the power of two number which value is just lower the input value, round down to a power of tw...
+
GLM_FUNC_DECL vecType< T, P > ceilPowerOfTwo(vecType< T, P > const &value)
Return the power of two number which value is just higher the input value, round up to a power of two...
+
GLM_FUNC_DECL vecType< T, P > ceilMultiple(vecType< T, P > const &Source, vecType< T, P > const &Multiple)
Higher multiple number of Source.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL vecType< T, P > floorMultiple(vecType< T, P > const &Source, vecType< T, P > const &Multiple)
Lower multiple number of Source.
+
GLM_FUNC_DECL vecType< T, P > roundMultiple(vecType< T, P > const &Source, vecType< T, P > const &Multiple)
Lower multiple number of Source.
+
GLM_FUNC_DECL vecType< bool, P > isMultiple(vecType< T, P > const &Value, vecType< T, P > const &Multiple)
Return true if the 'Value' is a multiple of 'Multiple'.
+
+ + + + diff --git a/external/glm/doc/api/a00103.html b/external/glm/doc/api/a00103.html new file mode 100644 index 0000000..c50519f --- /dev/null +++ b/external/glm/doc/api/a00103.html @@ -0,0 +1,75 @@ + + + + + + +0.9.7: scalar_multiplication.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
scalar_multiplication.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GTX Extensions (Experimental)

+
Date
2014-09-22 / 2014-09-22
+
Author
Joshua Moerman
+

Enables scalar multiplication for all types

+

Since GLSL is very strict about types, the following (often used) combinations do not work: double * vec4 int * vec4 vec4 / int So we'll fix that! Of course "float * vec4" should remain the same (hence the enable_if magic)

+ +

Definition in file scalar_multiplication.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00103_source.html b/external/glm/doc/api/a00103_source.html new file mode 100644 index 0000000..7fee84e --- /dev/null +++ b/external/glm/doc/api/a00103_source.html @@ -0,0 +1,131 @@ + + + + + + +0.9.7: scalar_multiplication.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
scalar_multiplication.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 #include "../detail/setup.hpp"
+
45 
+
46 #if !GLM_HAS_TEMPLATE_ALIASES && !(GLM_COMPILER & GLM_COMPILER_GCC)
+
47 # error "GLM_GTX_scalar_multiplication requires C++11 support or alias templates and if not support for GCC"
+
48 #endif
+
49 
+
50 #include "../vec2.hpp"
+
51 #include "../vec3.hpp"
+
52 #include "../vec4.hpp"
+
53 #include "../mat2x2.hpp"
+
54 #include <type_traits>
+
55 
+
56 namespace glm
+
57 {
+
58  template <typename T, typename Vec>
+
59  using return_type_scalar_multiplication = typename std::enable_if<
+
60  !std::is_same<T, float>::value // T may not be a float
+
61  && std::is_arithmetic<T>::value, Vec // But it may be an int or double (no vec3 or mat3, ...)
+
62  >::type;
+
63 
+
64 #define GLM_IMPLEMENT_SCAL_MULT(Vec) \
+
65  template <typename T> \
+
66  return_type_scalar_multiplication<T, Vec> \
+
67  operator*(T const & s, Vec rh){ \
+
68  return rh *= static_cast<float>(s); \
+
69  } \
+
70  \
+
71  template <typename T> \
+
72  return_type_scalar_multiplication<T, Vec> \
+
73  operator*(Vec lh, T const & s){ \
+
74  return lh *= static_cast<float>(s); \
+
75  } \
+
76  \
+
77  template <typename T> \
+
78  return_type_scalar_multiplication<T, Vec> \
+
79  operator/(Vec lh, T const & s){ \
+
80  return lh *= 1.0f / s; \
+
81  }
+
82 
+
83 GLM_IMPLEMENT_SCAL_MULT(vec2)
+
84 GLM_IMPLEMENT_SCAL_MULT(vec3)
+
85 GLM_IMPLEMENT_SCAL_MULT(vec4)
+
86 
+
87 GLM_IMPLEMENT_SCAL_MULT(mat2)
+
88 GLM_IMPLEMENT_SCAL_MULT(mat2x3)
+
89 GLM_IMPLEMENT_SCAL_MULT(mat2x4)
+
90 GLM_IMPLEMENT_SCAL_MULT(mat3x2)
+
91 GLM_IMPLEMENT_SCAL_MULT(mat3)
+
92 GLM_IMPLEMENT_SCAL_MULT(mat3x4)
+
93 GLM_IMPLEMENT_SCAL_MULT(mat4x2)
+
94 GLM_IMPLEMENT_SCAL_MULT(mat4x3)
+
95 GLM_IMPLEMENT_SCAL_MULT(mat4)
+
96 
+
97 #undef GLM_IMPLEMENT_SCAL_MULT
+
98 } // namespace glm
+
highp_mat3x4 mat3x4
3 columns of 4 components matrix of floating-point numbers.
Definition: type_mat.hpp:410
+
mat2x2 mat2
2 columns of 2 components matrix of floating-point numbers.
Definition: type_mat.hpp:432
+
highp_mat2x4 mat2x4
2 columns of 4 components matrix of floating-point numbers.
Definition: type_mat.hpp:395
+
highp_mat2x3 mat2x3
2 columns of 3 components matrix of floating-point numbers.
Definition: type_mat.hpp:390
+
highp_mat3x2 mat3x2
3 columns of 2 components matrix of floating-point numbers.
Definition: type_mat.hpp:400
+
mat3x3 mat3
3 columns of 3 components matrix of floating-point numbers.
Definition: type_mat.hpp:437
+
highp_vec2 vec2
2 components vector of floating-point numbers.
Definition: type_vec.hpp:390
+
highp_mat4x3 mat4x3
4 columns of 3 components matrix of floating-point numbers.
Definition: type_mat.hpp:420
+
highp_mat4x2 mat4x2
4 columns of 2 components matrix of floating-point numbers.
Definition: type_mat.hpp:415
+
Definition: _noise.hpp:40
+
highp_vec4 vec4
4 components vector of floating-point numbers.
Definition: type_vec.hpp:400
+
highp_vec3 vec3
3 components vector of floating-point numbers.
Definition: type_vec.hpp:395
+
mat4x4 mat4
4 columns of 4 components matrix of floating-point numbers.
Definition: type_mat.hpp:442
+
+ + + + diff --git a/external/glm/doc/api/a00104.html b/external/glm/doc/api/a00104.html new file mode 100644 index 0000000..6898261 --- /dev/null +++ b/external/glm/doc/api/a00104.html @@ -0,0 +1,74 @@ + + + + + + +0.9.7: scalar_relational.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
scalar_relational.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_scalar_relational

+
Date
2013-02-04 / 2013-02-04
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file scalar_relational.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00104_source.html b/external/glm/doc/api/a00104_source.html new file mode 100644 index 0000000..335096c --- /dev/null +++ b/external/glm/doc/api/a00104_source.html @@ -0,0 +1,79 @@ + + + + + + +0.9.7: scalar_relational.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
scalar_relational.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTX_extend extension included")
+
49 #endif
+
50 
+
51 namespace glm
+
52 {
+
55 
+
56 
+
57 
+
59 }//namespace glm
+
60 
+
61 #include "scalar_relational.inl"
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00105.html b/external/glm/doc/api/a00105.html new file mode 100644 index 0000000..4de0bde --- /dev/null +++ b/external/glm/doc/api/a00105.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: setup.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
setup.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2006-11-13 / 2014-10-05
+
Author
Christophe Riccio
+ +

Definition in file setup.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00105_source.html b/external/glm/doc/api/a00105_source.html new file mode 100644 index 0000000..b76b1c9 --- /dev/null +++ b/external/glm/doc/api/a00105_source.html @@ -0,0 +1,1044 @@ + + + + + + +0.9.7: setup.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
setup.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include <cassert>
+
36 #include <cstddef>
+
37 
+
39 // Version
+
40 
+
41 #define GLM_VERSION 97
+
42 #define GLM_VERSION_MAJOR 0
+
43 #define GLM_VERSION_MINOR 9
+
44 #define GLM_VERSION_PATCH 7
+
45 #define GLM_VERSION_REVISION 0
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_VERSION_DISPLAYED))
+
48 # define GLM_MESSAGE_VERSION_DISPLAYED
+
49 # pragma message ("GLM: version 0.9.7")
+
50 #endif//GLM_MESSAGE
+
51 
+
53 // Platform
+
54 
+
55 #define GLM_PLATFORM_UNKNOWN 0x00000000
+
56 #define GLM_PLATFORM_WINDOWS 0x00010000
+
57 #define GLM_PLATFORM_LINUX 0x00020000
+
58 #define GLM_PLATFORM_APPLE 0x00040000
+
59 //#define GLM_PLATFORM_IOS 0x00080000
+
60 #define GLM_PLATFORM_ANDROID 0x00100000
+
61 #define GLM_PLATFORM_CHROME_NACL 0x00200000
+
62 #define GLM_PLATFORM_UNIX 0x00400000
+
63 #define GLM_PLATFORM_QNXNTO 0x00800000
+
64 #define GLM_PLATFORM_WINCE 0x01000000
+
65 
+
66 #ifdef GLM_FORCE_PLATFORM_UNKNOWN
+
67 # define GLM_PLATFORM GLM_PLATFORM_UNKNOWN
+
68 #elif defined(__QNXNTO__)
+
69 # define GLM_PLATFORM GLM_PLATFORM_QNXNTO
+
70 #elif defined(__APPLE__)
+
71 # define GLM_PLATFORM GLM_PLATFORM_APPLE
+
72 #elif defined(WINCE)
+
73 # define GLM_PLATFORM GLM_PLATFORM_WINCE
+
74 #elif defined(_WIN32)
+
75 # define GLM_PLATFORM GLM_PLATFORM_WINDOWS
+
76 #elif defined(__native_client__)
+
77 # define GLM_PLATFORM GLM_PLATFORM_CHROME_NACL
+
78 #elif defined(__ANDROID__)
+
79 # define GLM_PLATFORM GLM_PLATFORM_ANDROID
+
80 #elif defined(__linux)
+
81 # define GLM_PLATFORM GLM_PLATFORM_LINUX
+
82 #elif defined(__unix)
+
83 # define GLM_PLATFORM GLM_PLATFORM_UNIX
+
84 #else
+
85 # define GLM_PLATFORM GLM_PLATFORM_UNKNOWN
+
86 #endif//
+
87 
+
88 // Report platform detection
+
89 #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_PLATFORM_DISPLAYED))
+
90 # define GLM_MESSAGE_PLATFORM_DISPLAYED
+
91 # if(GLM_PLATFORM & GLM_PLATFORM_QNXNTO)
+
92 # pragma message("GLM: QNX platform detected")
+
93 //# elif(GLM_PLATFORM & GLM_PLATFORM_IOS)
+
94 //# pragma message("GLM: iOS platform detected")
+
95 # elif(GLM_PLATFORM & GLM_PLATFORM_APPLE)
+
96 # pragma message("GLM: Apple platform detected")
+
97 # elif(GLM_PLATFORM & GLM_PLATFORM_WINCE)
+
98 # pragma message("GLM: WinCE platform detected")
+
99 # elif(GLM_PLATFORM & GLM_PLATFORM_WINDOWS)
+
100 # pragma message("GLM: Windows platform detected")
+
101 # elif(GLM_PLATFORM & GLM_PLATFORM_CHROME_NACL)
+
102 # pragma message("GLM: Native Client detected")
+
103 # elif(GLM_PLATFORM & GLM_PLATFORM_ANDROID)
+
104 # pragma message("GLM: Android platform detected")
+
105 # elif(GLM_PLATFORM & GLM_PLATFORM_LINUX)
+
106 # pragma message("GLM: Linux platform detected")
+
107 # elif(GLM_PLATFORM & GLM_PLATFORM_UNIX)
+
108 # pragma message("GLM: UNIX platform detected")
+
109 # elif(GLM_PLATFORM & GLM_PLATFORM_UNKNOWN)
+
110 # pragma message("GLM: platform unknown")
+
111 # else
+
112 # pragma message("GLM: platform not detected")
+
113 # endif
+
114 #endif//GLM_MESSAGE
+
115 
+
117 // Compiler
+
118 
+
119 // User defines: GLM_FORCE_COMPILER_UNKNOWN
+
120 // TODO ? __llvm__
+
121 
+
122 #define GLM_COMPILER_UNKNOWN 0x00000000
+
123 
+
124 // Intel
+
125 #define GLM_COMPILER_INTEL 0x00100000
+
126 #define GLM_COMPILER_INTEL12 0x00100010
+
127 #define GLM_COMPILER_INTEL12_1 0x00100020
+
128 #define GLM_COMPILER_INTEL13 0x00100030
+
129 #define GLM_COMPILER_INTEL14 0x00100040
+
130 #define GLM_COMPILER_INTEL15 0x00100050
+
131 #define GLM_COMPILER_INTEL16 0x00100060
+
132 
+
133 // Visual C++ defines
+
134 #define GLM_COMPILER_VC 0x01000000
+
135 #define GLM_COMPILER_VC2010 0x01000090
+
136 #define GLM_COMPILER_VC2012 0x010000A0
+
137 #define GLM_COMPILER_VC2013 0x010000B0
+
138 #define GLM_COMPILER_VC2015 0x010000C0
+
139 
+
140 // GCC defines
+
141 #define GLM_COMPILER_GCC 0x02000000
+
142 #define GLM_COMPILER_GCC44 0x020000B0
+
143 #define GLM_COMPILER_GCC45 0x020000C0
+
144 #define GLM_COMPILER_GCC46 0x020000D0
+
145 #define GLM_COMPILER_GCC47 0x020000E0
+
146 #define GLM_COMPILER_GCC48 0x020000F0
+
147 #define GLM_COMPILER_GCC49 0x02000100
+
148 #define GLM_COMPILER_GCC50 0x02000200
+
149 #define GLM_COMPILER_GCC51 0x02000300
+
150 #define GLM_COMPILER_GCC52 0x02000400
+
151 #define GLM_COMPILER_GCC53 0x02000500
+
152 
+
153 // CUDA
+
154 #define GLM_COMPILER_CUDA 0x10000000
+
155 #define GLM_COMPILER_CUDA40 0x10000040
+
156 #define GLM_COMPILER_CUDA41 0x10000050
+
157 #define GLM_COMPILER_CUDA42 0x10000060
+
158 #define GLM_COMPILER_CUDA50 0x10000070
+
159 #define GLM_COMPILER_CUDA60 0x10000080
+
160 #define GLM_COMPILER_CUDA65 0x10000090
+
161 #define GLM_COMPILER_CUDA70 0x100000A0
+
162 #define GLM_COMPILER_CUDA75 0x100000B0
+
163 
+
164 // LLVM
+
165 #define GLM_COMPILER_LLVM 0x20000000
+
166 #define GLM_COMPILER_LLVM32 0x20000030
+
167 #define GLM_COMPILER_LLVM33 0x20000040
+
168 #define GLM_COMPILER_LLVM34 0x20000050
+
169 #define GLM_COMPILER_LLVM35 0x20000060
+
170 #define GLM_COMPILER_LLVM36 0x20000070
+
171 #define GLM_COMPILER_LLVM37 0x20000080
+
172 #define GLM_COMPILER_LLVM38 0x20000090
+
173 #define GLM_COMPILER_LLVM39 0x200000A0
+
174 
+
175 // Apple Clang
+
176 #define GLM_COMPILER_APPLE_CLANG 0x40000000
+
177 #define GLM_COMPILER_APPLE_CLANG40 0x40000010
+
178 #define GLM_COMPILER_APPLE_CLANG41 0x40000020
+
179 #define GLM_COMPILER_APPLE_CLANG42 0x40000030
+
180 #define GLM_COMPILER_APPLE_CLANG50 0x40000040
+
181 #define GLM_COMPILER_APPLE_CLANG51 0x40000050
+
182 #define GLM_COMPILER_APPLE_CLANG60 0x40000060
+
183 #define GLM_COMPILER_APPLE_CLANG61 0x40000070
+
184 
+
185 // Build model
+
186 #define GLM_MODEL_32 0x00000010
+
187 #define GLM_MODEL_64 0x00000020
+
188 
+
189 // Force generic C++ compiler
+
190 #ifdef GLM_FORCE_COMPILER_UNKNOWN
+
191 # define GLM_COMPILER GLM_COMPILER_UNKNOWN
+
192 
+
193 #elif defined(__INTEL_COMPILER)
+
194 # if __INTEL_COMPILER == 1200
+
195 # define GLM_COMPILER GLM_COMPILER_INTEL12
+
196 # elif __INTEL_COMPILER == 1210
+
197 # define GLM_COMPILER GLM_COMPILER_INTEL12_1
+
198 # elif __INTEL_COMPILER == 1300
+
199 # define GLM_COMPILER GLM_COMPILER_INTEL13
+
200 # elif __INTEL_COMPILER == 1400
+
201 # define GLM_COMPILER GLM_COMPILER_INTEL14
+
202 # elif __INTEL_COMPILER >= 1500
+
203 # define GLM_COMPILER GLM_COMPILER_INTEL15
+
204 # elif __INTEL_COMPILER >= 1600
+
205 # define GLM_COMPILER GLM_COMPILER_INTEL16
+
206 # else
+
207 # define GLM_COMPILER GLM_COMPILER_INTEL
+
208 # endif
+
209 
+
210 // CUDA
+
211 #elif defined(__CUDACC__)
+
212 # if !defined(CUDA_VERSION) && !defined(GLM_FORCE_CUDA)
+
213 # include <cuda.h> // make sure version is defined since nvcc does not define it itself!
+
214 # endif
+
215 # if CUDA_VERSION < 3000
+
216 # error "GLM requires CUDA 3.0 or higher"
+
217 # else
+
218 # define GLM_COMPILER GLM_COMPILER_CUDA
+
219 # endif
+
220 
+
221 // Visual C++
+
222 #elif defined(_MSC_VER)
+
223 # if _MSC_VER < 1600
+
224 # error "GLM requires Visual C++ 2010 or higher"
+
225 # elif _MSC_VER == 1600
+
226 # define GLM_COMPILER GLM_COMPILER_VC2010
+
227 # elif _MSC_VER == 1700
+
228 # define GLM_COMPILER GLM_COMPILER_VC2012
+
229 # elif _MSC_VER == 1800
+
230 # define GLM_COMPILER GLM_COMPILER_VC2013
+
231 # elif _MSC_VER >= 1900
+
232 # define GLM_COMPILER GLM_COMPILER_VC2015
+
233 # else//_MSC_VER
+
234 # define GLM_COMPILER GLM_COMPILER_VC
+
235 # endif//_MSC_VER
+
236 
+
237 // Clang
+
238 #elif defined(__clang__)
+
239 # if GLM_PLATFORM & GLM_PLATFORM_APPLE
+
240 # if __clang_major__ == 4 && __clang_minor__ == 0
+
241 # define GLM_COMPILER GLM_COMPILER_APPLE_CLANG40
+
242 # elif __clang_major__ == 4 && __clang_minor__ == 1
+
243 # define GLM_COMPILER GLM_COMPILER_APPLE_CLANG41
+
244 # elif __clang_major__ == 4 && __clang_minor__ == 2
+
245 # define GLM_COMPILER GLM_COMPILER_APPLE_CLANG42
+
246 # elif __clang_major__ == 5 && __clang_minor__ == 0
+
247 # define GLM_COMPILER GLM_COMPILER_APPLE_CLANG50
+
248 # elif __clang_major__ == 5 && __clang_minor__ == 1
+
249 # define GLM_COMPILER GLM_COMPILER_APPLE_CLANG51
+
250 # elif __clang_major__ == 6 && __clang_minor__ == 0
+
251 # define GLM_COMPILER GLM_COMPILER_APPLE_CLANG60
+
252 # elif __clang_major__ == 6 && __clang_minor__ >= 1
+
253 # define GLM_COMPILER GLM_COMPILER_APPLE_CLANG61
+
254 # elif __clang_major__ >= 7
+
255 # define GLM_COMPILER GLM_COMPILER_APPLE_CLANG61
+
256 # else
+
257 # define GLM_COMPILER GLM_COMPILER_APPLE_CLANG
+
258 # endif
+
259 # else
+
260 # if __clang_major__ == 3 && __clang_minor__ == 0
+
261 # define GLM_COMPILER GLM_COMPILER_LLVM30
+
262 # elif __clang_major__ == 3 && __clang_minor__ == 1
+
263 # define GLM_COMPILER GLM_COMPILER_LLVM31
+
264 # elif __clang_major__ == 3 && __clang_minor__ == 2
+
265 # define GLM_COMPILER GLM_COMPILER_LLVM32
+
266 # elif __clang_major__ == 3 && __clang_minor__ == 3
+
267 # define GLM_COMPILER GLM_COMPILER_LLVM33
+
268 # elif __clang_major__ == 3 && __clang_minor__ == 4
+
269 # define GLM_COMPILER GLM_COMPILER_LLVM34
+
270 # elif __clang_major__ == 3 && __clang_minor__ == 5
+
271 # define GLM_COMPILER GLM_COMPILER_LLVM35
+
272 # elif __clang_major__ == 3 && __clang_minor__ == 6
+
273 # define GLM_COMPILER GLM_COMPILER_LLVM36
+
274 # elif __clang_major__ == 3 && __clang_minor__ == 7
+
275 # define GLM_COMPILER GLM_COMPILER_LLVM37
+
276 # elif __clang_major__ == 3 && __clang_minor__ == 8
+
277 # define GLM_COMPILER GLM_COMPILER_LLVM38
+
278 # elif __clang_major__ == 3 && __clang_minor__ >= 9
+
279 # define GLM_COMPILER GLM_COMPILER_LLVM39
+
280 # elif __clang_major__ >= 4
+
281 # define GLM_COMPILER GLM_COMPILER_LLVM39
+
282 # else
+
283 # define GLM_COMPILER GLM_COMPILER_LLVM
+
284 # endif
+
285 # endif
+
286 
+
287 // G++
+
288 #elif defined(__GNUC__) || defined(__MINGW32__)
+
289 # if (__GNUC__ == 4) && (__GNUC_MINOR__ == 2)
+
290 # define GLM_COMPILER (GLM_COMPILER_GCC42)
+
291 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 3)
+
292 # define GLM_COMPILER (GLM_COMPILER_GCC43)
+
293 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 4)
+
294 # define GLM_COMPILER (GLM_COMPILER_GCC44)
+
295 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 5)
+
296 # define GLM_COMPILER (GLM_COMPILER_GCC45)
+
297 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 6)
+
298 # define GLM_COMPILER (GLM_COMPILER_GCC46)
+
299 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 7)
+
300 # define GLM_COMPILER (GLM_COMPILER_GCC47)
+
301 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ == 8)
+
302 # define GLM_COMPILER (GLM_COMPILER_GCC48)
+
303 # elif (__GNUC__ == 4) && (__GNUC_MINOR__ >= 9)
+
304 # define GLM_COMPILER (GLM_COMPILER_GCC49)
+
305 # elif (__GNUC__ == 5) && (__GNUC_MINOR__ == 0)
+
306 # define GLM_COMPILER (GLM_COMPILER_GCC50)
+
307 # elif (__GNUC__ == 5) && (__GNUC_MINOR__ == 1)
+
308 # define GLM_COMPILER (GLM_COMPILER_GCC51)
+
309 # elif (__GNUC__ == 5) && (__GNUC_MINOR__ == 2)
+
310 # define GLM_COMPILER (GLM_COMPILER_GCC52)
+
311 # elif (__GNUC__ == 5) && (__GNUC_MINOR__ >= 3)
+
312 # define GLM_COMPILER (GLM_COMPILER_GCC53)
+
313 # else
+
314 # define GLM_COMPILER (GLM_COMPILER_GCC)
+
315 # endif
+
316 
+
317 #else
+
318 # define GLM_COMPILER GLM_COMPILER_UNKNOWN
+
319 #endif
+
320 
+
321 #ifndef GLM_COMPILER
+
322 #error "GLM_COMPILER undefined, your compiler may not be supported by GLM. Add #define GLM_COMPILER 0 to ignore this message."
+
323 #endif//GLM_COMPILER
+
324 
+
325 // Report compiler detection
+
326 #if defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_COMPILER_DISPLAYED)
+
327 # define GLM_MESSAGE_COMPILER_DISPLAYED
+
328 # if GLM_COMPILER & GLM_COMPILER_CUDA
+
329 # pragma message("GLM: CUDA compiler detected")
+
330 # elif GLM_COMPILER & GLM_COMPILER_VC
+
331 # pragma message("GLM: Visual C++ compiler detected")
+
332 # elif GLM_COMPILER & GLM_COMPILER_APPLE_CLANG
+
333 # pragma message("GLM: Clang compiler detected")
+
334 # elif GLM_COMPILER & GLM_COMPILER_LLVM
+
335 # pragma message("GLM: LLVM compiler detected")
+
336 # elif GLM_COMPILER & GLM_COMPILER_INTEL
+
337 # pragma message("GLM: Intel Compiler detected")
+
338 # elif GLM_COMPILER & GLM_COMPILER_GCC
+
339 # pragma message("GLM: GCC compiler detected")
+
340 # else
+
341 # pragma message("GLM: Compiler not detected")
+
342 # endif
+
343 #endif//GLM_MESSAGE
+
344 
+
346 // Build model
+
347 
+
348 #if defined(__arch64__) || defined(__LP64__) || defined(_M_X64) || defined(__ppc64__) || defined(__x86_64__)
+
349 # define GLM_MODEL GLM_MODEL_64
+
350 #elif defined(__i386__) || defined(__ppc__)
+
351 # define GLM_MODEL GLM_MODEL_32
+
352 #else
+
353 # define GLM_MODEL GLM_MODEL_32
+
354 #endif//
+
355 
+
356 #if !defined(GLM_MODEL) && GLM_COMPILER != 0
+
357 # error "GLM_MODEL undefined, your compiler may not be supported by GLM. Add #define GLM_MODEL 0 to ignore this message."
+
358 #endif//GLM_MODEL
+
359 
+
360 #if defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_MODEL_DISPLAYED)
+
361 # define GLM_MESSAGE_MODEL_DISPLAYED
+
362 # if(GLM_MODEL == GLM_MODEL_64)
+
363 # pragma message("GLM: 64 bits model")
+
364 # elif(GLM_MODEL == GLM_MODEL_32)
+
365 # pragma message("GLM: 32 bits model")
+
366 # endif//GLM_MODEL
+
367 #endif//GLM_MESSAGE
+
368 
+
370 // C++ Version
+
371 
+
372 // User defines: GLM_FORCE_CXX98, GLM_FORCE_CXX03, GLM_FORCE_CXX11, GLM_FORCE_CXX14
+
373 
+
374 #define GLM_LANG_CXX98_FLAG (1 << 1)
+
375 #define GLM_LANG_CXX03_FLAG (1 << 2)
+
376 #define GLM_LANG_CXX0X_FLAG (1 << 3)
+
377 #define GLM_LANG_CXX11_FLAG (1 << 4)
+
378 #define GLM_LANG_CXX1Y_FLAG (1 << 5)
+
379 #define GLM_LANG_CXX14_FLAG (1 << 6)
+
380 #define GLM_LANG_CXX1Z_FLAG (1 << 7)
+
381 #define GLM_LANG_CXXMS_FLAG (1 << 8)
+
382 #define GLM_LANG_CXXGNU_FLAG (1 << 9)
+
383 
+
384 #define GLM_LANG_CXX98 GLM_LANG_CXX98_FLAG
+
385 #define GLM_LANG_CXX03 (GLM_LANG_CXX98 | GLM_LANG_CXX03_FLAG)
+
386 #define GLM_LANG_CXX0X (GLM_LANG_CXX03 | GLM_LANG_CXX0X_FLAG)
+
387 #define GLM_LANG_CXX11 (GLM_LANG_CXX0X | GLM_LANG_CXX11_FLAG)
+
388 #define GLM_LANG_CXX1Y (GLM_LANG_CXX11 | GLM_LANG_CXX1Y_FLAG)
+
389 #define GLM_LANG_CXX14 (GLM_LANG_CXX1Y | GLM_LANG_CXX14_FLAG)
+
390 #define GLM_LANG_CXX1Z (GLM_LANG_CXX14 | GLM_LANG_CXX1Z_FLAG)
+
391 #define GLM_LANG_CXXMS GLM_LANG_CXXMS_FLAG
+
392 #define GLM_LANG_CXXGNU GLM_LANG_CXXGNU_FLAG
+
393 
+
394 #if defined(GLM_FORCE_CXX14)
+
395 # undef GLM_FORCE_CXX11
+
396 # undef GLM_FORCE_CXX03
+
397 # undef GLM_FORCE_CXX98
+
398 # define GLM_LANG GLM_LANG_CXX14
+
399 #elif defined(GLM_FORCE_CXX11)
+
400 # undef GLM_FORCE_CXX03
+
401 # undef GLM_FORCE_CXX98
+
402 # define GLM_LANG GLM_LANG_CXX11
+
403 #elif defined(GLM_FORCE_CXX03)
+
404 # undef GLM_FORCE_CXX98
+
405 # define GLM_LANG GLM_LANG_CXX03
+
406 #elif defined(GLM_FORCE_CXX98)
+
407 # define GLM_LANG GLM_LANG_CXX98
+
408 #else
+
409 # if GLM_COMPILER & (GLM_COMPILER_APPLE_CLANG | GLM_COMPILER_LLVM)
+
410 # if __cplusplus >= 201402L // GLM_COMPILER_LLVM34 + -std=c++14
+
411 # define GLM_LANG GLM_LANG_CXX14
+
412 # elif __has_feature(cxx_decltype_auto) && __has_feature(cxx_aggregate_nsdmi) // GLM_COMPILER_LLVM33 + -std=c++1y
+
413 # define GLM_LANG GLM_LANG_CXX1Y
+
414 # elif __cplusplus >= 201103L // GLM_COMPILER_LLVM33 + -std=c++11
+
415 # define GLM_LANG GLM_LANG_CXX11
+
416 # elif __has_feature(cxx_static_assert) // GLM_COMPILER_LLVM29 + -std=c++11
+
417 # define GLM_LANG GLM_LANG_CXX0X
+
418 # elif __cplusplus >= 199711L
+
419 # define GLM_LANG GLM_LANG_CXX98
+
420 # else
+
421 # define GLM_LANG GLM_LANG_CXX
+
422 # endif
+
423 # elif GLM_COMPILER & GLM_COMPILER_GCC
+
424 # if __cplusplus >= 201402L
+
425 # define GLM_LANG GLM_LANG_CXX14
+
426 # elif __cplusplus >= 201103L
+
427 # define GLM_LANG GLM_LANG_CXX11
+
428 # elif defined(__GXX_EXPERIMENTAL_CXX0X__)
+
429 # define GLM_LANG GLM_LANG_CXX0X
+
430 # else
+
431 # define GLM_LANG GLM_LANG_CXX98
+
432 # endif
+
433 # elif GLM_COMPILER & GLM_COMPILER_VC
+
434 # ifdef _MSC_EXTENSIONS
+
435 # if __cplusplus >= 201402L
+
436 # define GLM_LANG (GLM_LANG_CXX14 | GLM_LANG_CXXMS_FLAG)
+
437 //# elif GLM_COMPILER >= GLM_COMPILER_VC2015
+
438 //# define GLM_LANG (GLM_LANG_CXX1Y | GLM_LANG_CXXMS_FLAG)
+
439 # elif __cplusplus >= 201103L
+
440 # define GLM_LANG (GLM_LANG_CXX11 | GLM_LANG_CXXMS_FLAG)
+
441 # elif GLM_COMPILER >= GLM_COMPILER_VC2010
+
442 # define GLM_LANG (GLM_LANG_CXX0X | GLM_LANG_CXXMS_FLAG)
+
443 # elif __cplusplus >= 199711L
+
444 # define GLM_LANG (GLM_LANG_CXX98 | GLM_LANG_CXXMS_FLAG)
+
445 # else
+
446 # define GLM_LANG (GLM_LANG_CXX | GLM_LANG_CXXMS_FLAG)
+
447 # endif
+
448 # else
+
449 # if __cplusplus >= 201402L
+
450 # define GLM_LANG GLM_LANG_CXX14
+
451 //# elif GLM_COMPILER >= GLM_COMPILER_VC2015
+
452 //# define GLM_LANG GLM_LANG_CXX1Y
+
453 # elif __cplusplus >= 201103L
+
454 # define GLM_LANG GLM_LANG_CXX11
+
455 # elif GLM_COMPILER >= GLM_COMPILER_VC2010
+
456 # define GLM_LANG GLM_LANG_CXX0X
+
457 # elif __cplusplus >= 199711L
+
458 # define GLM_LANG GLM_LANG_CXX98
+
459 # else
+
460 # define GLM_LANG GLM_LANG_CXX
+
461 # endif
+
462 # endif
+
463 # elif GLM_COMPILER & GLM_COMPILER_INTEL
+
464 # ifdef _MSC_EXTENSIONS
+
465 # if __cplusplus >= 201402L
+
466 # define GLM_LANG (GLM_LANG_CXX14 | GLM_LANG_CXXMS_FLAG)
+
467 # elif __cplusplus >= 201103L
+
468 # define GLM_LANG (GLM_LANG_CXX11 | GLM_LANG_CXXMS_FLAG)
+
469 # elif GLM_COMPILER >= GLM_COMPILER_INTEL13
+
470 # define GLM_LANG (GLM_LANG_CXX0X | GLM_LANG_CXXMS_FLAG)
+
471 # elif __cplusplus >= 199711L
+
472 # define GLM_LANG (GLM_LANG_CXX98 | GLM_LANG_CXXMS_FLAG)
+
473 # else
+
474 # define GLM_LANG (GLM_LANG_CXX | GLM_LANG_CXXMS_FLAG)
+
475 # endif
+
476 # else
+
477 # if __cplusplus >= 201402L
+
478 # define GLM_LANG (GLM_LANG_CXX14 | GLM_LANG_CXXMS_FLAG)
+
479 # elif __cplusplus >= 201103L
+
480 # define GLM_LANG (GLM_LANG_CXX11 | GLM_LANG_CXXMS_FLAG)
+
481 # elif GLM_COMPILER >= GLM_COMPILER_INTEL13
+
482 # define GLM_LANG (GLM_LANG_CXX0X | GLM_LANG_CXXMS_FLAG)
+
483 # elif __cplusplus >= 199711L
+
484 # define GLM_LANG (GLM_LANG_CXX98 | GLM_LANG_CXXMS_FLAG)
+
485 # else
+
486 # define GLM_LANG (GLM_LANG_CXX | GLM_LANG_CXXMS_FLAG)
+
487 # endif
+
488 # endif
+
489 # else // Unkown compiler
+
490 # if __cplusplus >= 201402L
+
491 # define GLM_LANG GLM_LANG_CXX14
+
492 # elif __cplusplus >= 201103L
+
493 # define GLM_LANG GLM_LANG_CXX11
+
494 # elif __cplusplus >= 199711L
+
495 # define GLM_LANG GLM_LANG_CXX98
+
496 # else
+
497 # define GLM_LANG GLM_LANG_CXX // Good luck with that!
+
498 # endif
+
499 # ifndef GLM_FORCE_PURE
+
500 # define GLM_FORCE_PURE
+
501 # endif
+
502 # endif
+
503 #endif
+
504 
+
505 #if defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_LANG_DISPLAYED)
+
506 # define GLM_MESSAGE_LANG_DISPLAYED
+
507 
+
508 # if GLM_LANG & GLM_LANG_CXX1Z_FLAG
+
509 # pragma message("GLM: C++1z")
+
510 # elif GLM_LANG & GLM_LANG_CXX14_FLAG
+
511 # pragma message("GLM: C++14")
+
512 # elif GLM_LANG & GLM_LANG_CXX1Y_FLAG
+
513 # pragma message("GLM: C++1y")
+
514 # elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
515 # pragma message("GLM: C++11")
+
516 # elif GLM_LANG & GLM_LANG_CXX0X_FLAG
+
517 # pragma message("GLM: C++0x")
+
518 # elif GLM_LANG & GLM_LANG_CXX03_FLAG
+
519 # pragma message("GLM: C++03")
+
520 # elif GLM_LANG & GLM_LANG_CXX98_FLAG
+
521 # pragma message("GLM: C++98")
+
522 # else
+
523 # pragma message("GLM: C++ language undetected")
+
524 # endif//GLM_LANG
+
525 
+
526 # if GLM_LANG & (GLM_LANG_CXXGNU_FLAG | GLM_LANG_CXXMS_FLAG)
+
527 # pragma message("GLM: Language extensions enabled")
+
528 # endif//GLM_LANG
+
529 #endif//GLM_MESSAGE
+
530 
+
532 // Has of C++ features
+
533 
+
534 // http://clang.llvm.org/cxx_status.html
+
535 // http://gcc.gnu.org/projects/cxx0x.html
+
536 // http://msdn.microsoft.com/en-us/library/vstudio/hh567368(v=vs.120).aspx
+
537 
+
538 #if GLM_PLATFORM == GLM_PLATFORM_ANDROID
+
539 # define GLM_HAS_CXX11_STL 0
+
540 #elif GLM_COMPILER & (GLM_COMPILER_LLVM | GLM_COMPILER_APPLE_CLANG)
+
541 # if __has_include(<__config>) // libc++
+
542 # include <__config>
+
543 //# else // libstdc++
+
544 //# include <bits/c++config.h>
+
545 # endif
+
546 # if defined(_LIBCPP_VERSION)// || defined(__GLIBCXX__)
+
547 # define GLM_HAS_CXX11_STL 1
+
548 # else
+
549 # define GLM_HAS_CXX11_STL 0
+
550 # endif
+
551 #else
+
552 # define GLM_HAS_CXX11_STL ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && \
+
553  ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC48)) || \
+
554  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2013)) || \
+
555  ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL15)))
+
556 #endif
+
557 
+
558 // N1720
+
559 #if GLM_COMPILER & (GLM_COMPILER_LLVM | GLM_COMPILER_APPLE_CLANG)
+
560 # define GLM_HAS_STATIC_ASSERT __has_feature(cxx_static_assert)
+
561 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
562 # define GLM_HAS_STATIC_ASSERT 1
+
563 #else
+
564 # define GLM_HAS_STATIC_ASSERT (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
565  ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC43)) || \
+
566  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2010)))
+
567 #endif
+
568 
+
569 // N1988
+
570 #if GLM_LANG & GLM_LANG_CXX11_FLAG
+
571 # define GLM_HAS_EXTENDED_INTEGER_TYPE 1
+
572 #else
+
573 # define GLM_HAS_EXTENDED_INTEGER_TYPE (\
+
574  ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2012)) || \
+
575  ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC43)) || \
+
576  ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_LLVM) && (GLM_COMPILER >= GLM_COMPILER_LLVM30)) || \
+
577  ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_APPLE_CLANG) && (GLM_COMPILER >= GLM_COMPILER_APPLE_CLANG40)))
+
578 #endif
+
579 
+
580 // N2235
+
581 #if GLM_COMPILER & (GLM_COMPILER_LLVM | GLM_COMPILER_APPLE_CLANG)
+
582 # define GLM_HAS_CONSTEXPR __has_feature(cxx_constexpr)
+
583 # define GLM_HAS_CONSTEXPR_PARTIAL GLM_HAS_CONSTEXPR
+
584 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
585 # define GLM_HAS_CONSTEXPR 1
+
586 # define GLM_HAS_CONSTEXPR_PARTIAL GLM_HAS_CONSTEXPR
+
587 #else
+
588 # define GLM_HAS_CONSTEXPR (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
589  ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC46)))
+
590 # define GLM_HAS_CONSTEXPR_PARTIAL GLM_HAS_CONSTEXPR || ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2015))
+
591 #endif
+
592 
+
593 // N2672
+
594 #if GLM_COMPILER & (GLM_COMPILER_LLVM | GLM_COMPILER_APPLE_CLANG)
+
595 # define GLM_HAS_INITIALIZER_LISTS __has_feature(cxx_generalized_initializers)
+
596 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
597 # define GLM_HAS_INITIALIZER_LISTS 1
+
598 #else
+
599 # define GLM_HAS_INITIALIZER_LISTS (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
600  ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC44)) || \
+
601  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2013)))
+
602 #endif
+
603 
+
604 // N2544 Unrestricted unions
+
605 #if GLM_COMPILER & (GLM_COMPILER_LLVM | GLM_COMPILER_APPLE_CLANG)
+
606 # define GLM_HAS_UNRESTRICTED_UNIONS __has_feature(cxx_unrestricted_unions)
+
607 #elif GLM_LANG & (GLM_LANG_CXX11_FLAG | GLM_LANG_CXXMS_FLAG)
+
608 # define GLM_HAS_UNRESTRICTED_UNIONS 1
+
609 #else
+
610 # define GLM_HAS_UNRESTRICTED_UNIONS (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
611  ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC46)))
+
612 #endif
+
613 
+
614 // N2346
+
615 #if GLM_COMPILER & (GLM_COMPILER_LLVM | GLM_COMPILER_APPLE_CLANG)
+
616 # define GLM_HAS_DEFAULTED_FUNCTIONS __has_feature(cxx_defaulted_functions)
+
617 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
618 # define GLM_HAS_DEFAULTED_FUNCTIONS 1
+
619 #else
+
620 # define GLM_HAS_DEFAULTED_FUNCTIONS (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
621  ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC44)) || \
+
622  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2013)) || \
+
623  ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL12)))
+
624 #endif
+
625 
+
626 // N2118
+
627 #if GLM_COMPILER & (GLM_COMPILER_LLVM | GLM_COMPILER_APPLE_CLANG)
+
628 # define GLM_HAS_RVALUE_REFERENCES __has_feature(cxx_rvalue_references)
+
629 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
630 # define GLM_HAS_RVALUE_REFERENCES 1
+
631 #else
+
632 # define GLM_HAS_RVALUE_REFERENCES (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
633  ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC43)) || \
+
634  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2012)))
+
635 #endif
+
636 
+
637 // N2437 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf
+
638 #if GLM_COMPILER & (GLM_COMPILER_LLVM | GLM_COMPILER_APPLE_CLANG)
+
639 # define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS __has_feature(cxx_explicit_conversions)
+
640 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
641 # define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS 1
+
642 #else
+
643 # define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
644  ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC45)) || \
+
645  ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL14)) || \
+
646  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2013)))
+
647 #endif
+
648 
+
649 // N2258 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf
+
650 #if GLM_COMPILER & (GLM_COMPILER_LLVM | GLM_COMPILER_APPLE_CLANG)
+
651 # define GLM_HAS_TEMPLATE_ALIASES __has_feature(cxx_alias_templates)
+
652 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
653 # define GLM_HAS_TEMPLATE_ALIASES 1
+
654 #else
+
655 # define GLM_HAS_TEMPLATE_ALIASES (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
656  ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL12_1)) || \
+
657  ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC47)) || \
+
658  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2013)))
+
659 #endif
+
660 
+
661 // N2930 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html
+
662 #if GLM_COMPILER & (GLM_COMPILER_LLVM | GLM_COMPILER_APPLE_CLANG)
+
663 # define GLM_HAS_RANGE_FOR __has_feature(cxx_range_for)
+
664 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
665 # define GLM_HAS_RANGE_FOR 1
+
666 #else
+
667 # define GLM_HAS_RANGE_FOR (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
668  ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC46)) || \
+
669  ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL13)) || \
+
670  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2012)))
+
671 #endif
+
672 
+
673 //
+
674 #if GLM_LANG & GLM_LANG_CXX11_FLAG
+
675 # define GLM_HAS_ASSIGNABLE 1
+
676 #else
+
677 # define GLM_HAS_ASSIGNABLE (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
678  ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC49)))
+
679 #endif
+
680 
+
681 //
+
682 #define GLM_HAS_TRIVIAL_QUERIES 0
+
683 
+
684 //
+
685 #if GLM_LANG & GLM_LANG_CXX11_FLAG
+
686 # define GLM_HAS_MAKE_SIGNED 1
+
687 #else
+
688 # define GLM_HAS_MAKE_SIGNED (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
689  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2013)))
+
690 #endif
+
691 
+
692 //
+
693 #if GLM_ARCH == GLM_ARCH_PURE
+
694 # define GLM_HAS_BITSCAN_WINDOWS 0
+
695 #else
+
696 # define GLM_HAS_BITSCAN_WINDOWS (GLM_PLATFORM & GLM_PLATFORM_WINDOWS) && (\
+
697  (GLM_COMPILER & (GLM_COMPILER_VC | GLM_COMPILER_LLVM | GLM_COMPILER_INTEL))
+
698 #endif
+
699 
+
700 // OpenMP
+
701 #ifdef _OPENMP
+
702 # if GLM_COMPILER & GLM_COMPILER_GCC
+
703 # if GLM_COMPILER >= GLM_COMPILER_GCC47
+
704 # define GLM_HAS_OPENMP 31
+
705 # elif GLM_COMPILER >= GLM_COMPILER_GCC44
+
706 # define GLM_HAS_OPENMP 30
+
707 # elif GLM_COMPILER >= GLM_COMPILER_GCC42
+
708 # define GLM_HAS_OPENMP 25
+
709 # endif
+
710 # endif// GLM_COMPILER & GLM_COMPILER_GCC
+
711 
+
712 # if GLM_COMPILER & GLM_COMPILER_VC
+
713 # if GLM_COMPILER >= GLM_COMPILER_VC2010
+
714 # define GLM_HAS_OPENMP 20
+
715 # endif
+
716 # endif// GLM_COMPILER & GLM_COMPILER_VC
+
717 #endif
+
718 
+
719 // Not standard
+
720 #define GLM_HAS_ANONYMOUS_UNION (GLM_LANG & GLM_LANG_CXXMS_FLAG)
+
721 
+
723 // Platform
+
724 
+
725 // User defines: GLM_FORCE_PURE GLM_FORCE_SSE2 GLM_FORCE_SSE3 GLM_FORCE_AVX GLM_FORCE_AVX2
+
726 
+
727 #define GLM_ARCH_PURE 0x0000
+
728 #define GLM_ARCH_ARM 0x0001
+
729 #define GLM_ARCH_X86 0x0002
+
730 #define GLM_ARCH_SSE2 0x0004
+
731 #define GLM_ARCH_SSE3 0x0008
+
732 #define GLM_ARCH_SSE4 0x0010
+
733 #define GLM_ARCH_AVX 0x0020
+
734 #define GLM_ARCH_AVX2 0x0040
+
735 
+
736 #if defined(GLM_FORCE_PURE)
+
737 # define GLM_ARCH GLM_ARCH_PURE
+
738 #elif defined(GLM_FORCE_AVX2)
+
739 # define GLM_ARCH (GLM_ARCH_AVX2 | GLM_ARCH_AVX | GLM_ARCH_SSE4 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2)
+
740 #elif defined(GLM_FORCE_AVX)
+
741 # define GLM_ARCH (GLM_ARCH_AVX | GLM_ARCH_SSE4 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2)
+
742 #elif defined(GLM_FORCE_SSE4)
+
743 # define GLM_ARCH (GLM_ARCH_SSE4 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2)
+
744 #elif defined(GLM_FORCE_SSE3)
+
745 # define GLM_ARCH (GLM_ARCH_SSE3 | GLM_ARCH_SSE2)
+
746 #elif defined(GLM_FORCE_SSE2)
+
747 # define GLM_ARCH (GLM_ARCH_SSE2)
+
748 #elif (GLM_COMPILER & (GLM_COMPILER_APPLE_CLANG | GLM_COMPILER_LLVM | GLM_COMPILER_GCC)) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_LINUX))
+
749 # if(__AVX2__)
+
750 # define GLM_ARCH (GLM_ARCH_AVX2 | GLM_ARCH_AVX | GLM_ARCH_SSE3 | GLM_ARCH_SSE2)
+
751 # elif(__AVX__)
+
752 # define GLM_ARCH (GLM_ARCH_AVX | GLM_ARCH_SSE3 | GLM_ARCH_SSE2)
+
753 # elif(__SSE3__)
+
754 # define GLM_ARCH (GLM_ARCH_SSE3 | GLM_ARCH_SSE2)
+
755 # elif(__SSE2__)
+
756 # define GLM_ARCH (GLM_ARCH_SSE2)
+
757 # else
+
758 # define GLM_ARCH GLM_ARCH_PURE
+
759 # endif
+
760 #elif (GLM_COMPILER & GLM_COMPILER_VC) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_WINDOWS))
+
761 # if defined(_M_ARM_FP)
+
762 # define GLM_ARCH (GLM_ARCH_ARM)
+
763 # elif defined(__AVX2__)
+
764 # define GLM_ARCH (GLM_ARCH_AVX2 | GLM_ARCH_AVX | GLM_ARCH_SSE4 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2)
+
765 # elif defined(__AVX__)
+
766 # define GLM_ARCH (GLM_ARCH_AVX | GLM_ARCH_SSE4 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2)
+
767 # elif _M_IX86_FP == 2
+
768 # define GLM_ARCH (GLM_ARCH_SSE2)
+
769 # else
+
770 # define GLM_ARCH (GLM_ARCH_PURE)
+
771 # endif
+
772 #elif (GLM_COMPILER & GLM_COMPILER_GCC) && (defined(__i386__) || defined(__x86_64__))
+
773 # if defined(__AVX2__)
+
774 # define GLM_ARCH (GLM_ARCH_AVX2 | GLM_ARCH_AVX | GLM_ARCH_SSE4 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2)
+
775 # elif defined(__AVX__)
+
776 # define GLM_ARCH (GLM_ARCH_AVX | GLM_ARCH_SSE4 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2)
+
777 # elif defined(__SSE4_1__ )
+
778 # define GLM_ARCH (GLM_ARCH_SSE4 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2)
+
779 # elif defined(__SSE3__)
+
780 # define GLM_ARCH (GLM_ARCH_SSE3 | GLM_ARCH_SSE2)
+
781 # elif defined(__SSE2__)
+
782 # define GLM_ARCH (GLM_ARCH_SSE2)
+
783 # else
+
784 # define GLM_ARCH (GLM_ARCH_PURE)
+
785 # endif
+
786 #else
+
787 # define GLM_ARCH GLM_ARCH_PURE
+
788 #endif
+
789 
+
790 // With MinGW-W64, including intrinsic headers before intrin.h will produce some errors. The problem is
+
791 // that windows.h (and maybe other headers) will silently include intrin.h, which of course causes problems.
+
792 // To fix, we just explicitly include intrin.h here.
+
793 #if defined(__MINGW64__) && (GLM_ARCH != GLM_ARCH_PURE)
+
794 # include <intrin.h>
+
795 #endif
+
796 
+
797 #if GLM_ARCH & GLM_ARCH_AVX2
+
798 # include <immintrin.h>
+
799 #endif//GLM_ARCH
+
800 #if GLM_ARCH & GLM_ARCH_AVX
+
801 # include <immintrin.h>
+
802 #endif//GLM_ARCH
+
803 #if GLM_ARCH & GLM_ARCH_SSE4
+
804 # include <smmintrin.h>
+
805 #endif//GLM_ARCH
+
806 #if GLM_ARCH & GLM_ARCH_SSE3
+
807 # include <pmmintrin.h>
+
808 #endif//GLM_ARCH
+
809 #if GLM_ARCH & GLM_ARCH_SSE2
+
810 # include <emmintrin.h>
+
811 # if(GLM_COMPILER == GLM_COMPILER_VC2005) // VC2005 is missing some intrinsics, workaround
+
812  inline float _mm_cvtss_f32(__m128 A) { return A.m128_f32[0]; }
+
813  inline __m128 _mm_castpd_ps(__m128d PD) { union { __m128 ps; __m128d pd; } c; c.pd = PD; return c.ps; }
+
814  inline __m128d _mm_castps_pd(__m128 PS) { union { __m128 ps; __m128d pd; } c; c.ps = PS; return c.pd; }
+
815  inline __m128i _mm_castps_si128(__m128 PS) { union { __m128 ps; __m128i pi; } c; c.ps = PS; return c.pi; }
+
816  inline __m128 _mm_castsi128_ps(__m128i PI) { union { __m128 ps; __m128i pi; } c; c.pi = PI; return c.ps; }
+
817 # endif
+
818 #endif//GLM_ARCH
+
819 
+
820 #if defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_ARCH_DISPLAYED)
+
821 # define GLM_MESSAGE_ARCH_DISPLAYED
+
822 # if(GLM_ARCH == GLM_ARCH_PURE)
+
823 # pragma message("GLM: Platform independent code")
+
824 # elif(GLM_ARCH & GLM_ARCH_ARM)
+
825 # pragma message("GLM: ARM instruction set")
+
826 # elif(GLM_ARCH & GLM_ARCH_AVX2)
+
827 # pragma message("GLM: AVX2 instruction set")
+
828 # elif(GLM_ARCH & GLM_ARCH_AVX)
+
829 # pragma message("GLM: AVX instruction set")
+
830 # elif(GLM_ARCH & GLM_ARCH_SSE3)
+
831 # pragma message("GLM: SSE3 instruction set")
+
832 # elif(GLM_ARCH & GLM_ARCH_SSE2)
+
833 # pragma message("GLM: SSE2 instruction set")
+
834 # endif//GLM_ARCH
+
835 #endif//GLM_MESSAGE
+
836 
+
838 // Static assert
+
839 
+
840 #if GLM_HAS_STATIC_ASSERT
+
841 # define GLM_STATIC_ASSERT(x, message) static_assert(x, message)
+
842 #elif defined(BOOST_STATIC_ASSERT)
+
843 # define GLM_STATIC_ASSERT(x, message) BOOST_STATIC_ASSERT(x)
+
844 #elif GLM_COMPILER & GLM_COMPILER_VC
+
845 # define GLM_STATIC_ASSERT(x, message) typedef char __CASSERT__##__LINE__[(x) ? 1 : -1]
+
846 #else
+
847 # define GLM_STATIC_ASSERT(x, message)
+
848 # define GLM_STATIC_ASSERT_NULL
+
849 #endif//GLM_LANG
+
850 
+
852 // Qualifiers
+
853 
+
854 #if GLM_COMPILER & GLM_COMPILER_CUDA
+
855 # define GLM_CUDA_FUNC_DEF __device__ __host__
+
856 # define GLM_CUDA_FUNC_DECL __device__ __host__
+
857 #else
+
858 # define GLM_CUDA_FUNC_DEF
+
859 # define GLM_CUDA_FUNC_DECL
+
860 #endif
+
861 
+
862 #if GLM_COMPILER & GLM_COMPILER_GCC
+
863 # define GLM_VAR_USED __attribute__ ((unused))
+
864 #else
+
865 # define GLM_VAR_USED
+
866 #endif
+
867 
+
868 #if defined(GLM_FORCE_INLINE)
+
869 # if GLM_COMPILER & GLM_COMPILER_VC
+
870 # define GLM_INLINE __forceinline
+
871 # define GLM_NEVER_INLINE __declspec((noinline))
+
872 # elif GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_APPLE_CLANG | GLM_COMPILER_LLVM)
+
873 # define GLM_INLINE inline __attribute__((__always_inline__))
+
874 # define GLM_NEVER_INLINE __attribute__((__noinline__))
+
875 # else
+
876 # define GLM_INLINE inline
+
877 # define GLM_NEVER_INLINE
+
878 # endif//GLM_COMPILER
+
879 #else
+
880 # define GLM_INLINE inline
+
881 # define GLM_NEVER_INLINE
+
882 #endif//defined(GLM_FORCE_INLINE)
+
883 
+
884 #define GLM_FUNC_DECL GLM_CUDA_FUNC_DECL
+
885 #define GLM_FUNC_QUALIFIER GLM_CUDA_FUNC_DEF GLM_INLINE
+
886 
+
888 // Swizzle operators
+
889 
+
890 // User defines: GLM_SWIZZLE
+
891 
+
892 #if defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_SWIZZLE_DISPLAYED)
+
893 # define GLM_MESSAGE_SWIZZLE_DISPLAYED
+
894 # if defined(GLM_SWIZZLE)
+
895 # pragma message("GLM: Swizzling operators enabled")
+
896 # else
+
897 # pragma message("GLM: Swizzling operators disabled, #define GLM_SWIZZLE to enable swizzle operators")
+
898 # endif
+
899 #endif//GLM_MESSAGE
+
900 
+
902 // Qualifiers
+
903 
+
904 #if (GLM_COMPILER & GLM_COMPILER_VC) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_WINDOWS))
+
905 # define GLM_DEPRECATED __declspec(deprecated)
+
906 # define GLM_ALIGN(x) __declspec(align(x))
+
907 # define GLM_ALIGNED_STRUCT(x) struct __declspec(align(x))
+
908 # define GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef __declspec(align(alignment)) type name
+
909 # define GLM_RESTRICT __declspec(restrict)
+
910 # define GLM_RESTRICT_VAR __restrict
+
911 #elif GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_APPLE_CLANG | GLM_COMPILER_LLVM | GLM_COMPILER_CUDA | GLM_COMPILER_INTEL)
+
912 # define GLM_DEPRECATED __attribute__((__deprecated__))
+
913 # define GLM_ALIGN(x) __attribute__((aligned(x)))
+
914 # define GLM_ALIGNED_STRUCT(x) struct __attribute__((aligned(x)))
+
915 # define GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef type name __attribute__((aligned(alignment)))
+
916 # define GLM_RESTRICT __restrict__
+
917 # define GLM_RESTRICT_VAR __restrict__
+
918 #else
+
919 # define GLM_DEPRECATED
+
920 # define GLM_ALIGN
+
921 # define GLM_ALIGNED_STRUCT(x) struct
+
922 # define GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef type name
+
923 # define GLM_RESTRICT
+
924 # define GLM_RESTRICT_VAR
+
925 #endif//GLM_COMPILER
+
926 
+
927 #if GLM_HAS_DEFAULTED_FUNCTIONS
+
928 # define GLM_DEFAULT = default
+
929 # ifdef GLM_FORCE_NO_CTOR_INIT
+
930 # define GLM_DEFAULT_CTOR = default
+
931 # else
+
932 # define GLM_DEFAULT_CTOR
+
933 # endif
+
934 #else
+
935 # define GLM_DEFAULT
+
936 # define GLM_DEFAULT_CTOR
+
937 #endif
+
938 
+
939 #if GLM_HAS_CONSTEXPR
+
940 # define GLM_CONSTEXPR constexpr
+
941 # define GLM_RELAXED_CONSTEXPR constexpr
+
942 #else
+
943 # define GLM_CONSTEXPR
+
944 # define GLM_RELAXED_CONSTEXPR const
+
945 #endif
+
946 
+
947 #ifdef GLM_FORCE_EXPLICIT_CTOR
+
948 # define GLM_EXPLICIT explicit
+
949 #else
+
950 # define GLM_EXPLICIT
+
951 #endif
+
952 
+
954 // Length type
+
955 
+
956 // User defines: GLM_FORCE_SIZE_T_LENGTH GLM_FORCE_SIZE_FUNC
+
957 
+
958 namespace glm
+
959 {
+
960  using std::size_t;
+
961 # if defined(GLM_FORCE_SIZE_T_LENGTH) || defined(GLM_FORCE_SIZE_FUNC)
+
962  typedef size_t length_t;
+
963 # else
+
964  typedef int length_t;
+
965 # endif
+
966 
+
967 namespace detail
+
968 {
+
969 # ifdef GLM_FORCE_SIZE_FUNC
+
970  typedef size_t component_count_t;
+
971 # else
+
972  typedef length_t component_count_t;
+
973 # endif
+
974 
+
975  template <typename genType>
+
976  GLM_FUNC_QUALIFIER GLM_CONSTEXPR component_count_t component_count(genType const & m)
+
977  {
+
978 # ifdef GLM_FORCE_SIZE_FUNC
+
979  return m.size();
+
980 # else
+
981  return m.length();
+
982 # endif
+
983  }
+
984 }//namespace detail
+
985 }//namespace glm
+
986 
+
987 #if defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_FORCE_SIZE_T_LENGTH)
+
988 # define GLM_MESSAGE_FORCE_SIZE_T_LENGTH
+
989 # if defined GLM_FORCE_SIZE_FUNC
+
990 # pragma message("GLM: .length() is replaced by .size() and returns a std::size_t")
+
991 # elif defined GLM_FORCE_SIZE_T_LENGTH
+
992 # pragma message("GLM: .length() returns glm::length_t, a typedef of std::size_t")
+
993 # else
+
994 # pragma message("GLM: .length() returns glm::length_t, a typedef of int following the GLSL specification")
+
995 # endif
+
996 #endif//GLM_MESSAGE
+
997 
+
999 // countof
+
1000 
+
1001 #ifndef __has_feature
+
1002 # define __has_feature(x) 0 // Compatibility with non-clang compilers.
+
1003 #endif
+
1004 
+
1005 #if GLM_HAS_CONSTEXPR_PARTIAL
+
1006  namespace glm
+
1007  {
+
1008  template <typename T, std::size_t N>
+
1009  constexpr std::size_t countof(T const (&)[N])
+
1010  {
+
1011  return N;
+
1012  }
+
1013  }//namespace glm
+
1014 # define GLM_COUNTOF(arr) glm::countof(arr)
+
1015 #elif _MSC_VER
+
1016 # define GLM_COUNTOF(arr) _countof(arr)
+
1017 #else
+
1018 # define GLM_COUNTOF(arr) sizeof(arr) / sizeof(arr[0])
+
1019 #endif
+
1020 
+
1022 // Uninitialize constructors
+
1023 
+
1024 namespace glm
+
1025 {
+
1026  enum ctor{uninitialize};
+
1027 }//namespace glm
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL genType pi()
Return the pi constant.
+
+ + + + diff --git a/external/glm/doc/api/a00106.html b/external/glm/doc/api/a00106.html new file mode 100644 index 0000000..4ace205 --- /dev/null +++ b/external/glm/doc/api/a00106.html @@ -0,0 +1,74 @@ + + + + + + +0.9.7: simd_mat4.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
simd_mat4.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_simd_mat4

+
Date
2009-05-07 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file simd_mat4.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00106_source.html b/external/glm/doc/api/a00106_source.html new file mode 100644 index 0000000..0b1b39f --- /dev/null +++ b/external/glm/doc/api/a00106_source.html @@ -0,0 +1,225 @@ + + + + + + +0.9.7: simd_mat4.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
simd_mat4.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependencies
+
45 #include "../detail/setup.hpp"
+
46 
+
47 #if(GLM_ARCH != GLM_ARCH_PURE)
+
48 
+
49 #if(GLM_ARCH & GLM_ARCH_SSE2)
+
50 # include "../detail/intrinsic_matrix.hpp"
+
51 # include "../gtx/simd_vec4.hpp"
+
52 #else
+
53 # error "GLM: GLM_GTX_simd_mat4 requires compiler support of SSE2 through intrinsics"
+
54 #endif
+
55 
+
56 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
57 # pragma message("GLM: GLM_GTX_simd_mat4 extension included")
+
58 #endif
+
59 
+
60 namespace glm{
+
61 namespace detail
+
62 {
+
65  GLM_ALIGNED_STRUCT(16) fmat4x4SIMD
+
66  {
+
67  typedef float value_type;
+
68  typedef fvec4SIMD col_type;
+
69  typedef fvec4SIMD row_type;
+
70  typedef std::size_t size_type;
+
71  typedef fmat4x4SIMD type;
+
72  typedef fmat4x4SIMD transpose_type;
+
73 
+
74  typedef tmat4x4<float, defaultp> pure_type;
+
75  typedef tvec4<float, defaultp> pure_row_type;
+
76  typedef tvec4<float, defaultp> pure_col_type;
+
77  typedef tmat4x4<float, defaultp> pure_transpose_type;
+
78 
+
79 # ifdef GLM_META_PROG_HELPERS
+
80  static GLM_RELAXED_CONSTEXPR length_t components = 4;
+
81  static GLM_RELAXED_CONSTEXPR length_t cols = 4;
+
82  static GLM_RELAXED_CONSTEXPR length_t rows = 4;
+
83  static GLM_RELAXED_CONSTEXPR precision prec = defaultp;
+
84 # endif//GLM_META_PROG_HELPERS
+
85 
+
86  GLM_FUNC_DECL length_t length() const;
+
87 
+
88  fvec4SIMD Data[4];
+
89 
+
91  // Constructors
+
92 
+
93  fmat4x4SIMD() GLM_DEFAULT_CTOR;
+
94  explicit fmat4x4SIMD(float const & s);
+
95  explicit fmat4x4SIMD(
+
96  float const & x0, float const & y0, float const & z0, float const & w0,
+
97  float const & x1, float const & y1, float const & z1, float const & w1,
+
98  float const & x2, float const & y2, float const & z2, float const & w2,
+
99  float const & x3, float const & y3, float const & z3, float const & w3);
+
100  explicit fmat4x4SIMD(
+
101  fvec4SIMD const & v0,
+
102  fvec4SIMD const & v1,
+
103  fvec4SIMD const & v2,
+
104  fvec4SIMD const & v3);
+
105  explicit fmat4x4SIMD(
+
106  mat4x4 const & m);
+
107  explicit fmat4x4SIMD(
+
108  __m128 const in[4]);
+
109 
+
110  // Conversions
+
111  //template <typename U>
+
112  //explicit tmat4x4(tmat4x4<U> const & m);
+
113 
+
114  //explicit tmat4x4(tmat2x2<T> const & x);
+
115  //explicit tmat4x4(tmat3x3<T> const & x);
+
116  //explicit tmat4x4(tmat2x3<T> const & x);
+
117  //explicit tmat4x4(tmat3x2<T> const & x);
+
118  //explicit tmat4x4(tmat2x4<T> const & x);
+
119  //explicit tmat4x4(tmat4x2<T> const & x);
+
120  //explicit tmat4x4(tmat3x4<T> const & x);
+
121  //explicit tmat4x4(tmat4x3<T> const & x);
+
122 
+
123  // Accesses
+
124  fvec4SIMD & operator[](length_t i);
+
125  fvec4SIMD const & operator[](length_t i) const;
+
126 
+
127  // Unary updatable operators
+
128  fmat4x4SIMD & operator= (fmat4x4SIMD const & m) GLM_DEFAULT;
+
129  fmat4x4SIMD & operator+= (float const & s);
+
130  fmat4x4SIMD & operator+= (fmat4x4SIMD const & m);
+
131  fmat4x4SIMD & operator-= (float const & s);
+
132  fmat4x4SIMD & operator-= (fmat4x4SIMD const & m);
+
133  fmat4x4SIMD & operator*= (float const & s);
+
134  fmat4x4SIMD & operator*= (fmat4x4SIMD const & m);
+
135  fmat4x4SIMD & operator/= (float const & s);
+
136  fmat4x4SIMD & operator/= (fmat4x4SIMD const & m);
+
137  fmat4x4SIMD & operator++ ();
+
138  fmat4x4SIMD & operator-- ();
+
139  };
+
140 
+
141  // Binary operators
+
142  fmat4x4SIMD operator+ (fmat4x4SIMD const & m, float const & s);
+
143  fmat4x4SIMD operator+ (float const & s, fmat4x4SIMD const & m);
+
144  fmat4x4SIMD operator+ (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
+
145 
+
146  fmat4x4SIMD operator- (fmat4x4SIMD const & m, float const & s);
+
147  fmat4x4SIMD operator- (float const & s, fmat4x4SIMD const & m);
+
148  fmat4x4SIMD operator- (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
+
149 
+
150  fmat4x4SIMD operator* (fmat4x4SIMD const & m, float const & s);
+
151  fmat4x4SIMD operator* (float const & s, fmat4x4SIMD const & m);
+
152 
+
153  fvec4SIMD operator* (fmat4x4SIMD const & m, fvec4SIMD const & v);
+
154  fvec4SIMD operator* (fvec4SIMD const & v, fmat4x4SIMD const & m);
+
155 
+
156  fmat4x4SIMD operator* (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
+
157 
+
158  fmat4x4SIMD operator/ (fmat4x4SIMD const & m, float const & s);
+
159  fmat4x4SIMD operator/ (float const & s, fmat4x4SIMD const & m);
+
160 
+
161  fvec4SIMD operator/ (fmat4x4SIMD const & m, fvec4SIMD const & v);
+
162  fvec4SIMD operator/ (fvec4SIMD const & v, fmat4x4SIMD const & m);
+
163 
+
164  fmat4x4SIMD operator/ (fmat4x4SIMD const & m1, fmat4x4SIMD const & m2);
+
165 
+
166  // Unary constant operators
+
167  fmat4x4SIMD const operator- (fmat4x4SIMD const & m);
+
168  fmat4x4SIMD const operator-- (fmat4x4SIMD const & m, int);
+
169  fmat4x4SIMD const operator++ (fmat4x4SIMD const & m, int);
+
170 }//namespace detail
+
171 
+
172  typedef detail::fmat4x4SIMD simdMat4;
+
173 
+
176 
+
179  mat4 mat4_cast(
+
180  detail::fmat4x4SIMD const & x);
+
181 
+
185  detail::fmat4x4SIMD matrixCompMult(
+
186  detail::fmat4x4SIMD const & x,
+
187  detail::fmat4x4SIMD const & y);
+
188 
+
193  detail::fmat4x4SIMD outerProduct(
+
194  detail::fvec4SIMD const & c,
+
195  detail::fvec4SIMD const & r);
+
196 
+
199  detail::fmat4x4SIMD transpose(
+
200  detail::fmat4x4SIMD const & x);
+
201 
+
204  float determinant(
+
205  detail::fmat4x4SIMD const & m);
+
206 
+
209  detail::fmat4x4SIMD inverse(
+
210  detail::fmat4x4SIMD const & m);
+
211 
+
213 }// namespace glm
+
214 
+
215 #include "simd_mat4.inl"
+
216 
+
217 #endif//(GLM_ARCH != GLM_ARCH_PURE)
+
GLM_FUNC_DECL T determinant(matType< T, P > const &m)
Returns the transposed matrix of x.
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
GLM_FUNC_DECL tmat4x4< T, P > mat4_cast(tquat< T, P > const &x)
Converts a quaternion to a 4 * 4 matrix.
+
highp_mat4x4 mat4x4
4 columns of 4 components matrix of floating-point numbers.
Definition: type_mat.hpp:425
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL matType< T, P > inverse(matType< T, P > const &m)
Return the inverse of a squared matrix.
+
mat4x4 mat4
4 columns of 4 components matrix of floating-point numbers.
Definition: type_mat.hpp:442
+
GLM_FUNC_DECL detail::outerProduct_trait< T, P, vecTypeA, vecTypeB >::type outerProduct(vecTypeA< T, P > const &c, vecTypeB< T, P > const &r)
Treats the first parameter c as a column vector and the second parameter r as a row vector and does a...
+
GLM_FUNC_DECL matType< T, P > matrixCompMult(matType< T, P > const &x, matType< T, P > const &y)
Multiply matrix x by matrix y component-wise, i.e., result[i][j] is the scalar product of x[i][j] and...
+
+ + + + diff --git a/external/glm/doc/api/a00107.html b/external/glm/doc/api/a00107.html new file mode 100644 index 0000000..9ba880d --- /dev/null +++ b/external/glm/doc/api/a00107.html @@ -0,0 +1,74 @@ + + + + + + +0.9.7: simd_quat.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
simd_quat.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_simd_quat

+
Date
2013-04-22 / 2014-11-25
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file simd_quat.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00107_source.html b/external/glm/doc/api/a00107_source.html new file mode 100644 index 0000000..d3d7ff9 --- /dev/null +++ b/external/glm/doc/api/a00107_source.html @@ -0,0 +1,286 @@ + + + + + + +0.9.7: simd_quat.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
simd_quat.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 #include "../gtc/quaternion.hpp"
+
47 #include "../gtx/fast_trigonometry.hpp"
+
48 
+
49 #if(GLM_ARCH != GLM_ARCH_PURE)
+
50 
+
51 #if(GLM_ARCH & GLM_ARCH_SSE2)
+
52 # include "../gtx/simd_mat4.hpp"
+
53 #else
+
54 # error "GLM: GLM_GTX_simd_quat requires compiler support of SSE2 through intrinsics"
+
55 #endif
+
56 
+
57 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
58 # pragma message("GLM: GLM_GTX_simd_quat extension included")
+
59 #endif
+
60 
+
61 // Warning silencer for nameless struct/union.
+
62 #if (GLM_COMPILER & GLM_COMPILER_VC)
+
63 # pragma warning(push)
+
64 # pragma warning(disable:4201) // warning C4201: nonstandard extension used : nameless struct/union
+
65 #endif
+
66 
+
67 namespace glm{
+
68 namespace detail
+
69 {
+
70  GLM_ALIGNED_STRUCT(16) fquatSIMD
+
71  {
+
72  typedef float value_type;
+
73  typedef std::size_t size_type;
+
74 
+
75  typedef fquatSIMD type;
+
76  typedef tquat<bool, defaultp> bool_type;
+
77  typedef tquat<float, defaultp> pure_type;
+
78 
+
79 # ifdef GLM_META_PROG_HELPERS
+
80  static GLM_RELAXED_CONSTEXPR length_t components = 4;
+
81  static GLM_RELAXED_CONSTEXPR precision prec = defaultp;
+
82 # endif//GLM_META_PROG_HELPERS
+
83 
+
84 #ifdef GLM_SIMD_ENABLE_XYZW_UNION
+
85  union
+
86  {
+
87  __m128 Data;
+
88  struct {float x, y, z, w;};
+
89  };
+
90 #else
+
91  __m128 Data;
+
92 #endif
+
93 
+
95  // Implicit basic constructors
+
96 
+
97  fquatSIMD() GLM_DEFAULT_CTOR;
+
98  fquatSIMD(fquatSIMD const & q) GLM_DEFAULT;
+
99  fquatSIMD(__m128 const & Data);
+
100 
+
102  // Explicit basic constructors
+
103 
+
104  explicit fquatSIMD(
+
105  ctor);
+
106  explicit fquatSIMD(
+
107  float const & w,
+
108  float const & x,
+
109  float const & y,
+
110  float const & z);
+
111  explicit fquatSIMD(
+
112  quat const & v);
+
113  explicit fquatSIMD(
+
114  vec3 const & eulerAngles);
+
115 
+
116 
+
118  // Unary arithmetic operators
+
119 
+
120  fquatSIMD& operator= (fquatSIMD const & q) GLM_DEFAULT;
+
121  fquatSIMD& operator*=(float const & s);
+
122  fquatSIMD& operator/=(float const & s);
+
123  };
+
124 
+
125 
+
127  // Arithmetic operators
+
128 
+
129  detail::fquatSIMD operator- (
+
130  detail::fquatSIMD const & q);
+
131 
+
132  detail::fquatSIMD operator+ (
+
133  detail::fquatSIMD const & q,
+
134  detail::fquatSIMD const & p);
+
135 
+
136  detail::fquatSIMD operator* (
+
137  detail::fquatSIMD const & q,
+
138  detail::fquatSIMD const & p);
+
139 
+
140  detail::fvec4SIMD operator* (
+
141  detail::fquatSIMD const & q,
+
142  detail::fvec4SIMD const & v);
+
143 
+
144  detail::fvec4SIMD operator* (
+
145  detail::fvec4SIMD const & v,
+
146  detail::fquatSIMD const & q);
+
147 
+
148  detail::fquatSIMD operator* (
+
149  detail::fquatSIMD const & q,
+
150  float s);
+
151 
+
152  detail::fquatSIMD operator* (
+
153  float s,
+
154  detail::fquatSIMD const & q);
+
155 
+
156  detail::fquatSIMD operator/ (
+
157  detail::fquatSIMD const & q,
+
158  float s);
+
159 
+
160 }//namespace detail
+
161 
+
164 
+
165  typedef glm::detail::fquatSIMD simdQuat;
+
166 
+
169  quat quat_cast(
+
170  detail::fquatSIMD const & x);
+
171 
+
174  detail::fquatSIMD quatSIMD_cast(
+
175  detail::fmat4x4SIMD const & m);
+
176 
+
179  template <typename T, precision P>
+
180  detail::fquatSIMD quatSIMD_cast(
+
181  tmat4x4<T, P> const & m);
+
182 
+
185  template <typename T, precision P>
+
186  detail::fquatSIMD quatSIMD_cast(
+
187  tmat3x3<T, P> const & m);
+
188 
+
191  detail::fmat4x4SIMD mat4SIMD_cast(
+
192  detail::fquatSIMD const & q);
+
193 
+
196  mat4 mat4_cast(
+
197  detail::fquatSIMD const & q);
+
198 
+
199 
+
203  float length(
+
204  detail::fquatSIMD const & x);
+
205 
+
209  detail::fquatSIMD normalize(
+
210  detail::fquatSIMD const & x);
+
211 
+
215  float dot(
+
216  detail::fquatSIMD const & q1,
+
217  detail::fquatSIMD const & q2);
+
218 
+
229  detail::fquatSIMD mix(
+
230  detail::fquatSIMD const & x,
+
231  detail::fquatSIMD const & y,
+
232  float const & a);
+
233 
+
242  detail::fquatSIMD lerp(
+
243  detail::fquatSIMD const & x,
+
244  detail::fquatSIMD const & y,
+
245  float const & a);
+
246 
+
255  detail::fquatSIMD slerp(
+
256  detail::fquatSIMD const & x,
+
257  detail::fquatSIMD const & y,
+
258  float const & a);
+
259 
+
260 
+
271  detail::fquatSIMD fastMix(
+
272  detail::fquatSIMD const & x,
+
273  detail::fquatSIMD const & y,
+
274  float const & a);
+
275 
+
283  detail::fquatSIMD fastSlerp(
+
284  detail::fquatSIMD const & x,
+
285  detail::fquatSIMD const & y,
+
286  float const & a);
+
287 
+
288 
+
292  detail::fquatSIMD conjugate(
+
293  detail::fquatSIMD const & q);
+
294 
+
298  detail::fquatSIMD inverse(
+
299  detail::fquatSIMD const & q);
+
300 
+
307  detail::fquatSIMD angleAxisSIMD(
+
308  float const & angle,
+
309  vec3 const & axis);
+
310 
+
319  detail::fquatSIMD angleAxisSIMD(
+
320  float const & angle,
+
321  float const & x,
+
322  float const & y,
+
323  float const & z);
+
324 
+
325  // TODO: Move this to somewhere more appropriate. Used with fastMix() and fastSlerp().
+
327  __m128 fastSin(__m128 x);
+
328 
+
330 }//namespace glm
+
331 
+
332 #include "simd_quat.inl"
+
333 
+
334 
+
335 #if (GLM_COMPILER & GLM_COMPILER_VC)
+
336 # pragma warning(pop)
+
337 #endif
+
338 
+
339 
+
340 #endif//(GLM_ARCH != GLM_ARCH_PURE)
+
GLM_FUNC_DECL tquat< T, P > fastMix(tquat< T, P > const &x, tquat< T, P > const &y, T const &a)
Quaternion normalized linear interpolation.
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
GLM_FUNC_DECL tquat< T, P > conjugate(tquat< T, P > const &q)
Returns the q conjugate.
+
GLM_FUNC_DECL tmat4x4< T, P > mat4_cast(tquat< T, P > const &x)
Converts a quaternion to a 4 * 4 matrix.
+
GLM_FUNC_DECL tquat< T, P > lerp(tquat< T, P > const &x, tquat< T, P > const &y, T a)
Linear interpolation of two quaternions.
+
GLM_FUNC_DECL vecType< T, P > normalize(vecType< T, P > const &x)
Returns a vector in the same direction as x but with length of 1.
+
GLM_FUNC_DECL tvec3< T, P > axis(tquat< T, P > const &x)
Returns the q rotation axis.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL tvec3< T, P > eulerAngles(tquat< T, P > const &x)
Returns euler angles, yitch as x, yaw as y, roll as z.
+
GLM_FUNC_DECL T angle(tquat< T, P > const &x)
Returns the quaternion rotation angle.
+
highp_vec3 vec3
3 components vector of floating-point numbers.
Definition: type_vec.hpp:395
+
GLM_FUNC_DECL matType< T, P > inverse(matType< T, P > const &m)
Return the inverse of a squared matrix.
+
GLM_FUNC_DECL T fastSin(T angle)
Faster than the common sin function but less accurate.
+
GLM_FUNC_DECL tquat< T, P > quat_cast(tmat3x3< T, P > const &x)
Converts a 3 * 3 matrix to a quaternion.
+
GLM_FUNC_DECL tquat< T, P > slerp(tquat< T, P > const &x, tquat< T, P > const &y, T a)
Spherical linear interpolation of two quaternions.
+
GLM_FUNC_DECL T dot(vecType< T, P > const &x, vecType< T, P > const &y)
Returns the dot product of x and y, i.e., result = x * y.
+
GLM_FUNC_DECL vecType< T, P > mix(vecType< T, P > const &x, vecType< T, P > const &y, vecType< U, P > const &a)
If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of ...
+
mat4x4 mat4
4 columns of 4 components matrix of floating-point numbers.
Definition: type_mat.hpp:442
+
+ + + + diff --git a/external/glm/doc/api/a00108.html b/external/glm/doc/api/a00108.html new file mode 100644 index 0000000..d2c80ba --- /dev/null +++ b/external/glm/doc/api/a00108.html @@ -0,0 +1,74 @@ + + + + + + +0.9.7: simd_vec4.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
simd_vec4.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_simd_vec4

+
Date
2009-05-07 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file simd_vec4.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00108_source.html b/external/glm/doc/api/a00108_source.html new file mode 100644 index 0000000..fc7a0af --- /dev/null +++ b/external/glm/doc/api/a00108_source.html @@ -0,0 +1,406 @@ + + + + + + +0.9.7: simd_vec4.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
simd_vec4.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 
+
47 #if(GLM_ARCH != GLM_ARCH_PURE)
+
48 
+
49 #if(GLM_ARCH & GLM_ARCH_SSE2)
+
50 # include "../detail/intrinsic_common.hpp"
+
51 # include "../detail/intrinsic_geometric.hpp"
+
52 # include "../detail/intrinsic_integer.hpp"
+
53 #else
+
54 # error "GLM: GLM_GTX_simd_vec4 requires compiler support of SSE2 through intrinsics"
+
55 #endif
+
56 
+
57 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
58 # pragma message("GLM: GLM_GTX_simd_vec4 extension included")
+
59 #endif
+
60 
+
61 
+
62 // Warning silencer for nameless struct/union.
+
63 #if (GLM_COMPILER & GLM_COMPILER_VC)
+
64 # pragma warning(push)
+
65 # pragma warning(disable:4201) // warning C4201: nonstandard extension used : nameless struct/union
+
66 #endif
+
67 
+
68 namespace glm
+
69 {
+
70  enum comp
+
71  {
+
72  X = 0,
+
73  R = 0,
+
74  S = 0,
+
75  Y = 1,
+
76  G = 1,
+
77  T = 1,
+
78  Z = 2,
+
79  B = 2,
+
80  P = 2,
+
81  W = 3,
+
82  A = 3,
+
83  Q = 3
+
84  };
+
85 
+
86 }//namespace glm
+
87 
+
88 namespace glm{
+
89 namespace detail
+
90 {
+
93  GLM_ALIGNED_STRUCT(16) fvec4SIMD
+
94  {
+
95  typedef float value_type;
+
96  typedef std::size_t size_type;
+
97 
+
98  typedef fvec4SIMD type;
+
99  typedef tvec4<float, defaultp> pure_type;
+
100  typedef tvec4<bool, highp> bool_type;
+
101 
+
102 # ifdef GLM_META_PROG_HELPERS
+
103  static GLM_RELAXED_CONSTEXPR length_t components = 4;
+
104  static GLM_RELAXED_CONSTEXPR precision prec = defaultp;
+
105 # endif//GLM_META_PROG_HELPERS
+
106 
+
107 #ifdef GLM_SIMD_ENABLE_XYZW_UNION
+
108  union
+
109  {
+
110  __m128 Data;
+
111  struct {float x, y, z, w;};
+
112  };
+
113 #else
+
114  __m128 Data;
+
115 #endif
+
116 
+
118  // Implicit basic constructors
+
119 
+
120  fvec4SIMD() GLM_DEFAULT_CTOR;
+
121  fvec4SIMD(fvec4SIMD const & v) GLM_DEFAULT;
+
122  fvec4SIMD(__m128 const & Data);
+
123 
+
125  // Explicit basic constructors
+
126 
+
127  explicit fvec4SIMD(
+
128  ctor);
+
129  explicit fvec4SIMD(
+
130  float const & s);
+
131  explicit fvec4SIMD(
+
132  float const & x,
+
133  float const & y,
+
134  float const & z,
+
135  float const & w);
+
136  explicit fvec4SIMD(
+
137  vec4 const & v);
+
138 
+
141 
+
142  fvec4SIMD(vec2 const & v, float const & s1, float const & s2);
+
143  fvec4SIMD(float const & s1, vec2 const & v, float const & s2);
+
144  fvec4SIMD(float const & s1, float const & s2, vec2 const & v);
+
145  fvec4SIMD(vec3 const & v, float const & s);
+
146  fvec4SIMD(float const & s, vec3 const & v);
+
147  fvec4SIMD(vec2 const & v1, vec2 const & v2);
+
148  //fvec4SIMD(ivec4SIMD const & v);
+
149 
+
151  // Unary arithmetic operators
+
152 
+
153  fvec4SIMD& operator= (fvec4SIMD const & v) GLM_DEFAULT;
+
154  fvec4SIMD& operator+=(fvec4SIMD const & v);
+
155  fvec4SIMD& operator-=(fvec4SIMD const & v);
+
156  fvec4SIMD& operator*=(fvec4SIMD const & v);
+
157  fvec4SIMD& operator/=(fvec4SIMD const & v);
+
158 
+
159  fvec4SIMD& operator+=(float const & s);
+
160  fvec4SIMD& operator-=(float const & s);
+
161  fvec4SIMD& operator*=(float const & s);
+
162  fvec4SIMD& operator/=(float const & s);
+
163 
+
164  fvec4SIMD& operator++();
+
165  fvec4SIMD& operator--();
+
166 
+
168  // Swizzle operators
+
169 
+
170  template <comp X, comp Y, comp Z, comp W>
+
171  fvec4SIMD& swizzle();
+
172  template <comp X, comp Y, comp Z, comp W>
+
173  fvec4SIMD swizzle() const;
+
174  template <comp X, comp Y, comp Z>
+
175  fvec4SIMD swizzle() const;
+
176  template <comp X, comp Y>
+
177  fvec4SIMD swizzle() const;
+
178  template <comp X>
+
179  fvec4SIMD swizzle() const;
+
180  };
+
181 }//namespace detail
+
182 
+
183  typedef glm::detail::fvec4SIMD simdVec4;
+
184 
+
187 
+
190  vec4 vec4_cast(
+
191  detail::fvec4SIMD const & x);
+
192 
+
195  detail::fvec4SIMD abs(detail::fvec4SIMD const & x);
+
196 
+
199  detail::fvec4SIMD sign(detail::fvec4SIMD const & x);
+
200 
+
203  detail::fvec4SIMD floor(detail::fvec4SIMD const & x);
+
204 
+
208  detail::fvec4SIMD trunc(detail::fvec4SIMD const & x);
+
209 
+
217  detail::fvec4SIMD round(detail::fvec4SIMD const & x);
+
218 
+
224  //detail::fvec4SIMD roundEven(detail::fvec4SIMD const & x);
+
225 
+
229  detail::fvec4SIMD ceil(detail::fvec4SIMD const & x);
+
230 
+
234  detail::fvec4SIMD fract(detail::fvec4SIMD const & x);
+
235 
+
240  detail::fvec4SIMD mod(
+
241  detail::fvec4SIMD const & x,
+
242  detail::fvec4SIMD const & y);
+
243 
+
248  detail::fvec4SIMD mod(
+
249  detail::fvec4SIMD const & x,
+
250  float const & y);
+
251 
+
257  //detail::fvec4SIMD modf(
+
258  // detail::fvec4SIMD const & x,
+
259  // detail::fvec4SIMD & i);
+
260 
+
264  detail::fvec4SIMD min(
+
265  detail::fvec4SIMD const & x,
+
266  detail::fvec4SIMD const & y);
+
267 
+
268  detail::fvec4SIMD min(
+
269  detail::fvec4SIMD const & x,
+
270  float const & y);
+
271 
+
275  detail::fvec4SIMD max(
+
276  detail::fvec4SIMD const & x,
+
277  detail::fvec4SIMD const & y);
+
278 
+
279  detail::fvec4SIMD max(
+
280  detail::fvec4SIMD const & x,
+
281  float const & y);
+
282 
+
287  detail::fvec4SIMD clamp(
+
288  detail::fvec4SIMD const & x,
+
289  detail::fvec4SIMD const & minVal,
+
290  detail::fvec4SIMD const & maxVal);
+
291 
+
292  detail::fvec4SIMD clamp(
+
293  detail::fvec4SIMD const & x,
+
294  float const & minVal,
+
295  float const & maxVal);
+
296 
+
323  detail::fvec4SIMD mix(
+
324  detail::fvec4SIMD const & x,
+
325  detail::fvec4SIMD const & y,
+
326  detail::fvec4SIMD const & a);
+
327 
+
331  detail::fvec4SIMD step(
+
332  detail::fvec4SIMD const & edge,
+
333  detail::fvec4SIMD const & x);
+
334 
+
335  detail::fvec4SIMD step(
+
336  float const & edge,
+
337  detail::fvec4SIMD const & x);
+
338 
+
350  detail::fvec4SIMD smoothstep(
+
351  detail::fvec4SIMD const & edge0,
+
352  detail::fvec4SIMD const & edge1,
+
353  detail::fvec4SIMD const & x);
+
354 
+
355  detail::fvec4SIMD smoothstep(
+
356  float const & edge0,
+
357  float const & edge1,
+
358  detail::fvec4SIMD const & x);
+
359 
+
367  //bvec4 isnan(detail::fvec4SIMD const & x);
+
368 
+
376  //bvec4 isinf(detail::fvec4SIMD const & x);
+
377 
+
383  //detail::ivec4SIMD floatBitsToInt(detail::fvec4SIMD const & value);
+
384 
+
392  //detail::fvec4SIMD intBitsToFloat(detail::ivec4SIMD const & value);
+
393 
+
397  detail::fvec4SIMD fma(
+
398  detail::fvec4SIMD const & a,
+
399  detail::fvec4SIMD const & b,
+
400  detail::fvec4SIMD const & c);
+
401 
+
412  //detail::fvec4SIMD frexp(detail::fvec4SIMD const & x, detail::ivec4SIMD & exp);
+
413 
+
421  //detail::fvec4SIMD ldexp(detail::fvec4SIMD const & x, detail::ivec4SIMD const & exp);
+
422 
+
426  float length(
+
427  detail::fvec4SIMD const & x);
+
428 
+
433  float fastLength(
+
434  detail::fvec4SIMD const & x);
+
435 
+
440  float niceLength(
+
441  detail::fvec4SIMD const & x);
+
442 
+
446  detail::fvec4SIMD length4(
+
447  detail::fvec4SIMD const & x);
+
448 
+
453  detail::fvec4SIMD fastLength4(
+
454  detail::fvec4SIMD const & x);
+
455 
+
460  detail::fvec4SIMD niceLength4(
+
461  detail::fvec4SIMD const & x);
+
462 
+
466  float distance(
+
467  detail::fvec4SIMD const & p0,
+
468  detail::fvec4SIMD const & p1);
+
469 
+
473  detail::fvec4SIMD distance4(
+
474  detail::fvec4SIMD const & p0,
+
475  detail::fvec4SIMD const & p1);
+
476 
+
480  float simdDot(
+
481  detail::fvec4SIMD const & x,
+
482  detail::fvec4SIMD const & y);
+
483 
+
487  detail::fvec4SIMD dot4(
+
488  detail::fvec4SIMD const & x,
+
489  detail::fvec4SIMD const & y);
+
490 
+
494  detail::fvec4SIMD cross(
+
495  detail::fvec4SIMD const & x,
+
496  detail::fvec4SIMD const & y);
+
497 
+
501  detail::fvec4SIMD normalize(
+
502  detail::fvec4SIMD const & x);
+
503 
+
508  detail::fvec4SIMD fastNormalize(
+
509  detail::fvec4SIMD const & x);
+
510 
+
514  detail::fvec4SIMD simdFaceforward(
+
515  detail::fvec4SIMD const & N,
+
516  detail::fvec4SIMD const & I,
+
517  detail::fvec4SIMD const & Nref);
+
518 
+
523  detail::fvec4SIMD reflect(
+
524  detail::fvec4SIMD const & I,
+
525  detail::fvec4SIMD const & N);
+
526 
+
532  detail::fvec4SIMD refract(
+
533  detail::fvec4SIMD const & I,
+
534  detail::fvec4SIMD const & N,
+
535  float const & eta);
+
536 
+
540  detail::fvec4SIMD sqrt(
+
541  detail::fvec4SIMD const & x);
+
542 
+
547  detail::fvec4SIMD niceSqrt(
+
548  detail::fvec4SIMD const & x);
+
549 
+
554  detail::fvec4SIMD fastSqrt(
+
555  detail::fvec4SIMD const & x);
+
556 
+
560  detail::fvec4SIMD inversesqrt(
+
561  detail::fvec4SIMD const & x);
+
562 
+
567  detail::fvec4SIMD fastInversesqrt(
+
568  detail::fvec4SIMD const & x);
+
569 
+
571 }//namespace glm
+
572 
+
573 #include "simd_vec4.inl"
+
574 
+
575 #if (GLM_COMPILER & GLM_COMPILER_VC)
+
576 # pragma warning(pop)
+
577 #endif
+
578 
+
579 #endif//(GLM_ARCH != GLM_ARCH_PURE)
+
GLM_FUNC_DECL T distance(vecType< T, P > const &p0, vecType< T, P > const &p1)
Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).
+
GLM_FUNC_DECL genType clamp(genType x, genType minVal, genType maxVal)
Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal an...
+
GLM_FUNC_DECL genType fma(genType const &a, genType const &b, genType const &c)
Computes and returns a * b + c.
+
GLM_FUNC_DECL vecType< T, P > floor(vecType< T, P > const &x)
Returns a value equal to the nearest integer that is less then or equal to x.
+
GLM_FUNC_DECL genType fract(genType x)
Return x - floor(x).
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
GLM_FUNC_DECL genType fastNormalize(genType const &x)
Faster than the common normalize function but less accurate.
+
highp_vec2 vec2
2 components vector of floating-point numbers.
Definition: type_vec.hpp:390
+
GLM_FUNC_DECL vecType< T, P > ceil(vecType< T, P > const &x)
Returns a value equal to the nearest integer that is greater than or equal to x.
+
GLM_FUNC_DECL genType smoothstep(genType edge0, genType edge1, genType x)
Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 a...
+
GLM_FUNC_DECL vecType< T, P > trunc(vecType< T, P > const &x)
Returns a value equal to the nearest integer to x whose absolute value is not larger than the absolut...
+
GLM_FUNC_DECL vecType< T, P > refract(vecType< T, P > const &I, vecType< T, P > const &N, T eta)
For the incident vector I and surface normal N, and the ratio of indices of refraction eta...
+
GLM_FUNC_DECL genType fastLength(genType x)
Faster than the common length function but less accurate.
+
GLM_FUNC_DECL vecType< T, P > round(vecType< T, P > const &x)
Returns a value equal to the nearest integer to x.
+
GLM_FUNC_DECL vecType< T, P > normalize(vecType< T, P > const &x)
Returns a vector in the same direction as x but with length of 1.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL vecType< T, P > sign(vecType< T, P > const &x)
Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0.
+
GLM_FUNC_DECL genType reflect(genType const &I, genType const &N)
For the incident vector I and surface orientation N, returns the reflection direction : result = I - ...
+
GLM_FUNC_DECL genType fastSqrt(genType x)
Faster than the common sqrt function but less accurate.
+
highp_vec4 vec4
4 components vector of floating-point numbers.
Definition: type_vec.hpp:400
+
GLM_FUNC_DECL genType max(genType x, genType y)
Returns y if x < y; otherwise, it returns x.
+
highp_vec3 vec3
3 components vector of floating-point numbers.
Definition: type_vec.hpp:395
+
GLM_FUNC_DECL genType abs(genType x)
Returns x if x >= 0; otherwise, it returns -x.
+
GLM_FUNC_DECL genType min(genType x, genType y)
Returns y if y < x; otherwise, it returns x.
+
GLM_FUNC_DECL vecType< T, P > inversesqrt(vecType< T, P > const &v)
Returns the reciprocal of the positive square root of v.
+
GLM_FUNC_DECL vecType< T, P > mix(vecType< T, P > const &x, vecType< T, P > const &y, vecType< U, P > const &a)
If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of ...
+
GLM_FUNC_DECL genType step(genType edge, genType x)
Returns 0.0 if x < edge, otherwise it returns 1.0 for each component of a genType.
+
GLM_FUNC_DECL genType mod(genType x, genType y)
Modulus.
+
GLM_FUNC_DECL vecType< T, P > sqrt(vecType< T, P > const &v)
Returns the positive square root of v.
+
GLM_FUNC_DECL tvec3< T, P > cross(tvec3< T, P > const &x, tvec3< T, P > const &y)
Returns the cross product of x and y.
+
+ + + + diff --git a/external/glm/doc/api/a00109.html b/external/glm/doc/api/a00109.html new file mode 100644 index 0000000..c8c9a66 --- /dev/null +++ b/external/glm/doc/api/a00109.html @@ -0,0 +1,89 @@ + + + + + + +0.9.7: spline.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
spline.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType catmullRom (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
 
template<typename genType >
GLM_FUNC_DECL genType cubic (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
 
template<typename genType >
GLM_FUNC_DECL genType hermite (genType const &v1, genType const &t1, genType const &v2, genType const &t2, typename genType::value_type const &s)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_spline

+
Date
2007-01-25 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file spline.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00109_source.html b/external/glm/doc/api/a00109_source.html new file mode 100644 index 0000000..f5019e6 --- /dev/null +++ b/external/glm/doc/api/a00109_source.html @@ -0,0 +1,105 @@ + + + + + + +0.9.7: spline.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
spline.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 #include "../gtx/optimum_pow.hpp"
+
47 
+
48 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
49 # pragma message("GLM: GLM_GTX_spline extension included")
+
50 #endif
+
51 
+
52 namespace glm
+
53 {
+
56 
+
59  template <typename genType>
+
60  GLM_FUNC_DECL genType catmullRom(
+
61  genType const & v1,
+
62  genType const & v2,
+
63  genType const & v3,
+
64  genType const & v4,
+
65  typename genType::value_type const & s);
+
66 
+
69  template <typename genType>
+
70  GLM_FUNC_DECL genType hermite(
+
71  genType const & v1,
+
72  genType const & t1,
+
73  genType const & v2,
+
74  genType const & t2,
+
75  typename genType::value_type const & s);
+
76 
+
79  template <typename genType>
+
80  GLM_FUNC_DECL genType cubic(
+
81  genType const & v1,
+
82  genType const & v2,
+
83  genType const & v3,
+
84  genType const & v4,
+
85  typename genType::value_type const & s);
+
86 
+
88 }//namespace glm
+
89 
+
90 #include "spline.inl"
+
GLM_FUNC_DECL genType cubic(genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
Return a point from a cubic curve.
+
GLM_FUNC_DECL genType catmullRom(genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
Return a point from a catmull rom curve.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL genType hermite(genType const &v1, genType const &t1, genType const &v2, genType const &t2, typename genType::value_type const &s)
Return a point from a hermite curve.
+
+ + + + diff --git a/external/glm/doc/api/a00110.html b/external/glm/doc/api/a00110.html new file mode 100644 index 0000000..1feb618 --- /dev/null +++ b/external/glm/doc/api/a00110.html @@ -0,0 +1,98 @@ + + + + + + +0.9.7: std_based_type.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
std_based_type.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Typedefs

typedef tvec1< std::size_t, defaultp > size1
 
typedef tvec1< std::size_t, defaultp > size1_t
 
typedef tvec2< std::size_t, defaultp > size2
 
typedef tvec2< std::size_t, defaultp > size2_t
 
typedef tvec3< std::size_t, defaultp > size3
 
typedef tvec3< std::size_t, defaultp > size3_t
 
typedef tvec4< std::size_t, defaultp > size4
 
typedef tvec4< std::size_t, defaultp > size4_t
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_std_based_type

+
Date
2008-06-08 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTX_extented_min_max (dependence)
+ +

Definition in file std_based_type.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00110_source.html b/external/glm/doc/api/a00110_source.html new file mode 100644 index 0000000..cfa3a57 --- /dev/null +++ b/external/glm/doc/api/a00110_source.html @@ -0,0 +1,102 @@ + + + + + + +0.9.7: std_based_type.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
std_based_type.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 #include <cstdlib>
+
47 
+
48 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
49 # pragma message("GLM: GLM_GTX_std_based_type extension included")
+
50 #endif
+
51 
+
52 namespace glm
+
53 {
+
56 
+
59  typedef tvec1<std::size_t, defaultp> size1;
+
60 
+
63  typedef tvec2<std::size_t, defaultp> size2;
+
64 
+
67  typedef tvec3<std::size_t, defaultp> size3;
+
68 
+
71  typedef tvec4<std::size_t, defaultp> size4;
+
72 
+
75  typedef tvec1<std::size_t, defaultp> size1_t;
+
76 
+
79  typedef tvec2<std::size_t, defaultp> size2_t;
+
80 
+
83  typedef tvec3<std::size_t, defaultp> size3_t;
+
84 
+
87  typedef tvec4<std::size_t, defaultp> size4_t;
+
88 
+
90 }//namespace glm
+
91 
+
92 #include "std_based_type.inl"
+
tvec4< std::size_t, defaultp > size4
Vector type based of four std::size_t components.
+
tvec1< std::size_t, defaultp > size1
Vector type based of one std::size_t component.
+
tvec2< std::size_t, defaultp > size2_t
Vector type based of two std::size_t components.
+
tvec3< std::size_t, defaultp > size3
Vector type based of three std::size_t components.
+
tvec1< std::size_t, defaultp > size1_t
Vector type based of one std::size_t component.
+
tvec3< std::size_t, defaultp > size3_t
Vector type based of three std::size_t components.
+
Definition: _noise.hpp:40
+
tvec4< std::size_t, defaultp > size4_t
Vector type based of four std::size_t components.
+
tvec2< std::size_t, defaultp > size2
Vector type based of two std::size_t components.
+
+ + + + diff --git a/external/glm/doc/api/a00111.html b/external/glm/doc/api/a00111.html new file mode 100644 index 0000000..5ab613a --- /dev/null +++ b/external/glm/doc/api/a00111.html @@ -0,0 +1,89 @@ + + + + + + +0.9.7: string_cast.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
string_cast.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Functions

template<template< typename, precision > class matType, typename T , precision P>
GLM_FUNC_DECL std::string to_string (matType< T, P > const &x)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_string_cast

+
Date
2008-04-26 / 2014-05-10
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+gtc_half_float (dependence)
+
+GLM_GTX_integer (dependence)
+
+GLM_GTX_quaternion (dependence)
+ +

Definition in file string_cast.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00111_source.html b/external/glm/doc/api/a00111_source.html new file mode 100644 index 0000000..fa8dab0 --- /dev/null +++ b/external/glm/doc/api/a00111_source.html @@ -0,0 +1,87 @@ + + + + + + +0.9.7: string_cast.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
string_cast.hpp
+
+
+Go to the documentation of this file.
1 
+
46 #pragma once
+
47 
+
48 // Dependency:
+
49 #include "../glm.hpp"
+
50 #include "../gtc/type_precision.hpp"
+
51 #include <string>
+
52 
+
53 #if(GLM_COMPILER & GLM_COMPILER_CUDA)
+
54 # error "GLM_GTX_string_cast is not supported on CUDA compiler"
+
55 #endif
+
56 
+
57 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
58 # pragma message("GLM: GLM_GTX_string_cast extension included")
+
59 #endif
+
60 
+
61 namespace glm
+
62 {
+
65 
+
68  template <template <typename, precision> class matType, typename T, precision P>
+
69  GLM_FUNC_DECL std::string to_string(matType<T, P> const & x);
+
70 
+
72 }//namespace glm
+
73 
+
74 #include "string_cast.inl"
+
GLM_FUNC_DECL std::string to_string(matType< T, P > const &x)
Create a string from a GLM vector or matrix typed variable.
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00112.html b/external/glm/doc/api/a00112.html new file mode 100644 index 0000000..2be19c1 --- /dev/null +++ b/external/glm/doc/api/a00112.html @@ -0,0 +1,95 @@ + + + + + + +0.9.7: transform.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
transform.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > rotate (T angle, tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > scale (tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > translate (tvec3< T, P > const &v)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_transform

+
Date
2005-12-21 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTC_matrix_transform (dependence)
+
+GLM_GTX_transform
+
+GLM_GTX_transform2
+ +

Definition in file transform.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00112_source.html b/external/glm/doc/api/a00112_source.html new file mode 100644 index 0000000..3ce13fd --- /dev/null +++ b/external/glm/doc/api/a00112_source.html @@ -0,0 +1,95 @@ + + + + + + +0.9.7: transform.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
transform.hpp
+
+
+Go to the documentation of this file.
1 
+
45 #pragma once
+
46 
+
47 // Dependency:
+
48 #include "../glm.hpp"
+
49 #include "../gtc/matrix_transform.hpp"
+
50 
+
51 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
52 # pragma message("GLM: GLM_GTX_transform extension included")
+
53 #endif
+
54 
+
55 namespace glm
+
56 {
+
59 
+
63  template <typename T, precision P>
+
64  GLM_FUNC_DECL tmat4x4<T, P> translate(
+
65  tvec3<T, P> const & v);
+
66 
+
70  template <typename T, precision P>
+
71  GLM_FUNC_DECL tmat4x4<T, P> rotate(
+
72  T angle,
+
73  tvec3<T, P> const & v);
+
74 
+
78  template <typename T, precision P>
+
79  GLM_FUNC_DECL tmat4x4<T, P> scale(
+
80  tvec3<T, P> const & v);
+
81 
+
83 }// namespace glm
+
84 
+
85 #include "transform.inl"
+
GLM_FUNC_DECL tmat4x4< T, P > rotate(T angle, tvec3< T, P > const &v)
Builds a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in degrees...
+
GLM_FUNC_DECL tmat4x4< T, P > translate(tvec3< T, P > const &v)
Transforms a matrix with a translation 4 * 4 matrix created from 3 scalars.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL T angle(tquat< T, P > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL tmat4x4< T, P > scale(tvec3< T, P > const &v)
Transforms a matrix with a scale 4 * 4 matrix created from a vector of 3 components.
+
+ + + + diff --git a/external/glm/doc/api/a00113.html b/external/glm/doc/api/a00113.html new file mode 100644 index 0000000..59082bc --- /dev/null +++ b/external/glm/doc/api/a00113.html @@ -0,0 +1,109 @@ + + + + + + +0.9.7: transform2.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
transform2.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > proj2D (const tmat3x3< T, P > &m, const tvec3< T, P > &normal)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > proj3D (const tmat4x4< T, P > &m, const tvec3< T, P > &normal)
 
template<typename valType , precision P>
GLM_FUNC_DECL tmat4x4< valType, P > scaleBias (valType scale, valType bias)
 
template<typename valType , precision P>
GLM_FUNC_DECL tmat4x4< valType, P > scaleBias (tmat4x4< valType, P > const &m, valType scale, valType bias)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > shearX2D (tmat3x3< T, P > const &m, T y)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > shearX3D (const tmat4x4< T, P > &m, T y, T z)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > shearY2D (tmat3x3< T, P > const &m, T x)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > shearY3D (const tmat4x4< T, P > &m, T x, T z)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > shearZ3D (const tmat4x4< T, P > &m, T x, T y)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_transform2

+
Date
2005-12-21 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTX_transform (dependence)
+ +

Definition in file transform2.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00113_source.html b/external/glm/doc/api/a00113_source.html new file mode 100644 index 0000000..075cb04 --- /dev/null +++ b/external/glm/doc/api/a00113_source.html @@ -0,0 +1,144 @@ + + + + + + +0.9.7: transform2.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
transform2.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependency:
+
46 #include "../glm.hpp"
+
47 #include "../gtx/transform.hpp"
+
48 
+
49 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
50 # pragma message("GLM: GLM_GTX_transform2 extension included")
+
51 #endif
+
52 
+
53 namespace glm
+
54 {
+
57 
+
60  template <typename T, precision P>
+
61  GLM_FUNC_DECL tmat3x3<T, P> shearX2D(
+
62  tmat3x3<T, P> const & m,
+
63  T y);
+
64 
+
67  template <typename T, precision P>
+
68  GLM_FUNC_DECL tmat3x3<T, P> shearY2D(
+
69  tmat3x3<T, P> const & m,
+
70  T x);
+
71 
+
74  template <typename T, precision P>
+
75  GLM_FUNC_DECL tmat4x4<T, P> shearX3D(
+
76  const tmat4x4<T, P> & m,
+
77  T y,
+
78  T z);
+
79 
+
82  template <typename T, precision P>
+
83  GLM_FUNC_DECL tmat4x4<T, P> shearY3D(
+
84  const tmat4x4<T, P> & m,
+
85  T x,
+
86  T z);
+
87 
+
90  template <typename T, precision P>
+
91  GLM_FUNC_DECL tmat4x4<T, P> shearZ3D(
+
92  const tmat4x4<T, P> & m,
+
93  T x,
+
94  T y);
+
95 
+
96  //template <typename T> GLM_FUNC_QUALIFIER tmat4x4<T, P> shear(const tmat4x4<T, P> & m, shearPlane, planePoint, angle)
+
97  // Identity + tan(angle) * cross(Normal, OnPlaneVector) 0
+
98  // - dot(PointOnPlane, normal) * OnPlaneVector 1
+
99 
+
100  // Reflect functions seem to don't work
+
101  //template <typename T> tmat3x3<T, P> reflect2D(const tmat3x3<T, P> & m, const tvec3<T, P>& normal){return reflect2DGTX(m, normal);} //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension)
+
102  //template <typename T> tmat4x4<T, P> reflect3D(const tmat4x4<T, P> & m, const tvec3<T, P>& normal){return reflect3DGTX(m, normal);} //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension)
+
103 
+
106  template <typename T, precision P>
+
107  GLM_FUNC_DECL tmat3x3<T, P> proj2D(
+
108  const tmat3x3<T, P> & m,
+
109  const tvec3<T, P>& normal);
+
110 
+
113  template <typename T, precision P>
+
114  GLM_FUNC_DECL tmat4x4<T, P> proj3D(
+
115  const tmat4x4<T, P> & m,
+
116  const tvec3<T, P>& normal);
+
117 
+
120  template <typename valType, precision P>
+
121  GLM_FUNC_DECL tmat4x4<valType, P> scaleBias(
+
122  valType scale,
+
123  valType bias);
+
124 
+
127  template <typename valType, precision P>
+
128  GLM_FUNC_DECL tmat4x4<valType, P> scaleBias(
+
129  tmat4x4<valType, P> const & m,
+
130  valType scale,
+
131  valType bias);
+
132 
+
134 }// namespace glm
+
135 
+
136 #include "transform2.inl"
+
GLM_FUNC_DECL tmat4x4< valType, P > scaleBias(tmat4x4< valType, P > const &m, valType scale, valType bias)
Build a scale bias matrix.
+
GLM_FUNC_DECL tmat4x4< T, P > shearZ3D(const tmat4x4< T, P > &m, T x, T y)
Transforms a matrix with a shearing on Z axis.
+
GLM_FUNC_DECL tmat3x3< T, P > shearY2D(tmat3x3< T, P > const &m, T x)
Transforms a matrix with a shearing on Y axis.
+
GLM_FUNC_DECL tmat4x4< T, P > shearY3D(const tmat4x4< T, P > &m, T x, T z)
Transforms a matrix with a shearing on Y axis.
+
GLM_FUNC_DECL tmat3x3< T, P > shearX2D(tmat3x3< T, P > const &m, T y)
Transforms a matrix with a shearing on X axis.
+
GLM_FUNC_DECL tmat3x3< T, P > proj2D(const tmat3x3< T, P > &m, const tvec3< T, P > &normal)
Build planar projection matrix along normal axis.
+
GLM_FUNC_DECL tmat4x4< T, P > shearX3D(const tmat4x4< T, P > &m, T y, T z)
Transforms a matrix with a shearing on X axis From GLM_GTX_transform2 extension.
+
GLM_FUNC_DECL tmat4x4< T, P > proj3D(const tmat4x4< T, P > &m, const tvec3< T, P > &normal)
Build planar projection matrix along normal axis.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL tmat4x4< T, P > scale(tmat4x4< T, P > const &m, tvec3< T, P > const &v)
Builds a scale 4 * 4 matrix created from 3 scalars.
+
+ + + + diff --git a/external/glm/doc/api/a00114.html b/external/glm/doc/api/a00114.html new file mode 100644 index 0000000..e5ed30a --- /dev/null +++ b/external/glm/doc/api/a00114.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: trigonometric.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
trigonometric.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file trigonometric.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00114_source.html b/external/glm/doc/api/a00114_source.html new file mode 100644 index 0000000..93d6ac3 --- /dev/null +++ b/external/glm/doc/api/a00114_source.html @@ -0,0 +1,65 @@ + + + + + + +0.9.7: trigonometric.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
trigonometric.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+ +
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00115.html b/external/glm/doc/api/a00115.html new file mode 100644 index 0000000..bc126d2 --- /dev/null +++ b/external/glm/doc/api/a00115.html @@ -0,0 +1,500 @@ + + + + + + +0.9.7: type_aligned.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
type_aligned.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

 GLM_ALIGNED_TYPEDEF (lowp_int8, aligned_lowp_int8, 1)
 
 GLM_ALIGNED_TYPEDEF (lowp_int16, aligned_lowp_int16, 2)
 
 GLM_ALIGNED_TYPEDEF (lowp_int32, aligned_lowp_int32, 4)
 
 GLM_ALIGNED_TYPEDEF (lowp_int64, aligned_lowp_int64, 8)
 
 GLM_ALIGNED_TYPEDEF (lowp_int8_t, aligned_lowp_int8_t, 1)
 
 GLM_ALIGNED_TYPEDEF (lowp_int16_t, aligned_lowp_int16_t, 2)
 
 GLM_ALIGNED_TYPEDEF (lowp_int32_t, aligned_lowp_int32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (lowp_int64_t, aligned_lowp_int64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (lowp_i8, aligned_lowp_i8, 1)
 
 GLM_ALIGNED_TYPEDEF (lowp_i16, aligned_lowp_i16, 2)
 
 GLM_ALIGNED_TYPEDEF (lowp_i32, aligned_lowp_i32, 4)
 
 GLM_ALIGNED_TYPEDEF (lowp_i64, aligned_lowp_i64, 8)
 
 GLM_ALIGNED_TYPEDEF (mediump_int8, aligned_mediump_int8, 1)
 
 GLM_ALIGNED_TYPEDEF (mediump_int16, aligned_mediump_int16, 2)
 
 GLM_ALIGNED_TYPEDEF (mediump_int32, aligned_mediump_int32, 4)
 
 GLM_ALIGNED_TYPEDEF (mediump_int64, aligned_mediump_int64, 8)
 
 GLM_ALIGNED_TYPEDEF (mediump_int8_t, aligned_mediump_int8_t, 1)
 
 GLM_ALIGNED_TYPEDEF (mediump_int16_t, aligned_mediump_int16_t, 2)
 
 GLM_ALIGNED_TYPEDEF (mediump_int32_t, aligned_mediump_int32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (mediump_int64_t, aligned_mediump_int64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (mediump_i8, aligned_mediump_i8, 1)
 
 GLM_ALIGNED_TYPEDEF (mediump_i16, aligned_mediump_i16, 2)
 
 GLM_ALIGNED_TYPEDEF (mediump_i32, aligned_mediump_i32, 4)
 
 GLM_ALIGNED_TYPEDEF (mediump_i64, aligned_mediump_i64, 8)
 
 GLM_ALIGNED_TYPEDEF (highp_int8, aligned_highp_int8, 1)
 
 GLM_ALIGNED_TYPEDEF (highp_int16, aligned_highp_int16, 2)
 
 GLM_ALIGNED_TYPEDEF (highp_int32, aligned_highp_int32, 4)
 
 GLM_ALIGNED_TYPEDEF (highp_int64, aligned_highp_int64, 8)
 
 GLM_ALIGNED_TYPEDEF (highp_int8_t, aligned_highp_int8_t, 1)
 
 GLM_ALIGNED_TYPEDEF (highp_int16_t, aligned_highp_int16_t, 2)
 
 GLM_ALIGNED_TYPEDEF (highp_int32_t, aligned_highp_int32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (highp_int64_t, aligned_highp_int64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (highp_i8, aligned_highp_i8, 1)
 
 GLM_ALIGNED_TYPEDEF (highp_i16, aligned_highp_i16, 2)
 
 GLM_ALIGNED_TYPEDEF (highp_i32, aligned_highp_i32, 4)
 
 GLM_ALIGNED_TYPEDEF (highp_i64, aligned_highp_i64, 8)
 
 GLM_ALIGNED_TYPEDEF (int8, aligned_int8, 1)
 
 GLM_ALIGNED_TYPEDEF (int16, aligned_int16, 2)
 
 GLM_ALIGNED_TYPEDEF (int32, aligned_int32, 4)
 
 GLM_ALIGNED_TYPEDEF (int64, aligned_int64, 8)
 
 GLM_ALIGNED_TYPEDEF (int8_t, aligned_int8_t, 1)
 
 GLM_ALIGNED_TYPEDEF (int16_t, aligned_int16_t, 2)
 
 GLM_ALIGNED_TYPEDEF (int32_t, aligned_int32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (int64_t, aligned_int64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (i8, aligned_i8, 1)
 
 GLM_ALIGNED_TYPEDEF (i16, aligned_i16, 2)
 
 GLM_ALIGNED_TYPEDEF (i32, aligned_i32, 4)
 
 GLM_ALIGNED_TYPEDEF (i64, aligned_i64, 8)
 
 GLM_ALIGNED_TYPEDEF (ivec1, aligned_ivec1, 4)
 
 GLM_ALIGNED_TYPEDEF (ivec2, aligned_ivec2, 8)
 
 GLM_ALIGNED_TYPEDEF (ivec3, aligned_ivec3, 16)
 
 GLM_ALIGNED_TYPEDEF (ivec4, aligned_ivec4, 16)
 
 GLM_ALIGNED_TYPEDEF (i8vec1, aligned_i8vec1, 1)
 
 GLM_ALIGNED_TYPEDEF (i8vec2, aligned_i8vec2, 2)
 
 GLM_ALIGNED_TYPEDEF (i8vec3, aligned_i8vec3, 4)
 
 GLM_ALIGNED_TYPEDEF (i8vec4, aligned_i8vec4, 4)
 
 GLM_ALIGNED_TYPEDEF (i16vec1, aligned_i16vec1, 2)
 
 GLM_ALIGNED_TYPEDEF (i16vec2, aligned_i16vec2, 4)
 
 GLM_ALIGNED_TYPEDEF (i16vec3, aligned_i16vec3, 8)
 
 GLM_ALIGNED_TYPEDEF (i16vec4, aligned_i16vec4, 8)
 
 GLM_ALIGNED_TYPEDEF (i32vec1, aligned_i32vec1, 4)
 
 GLM_ALIGNED_TYPEDEF (i32vec2, aligned_i32vec2, 8)
 
 GLM_ALIGNED_TYPEDEF (i32vec3, aligned_i32vec3, 16)
 
 GLM_ALIGNED_TYPEDEF (i32vec4, aligned_i32vec4, 16)
 
 GLM_ALIGNED_TYPEDEF (i64vec1, aligned_i64vec1, 8)
 
 GLM_ALIGNED_TYPEDEF (i64vec2, aligned_i64vec2, 16)
 
 GLM_ALIGNED_TYPEDEF (i64vec3, aligned_i64vec3, 32)
 
 GLM_ALIGNED_TYPEDEF (i64vec4, aligned_i64vec4, 32)
 
 GLM_ALIGNED_TYPEDEF (lowp_uint8, aligned_lowp_uint8, 1)
 
 GLM_ALIGNED_TYPEDEF (lowp_uint16, aligned_lowp_uint16, 2)
 
 GLM_ALIGNED_TYPEDEF (lowp_uint32, aligned_lowp_uint32, 4)
 
 GLM_ALIGNED_TYPEDEF (lowp_uint64, aligned_lowp_uint64, 8)
 
 GLM_ALIGNED_TYPEDEF (lowp_uint8_t, aligned_lowp_uint8_t, 1)
 
 GLM_ALIGNED_TYPEDEF (lowp_uint16_t, aligned_lowp_uint16_t, 2)
 
 GLM_ALIGNED_TYPEDEF (lowp_uint32_t, aligned_lowp_uint32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (lowp_uint64_t, aligned_lowp_uint64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (lowp_u8, aligned_lowp_u8, 1)
 
 GLM_ALIGNED_TYPEDEF (lowp_u16, aligned_lowp_u16, 2)
 
 GLM_ALIGNED_TYPEDEF (lowp_u32, aligned_lowp_u32, 4)
 
 GLM_ALIGNED_TYPEDEF (lowp_u64, aligned_lowp_u64, 8)
 
 GLM_ALIGNED_TYPEDEF (mediump_uint8, aligned_mediump_uint8, 1)
 
 GLM_ALIGNED_TYPEDEF (mediump_uint16, aligned_mediump_uint16, 2)
 
 GLM_ALIGNED_TYPEDEF (mediump_uint32, aligned_mediump_uint32, 4)
 
 GLM_ALIGNED_TYPEDEF (mediump_uint64, aligned_mediump_uint64, 8)
 
 GLM_ALIGNED_TYPEDEF (mediump_uint8_t, aligned_mediump_uint8_t, 1)
 
 GLM_ALIGNED_TYPEDEF (mediump_uint16_t, aligned_mediump_uint16_t, 2)
 
 GLM_ALIGNED_TYPEDEF (mediump_uint32_t, aligned_mediump_uint32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (mediump_uint64_t, aligned_mediump_uint64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (mediump_u8, aligned_mediump_u8, 1)
 
 GLM_ALIGNED_TYPEDEF (mediump_u16, aligned_mediump_u16, 2)
 
 GLM_ALIGNED_TYPEDEF (mediump_u32, aligned_mediump_u32, 4)
 
 GLM_ALIGNED_TYPEDEF (mediump_u64, aligned_mediump_u64, 8)
 
 GLM_ALIGNED_TYPEDEF (highp_uint8, aligned_highp_uint8, 1)
 
 GLM_ALIGNED_TYPEDEF (highp_uint16, aligned_highp_uint16, 2)
 
 GLM_ALIGNED_TYPEDEF (highp_uint32, aligned_highp_uint32, 4)
 
 GLM_ALIGNED_TYPEDEF (highp_uint64, aligned_highp_uint64, 8)
 
 GLM_ALIGNED_TYPEDEF (highp_uint8_t, aligned_highp_uint8_t, 1)
 
 GLM_ALIGNED_TYPEDEF (highp_uint16_t, aligned_highp_uint16_t, 2)
 
 GLM_ALIGNED_TYPEDEF (highp_uint32_t, aligned_highp_uint32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (highp_uint64_t, aligned_highp_uint64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (highp_u8, aligned_highp_u8, 1)
 
 GLM_ALIGNED_TYPEDEF (highp_u16, aligned_highp_u16, 2)
 
 GLM_ALIGNED_TYPEDEF (highp_u32, aligned_highp_u32, 4)
 
 GLM_ALIGNED_TYPEDEF (highp_u64, aligned_highp_u64, 8)
 
 GLM_ALIGNED_TYPEDEF (uint8, aligned_uint8, 1)
 
 GLM_ALIGNED_TYPEDEF (uint16, aligned_uint16, 2)
 
 GLM_ALIGNED_TYPEDEF (uint32, aligned_uint32, 4)
 
 GLM_ALIGNED_TYPEDEF (uint64, aligned_uint64, 8)
 
 GLM_ALIGNED_TYPEDEF (uint8_t, aligned_uint8_t, 1)
 
 GLM_ALIGNED_TYPEDEF (uint16_t, aligned_uint16_t, 2)
 
 GLM_ALIGNED_TYPEDEF (uint32_t, aligned_uint32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (uint64_t, aligned_uint64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (u8, aligned_u8, 1)
 
 GLM_ALIGNED_TYPEDEF (u16, aligned_u16, 2)
 
 GLM_ALIGNED_TYPEDEF (u32, aligned_u32, 4)
 
 GLM_ALIGNED_TYPEDEF (u64, aligned_u64, 8)
 
 GLM_ALIGNED_TYPEDEF (uvec1, aligned_uvec1, 4)
 
 GLM_ALIGNED_TYPEDEF (uvec2, aligned_uvec2, 8)
 
 GLM_ALIGNED_TYPEDEF (uvec3, aligned_uvec3, 16)
 
 GLM_ALIGNED_TYPEDEF (uvec4, aligned_uvec4, 16)
 
 GLM_ALIGNED_TYPEDEF (u8vec1, aligned_u8vec1, 1)
 
 GLM_ALIGNED_TYPEDEF (u8vec2, aligned_u8vec2, 2)
 
 GLM_ALIGNED_TYPEDEF (u8vec3, aligned_u8vec3, 4)
 
 GLM_ALIGNED_TYPEDEF (u8vec4, aligned_u8vec4, 4)
 
 GLM_ALIGNED_TYPEDEF (u16vec1, aligned_u16vec1, 2)
 
 GLM_ALIGNED_TYPEDEF (u16vec2, aligned_u16vec2, 4)
 
 GLM_ALIGNED_TYPEDEF (u16vec3, aligned_u16vec3, 8)
 
 GLM_ALIGNED_TYPEDEF (u16vec4, aligned_u16vec4, 8)
 
 GLM_ALIGNED_TYPEDEF (u32vec1, aligned_u32vec1, 4)
 
 GLM_ALIGNED_TYPEDEF (u32vec2, aligned_u32vec2, 8)
 
 GLM_ALIGNED_TYPEDEF (u32vec3, aligned_u32vec3, 16)
 
 GLM_ALIGNED_TYPEDEF (u32vec4, aligned_u32vec4, 16)
 
 GLM_ALIGNED_TYPEDEF (u64vec1, aligned_u64vec1, 8)
 
 GLM_ALIGNED_TYPEDEF (u64vec2, aligned_u64vec2, 16)
 
 GLM_ALIGNED_TYPEDEF (u64vec3, aligned_u64vec3, 32)
 
 GLM_ALIGNED_TYPEDEF (u64vec4, aligned_u64vec4, 32)
 
 GLM_ALIGNED_TYPEDEF (float32, aligned_float32, 4)
 
 GLM_ALIGNED_TYPEDEF (float64, aligned_float64, 8)
 
 GLM_ALIGNED_TYPEDEF (float32_t, aligned_float32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (float64_t, aligned_float64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (float32, aligned_f32, 4)
 
 GLM_ALIGNED_TYPEDEF (float64, aligned_f64, 8)
 
 GLM_ALIGNED_TYPEDEF (vec1, aligned_vec1, 4)
 
 GLM_ALIGNED_TYPEDEF (vec2, aligned_vec2, 8)
 
 GLM_ALIGNED_TYPEDEF (vec3, aligned_vec3, 16)
 
 GLM_ALIGNED_TYPEDEF (vec4, aligned_vec4, 16)
 
 GLM_ALIGNED_TYPEDEF (fvec1, aligned_fvec1, 4)
 
 GLM_ALIGNED_TYPEDEF (fvec2, aligned_fvec2, 8)
 
 GLM_ALIGNED_TYPEDEF (fvec3, aligned_fvec3, 16)
 
 GLM_ALIGNED_TYPEDEF (fvec4, aligned_fvec4, 16)
 
 GLM_ALIGNED_TYPEDEF (f32vec1, aligned_f32vec1, 4)
 
 GLM_ALIGNED_TYPEDEF (f32vec2, aligned_f32vec2, 8)
 
 GLM_ALIGNED_TYPEDEF (f32vec3, aligned_f32vec3, 16)
 
 GLM_ALIGNED_TYPEDEF (f32vec4, aligned_f32vec4, 16)
 
 GLM_ALIGNED_TYPEDEF (dvec1, aligned_dvec1, 8)
 
 GLM_ALIGNED_TYPEDEF (dvec2, aligned_dvec2, 16)
 
 GLM_ALIGNED_TYPEDEF (dvec3, aligned_dvec3, 32)
 
 GLM_ALIGNED_TYPEDEF (dvec4, aligned_dvec4, 32)
 
 GLM_ALIGNED_TYPEDEF (f64vec1, aligned_f64vec1, 8)
 
 GLM_ALIGNED_TYPEDEF (f64vec2, aligned_f64vec2, 16)
 
 GLM_ALIGNED_TYPEDEF (f64vec3, aligned_f64vec3, 32)
 
 GLM_ALIGNED_TYPEDEF (f64vec4, aligned_f64vec4, 32)
 
 GLM_ALIGNED_TYPEDEF (mat2, aligned_mat2, 16)
 
 GLM_ALIGNED_TYPEDEF (mat3, aligned_mat3, 16)
 
 GLM_ALIGNED_TYPEDEF (mat4, aligned_mat4, 16)
 
 GLM_ALIGNED_TYPEDEF (mat2x2, aligned_mat2x2, 16)
 
 GLM_ALIGNED_TYPEDEF (mat3x3, aligned_mat3x3, 16)
 
 GLM_ALIGNED_TYPEDEF (mat4x4, aligned_mat4x4, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat2x2, aligned_fmat2, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat3x3, aligned_fmat3, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat4x4, aligned_fmat4, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat2x2, aligned_fmat2x2, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat2x3, aligned_fmat2x3, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat2x4, aligned_fmat2x4, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat3x2, aligned_fmat3x2, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat3x3, aligned_fmat3x3, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat3x4, aligned_fmat3x4, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat4x2, aligned_fmat4x2, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat4x3, aligned_fmat4x3, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat4x4, aligned_fmat4x4, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat2x2, aligned_f32mat2, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat3x3, aligned_f32mat3, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat4x4, aligned_f32mat4, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat2x2, aligned_f32mat2x2, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat2x3, aligned_f32mat2x3, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat2x4, aligned_f32mat2x4, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat3x2, aligned_f32mat3x2, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat3x3, aligned_f32mat3x3, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat3x4, aligned_f32mat3x4, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat4x2, aligned_f32mat4x2, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat4x3, aligned_f32mat4x3, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat4x4, aligned_f32mat4x4, 16)
 
 GLM_ALIGNED_TYPEDEF (f64mat2x2, aligned_f64mat2, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat3x3, aligned_f64mat3, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat4x4, aligned_f64mat4, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat2x2, aligned_f64mat2x2, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat2x3, aligned_f64mat2x3, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat2x4, aligned_f64mat2x4, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat3x2, aligned_f64mat3x2, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat3x3, aligned_f64mat3x3, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat3x4, aligned_f64mat3x4, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat4x2, aligned_f64mat4x2, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat4x3, aligned_f64mat4x3, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat4x4, aligned_f64mat4x4, 32)
 
 GLM_ALIGNED_TYPEDEF (quat, aligned_quat, 16)
 
 GLM_ALIGNED_TYPEDEF (fquat, aligned_fquat, 16)
 
 GLM_ALIGNED_TYPEDEF (dquat, aligned_dquat, 32)
 
 GLM_ALIGNED_TYPEDEF (f32quat, aligned_f32quat, 16)
 
 GLM_ALIGNED_TYPEDEF (f64quat, aligned_f64quat, 32)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_type_aligned

+
Date
2014-11-23 / 2014-12-23
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTC_quaternion (dependence)
+ +

Definition in file type_aligned.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00115_source.html b/external/glm/doc/api/a00115_source.html new file mode 100644 index 0000000..358ff36 --- /dev/null +++ b/external/glm/doc/api/a00115_source.html @@ -0,0 +1,753 @@ + + + + + + +0.9.7: type_aligned.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_aligned.hpp
+
+
+Go to the documentation of this file.
1 
+
45 #pragma once
+
46 
+
47 // Dependency:
+
48 #include "../gtc/type_precision.hpp"
+
49 
+
50 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
51 # pragma message("GLM: GLM_GTX_type_aligned extension included")
+
52 #endif
+
53 
+
54 namespace glm
+
55 {
+
57  // Signed int vector types
+
58 
+
61 
+
64  GLM_ALIGNED_TYPEDEF(lowp_int8, aligned_lowp_int8, 1);
+
65 
+
68  GLM_ALIGNED_TYPEDEF(lowp_int16, aligned_lowp_int16, 2);
+
69 
+
72  GLM_ALIGNED_TYPEDEF(lowp_int32, aligned_lowp_int32, 4);
+
73 
+
76  GLM_ALIGNED_TYPEDEF(lowp_int64, aligned_lowp_int64, 8);
+
77 
+
78 
+
81  GLM_ALIGNED_TYPEDEF(lowp_int8_t, aligned_lowp_int8_t, 1);
+
82 
+
85  GLM_ALIGNED_TYPEDEF(lowp_int16_t, aligned_lowp_int16_t, 2);
+
86 
+
89  GLM_ALIGNED_TYPEDEF(lowp_int32_t, aligned_lowp_int32_t, 4);
+
90 
+
93  GLM_ALIGNED_TYPEDEF(lowp_int64_t, aligned_lowp_int64_t, 8);
+
94 
+
95 
+
98  GLM_ALIGNED_TYPEDEF(lowp_i8, aligned_lowp_i8, 1);
+
99 
+
102  GLM_ALIGNED_TYPEDEF(lowp_i16, aligned_lowp_i16, 2);
+
103 
+
106  GLM_ALIGNED_TYPEDEF(lowp_i32, aligned_lowp_i32, 4);
+
107 
+
110  GLM_ALIGNED_TYPEDEF(lowp_i64, aligned_lowp_i64, 8);
+
111 
+
112 
+
115  GLM_ALIGNED_TYPEDEF(mediump_int8, aligned_mediump_int8, 1);
+
116 
+
119  GLM_ALIGNED_TYPEDEF(mediump_int16, aligned_mediump_int16, 2);
+
120 
+
123  GLM_ALIGNED_TYPEDEF(mediump_int32, aligned_mediump_int32, 4);
+
124 
+
127  GLM_ALIGNED_TYPEDEF(mediump_int64, aligned_mediump_int64, 8);
+
128 
+
129 
+
132  GLM_ALIGNED_TYPEDEF(mediump_int8_t, aligned_mediump_int8_t, 1);
+
133 
+
136  GLM_ALIGNED_TYPEDEF(mediump_int16_t, aligned_mediump_int16_t, 2);
+
137 
+
140  GLM_ALIGNED_TYPEDEF(mediump_int32_t, aligned_mediump_int32_t, 4);
+
141 
+
144  GLM_ALIGNED_TYPEDEF(mediump_int64_t, aligned_mediump_int64_t, 8);
+
145 
+
146 
+
149  GLM_ALIGNED_TYPEDEF(mediump_i8, aligned_mediump_i8, 1);
+
150 
+
153  GLM_ALIGNED_TYPEDEF(mediump_i16, aligned_mediump_i16, 2);
+
154 
+
157  GLM_ALIGNED_TYPEDEF(mediump_i32, aligned_mediump_i32, 4);
+
158 
+
161  GLM_ALIGNED_TYPEDEF(mediump_i64, aligned_mediump_i64, 8);
+
162 
+
163 
+
166  GLM_ALIGNED_TYPEDEF(highp_int8, aligned_highp_int8, 1);
+
167 
+
170  GLM_ALIGNED_TYPEDEF(highp_int16, aligned_highp_int16, 2);
+
171 
+
174  GLM_ALIGNED_TYPEDEF(highp_int32, aligned_highp_int32, 4);
+
175 
+
178  GLM_ALIGNED_TYPEDEF(highp_int64, aligned_highp_int64, 8);
+
179 
+
180 
+
183  GLM_ALIGNED_TYPEDEF(highp_int8_t, aligned_highp_int8_t, 1);
+
184 
+
187  GLM_ALIGNED_TYPEDEF(highp_int16_t, aligned_highp_int16_t, 2);
+
188 
+
191  GLM_ALIGNED_TYPEDEF(highp_int32_t, aligned_highp_int32_t, 4);
+
192 
+
195  GLM_ALIGNED_TYPEDEF(highp_int64_t, aligned_highp_int64_t, 8);
+
196 
+
197 
+
200  GLM_ALIGNED_TYPEDEF(highp_i8, aligned_highp_i8, 1);
+
201 
+
204  GLM_ALIGNED_TYPEDEF(highp_i16, aligned_highp_i16, 2);
+
205 
+
208  GLM_ALIGNED_TYPEDEF(highp_i32, aligned_highp_i32, 4);
+
209 
+
212  GLM_ALIGNED_TYPEDEF(highp_i64, aligned_highp_i64, 8);
+
213 
+
214 
+
217  GLM_ALIGNED_TYPEDEF(int8, aligned_int8, 1);
+
218 
+
221  GLM_ALIGNED_TYPEDEF(int16, aligned_int16, 2);
+
222 
+
225  GLM_ALIGNED_TYPEDEF(int32, aligned_int32, 4);
+
226 
+
229  GLM_ALIGNED_TYPEDEF(int64, aligned_int64, 8);
+
230 
+
231 
+
234  GLM_ALIGNED_TYPEDEF(int8_t, aligned_int8_t, 1);
+
235 
+
238  GLM_ALIGNED_TYPEDEF(int16_t, aligned_int16_t, 2);
+
239 
+
242  GLM_ALIGNED_TYPEDEF(int32_t, aligned_int32_t, 4);
+
243 
+
246  GLM_ALIGNED_TYPEDEF(int64_t, aligned_int64_t, 8);
+
247 
+
248 
+
251  GLM_ALIGNED_TYPEDEF(i8, aligned_i8, 1);
+
252 
+
255  GLM_ALIGNED_TYPEDEF(i16, aligned_i16, 2);
+
256 
+
259  GLM_ALIGNED_TYPEDEF(i32, aligned_i32, 4);
+
260 
+
263  GLM_ALIGNED_TYPEDEF(i64, aligned_i64, 8);
+
264 
+
265 
+
268  GLM_ALIGNED_TYPEDEF(ivec1, aligned_ivec1, 4);
+
269 
+
272  GLM_ALIGNED_TYPEDEF(ivec2, aligned_ivec2, 8);
+
273 
+
276  GLM_ALIGNED_TYPEDEF(ivec3, aligned_ivec3, 16);
+
277 
+
280  GLM_ALIGNED_TYPEDEF(ivec4, aligned_ivec4, 16);
+
281 
+
282 
+
285  GLM_ALIGNED_TYPEDEF(i8vec1, aligned_i8vec1, 1);
+
286 
+
289  GLM_ALIGNED_TYPEDEF(i8vec2, aligned_i8vec2, 2);
+
290 
+
293  GLM_ALIGNED_TYPEDEF(i8vec3, aligned_i8vec3, 4);
+
294 
+
297  GLM_ALIGNED_TYPEDEF(i8vec4, aligned_i8vec4, 4);
+
298 
+
299 
+
302  GLM_ALIGNED_TYPEDEF(i16vec1, aligned_i16vec1, 2);
+
303 
+
306  GLM_ALIGNED_TYPEDEF(i16vec2, aligned_i16vec2, 4);
+
307 
+
310  GLM_ALIGNED_TYPEDEF(i16vec3, aligned_i16vec3, 8);
+
311 
+
314  GLM_ALIGNED_TYPEDEF(i16vec4, aligned_i16vec4, 8);
+
315 
+
316 
+
319  GLM_ALIGNED_TYPEDEF(i32vec1, aligned_i32vec1, 4);
+
320 
+
323  GLM_ALIGNED_TYPEDEF(i32vec2, aligned_i32vec2, 8);
+
324 
+
327  GLM_ALIGNED_TYPEDEF(i32vec3, aligned_i32vec3, 16);
+
328 
+
331  GLM_ALIGNED_TYPEDEF(i32vec4, aligned_i32vec4, 16);
+
332 
+
333 
+
336  GLM_ALIGNED_TYPEDEF(i64vec1, aligned_i64vec1, 8);
+
337 
+
340  GLM_ALIGNED_TYPEDEF(i64vec2, aligned_i64vec2, 16);
+
341 
+
344  GLM_ALIGNED_TYPEDEF(i64vec3, aligned_i64vec3, 32);
+
345 
+
348  GLM_ALIGNED_TYPEDEF(i64vec4, aligned_i64vec4, 32);
+
349 
+
350 
+
352  // Unsigned int vector types
+
353 
+
356  GLM_ALIGNED_TYPEDEF(lowp_uint8, aligned_lowp_uint8, 1);
+
357 
+
360  GLM_ALIGNED_TYPEDEF(lowp_uint16, aligned_lowp_uint16, 2);
+
361 
+
364  GLM_ALIGNED_TYPEDEF(lowp_uint32, aligned_lowp_uint32, 4);
+
365 
+
368  GLM_ALIGNED_TYPEDEF(lowp_uint64, aligned_lowp_uint64, 8);
+
369 
+
370 
+
373  GLM_ALIGNED_TYPEDEF(lowp_uint8_t, aligned_lowp_uint8_t, 1);
+
374 
+
377  GLM_ALIGNED_TYPEDEF(lowp_uint16_t, aligned_lowp_uint16_t, 2);
+
378 
+
381  GLM_ALIGNED_TYPEDEF(lowp_uint32_t, aligned_lowp_uint32_t, 4);
+
382 
+
385  GLM_ALIGNED_TYPEDEF(lowp_uint64_t, aligned_lowp_uint64_t, 8);
+
386 
+
387 
+
390  GLM_ALIGNED_TYPEDEF(lowp_u8, aligned_lowp_u8, 1);
+
391 
+
394  GLM_ALIGNED_TYPEDEF(lowp_u16, aligned_lowp_u16, 2);
+
395 
+
398  GLM_ALIGNED_TYPEDEF(lowp_u32, aligned_lowp_u32, 4);
+
399 
+
402  GLM_ALIGNED_TYPEDEF(lowp_u64, aligned_lowp_u64, 8);
+
403 
+
404 
+
407  GLM_ALIGNED_TYPEDEF(mediump_uint8, aligned_mediump_uint8, 1);
+
408 
+
411  GLM_ALIGNED_TYPEDEF(mediump_uint16, aligned_mediump_uint16, 2);
+
412 
+
415  GLM_ALIGNED_TYPEDEF(mediump_uint32, aligned_mediump_uint32, 4);
+
416 
+
419  GLM_ALIGNED_TYPEDEF(mediump_uint64, aligned_mediump_uint64, 8);
+
420 
+
421 
+
424  GLM_ALIGNED_TYPEDEF(mediump_uint8_t, aligned_mediump_uint8_t, 1);
+
425 
+
428  GLM_ALIGNED_TYPEDEF(mediump_uint16_t, aligned_mediump_uint16_t, 2);
+
429 
+
432  GLM_ALIGNED_TYPEDEF(mediump_uint32_t, aligned_mediump_uint32_t, 4);
+
433 
+
436  GLM_ALIGNED_TYPEDEF(mediump_uint64_t, aligned_mediump_uint64_t, 8);
+
437 
+
438 
+
441  GLM_ALIGNED_TYPEDEF(mediump_u8, aligned_mediump_u8, 1);
+
442 
+
445  GLM_ALIGNED_TYPEDEF(mediump_u16, aligned_mediump_u16, 2);
+
446 
+
449  GLM_ALIGNED_TYPEDEF(mediump_u32, aligned_mediump_u32, 4);
+
450 
+
453  GLM_ALIGNED_TYPEDEF(mediump_u64, aligned_mediump_u64, 8);
+
454 
+
455 
+
458  GLM_ALIGNED_TYPEDEF(highp_uint8, aligned_highp_uint8, 1);
+
459 
+
462  GLM_ALIGNED_TYPEDEF(highp_uint16, aligned_highp_uint16, 2);
+
463 
+
466  GLM_ALIGNED_TYPEDEF(highp_uint32, aligned_highp_uint32, 4);
+
467 
+
470  GLM_ALIGNED_TYPEDEF(highp_uint64, aligned_highp_uint64, 8);
+
471 
+
472 
+
475  GLM_ALIGNED_TYPEDEF(highp_uint8_t, aligned_highp_uint8_t, 1);
+
476 
+
479  GLM_ALIGNED_TYPEDEF(highp_uint16_t, aligned_highp_uint16_t, 2);
+
480 
+
483  GLM_ALIGNED_TYPEDEF(highp_uint32_t, aligned_highp_uint32_t, 4);
+
484 
+
487  GLM_ALIGNED_TYPEDEF(highp_uint64_t, aligned_highp_uint64_t, 8);
+
488 
+
489 
+
492  GLM_ALIGNED_TYPEDEF(highp_u8, aligned_highp_u8, 1);
+
493 
+
496  GLM_ALIGNED_TYPEDEF(highp_u16, aligned_highp_u16, 2);
+
497 
+
500  GLM_ALIGNED_TYPEDEF(highp_u32, aligned_highp_u32, 4);
+
501 
+
504  GLM_ALIGNED_TYPEDEF(highp_u64, aligned_highp_u64, 8);
+
505 
+
506 
+
509  GLM_ALIGNED_TYPEDEF(uint8, aligned_uint8, 1);
+
510 
+
513  GLM_ALIGNED_TYPEDEF(uint16, aligned_uint16, 2);
+
514 
+
517  GLM_ALIGNED_TYPEDEF(uint32, aligned_uint32, 4);
+
518 
+
521  GLM_ALIGNED_TYPEDEF(uint64, aligned_uint64, 8);
+
522 
+
523 
+
526  GLM_ALIGNED_TYPEDEF(uint8_t, aligned_uint8_t, 1);
+
527 
+
530  GLM_ALIGNED_TYPEDEF(uint16_t, aligned_uint16_t, 2);
+
531 
+
534  GLM_ALIGNED_TYPEDEF(uint32_t, aligned_uint32_t, 4);
+
535 
+
538  GLM_ALIGNED_TYPEDEF(uint64_t, aligned_uint64_t, 8);
+
539 
+
540 
+
543  GLM_ALIGNED_TYPEDEF(u8, aligned_u8, 1);
+
544 
+
547  GLM_ALIGNED_TYPEDEF(u16, aligned_u16, 2);
+
548 
+
551  GLM_ALIGNED_TYPEDEF(u32, aligned_u32, 4);
+
552 
+
555  GLM_ALIGNED_TYPEDEF(u64, aligned_u64, 8);
+
556 
+
557 
+
560  GLM_ALIGNED_TYPEDEF(uvec1, aligned_uvec1, 4);
+
561 
+
564  GLM_ALIGNED_TYPEDEF(uvec2, aligned_uvec2, 8);
+
565 
+
568  GLM_ALIGNED_TYPEDEF(uvec3, aligned_uvec3, 16);
+
569 
+
572  GLM_ALIGNED_TYPEDEF(uvec4, aligned_uvec4, 16);
+
573 
+
574 
+
577  GLM_ALIGNED_TYPEDEF(u8vec1, aligned_u8vec1, 1);
+
578 
+
581  GLM_ALIGNED_TYPEDEF(u8vec2, aligned_u8vec2, 2);
+
582 
+
585  GLM_ALIGNED_TYPEDEF(u8vec3, aligned_u8vec3, 4);
+
586 
+
589  GLM_ALIGNED_TYPEDEF(u8vec4, aligned_u8vec4, 4);
+
590 
+
591 
+
594  GLM_ALIGNED_TYPEDEF(u16vec1, aligned_u16vec1, 2);
+
595 
+
598  GLM_ALIGNED_TYPEDEF(u16vec2, aligned_u16vec2, 4);
+
599 
+
602  GLM_ALIGNED_TYPEDEF(u16vec3, aligned_u16vec3, 8);
+
603 
+
606  GLM_ALIGNED_TYPEDEF(u16vec4, aligned_u16vec4, 8);
+
607 
+
608 
+
611  GLM_ALIGNED_TYPEDEF(u32vec1, aligned_u32vec1, 4);
+
612 
+
615  GLM_ALIGNED_TYPEDEF(u32vec2, aligned_u32vec2, 8);
+
616 
+
619  GLM_ALIGNED_TYPEDEF(u32vec3, aligned_u32vec3, 16);
+
620 
+
623  GLM_ALIGNED_TYPEDEF(u32vec4, aligned_u32vec4, 16);
+
624 
+
625 
+
628  GLM_ALIGNED_TYPEDEF(u64vec1, aligned_u64vec1, 8);
+
629 
+
632  GLM_ALIGNED_TYPEDEF(u64vec2, aligned_u64vec2, 16);
+
633 
+
636  GLM_ALIGNED_TYPEDEF(u64vec3, aligned_u64vec3, 32);
+
637 
+
640  GLM_ALIGNED_TYPEDEF(u64vec4, aligned_u64vec4, 32);
+
641 
+
642 
+
644  // Float vector types
+
645 
+
648  GLM_ALIGNED_TYPEDEF(float32, aligned_float32, 4);
+
649 
+
652  GLM_ALIGNED_TYPEDEF(float64, aligned_float64, 8);
+
653 
+
654 
+
657  GLM_ALIGNED_TYPEDEF(float32_t, aligned_float32_t, 4);
+
658 
+
661  GLM_ALIGNED_TYPEDEF(float64_t, aligned_float64_t, 8);
+
662 
+
663 
+
666  GLM_ALIGNED_TYPEDEF(float32, aligned_f32, 4);
+
667 
+
670  GLM_ALIGNED_TYPEDEF(float64, aligned_f64, 8);
+
671 
+
672 
+
675  GLM_ALIGNED_TYPEDEF(vec1, aligned_vec1, 4);
+
676 
+
679  GLM_ALIGNED_TYPEDEF(vec2, aligned_vec2, 8);
+
680 
+
683  GLM_ALIGNED_TYPEDEF(vec3, aligned_vec3, 16);
+
684 
+
687  GLM_ALIGNED_TYPEDEF(vec4, aligned_vec4, 16);
+
688 
+
689 
+
692  GLM_ALIGNED_TYPEDEF(fvec1, aligned_fvec1, 4);
+
693 
+
696  GLM_ALIGNED_TYPEDEF(fvec2, aligned_fvec2, 8);
+
697 
+
700  GLM_ALIGNED_TYPEDEF(fvec3, aligned_fvec3, 16);
+
701 
+
704  GLM_ALIGNED_TYPEDEF(fvec4, aligned_fvec4, 16);
+
705 
+
706 
+
709  GLM_ALIGNED_TYPEDEF(f32vec1, aligned_f32vec1, 4);
+
710 
+
713  GLM_ALIGNED_TYPEDEF(f32vec2, aligned_f32vec2, 8);
+
714 
+
717  GLM_ALIGNED_TYPEDEF(f32vec3, aligned_f32vec3, 16);
+
718 
+
721  GLM_ALIGNED_TYPEDEF(f32vec4, aligned_f32vec4, 16);
+
722 
+
723 
+
726  GLM_ALIGNED_TYPEDEF(dvec1, aligned_dvec1, 8);
+
727 
+
730  GLM_ALIGNED_TYPEDEF(dvec2, aligned_dvec2, 16);
+
731 
+
734  GLM_ALIGNED_TYPEDEF(dvec3, aligned_dvec3, 32);
+
735 
+
738  GLM_ALIGNED_TYPEDEF(dvec4, aligned_dvec4, 32);
+
739 
+
740 
+
743  GLM_ALIGNED_TYPEDEF(f64vec1, aligned_f64vec1, 8);
+
744 
+
747  GLM_ALIGNED_TYPEDEF(f64vec2, aligned_f64vec2, 16);
+
748 
+
751  GLM_ALIGNED_TYPEDEF(f64vec3, aligned_f64vec3, 32);
+
752 
+
755  GLM_ALIGNED_TYPEDEF(f64vec4, aligned_f64vec4, 32);
+
756 
+
757 
+
759  // Float matrix types
+
760 
+
763  //typedef detail::tmat1<f32> mat1;
+
764 
+
767  GLM_ALIGNED_TYPEDEF(mat2, aligned_mat2, 16);
+
768 
+
771  GLM_ALIGNED_TYPEDEF(mat3, aligned_mat3, 16);
+
772 
+
775  GLM_ALIGNED_TYPEDEF(mat4, aligned_mat4, 16);
+
776 
+
777 
+
780  //typedef detail::tmat1x1<f32> mat1;
+
781 
+
784  GLM_ALIGNED_TYPEDEF(mat2x2, aligned_mat2x2, 16);
+
785 
+
788  GLM_ALIGNED_TYPEDEF(mat3x3, aligned_mat3x3, 16);
+
789 
+
792  GLM_ALIGNED_TYPEDEF(mat4x4, aligned_mat4x4, 16);
+
793 
+
794 
+
797  //typedef detail::tmat1x1<f32> fmat1;
+
798 
+
801  GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2, 16);
+
802 
+
805  GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3, 16);
+
806 
+
809  GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4, 16);
+
810 
+
811 
+
814  //typedef f32 fmat1x1;
+
815 
+
818  GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2x2, 16);
+
819 
+
822  GLM_ALIGNED_TYPEDEF(fmat2x3, aligned_fmat2x3, 16);
+
823 
+
826  GLM_ALIGNED_TYPEDEF(fmat2x4, aligned_fmat2x4, 16);
+
827 
+
830  GLM_ALIGNED_TYPEDEF(fmat3x2, aligned_fmat3x2, 16);
+
831 
+
834  GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3x3, 16);
+
835 
+
838  GLM_ALIGNED_TYPEDEF(fmat3x4, aligned_fmat3x4, 16);
+
839 
+
842  GLM_ALIGNED_TYPEDEF(fmat4x2, aligned_fmat4x2, 16);
+
843 
+
846  GLM_ALIGNED_TYPEDEF(fmat4x3, aligned_fmat4x3, 16);
+
847 
+
850  GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4x4, 16);
+
851 
+
852 
+
855  //typedef detail::tmat1x1<f32, defaultp> f32mat1;
+
856 
+
859  GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2, 16);
+
860 
+
863  GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3, 16);
+
864 
+
867  GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4, 16);
+
868 
+
869 
+
872  //typedef f32 f32mat1x1;
+
873 
+
876  GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2x2, 16);
+
877 
+
880  GLM_ALIGNED_TYPEDEF(f32mat2x3, aligned_f32mat2x3, 16);
+
881 
+
884  GLM_ALIGNED_TYPEDEF(f32mat2x4, aligned_f32mat2x4, 16);
+
885 
+
888  GLM_ALIGNED_TYPEDEF(f32mat3x2, aligned_f32mat3x2, 16);
+
889 
+
892  GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3x3, 16);
+
893 
+
896  GLM_ALIGNED_TYPEDEF(f32mat3x4, aligned_f32mat3x4, 16);
+
897 
+
900  GLM_ALIGNED_TYPEDEF(f32mat4x2, aligned_f32mat4x2, 16);
+
901 
+
904  GLM_ALIGNED_TYPEDEF(f32mat4x3, aligned_f32mat4x3, 16);
+
905 
+
908  GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4x4, 16);
+
909 
+
910 
+
913  //typedef detail::tmat1x1<f64, defaultp> f64mat1;
+
914 
+
917  GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2, 32);
+
918 
+
921  GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3, 32);
+
922 
+
925  GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4, 32);
+
926 
+
927 
+
930  //typedef f64 f64mat1x1;
+
931 
+
934  GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2x2, 32);
+
935 
+
938  GLM_ALIGNED_TYPEDEF(f64mat2x3, aligned_f64mat2x3, 32);
+
939 
+
942  GLM_ALIGNED_TYPEDEF(f64mat2x4, aligned_f64mat2x4, 32);
+
943 
+
946  GLM_ALIGNED_TYPEDEF(f64mat3x2, aligned_f64mat3x2, 32);
+
947 
+
950  GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3x3, 32);
+
951 
+
954  GLM_ALIGNED_TYPEDEF(f64mat3x4, aligned_f64mat3x4, 32);
+
955 
+
958  GLM_ALIGNED_TYPEDEF(f64mat4x2, aligned_f64mat4x2, 32);
+
959 
+
962  GLM_ALIGNED_TYPEDEF(f64mat4x3, aligned_f64mat4x3, 32);
+
963 
+
966  GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4x4, 32);
+
967 
+
968 
+
970  // Quaternion types
+
971 
+
974  GLM_ALIGNED_TYPEDEF(quat, aligned_quat, 16);
+
975 
+
978  GLM_ALIGNED_TYPEDEF(fquat, aligned_fquat, 16);
+
979 
+
982  GLM_ALIGNED_TYPEDEF(dquat, aligned_dquat, 32);
+
983 
+
986  GLM_ALIGNED_TYPEDEF(f32quat, aligned_f32quat, 16);
+
987 
+
990  GLM_ALIGNED_TYPEDEF(f64quat, aligned_f64quat, 32);
+
991 
+
993 }//namespace glm
+
994 
+
995 #include "type_aligned.inl"
+
detail::int8 int8_t
8 bit signed integer type.
Definition: fwd.hpp:297
+
detail::uint32 lowp_uint32
Low precision 32 bit unsigned integer type.
Definition: fwd.hpp:740
+
detail::int64 lowp_int64_t
Low precision 64 bit signed integer type.
Definition: fwd.hpp:157
+
detail::int16 lowp_int16
Low precision 16 bit signed integer type.
Definition: fwd.hpp:133
+
highp_u16vec1 u16vec1
Default precision 16 bit unsigned integer scalar type.
Definition: fwd.hpp:1082
+
highp_ivec3 ivec3
3 components vector of signed integer numbers.
Definition: type_vec.hpp:449
+
detail::uint32 u32
32 bit unsigned integer type.
Definition: fwd.hpp:931
+
highp_dvec2 dvec2
2 components vector of double-precision floating-point numbers.
Definition: type_vec.hpp:417
+
detail::uint16 lowp_uint16
Low precision 16 bit unsigned integer type.
Definition: fwd.hpp:736
+
highp_f32vec3 fvec3
Default single-precision floating-point vector of 3 components.
Definition: fwd.hpp:2364
+
highp_f32mat3x3 fmat3x3
Default single-precision floating-point 3x3 matrix.
Definition: fwd.hpp:2388
+
highp_i64vec4 i64vec4
Default precision 64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:723
+
GLM_ALIGNED_TYPEDEF(f64quat, aligned_f64quat, 32)
Double-precision floating-point aligned quaternion.
+
detail::uint8 mediump_u8
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:816
+
detail::int64 highp_i64
High precision 64 bit signed integer type.
Definition: fwd.hpp:269
+
highp_u32vec2 u32vec2
Default precision 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:1165
+
highp_u8vec4 u8vec4
Default precision 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:1014
+
highp_uvec3 uvec3
3 components vector of unsigned integer numbers.
Definition: type_vec.hpp:476
+
detail::int64 highp_int64_t
High precision 64 bit signed integer type.
Definition: fwd.hpp:253
+
highp_i64vec2 i64vec2
Default precision 64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:715
+
detail::int32 int32_t
32 bit signed integer type.
Definition: fwd.hpp:305
+
highp_i16vec4 i16vec4
Default precision 16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:485
+
detail::int32 mediump_i32
Medium precision 32 bit signed integer type.
Definition: fwd.hpp:217
+
mat2x2 mat2
2 columns of 2 components matrix of floating-point numbers.
Definition: type_mat.hpp:432
+
detail::int8 lowp_int8
Low precision 8 bit signed integer type.
Definition: fwd.hpp:129
+
detail::uint64 u64
64 bit unsigned integer type.
Definition: fwd.hpp:935
+
detail::uint8 lowp_u8
Low precision 8 bit unsigned integer type.
Definition: fwd.hpp:766
+
detail::int8 i8
8 bit signed integer type.
Definition: fwd.hpp:314
+
detail::uint8 mediump_uint8
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:784
+
detail::uint32 lowp_uint32_t
Low precision 32 bit unsigned integer type.
Definition: fwd.hpp:757
+
detail::int64 mediump_i64
Medium precision 64 bit signed integer type.
Definition: fwd.hpp:221
+
highp_i64vec3 i64vec3
Default precision 64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:719
+
detail::int32 highp_i32
High precision 32 bit signed integer type.
Definition: fwd.hpp:265
+
detail::uint32 lowp_u32
Low precision 32 bit unsigned integer type.
Definition: fwd.hpp:774
+
detail::int16 highp_i16
High precision 16 bit signed integer type.
Definition: fwd.hpp:261
+
detail::int8 highp_i8
High precision 8 bit signed integer type.
Definition: fwd.hpp:257
+
highp_u32vec3 u32vec3
Default precision 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:1169
+
detail::uint32 mediump_u32
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:824
+
highp_f32vec2 fvec2
Default single-precision floating-point vector of 2 components.
Definition: fwd.hpp:2360
+
detail::int8 mediump_int8
Medium precision 8 bit signed integer type.
Definition: fwd.hpp:177
+
detail::uint32 highp_u32
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:874
+
highp_uvec4 uvec4
4 components vector of unsigned integer numbers.
Definition: type_vec.hpp:481
+
detail::uint64 mediump_uint64_t
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:812
+
highp_i32vec1 i32vec1
Default precision 32 bit signed integer scalar type.
Definition: fwd.hpp:552
+
detail::uint8 highp_u8
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:866
+
highp_u16vec3 u16vec3
Default precision 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:1090
+
highp_dvec4 dvec4
4 components vector of double-precision floating-point numbers.
Definition: type_vec.hpp:427
+
mat3x3 mat3
3 columns of 3 components matrix of floating-point numbers.
Definition: type_mat.hpp:437
+
highp_mat2x2 mat2x2
2 columns of 2 components matrix of floating-point numbers.
Definition: type_mat.hpp:385
+
highp_i16vec2 i16vec2
Default precision 16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:477
+
highp_i32vec4 i32vec4
Default precision 32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:564
+
detail::int64 lowp_int64
Low precision 64 bit signed integer type.
Definition: fwd.hpp:141
+
highp_f32mat2x4 f32mat2x4
Default single-precision floating-point 2x4 matrix.
Definition: fwd.hpp:2450
+
highp_f32mat3x2 f32mat3x2
Default single-precision floating-point 3x2 matrix.
Definition: fwd.hpp:2454
+
highp_f64vec4 f64vec4
Default double-precision floating-point vector of 4 components.
Definition: fwd.hpp:2544
+
detail::int32 lowp_i32
Low precision 32 bit signed integer type.
Definition: fwd.hpp:169
+
highp_vec2 vec2
2 components vector of floating-point numbers.
Definition: type_vec.hpp:390
+
detail::uint64 mediump_uint64
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:796
+
highp_f32vec2 f32vec2
Default single-precision floating-point vector of 2 components.
Definition: fwd.hpp:2430
+
detail::uint16 u16
16 bit unsigned integer type.
Definition: fwd.hpp:927
+
highp_uvec2 uvec2
2 components vector of unsigned integer numbers.
Definition: type_vec.hpp:471
+
highp_f64vec1 f64vec1
Default double-precision floating-point vector of 1 components.
Definition: fwd.hpp:2532
+
highp_f32vec4 fvec4
Default single-precision floating-point vector of 4 components.
Definition: fwd.hpp:2368
+
detail::int8 mediump_i8
Medium precision 8 bit signed integer type.
Definition: fwd.hpp:209
+
highp_f32mat4x4 f32mat4x4
Default single-precision floating-point 4x4 matrix.
Definition: fwd.hpp:2474
+
highp_f64mat2x2 f64mat2x2
Default double-precision floating-point 2x2 matrix.
Definition: fwd.hpp:2548
+
highp_float64_t float64_t
Default 64 bit double-precision floating-point scalar.
Definition: fwd.hpp:1530
+
highp_u8vec1 u8vec1
Default precision 8 bit unsigned integer scalar type.
Definition: fwd.hpp:1002
+
highp_f32mat4x2 fmat4x2
Default single-precision floating-point 4x2 matrix.
Definition: fwd.hpp:2396
+
highp_u8vec2 u8vec2
Default precision 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:1006
+
highp_u64vec1 u64vec1
Default precision 64 bit unsigned integer scalar type.
Definition: fwd.hpp:1320
+
detail::uint8 highp_uint8
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:834
+
detail::uint16 mediump_u16
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:820
+
highp_f64mat3x3 f64mat3x3
Default double-precision floating-point 3x3 matrix.
Definition: fwd.hpp:2564
+
detail::uint32 mediump_uint32
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:792
+
highp_f32mat4x2 f32mat4x2
Default single-precision floating-point 4x2 matrix.
Definition: fwd.hpp:2466
+
detail::int16 highp_int16
High precision 16 bit signed integer type.
Definition: fwd.hpp:229
+
detail::int32 highp_int32
High precision 32 bit signed integer type.
Definition: fwd.hpp:233
+
detail::int8 mediump_int8_t
Medium precision 8 bit signed integer type.
Definition: fwd.hpp:193
+
highp_f32quat f32quat
Default single-precision floating-point quaternion.
Definition: fwd.hpp:2490
+
highp_mat4x4 mat4x4
4 columns of 4 components matrix of floating-point numbers.
Definition: type_mat.hpp:425
+
highp_i8vec4 i8vec4
Default precision 8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:405
+
detail::int8 highp_int8
High precision 8 bit signed integer type.
Definition: fwd.hpp:225
+
highp_f64mat2x4 f64mat2x4
Default double-precision floating-point 2x4 matrix.
Definition: fwd.hpp:2556
+
highp_u16vec4 u16vec4
Default precision 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:1094
+
highp_u64vec2 u64vec2
Default precision 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:1324
+
detail::uint64 highp_uint64_t
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:862
+
detail::int8 lowp_i8
Low precision 8 bit signed integer type.
Definition: fwd.hpp:161
+
highp_f32vec1 f32vec1
Default single-precision floating-point vector of 1 components.
Definition: fwd.hpp:2426
+
detail::uint32 uint32_t
32 bit unsigned integer type.
Definition: fwd.hpp:914
+
detail::uint8 u8
8 bit unsigned integer type.
Definition: fwd.hpp:923
+
detail::uint16 lowp_u16
Low precision 16 bit unsigned integer type.
Definition: fwd.hpp:770
+
highp_f32mat2x4 fmat2x4
Default single-precision floating-point 2x4 matrix.
Definition: fwd.hpp:2380
+
highp_f32vec1 fvec1
Default single-precision floating-point vector of 1 components.
Definition: fwd.hpp:2356
+
highp_mat3x3 mat3x3
3 columns of 3 components matrix of floating-point numbers.
Definition: type_mat.hpp:405
+
detail::int16 lowp_i16
Low precision 16 bit signed integer type.
Definition: fwd.hpp:165
+
detail::uint8 lowp_uint8_t
Low precision 8 bit unsigned integer type.
Definition: fwd.hpp:749
+
highp_i32vec2 i32vec2
Default precision 32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:556
+
Definition: _noise.hpp:40
+
detail::uint16 mediump_uint16
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:788
+
highp_ivec4 ivec4
4 components vector of signed integer numbers.
Definition: type_vec.hpp:454
+
highp_f64quat f64quat
Default double-precision floating-point quaternion.
Definition: fwd.hpp:2596
+
detail::int8 highp_int8_t
High precision 8 bit signed integer type.
Definition: fwd.hpp:241
+
detail::uint8 highp_uint8_t
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:850
+
highp_i8vec1 i8vec1
Default precision 8 bit signed integer scalar type.
Definition: fwd.hpp:393
+
highp_i16vec1 i16vec1
Default precision 16 bit signed integer scalar type.
Definition: fwd.hpp:473
+
detail::int64 mediump_int64_t
Medium precision 64 bit signed integer type.
Definition: fwd.hpp:205
+
highp_f32mat2x2 fmat2x2
Default single-precision floating-point 2x2 matrix.
Definition: fwd.hpp:2372
+
detail::int8 lowp_int8_t
Low precision 8 bit signed integer type.
Definition: fwd.hpp:145
+
detail::uint16 highp_uint16
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:838
+
detail::uint64 lowp_uint64
Low precision 64 bit unsigned integer type.
Definition: fwd.hpp:744
+
highp_f32mat2x3 fmat2x3
Default single-precision floating-point 2x3 matrix.
Definition: fwd.hpp:2376
+
highp_float32_t float32_t
Default 32 bit single-precision floating-point scalar.
Definition: fwd.hpp:1526
+
highp_i8vec3 i8vec3
Default precision 8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:401
+
highp_vec4 vec4
4 components vector of floating-point numbers.
Definition: type_vec.hpp:400
+
highp_f32mat3x2 fmat3x2
Default single-precision floating-point 3x2 matrix.
Definition: fwd.hpp:2384
+
detail::int16 mediump_i16
Medium precision 16 bit signed integer type.
Definition: fwd.hpp:213
+
detail::uint16 mediump_uint16_t
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:804
+
highp_u32vec4 u32vec4
Default precision 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:1173
+
highp_f64mat3x4 f64mat3x4
Default double-precision floating-point 3x4 matrix.
Definition: fwd.hpp:2568
+
detail::uint16 lowp_uint16_t
Low precision 16 bit unsigned integer type.
Definition: fwd.hpp:753
+
detail::int16 mediump_int16
Medium precision 16 bit signed integer type.
Definition: fwd.hpp:181
+
highp_f32mat3x4 fmat3x4
Default single-precision floating-point 3x4 matrix.
Definition: fwd.hpp:2392
+
highp_f32mat4x3 fmat4x3
Default single-precision floating-point 4x3 matrix.
Definition: fwd.hpp:2400
+
highp_u8vec3 u8vec3
Default precision 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:1010
+
highp_f64vec3 f64vec3
Default double-precision floating-point vector of 3 components.
Definition: fwd.hpp:2540
+
highp_vec3 vec3
3 components vector of floating-point numbers.
Definition: type_vec.hpp:395
+
highp_u64vec4 u64vec4
Default precision 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:1332
+
detail::int16 mediump_int16_t
Medium precision 16 bit signed integer type.
Definition: fwd.hpp:197
+
detail::int16 lowp_int16_t
Low precision 16 bit signed integer type.
Definition: fwd.hpp:149
+
highp_dvec3 dvec3
3 components vector of double-precision floating-point numbers.
Definition: type_vec.hpp:422
+
highp_f64mat4x3 f64mat4x3
Default double-precision floating-point 4x3 matrix.
Definition: fwd.hpp:2576
+
detail::uint32 mediump_uint32_t
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:808
+
detail::int32 mediump_int32_t
Medium precision 32 bit signed integer type.
Definition: fwd.hpp:201
+
detail::uint8 uint8_t
8 bit unsigned integer type.
Definition: fwd.hpp:906
+
highp_f64mat3x2 f64mat3x2
Default double-precision floating-point 3x2 matrix.
Definition: fwd.hpp:2560
+
highp_f32mat2x2 f32mat2x2
Default single-precision floating-point 2x2 matrix.
Definition: fwd.hpp:2442
+
highp_f32mat3x3 f32mat3x3
Default single-precision floating-point 3x3 matrix.
Definition: fwd.hpp:2458
+
detail::uint16 highp_uint16_t
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:854
+
highp_i8vec2 i8vec2
Default precision 8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:397
+
detail::int16 highp_int16_t
High precision 16 bit signed integer type.
Definition: fwd.hpp:245
+
detail::int32 lowp_int32
Low precision 32 bit signed integer type.
Definition: fwd.hpp:137
+
detail::uint64 highp_u64
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:878
+
highp_f64mat4x2 f64mat4x2
Default double-precision floating-point 4x2 matrix.
Definition: fwd.hpp:2572
+
detail::int32 mediump_int32
Medium precision 32 bit signed integer type.
Definition: fwd.hpp:185
+
detail::int64 int64_t
64 bit signed integer type.
Definition: fwd.hpp:309
+
highp_ivec2 ivec2
2 components vector of signed integer numbers.
Definition: type_vec.hpp:444
+
detail::uint64 lowp_u64
Low precision 64 bit unsigned integer type.
Definition: fwd.hpp:778
+
detail::uint64 mediump_u64
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:828
+
detail::uint64 lowp_uint64_t
Low precision 64 bit unsigned integer type.
Definition: fwd.hpp:761
+
detail::uint32 highp_uint32_t
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:858
+
highp_i16vec3 i16vec3
Default precision 16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:481
+
highp_f32mat4x4 fmat4x4
Default single-precision floating-point 4x4 matrix.
Definition: fwd.hpp:2404
+
detail::int32 highp_int32_t
32 bit signed integer type.
Definition: fwd.hpp:249
+
detail::uint16 uint16_t
16 bit unsigned integer type.
Definition: fwd.hpp:910
+
highp_f32vec3 f32vec3
Default single-precision floating-point vector of 3 components.
Definition: fwd.hpp:2434
+
highp_f64mat2x3 f64mat2x3
Default double-precision floating-point 2x3 matrix.
Definition: fwd.hpp:2552
+
highp_f64mat4x4 f64mat4x4
Default double-precision floating-point 4x4 matrix.
Definition: fwd.hpp:2580
+
detail::uint32 highp_uint32
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:842
+
detail::uint16 highp_u16
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:870
+
mat4x4 mat4
4 columns of 4 components matrix of floating-point numbers.
Definition: type_mat.hpp:442
+
highp_f32mat2x3 f32mat2x3
Default single-precision floating-point 2x3 matrix.
Definition: fwd.hpp:2446
+
detail::uint8 mediump_uint8_t
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:800
+
detail::int32 i32
32 bit signed integer type.
Definition: fwd.hpp:322
+
highp_f32vec4 f32vec4
Default single-precision floating-point vector of 4 components.
Definition: fwd.hpp:2438
+
highp_i32vec3 i32vec3
Default precision 32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:560
+
highp_u16vec2 u16vec2
Default precision 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:1086
+
detail::uint8 lowp_uint8
Low precision 8 bit unsigned integer type.
Definition: fwd.hpp:732
+
highp_i64vec1 i64vec1
Default precision 64 bit signed integer scalar type.
Definition: fwd.hpp:711
+
detail::int16 i16
16 bit signed integer type.
Definition: fwd.hpp:318
+
highp_f32mat3x4 f32mat3x4
Default single-precision floating-point 3x4 matrix.
Definition: fwd.hpp:2462
+
detail::uint64 uint64_t
64 bit unsigned integer type.
Definition: fwd.hpp:918
+
detail::int64 highp_int64
High precision 64 bit signed integer type.
Definition: fwd.hpp:237
+
highp_u32vec1 u32vec1
Default precision 32 bit unsigned integer scalar type.
Definition: fwd.hpp:1161
+
detail::int16 int16_t
16 bit signed integer type.
Definition: fwd.hpp:301
+
highp_f32mat4x3 f32mat4x3
Default single-precision floating-point 4x3 matrix.
Definition: fwd.hpp:2470
+
detail::int64 mediump_int64
Medium precision 64 bit signed integer type.
Definition: fwd.hpp:189
+
detail::int32 lowp_int32_t
Low precision 32 bit signed integer type.
Definition: fwd.hpp:153
+
highp_f64vec2 f64vec2
Default double-precision floating-point vector of 2 components.
Definition: fwd.hpp:2536
+
detail::uint64 highp_uint64
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:846
+
detail::int64 i64
64 bit signed integer type.
Definition: fwd.hpp:326
+
highp_u64vec3 u64vec3
Default precision 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:1328
+
detail::int64 lowp_i64
Low precision 64 bit signed integer type.
Definition: fwd.hpp:173
+
+ + + + diff --git a/external/glm/doc/api/a00116.html b/external/glm/doc/api/a00116.html new file mode 100644 index 0000000..a2b0345 --- /dev/null +++ b/external/glm/doc/api/a00116.html @@ -0,0 +1,89 @@ + + + + + + +0.9.7: type_float.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
type_float.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + +

+Typedefs

typedef float float32
 
typedef double float64
 
typedef highp_float_t highp_float
 
typedef lowp_float_t lowp_float
 
typedef mediump_float_t mediump_float
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2008-08-22 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file type_float.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00116_source.html b/external/glm/doc/api/a00116_source.html new file mode 100644 index 0000000..1391f9f --- /dev/null +++ b/external/glm/doc/api/a00116_source.html @@ -0,0 +1,113 @@ + + + + + + +0.9.7: type_float.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_float.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "setup.hpp"
+
36 
+
37 namespace glm{
+
38 namespace detail
+
39 {
+
40  typedef float float32;
+
41  typedef double float64;
+
42 }//namespace detail
+
43 
+
44  typedef float lowp_float_t;
+
45  typedef float mediump_float_t;
+
46  typedef double highp_float_t;
+
47 
+
50 
+
56  typedef lowp_float_t lowp_float;
+
57 
+
63  typedef mediump_float_t mediump_float;
+
64 
+
70  typedef highp_float_t highp_float;
+
71 
+
72 #if(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
+
73  typedef mediump_float float_t;
+
74 #elif(defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
+
75  typedef highp_float float_t;
+
76 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
+
77  typedef mediump_float float_t;
+
78 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && defined(GLM_PRECISION_LOWP_FLOAT))
+
79  typedef lowp_float float_t;
+
80 #else
+
81 # error "GLM error: multiple default precision requested for floating-point types"
+
82 #endif
+
83 
+
84  typedef float float32;
+
85  typedef double float64;
+
86 
+
88 // check type sizes
+
89 #ifndef GLM_STATIC_ASSERT_NULL
+
90  GLM_STATIC_ASSERT(sizeof(glm::float32) == 4, "float32 size isn't 4 bytes on this platform");
+
91  GLM_STATIC_ASSERT(sizeof(glm::float64) == 8, "float64 size isn't 8 bytes on this platform");
+
92 #endif//GLM_STATIC_ASSERT_NULL
+
93 
+
95 
+
96 }//namespace glm
+
lowp_float_t lowp_float
Low precision floating-point numbers.
Definition: type_float.hpp:56
+
float float32
Default 32 bit single-precision floating-point scalar.
Definition: type_float.hpp:84
+
Definition: _noise.hpp:40
+
mediump_float_t mediump_float
Medium precision floating-point numbers.
Definition: type_float.hpp:63
+
OpenGL Mathematics (glm.g-truc.net)
+
double float64
Default 64 bit double-precision floating-point scalar.
Definition: type_float.hpp:85
+
highp_float_t highp_float
High precision floating-point numbers.
Definition: type_float.hpp:70
+
+ + + + diff --git a/external/glm/doc/api/a00117.html b/external/glm/doc/api/a00117.html new file mode 100644 index 0000000..71e0850 --- /dev/null +++ b/external/glm/doc/api/a00117.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: type_gentype.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_gentype.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2008-10-05 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file type_gentype.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00117_source.html b/external/glm/doc/api/a00117_source.html new file mode 100644 index 0000000..ce00b87 --- /dev/null +++ b/external/glm/doc/api/a00117_source.html @@ -0,0 +1,248 @@ + + + + + + +0.9.7: type_gentype.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_gentype.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 namespace glm
+
36 {
+
37  enum profile
+
38  {
+
39  nice,
+
40  fast,
+
41  simd
+
42  };
+
43 
+
44  typedef std::size_t sizeType;
+
45 
+
46 namespace detail
+
47 {
+
48  template
+
49  <
+
50  typename VALTYPE,
+
51  template <typename> class TYPE
+
52  >
+
53  struct genType
+
54  {
+
55  public:
+
56  enum ctor{null};
+
57 
+
58  typedef VALTYPE value_type;
+
59  typedef VALTYPE & value_reference;
+
60  typedef VALTYPE * value_pointer;
+
61  typedef VALTYPE const * value_const_pointer;
+
62  typedef TYPE<bool> bool_type;
+
63 
+
64  typedef sizeType size_type;
+
65  static bool is_vector();
+
66  static bool is_matrix();
+
67 
+
68  typedef TYPE<VALTYPE> type;
+
69  typedef TYPE<VALTYPE> * pointer;
+
70  typedef TYPE<VALTYPE> const * const_pointer;
+
71  typedef TYPE<VALTYPE> const * const const_pointer_const;
+
72  typedef TYPE<VALTYPE> * const pointer_const;
+
73  typedef TYPE<VALTYPE> & reference;
+
74  typedef TYPE<VALTYPE> const & const_reference;
+
75  typedef TYPE<VALTYPE> const & param_type;
+
76 
+
78  // Address (Implementation details)
+
79 
+
80  value_const_pointer value_address() const{return value_pointer(this);}
+
81  value_pointer value_address(){return value_pointer(this);}
+
82 
+
83  //protected:
+
84  // enum kind
+
85  // {
+
86  // GEN_TYPE,
+
87  // VEC_TYPE,
+
88  // MAT_TYPE
+
89  // };
+
90 
+
91  // typedef typename TYPE::kind kind;
+
92  };
+
93 
+
94  template
+
95  <
+
96  typename VALTYPE,
+
97  template <typename> class TYPE
+
98  >
+
99  bool genType<VALTYPE, TYPE>::is_vector()
+
100  {
+
101  return true;
+
102  }
+
103 /*
+
104  template <typename valTypeT, unsigned int colT, unsigned int rowT, profile proT = nice>
+
105  class base
+
106  {
+
107  public:
+
109  // Traits
+
110 
+
111  typedef sizeType size_type;
+
112  typedef valTypeT value_type;
+
113 
+
114  typedef base<value_type, colT, rowT> class_type;
+
115 
+
116  typedef base<bool, colT, rowT> bool_type;
+
117  typedef base<value_type, rowT, 1> col_type;
+
118  typedef base<value_type, colT, 1> row_type;
+
119  typedef base<value_type, rowT, colT> transpose_type;
+
120 
+
121  static size_type col_size();
+
122  static size_type row_size();
+
123  static size_type value_size();
+
124  static bool is_scalar();
+
125  static bool is_vector();
+
126  static bool is_matrix();
+
127 
+
128  private:
+
129  // Data
+
130  col_type value[colT];
+
131 
+
132  public:
+
134  // Constructors
+
135  base();
+
136  base(class_type const & m);
+
137 
+
138  explicit base(T const & x);
+
139  explicit base(value_type const * const x);
+
140  explicit base(col_type const * const x);
+
141 
+
143  // Conversions
+
144  template <typename vU, uint cU, uint rU, profile pU>
+
145  explicit base(base<vU, cU, rU, pU> const & m);
+
146 
+
148  // Accesses
+
149  col_type& operator[](size_type i);
+
150  col_type const & operator[](size_type i) const;
+
151 
+
153  // Unary updatable operators
+
154  class_type& operator= (class_type const & x);
+
155  class_type& operator+= (T const & x);
+
156  class_type& operator+= (class_type const & x);
+
157  class_type& operator-= (T const & x);
+
158  class_type& operator-= (class_type const & x);
+
159  class_type& operator*= (T const & x);
+
160  class_type& operator*= (class_type const & x);
+
161  class_type& operator/= (T const & x);
+
162  class_type& operator/= (class_type const & x);
+
163  class_type& operator++ ();
+
164  class_type& operator-- ();
+
165  };
+
166 */
+
167 
+
168  //template <typename T>
+
169  //struct traits
+
170  //{
+
171  // static const bool is_signed = false;
+
172  // static const bool is_float = false;
+
173  // static const bool is_vector = false;
+
174  // static const bool is_matrix = false;
+
175  // static const bool is_genType = false;
+
176  // static const bool is_genIType = false;
+
177  // static const bool is_genUType = false;
+
178  //};
+
179 
+
180  //template <>
+
181  //struct traits<half>
+
182  //{
+
183  // static const bool is_float = true;
+
184  // static const bool is_genType = true;
+
185  //};
+
186 
+
187  //template <>
+
188  //struct traits<float>
+
189  //{
+
190  // static const bool is_float = true;
+
191  // static const bool is_genType = true;
+
192  //};
+
193 
+
194  //template <>
+
195  //struct traits<double>
+
196  //{
+
197  // static const bool is_float = true;
+
198  // static const bool is_genType = true;
+
199  //};
+
200 
+
201  //template <typename genType>
+
202  //struct desc
+
203  //{
+
204  // typedef genType type;
+
205  // typedef genType * pointer;
+
206  // typedef genType const* const_pointer;
+
207  // typedef genType const *const const_pointer_const;
+
208  // typedef genType *const pointer_const;
+
209  // typedef genType & reference;
+
210  // typedef genType const& const_reference;
+
211  // typedef genType const& param_type;
+
212 
+
213  // typedef typename genType::value_type value_type;
+
214  // typedef typename genType::size_type size_type;
+
215  // static const typename size_type value_size;
+
216  //};
+
217 
+
218  //template <typename genType>
+
219  //const typename desc<genType>::size_type desc<genType>::value_size = genType::value_size();
+
220 
+
221 }//namespace detail
+
222 }//namespace glm
+
223 
+
224 //#include "type_gentype.inl"
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00118.html b/external/glm/doc/api/a00118.html new file mode 100644 index 0000000..b8d5885 --- /dev/null +++ b/external/glm/doc/api/a00118.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: type_half.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_half.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2008-08-17 / 2011-09-20
+
Author
Christophe Riccio
+ +

Definition in file type_half.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00118_source.html b/external/glm/doc/api/a00118_source.html new file mode 100644 index 0000000..6d9f673 --- /dev/null +++ b/external/glm/doc/api/a00118_source.html @@ -0,0 +1,79 @@ + + + + + + +0.9.7: type_half.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_half.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "setup.hpp"
+
36 
+
37 namespace glm{
+
38 namespace detail
+
39 {
+
40  typedef short hdata;
+
41 
+
42  GLM_FUNC_DECL float toFloat32(hdata value);
+
43  GLM_FUNC_DECL hdata toFloat16(float const & value);
+
44 
+
45 }//namespace detail
+
46 }//namespace glm
+
47 
+
48 #include "type_half.inl"
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00119.html b/external/glm/doc/api/a00119.html new file mode 100644 index 0000000..16c37c7 --- /dev/null +++ b/external/glm/doc/api/a00119.html @@ -0,0 +1,109 @@ + + + + + + +0.9.7: type_int.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
type_int.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef detail::highp_int_t highp_int
 
typedef detail::highp_uint_t highp_uint
 
typedef detail::int16 int16
 
typedef detail::int32 int32
 
typedef detail::int64 int64
 
typedef detail::int8 int8
 
typedef detail::lowp_int_t lowp_int
 
typedef detail::lowp_uint_t lowp_uint
 
typedef detail::mediump_int_t mediump_int
 
typedef detail::mediump_uint_t mediump_uint
 
typedef unsigned int uint
 
typedef detail::uint16 uint16
 
typedef detail::uint32 uint32
 
typedef detail::uint64 uint64
 
typedef detail::uint8 uint8
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2008-08-22 / 2013-03-30
+
Author
Christophe Riccio
+ +

Definition in file type_int.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00119_source.html b/external/glm/doc/api/a00119_source.html new file mode 100644 index 0000000..50d2b43 --- /dev/null +++ b/external/glm/doc/api/a00119_source.html @@ -0,0 +1,343 @@ + + + + + + +0.9.7: type_int.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_int.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "setup.hpp"
+
36 #if GLM_HAS_MAKE_SIGNED
+
37 # include <type_traits>
+
38 #endif
+
39 
+
40 #if GLM_HAS_EXTENDED_INTEGER_TYPE
+
41 # include <cstdint>
+
42 #endif
+
43 
+
44 namespace glm{
+
45 namespace detail
+
46 {
+
47 # if GLM_HAS_EXTENDED_INTEGER_TYPE
+
48  typedef std::int8_t int8;
+
49  typedef std::int16_t int16;
+
50  typedef std::int32_t int32;
+
51  typedef std::int64_t int64;
+
52 
+
53  typedef std::uint8_t uint8;
+
54  typedef std::uint16_t uint16;
+
55  typedef std::uint32_t uint32;
+
56  typedef std::uint64_t uint64;
+
57 # else
+
58 # if(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) // C99 detected, 64 bit types available
+
59  typedef int64_t sint64;
+
60  typedef uint64_t uint64;
+
61 # elif GLM_COMPILER & GLM_COMPILER_VC
+
62  typedef signed __int64 sint64;
+
63  typedef unsigned __int64 uint64;
+
64 # elif GLM_COMPILER & GLM_COMPILER_GCC
+
65  __extension__ typedef signed long long sint64;
+
66  __extension__ typedef unsigned long long uint64;
+
67 # else//unknown compiler
+
68  typedef signed long long sint64;
+
69  typedef unsigned long long uint64;
+
70 # endif//GLM_COMPILER
+
71 
+
72  typedef signed char int8;
+
73  typedef signed short int16;
+
74  typedef signed int int32;
+
75  typedef sint64 int64;
+
76 
+
77  typedef unsigned char uint8;
+
78  typedef unsigned short uint16;
+
79  typedef unsigned int uint32;
+
80  typedef uint64 uint64;
+
81 #endif//
+
82 
+
83  typedef signed int lowp_int_t;
+
84  typedef signed int mediump_int_t;
+
85  typedef signed int highp_int_t;
+
86 
+
87  typedef unsigned int lowp_uint_t;
+
88  typedef unsigned int mediump_uint_t;
+
89  typedef unsigned int highp_uint_t;
+
90 
+
91 # if GLM_HAS_MAKE_SIGNED
+
92  using std::make_signed;
+
93  using std::make_unsigned;
+
94 
+
95 # else//GLM_HAS_MAKE_SIGNED
+
96  template <typename genType>
+
97  struct make_signed
+
98  {};
+
99 
+
100  template <>
+
101  struct make_signed<char>
+
102  {
+
103  typedef char type;
+
104  };
+
105 
+
106  template <>
+
107  struct make_signed<short>
+
108  {
+
109  typedef short type;
+
110  };
+
111 
+
112  template <>
+
113  struct make_signed<int>
+
114  {
+
115  typedef int type;
+
116  };
+
117 
+
118  template <>
+
119  struct make_signed<long>
+
120  {
+
121  typedef long type;
+
122  };
+
123 
+
124  template <>
+
125  struct make_signed<long long>
+
126  {
+
127  typedef long long type;
+
128  };
+
129 
+
130  template <>
+
131  struct make_signed<unsigned char>
+
132  {
+
133  typedef char type;
+
134  };
+
135 
+
136  template <>
+
137  struct make_signed<unsigned short>
+
138  {
+
139  typedef short type;
+
140  };
+
141 
+
142  template <>
+
143  struct make_signed<unsigned int>
+
144  {
+
145  typedef int type;
+
146  };
+
147 
+
148  template <>
+
149  struct make_signed<unsigned long>
+
150  {
+
151  typedef long type;
+
152  };
+
153 
+
154  template <>
+
155  struct make_signed<unsigned long long>
+
156  {
+
157  typedef long long type;
+
158  };
+
159 
+
160  template <typename genType>
+
161  struct make_unsigned
+
162  {};
+
163 
+
164  template <>
+
165  struct make_unsigned<char>
+
166  {
+
167  typedef unsigned char type;
+
168  };
+
169 
+
170  template <>
+
171  struct make_unsigned<short>
+
172  {
+
173  typedef unsigned short type;
+
174  };
+
175 
+
176  template <>
+
177  struct make_unsigned<int>
+
178  {
+
179  typedef unsigned int type;
+
180  };
+
181 
+
182  template <>
+
183  struct make_unsigned<long>
+
184  {
+
185  typedef unsigned long type;
+
186  };
+
187 
+
188  template <>
+
189  struct make_unsigned<long long>
+
190  {
+
191  typedef unsigned long long type;
+
192  };
+
193 
+
194  template <>
+
195  struct make_unsigned<unsigned char>
+
196  {
+
197  typedef unsigned char type;
+
198  };
+
199 
+
200  template <>
+
201  struct make_unsigned<unsigned short>
+
202  {
+
203  typedef unsigned short type;
+
204  };
+
205 
+
206  template <>
+
207  struct make_unsigned<unsigned int>
+
208  {
+
209  typedef unsigned int type;
+
210  };
+
211 
+
212  template <>
+
213  struct make_unsigned<unsigned long>
+
214  {
+
215  typedef unsigned long type;
+
216  };
+
217 
+
218  template <>
+
219  struct make_unsigned<unsigned long long>
+
220  {
+
221  typedef unsigned long long type;
+
222  };
+
223 # endif//GLM_HAS_MAKE_SIGNED
+
224 }//namespace detail
+
225 
+
226  typedef detail::int8 int8;
+
227  typedef detail::int16 int16;
+
228  typedef detail::int32 int32;
+
229  typedef detail::int64 int64;
+
230 
+
231  typedef detail::uint8 uint8;
+
232  typedef detail::uint16 uint16;
+
233  typedef detail::uint32 uint32;
+
234  typedef detail::uint64 uint64;
+
235 
+
238 
+
244  typedef detail::lowp_int_t lowp_int;
+
245 
+
251  typedef detail::mediump_int_t mediump_int;
+
252 
+
258  typedef detail::highp_int_t highp_int;
+
259 
+
265  typedef detail::lowp_uint_t lowp_uint;
+
266 
+
272  typedef detail::mediump_uint_t mediump_uint;
+
273 
+
279  typedef detail::highp_uint_t highp_uint;
+
280 
+
281 #if(!defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT))
+
282  typedef mediump_int int_t;
+
283 #elif(defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT))
+
284  typedef highp_int int_t;
+
285 #elif(!defined(GLM_PRECISION_HIGHP_INT) && defined(GLM_PRECISION_MEDIUMP_INT) && !defined(GLM_PRECISION_LOWP_INT))
+
286  typedef mediump_int int_t;
+
287 #elif(!defined(GLM_PRECISION_HIGHP_INT) && !defined(GLM_PRECISION_MEDIUMP_INT) && defined(GLM_PRECISION_LOWP_INT))
+
288  typedef lowp_int int_t;
+
289 #else
+
290 # error "GLM error: multiple default precision requested for signed interger types"
+
291 #endif
+
292 
+
293 #if(!defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT))
+
294  typedef mediump_uint uint_t;
+
295 #elif(defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT))
+
296  typedef highp_uint uint_t;
+
297 #elif(!defined(GLM_PRECISION_HIGHP_UINT) && defined(GLM_PRECISION_MEDIUMP_UINT) && !defined(GLM_PRECISION_LOWP_UINT))
+
298  typedef mediump_uint uint_t;
+
299 #elif(!defined(GLM_PRECISION_HIGHP_UINT) && !defined(GLM_PRECISION_MEDIUMP_UINT) && defined(GLM_PRECISION_LOWP_UINT))
+
300  typedef lowp_uint uint_t;
+
301 #else
+
302 # error "GLM error: multiple default precision requested for unsigned interger types"
+
303 #endif
+
304 
+
308  typedef unsigned int uint;
+
309 
+
311 
+
313 // check type sizes
+
314 #ifndef GLM_STATIC_ASSERT_NULL
+
315  GLM_STATIC_ASSERT(sizeof(glm::int8) == 1, "int8 size isn't 1 byte on this platform");
+
316  GLM_STATIC_ASSERT(sizeof(glm::int16) == 2, "int16 size isn't 2 bytes on this platform");
+
317  GLM_STATIC_ASSERT(sizeof(glm::int32) == 4, "int32 size isn't 4 bytes on this platform");
+
318  GLM_STATIC_ASSERT(sizeof(glm::int64) == 8, "int64 size isn't 8 bytes on this platform");
+
319 
+
320  GLM_STATIC_ASSERT(sizeof(glm::uint8) == 1, "uint8 size isn't 1 byte on this platform");
+
321  GLM_STATIC_ASSERT(sizeof(glm::uint16) == 2, "uint16 size isn't 2 bytes on this platform");
+
322  GLM_STATIC_ASSERT(sizeof(glm::uint32) == 4, "uint32 size isn't 4 bytes on this platform");
+
323  GLM_STATIC_ASSERT(sizeof(glm::uint64) == 8, "uint64 size isn't 8 bytes on this platform");
+
324 #endif//GLM_STATIC_ASSERT_NULL
+
325 
+
326 }//namespace glm
+
detail::int8 int8_t
8 bit signed integer type.
Definition: fwd.hpp:297
+
detail::int32 int32_t
32 bit signed integer type.
Definition: fwd.hpp:305
+
detail::int32 int32
32 bit signed integer type.
Definition: type_int.hpp:228
+
detail::uint8 uint8
8 bit unsigned integer type.
Definition: type_int.hpp:231
+
detail::int8 int8
8 bit signed integer type.
Definition: type_int.hpp:226
+
detail::int16 int16
16 bit signed integer type.
Definition: type_int.hpp:227
+
detail::uint16 uint16
16 bit unsigned integer type.
Definition: type_int.hpp:232
+
unsigned int uint
Unsigned integer type.
Definition: type_int.hpp:308
+
detail::highp_uint_t highp_uint
High precision unsigned integer.
Definition: type_int.hpp:279
+
detail::uint32 uint32_t
32 bit unsigned integer type.
Definition: fwd.hpp:914
+
detail::highp_int_t highp_int
High precision signed integer.
Definition: type_int.hpp:258
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
detail::mediump_int_t mediump_int
Medium precision signed integer.
Definition: type_int.hpp:251
+
detail::lowp_uint_t lowp_uint
Low precision unsigned integer.
Definition: type_int.hpp:265
+
detail::lowp_int_t lowp_int
Low precision signed integer.
Definition: type_int.hpp:244
+
detail::mediump_uint_t mediump_uint
Medium precision unsigned integer.
Definition: type_int.hpp:272
+
detail::uint32 uint32
32 bit unsigned integer type.
Definition: type_int.hpp:233
+
detail::uint8 uint8_t
8 bit unsigned integer type.
Definition: fwd.hpp:906
+
detail::int64 int64_t
64 bit signed integer type.
Definition: fwd.hpp:309
+
detail::uint64 uint64
64 bit unsigned integer type.
Definition: type_int.hpp:234
+
detail::int64 int64
64 bit signed integer type.
Definition: type_int.hpp:229
+
detail::uint16 uint16_t
16 bit unsigned integer type.
Definition: fwd.hpp:910
+
detail::uint64 uint64_t
64 bit unsigned integer type.
Definition: fwd.hpp:918
+
detail::int16 int16_t
16 bit signed integer type.
Definition: fwd.hpp:301
+
+ + + + diff --git a/external/glm/doc/api/a00120.html b/external/glm/doc/api/a00120.html new file mode 100644 index 0000000..667f81e --- /dev/null +++ b/external/glm/doc/api/a00120.html @@ -0,0 +1,271 @@ + + + + + + +0.9.7: type_mat.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
type_mat.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef highp_dmat2x2 dmat2
 
typedef highp_dmat2x2 dmat2x2
 
typedef highp_dmat2x3 dmat2x3
 
typedef highp_dmat2x4 dmat2x4
 
typedef highp_dmat3x3 dmat3
 
typedef highp_dmat3x2 dmat3x2
 
typedef highp_dmat3x3 dmat3x3
 
typedef highp_dmat3x4 dmat3x4
 
typedef highp_dmat4x4 dmat4
 
typedef highp_dmat4x2 dmat4x2
 
typedef highp_dmat4x3 dmat4x3
 
typedef highp_dmat4x4 dmat4x4
 
typedef tmat2x2< double, highp > highp_dmat2
 
typedef tmat2x2< double, highp > highp_dmat2x2
 
typedef tmat2x3< double, highp > highp_dmat2x3
 
typedef tmat2x4< double, highp > highp_dmat2x4
 
typedef tmat3x3< double, highp > highp_dmat3
 
typedef tmat3x2< double, highp > highp_dmat3x2
 
typedef tmat3x3< double, highp > highp_dmat3x3
 
typedef tmat3x4< double, highp > highp_dmat3x4
 
typedef tmat4x4< double, highp > highp_dmat4
 
typedef tmat4x2< double, highp > highp_dmat4x2
 
typedef tmat4x3< double, highp > highp_dmat4x3
 
typedef tmat4x4< double, highp > highp_dmat4x4
 
typedef tmat2x2< float, highp > highp_mat2
 
typedef tmat2x2< float, highp > highp_mat2x2
 
typedef tmat2x3< float, highp > highp_mat2x3
 
typedef tmat2x4< float, highp > highp_mat2x4
 
typedef tmat3x3< float, highp > highp_mat3
 
typedef tmat3x2< float, highp > highp_mat3x2
 
typedef tmat3x3< float, highp > highp_mat3x3
 
typedef tmat3x4< float, highp > highp_mat3x4
 
typedef tmat4x4< float, highp > highp_mat4
 
typedef tmat4x2< float, highp > highp_mat4x2
 
typedef tmat4x3< float, highp > highp_mat4x3
 
typedef tmat4x4< float, highp > highp_mat4x4
 
typedef tmat2x2< double, lowp > lowp_dmat2
 
typedef tmat2x2< double, lowp > lowp_dmat2x2
 
typedef tmat2x3< double, lowp > lowp_dmat2x3
 
typedef tmat2x4< double, lowp > lowp_dmat2x4
 
typedef tmat3x3< float, lowp > lowp_dmat3
 
typedef tmat3x2< double, lowp > lowp_dmat3x2
 
typedef tmat3x3< double, lowp > lowp_dmat3x3
 
typedef tmat3x4< double, lowp > lowp_dmat3x4
 
typedef tmat4x4< double, lowp > lowp_dmat4
 
typedef tmat4x2< double, lowp > lowp_dmat4x2
 
typedef tmat4x3< double, lowp > lowp_dmat4x3
 
typedef tmat4x4< double, lowp > lowp_dmat4x4
 
typedef tmat2x2< float, lowp > lowp_mat2
 
typedef tmat2x2< float, lowp > lowp_mat2x2
 
typedef tmat2x3< float, lowp > lowp_mat2x3
 
typedef tmat2x4< float, lowp > lowp_mat2x4
 
typedef tmat3x3< float, lowp > lowp_mat3
 
typedef tmat3x2< float, lowp > lowp_mat3x2
 
typedef tmat3x3< float, lowp > lowp_mat3x3
 
typedef tmat3x4< float, lowp > lowp_mat3x4
 
typedef tmat4x4< float, lowp > lowp_mat4
 
typedef tmat4x2< float, lowp > lowp_mat4x2
 
typedef tmat4x3< float, lowp > lowp_mat4x3
 
typedef tmat4x4< float, lowp > lowp_mat4x4
 
typedef mat2x2 mat2
 
typedef highp_mat2x2 mat2x2
 
typedef highp_mat2x3 mat2x3
 
typedef highp_mat2x4 mat2x4
 
typedef mat3x3 mat3
 
typedef highp_mat3x2 mat3x2
 
typedef highp_mat3x3 mat3x3
 
typedef highp_mat3x4 mat3x4
 
typedef mat4x4 mat4
 
typedef highp_mat4x2 mat4x2
 
typedef highp_mat4x3 mat4x3
 
typedef highp_mat4x4 mat4x4
 
typedef tmat2x2< double, mediump > mediump_dmat2
 
typedef tmat2x2< double, mediump > mediump_dmat2x2
 
typedef tmat2x3< double, mediump > mediump_dmat2x3
 
typedef tmat2x4< double, mediump > mediump_dmat2x4
 
typedef tmat3x3< double, mediump > mediump_dmat3
 
typedef tmat3x2< double, mediump > mediump_dmat3x2
 
typedef tmat3x3< double, mediump > mediump_dmat3x3
 
typedef tmat3x4< double, mediump > mediump_dmat3x4
 
typedef tmat4x4< double, mediump > mediump_dmat4
 
typedef tmat4x2< double, mediump > mediump_dmat4x2
 
typedef tmat4x3< double, mediump > mediump_dmat4x3
 
typedef tmat4x4< double, mediump > mediump_dmat4x4
 
typedef tmat2x2< float, mediump > mediump_mat2
 
typedef tmat2x2< float, mediump > mediump_mat2x2
 
typedef tmat2x3< float, mediump > mediump_mat2x3
 
typedef tmat2x4< float, mediump > mediump_mat2x4
 
typedef tmat3x3< float, mediump > mediump_mat3
 
typedef tmat3x2< float, mediump > mediump_mat3x2
 
typedef tmat3x3< float, mediump > mediump_mat3x3
 
typedef tmat3x4< float, mediump > mediump_mat3x4
 
typedef tmat4x4< float, mediump > mediump_mat4
 
typedef tmat4x2< float, mediump > mediump_mat4x2
 
typedef tmat4x3< float, mediump > mediump_mat4x3
 
typedef tmat4x4< float, mediump > mediump_mat4x4
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2010-01-26 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file type_mat.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00120_source.html b/external/glm/doc/api/a00120_source.html new file mode 100644 index 0000000..995f267 --- /dev/null +++ b/external/glm/doc/api/a00120_source.html @@ -0,0 +1,465 @@ + + + + + + +0.9.7: type_mat.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "precision.hpp"
+
36 
+
37 namespace glm{
+
38 namespace detail
+
39 {
+
40  template <typename T, precision P, template <class, precision> class colType, template <class, precision> class rowType>
+
41  struct outerProduct_trait{};
+
42 }//namespace detail
+
43 
+
44  template <typename T, precision P> struct tvec2;
+
45  template <typename T, precision P> struct tvec3;
+
46  template <typename T, precision P> struct tvec4;
+
47  template <typename T, precision P> struct tmat2x2;
+
48  template <typename T, precision P> struct tmat2x3;
+
49  template <typename T, precision P> struct tmat2x4;
+
50  template <typename T, precision P> struct tmat3x2;
+
51  template <typename T, precision P> struct tmat3x3;
+
52  template <typename T, precision P> struct tmat3x4;
+
53  template <typename T, precision P> struct tmat4x2;
+
54  template <typename T, precision P> struct tmat4x3;
+
55  template <typename T, precision P> struct tmat4x4;
+
56 
+
59 
+
65  typedef tmat2x2<float, lowp> lowp_mat2;
+
66 
+
72  typedef tmat2x2<float, mediump> mediump_mat2;
+
73 
+
79  typedef tmat2x2<float, highp> highp_mat2;
+
80 
+
86  typedef tmat2x2<float, lowp> lowp_mat2x2;
+
87 
+
93  typedef tmat2x2<float, mediump> mediump_mat2x2;
+
94 
+
100  typedef tmat2x2<float, highp> highp_mat2x2;
+
101 
+
103 
+
106 
+
112  typedef tmat2x3<float, lowp> lowp_mat2x3;
+
113 
+
119  typedef tmat2x3<float, mediump> mediump_mat2x3;
+
120 
+
126  typedef tmat2x3<float, highp> highp_mat2x3;
+
127 
+
129 
+
132 
+
138  typedef tmat2x4<float, lowp> lowp_mat2x4;
+
139 
+
145  typedef tmat2x4<float, mediump> mediump_mat2x4;
+
146 
+
152  typedef tmat2x4<float, highp> highp_mat2x4;
+
153 
+
155 
+
158 
+
164  typedef tmat3x2<float, lowp> lowp_mat3x2;
+
165 
+
171  typedef tmat3x2<float, mediump> mediump_mat3x2;
+
172 
+
178  typedef tmat3x2<float, highp> highp_mat3x2;
+
179 
+
181 
+
184 
+
190  typedef tmat3x3<float, lowp> lowp_mat3;
+
191 
+
197  typedef tmat3x3<float, mediump> mediump_mat3;
+
198 
+
204  typedef tmat3x3<float, highp> highp_mat3;
+
205 
+
211  typedef tmat3x3<float, lowp> lowp_mat3x3;
+
212 
+
218  typedef tmat3x3<float, mediump> mediump_mat3x3;
+
219 
+
225  typedef tmat3x3<float, highp> highp_mat3x3;
+
226 
+
228 
+
231 
+
237  typedef tmat3x4<float, lowp> lowp_mat3x4;
+
238 
+
244  typedef tmat3x4<float, mediump> mediump_mat3x4;
+
245 
+
251  typedef tmat3x4<float, highp> highp_mat3x4;
+
252 
+
254 
+
257 
+
263  typedef tmat4x2<float, lowp> lowp_mat4x2;
+
264 
+
270  typedef tmat4x2<float, mediump> mediump_mat4x2;
+
271 
+
277  typedef tmat4x2<float, highp> highp_mat4x2;
+
278 
+
280 
+
283 
+
289  typedef tmat4x3<float, lowp> lowp_mat4x3;
+
290 
+
296  typedef tmat4x3<float, mediump> mediump_mat4x3;
+
297 
+
303  typedef tmat4x3<float, highp> highp_mat4x3;
+
304 
+
306 
+
307 
+
310 
+
316  typedef tmat4x4<float, lowp> lowp_mat4;
+
317 
+
323  typedef tmat4x4<float, mediump> mediump_mat4;
+
324 
+
330  typedef tmat4x4<float, highp> highp_mat4;
+
331 
+
337  typedef tmat4x4<float, lowp> lowp_mat4x4;
+
338 
+
344  typedef tmat4x4<float, mediump> mediump_mat4x4;
+
345 
+
351  typedef tmat4x4<float, highp> highp_mat4x4;
+
352 
+
354 
+
357 
+
359  // Float definition
+
360 
+
361 #if(defined(GLM_PRECISION_LOWP_FLOAT))
+
362  typedef lowp_mat2x2 mat2x2;
+
363  typedef lowp_mat2x3 mat2x3;
+
364  typedef lowp_mat2x4 mat2x4;
+
365  typedef lowp_mat3x2 mat3x2;
+
366  typedef lowp_mat3x3 mat3x3;
+
367  typedef lowp_mat3x4 mat3x4;
+
368  typedef lowp_mat4x2 mat4x2;
+
369  typedef lowp_mat4x3 mat4x3;
+
370  typedef lowp_mat4x4 mat4x4;
+
371 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
+
372  typedef mediump_mat2x2 mat2x2;
+
373  typedef mediump_mat2x3 mat2x3;
+
374  typedef mediump_mat2x4 mat2x4;
+
375  typedef mediump_mat3x2 mat3x2;
+
376  typedef mediump_mat3x3 mat3x3;
+
377  typedef mediump_mat3x4 mat3x4;
+
378  typedef mediump_mat4x2 mat4x2;
+
379  typedef mediump_mat4x3 mat4x3;
+
380  typedef mediump_mat4x4 mat4x4;
+
381 #else
+
382  typedef highp_mat2x2 mat2x2;
+
386 
+
390  typedef highp_mat2x3 mat2x3;
+
391 
+
395  typedef highp_mat2x4 mat2x4;
+
396 
+
400  typedef highp_mat3x2 mat3x2;
+
401 
+
405  typedef highp_mat3x3 mat3x3;
+
406 
+
410  typedef highp_mat3x4 mat3x4;
+
411 
+
415  typedef highp_mat4x2 mat4x2;
+
416 
+
420  typedef highp_mat4x3 mat4x3;
+
421 
+
425  typedef highp_mat4x4 mat4x4;
+
426 
+
427 #endif//GLM_PRECISION
+
428 
+
432  typedef mat2x2 mat2;
+
433 
+
437  typedef mat3x3 mat3;
+
438 
+
442  typedef mat4x4 mat4;
+
443 
+
445  // Double definition
+
446 
+
449 
+
454  typedef tmat2x2<double, lowp> lowp_dmat2;
+
455 
+
460  typedef tmat2x2<double, mediump> mediump_dmat2;
+
461 
+
466  typedef tmat2x2<double, highp> highp_dmat2;
+
467 
+
472  typedef tmat2x2<double, lowp> lowp_dmat2x2;
+
473 
+
478  typedef tmat2x2<double, mediump> mediump_dmat2x2;
+
479 
+
484  typedef tmat2x2<double, highp> highp_dmat2x2;
+
485 
+
487 
+
490 
+
495  typedef tmat2x3<double, lowp> lowp_dmat2x3;
+
496 
+
501  typedef tmat2x3<double, mediump> mediump_dmat2x3;
+
502 
+
507  typedef tmat2x3<double, highp> highp_dmat2x3;
+
508 
+
510 
+
513 
+
518  typedef tmat2x4<double, lowp> lowp_dmat2x4;
+
519 
+
524  typedef tmat2x4<double, mediump> mediump_dmat2x4;
+
525 
+
530  typedef tmat2x4<double, highp> highp_dmat2x4;
+
531 
+
533 
+
536 
+
541  typedef tmat3x2<double, lowp> lowp_dmat3x2;
+
542 
+
547  typedef tmat3x2<double, mediump> mediump_dmat3x2;
+
548 
+
553  typedef tmat3x2<double, highp> highp_dmat3x2;
+
554 
+
556 
+
559 
+
564  typedef tmat3x3<float, lowp> lowp_dmat3;
+
565 
+
570  typedef tmat3x3<double, mediump> mediump_dmat3;
+
571 
+
576  typedef tmat3x3<double, highp> highp_dmat3;
+
577 
+
582  typedef tmat3x3<double, lowp> lowp_dmat3x3;
+
583 
+
588  typedef tmat3x3<double, mediump> mediump_dmat3x3;
+
589 
+
594  typedef tmat3x3<double, highp> highp_dmat3x3;
+
595 
+
597 
+
600 
+
605  typedef tmat3x4<double, lowp> lowp_dmat3x4;
+
606 
+
611  typedef tmat3x4<double, mediump> mediump_dmat3x4;
+
612 
+
617  typedef tmat3x4<double, highp> highp_dmat3x4;
+
618 
+
620 
+
623 
+
628  typedef tmat4x2<double, lowp> lowp_dmat4x2;
+
629 
+
634  typedef tmat4x2<double, mediump> mediump_dmat4x2;
+
635 
+
640  typedef tmat4x2<double, highp> highp_dmat4x2;
+
641 
+
643 
+
646 
+
651  typedef tmat4x3<double, lowp> lowp_dmat4x3;
+
652 
+
657  typedef tmat4x3<double, mediump> mediump_dmat4x3;
+
658 
+
663  typedef tmat4x3<double, highp> highp_dmat4x3;
+
664 
+
666 
+
669 
+
674  typedef tmat4x4<double, lowp> lowp_dmat4;
+
675 
+
680  typedef tmat4x4<double, mediump> mediump_dmat4;
+
681 
+
686  typedef tmat4x4<double, highp> highp_dmat4;
+
687 
+
692  typedef tmat4x4<double, lowp> lowp_dmat4x4;
+
693 
+
698  typedef tmat4x4<double, mediump> mediump_dmat4x4;
+
699 
+
704  typedef tmat4x4<double, highp> highp_dmat4x4;
+
705 
+
707 
+
708 #if(defined(GLM_PRECISION_LOWP_DOUBLE))
+
709  typedef lowp_dmat2x2 dmat2x2;
+
710  typedef lowp_dmat2x3 dmat2x3;
+
711  typedef lowp_dmat2x4 dmat2x4;
+
712  typedef lowp_dmat3x2 dmat3x2;
+
713  typedef lowp_dmat3x3 dmat3x3;
+
714  typedef lowp_dmat3x4 dmat3x4;
+
715  typedef lowp_dmat4x2 dmat4x2;
+
716  typedef lowp_dmat4x3 dmat4x3;
+
717  typedef lowp_dmat4x4 dmat4x4;
+
718 #elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE))
+
719  typedef mediump_dmat2x2 dmat2x2;
+
720  typedef mediump_dmat2x3 dmat2x3;
+
721  typedef mediump_dmat2x4 dmat2x4;
+
722  typedef mediump_dmat3x2 dmat3x2;
+
723  typedef mediump_dmat3x3 dmat3x3;
+
724  typedef mediump_dmat3x4 dmat3x4;
+
725  typedef mediump_dmat4x2 dmat4x2;
+
726  typedef mediump_dmat4x3 dmat4x3;
+
727  typedef mediump_dmat4x4 dmat4x4;
+
728 #else //defined(GLM_PRECISION_HIGHP_DOUBLE)
+
729 
+
733  typedef highp_dmat2x2 dmat2;
+
734 
+
738  typedef highp_dmat3x3 dmat3;
+
739 
+
743  typedef highp_dmat4x4 dmat4;
+
744 
+
748  typedef highp_dmat2x2 dmat2x2;
+
749 
+
753  typedef highp_dmat2x3 dmat2x3;
+
754 
+
758  typedef highp_dmat2x4 dmat2x4;
+
759 
+
763  typedef highp_dmat3x2 dmat3x2;
+
764 
+
768  typedef highp_dmat3x3 dmat3x3;
+
769 
+
773  typedef highp_dmat3x4 dmat3x4;
+
774 
+
778  typedef highp_dmat4x2 dmat4x2;
+
779 
+
783  typedef highp_dmat4x3 dmat4x3;
+
784 
+
788  typedef highp_dmat4x4 dmat4x4;
+
789 
+
790 #endif//GLM_PRECISION
+
791 
+
793 }//namespace glm
+
tmat4x3< float, highp > highp_mat4x3
4 columns of 3 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:303
+
tmat3x2< float, highp > highp_mat3x2
3 columns of 2 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:178
+
tmat4x4< double, lowp > lowp_dmat4x4
4 columns of 4 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:692
+
highp_dmat3x4 dmat3x4
3 * 4 matrix of double-precision floating-point numbers.
Definition: type_mat.hpp:773
+
tmat2x2< double, mediump > mediump_dmat2x2
2 columns of 2 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:478
+
tmat2x2< float, mediump > mediump_mat2
2 columns of 2 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:72
+
tmat3x2< float, lowp > lowp_mat3x2
3 columns of 2 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:164
+
highp_mat3x4 mat3x4
3 columns of 4 components matrix of floating-point numbers.
Definition: type_mat.hpp:410
+
tmat2x4< float, mediump > mediump_mat2x4
2 columns of 4 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:145
+
mat2x2 mat2
2 columns of 2 components matrix of floating-point numbers.
Definition: type_mat.hpp:432
+
tmat2x3< float, lowp > lowp_mat2x3
2 columns of 3 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:112
+
highp_mat2x4 mat2x4
2 columns of 4 components matrix of floating-point numbers.
Definition: type_mat.hpp:395
+
tmat3x3< double, mediump > mediump_dmat3
3 columns of 3 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:570
+
tmat4x2< double, highp > highp_dmat4x2
4 columns of 2 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:640
+
tmat4x2< float, lowp > lowp_mat4x2
4 columns of 2 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:263
+
tmat4x4< float, lowp > lowp_mat4x4
4 columns of 4 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:337
+
tmat4x3< double, mediump > mediump_dmat4x3
4 columns of 3 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:657
+
highp_mat2x3 mat2x3
2 columns of 3 components matrix of floating-point numbers.
Definition: type_mat.hpp:390
+
highp_mat3x2 mat3x2
3 columns of 2 components matrix of floating-point numbers.
Definition: type_mat.hpp:400
+
tmat2x2< double, highp > highp_dmat2
2 columns of 2 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:466
+
tmat4x3< float, lowp > lowp_mat4x3
4 columns of 3 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:289
+
tmat3x3< float, mediump > mediump_mat3
3 columns of 3 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:197
+
tmat3x3< float, highp > highp_mat3x3
3 columns of 3 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:225
+
tmat3x4< double, highp > highp_dmat3x4
3 columns of 4 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:617
+
highp_dmat2x2 dmat2
2 * 2 matrix of double-precision floating-point numbers.
Definition: type_mat.hpp:733
+
mat3x3 mat3
3 columns of 3 components matrix of floating-point numbers.
Definition: type_mat.hpp:437
+
highp_mat2x2 mat2x2
2 columns of 2 components matrix of floating-point numbers.
Definition: type_mat.hpp:385
+
tmat2x4< float, lowp > lowp_mat2x4
2 columns of 4 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:138
+
tmat3x3< double, lowp > lowp_dmat3x3
3 columns of 3 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:582
+
tmat2x3< float, mediump > mediump_mat2x3
2 columns of 3 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:119
+
tmat2x3< float, highp > highp_mat2x3
2 columns of 3 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:126
+
tmat3x4< double, mediump > mediump_dmat3x4
3 columns of 4 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:611
+
tmat3x3< float, lowp > lowp_mat3
3 columns of 3 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:190
+
tmat4x3< double, lowp > lowp_dmat4x3
4 columns of 3 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:651
+
tmat3x2< double, lowp > lowp_dmat3x2
3 columns of 2 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:541
+
tmat4x4< double, mediump > mediump_dmat4
4 columns of 4 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:680
+
tmat3x3< float, lowp > lowp_dmat3
3 columns of 3 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:564
+
tmat3x4< float, mediump > mediump_mat3x4
3 columns of 4 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:244
+
tmat2x2< float, mediump > mediump_mat2x2
2 columns of 2 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:93
+
tmat4x4< float, highp > highp_mat4
4 columns of 4 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:330
+
tmat2x4< double, lowp > lowp_dmat2x4
2 columns of 4 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:518
+
highp_mat4x3 mat4x3
4 columns of 3 components matrix of floating-point numbers.
Definition: type_mat.hpp:420
+
highp_mat4x4 mat4x4
4 columns of 4 components matrix of floating-point numbers.
Definition: type_mat.hpp:425
+
highp_mat4x2 mat4x2
4 columns of 2 components matrix of floating-point numbers.
Definition: type_mat.hpp:415
+
tmat3x2< double, highp > highp_dmat3x2
3 columns of 2 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:553
+
tmat3x4< double, lowp > lowp_dmat3x4
3 columns of 4 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:605
+
tmat4x4< double, mediump > mediump_dmat4x4
4 columns of 4 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:698
+
tmat2x4< float, highp > highp_mat2x4
2 columns of 4 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:152
+
tmat3x3< float, mediump > mediump_mat3x3
3 columns of 3 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:218
+
highp_dmat3x2 dmat3x2
3 * 2 matrix of double-precision floating-point numbers.
Definition: type_mat.hpp:763
+
tmat2x2< double, highp > highp_dmat2x2
2 columns of 2 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:484
+
highp_dmat4x4 dmat4
4 * 4 matrix of double-precision floating-point numbers.
Definition: type_mat.hpp:743
+
highp_dmat4x4 dmat4x4
4 * 4 matrix of double-precision floating-point numbers.
Definition: type_mat.hpp:788
+
highp_mat3x3 mat3x3
3 columns of 3 components matrix of floating-point numbers.
Definition: type_mat.hpp:405
+
Definition: _noise.hpp:40
+
highp_dmat2x3 dmat2x3
2 * 3 matrix of double-precision floating-point numbers.
Definition: type_mat.hpp:753
+
tmat3x3< float, lowp > lowp_mat3x3
3 columns of 3 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:211
+
tmat2x4< double, mediump > mediump_dmat2x4
2 columns of 4 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:524
+
tmat4x2< float, mediump > mediump_mat4x2
4 columns of 2 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:270
+
tmat2x3< double, lowp > lowp_dmat2x3
2 columns of 3 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:495
+
tmat3x3< double, mediump > mediump_dmat3x3
3 columns of 3 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:588
+
tmat4x4< double, highp > highp_dmat4x4
4 columns of 4 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:704
+
tmat4x4< float, lowp > lowp_mat4
4 columns of 4 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:316
+
highp_dmat4x2 dmat4x2
4 * 2 matrix of double-precision floating-point numbers.
Definition: type_mat.hpp:778
+
tmat3x4< float, lowp > lowp_mat3x4
3 columns of 4 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:237
+
tmat2x2< float, lowp > lowp_mat2x2
2 columns of 2 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:86
+
tmat4x4< float, highp > highp_mat4x4
4 columns of 4 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:351
+
tmat2x2< float, highp > highp_mat2
2 columns of 2 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:79
+
tmat2x2< float, highp > highp_mat2x2
2 columns of 2 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:100
+
highp_dmat2x4 dmat2x4
2 * 4 matrix of double-precision floating-point numbers.
Definition: type_mat.hpp:758
+
tmat4x4< float, mediump > mediump_mat4
4 columns of 4 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:323
+
tmat4x2< double, lowp > lowp_dmat4x2
4 columns of 2 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:628
+
tmat3x3< float, highp > highp_mat3
3 columns of 3 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:204
+
tmat4x2< double, mediump > mediump_dmat4x2
4 columns of 2 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:634
+
tmat2x3< double, mediump > mediump_dmat2x3
2 columns of 3 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:501
+
tmat2x3< double, highp > highp_dmat2x3
2 columns of 3 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:507
+
tmat2x4< double, highp > highp_dmat2x4
2 columns of 4 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:530
+
highp_dmat4x3 dmat4x3
4 * 3 matrix of double-precision floating-point numbers.
Definition: type_mat.hpp:783
+
tmat4x4< double, highp > highp_dmat4
4 columns of 4 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:686
+
tmat4x3< float, mediump > mediump_mat4x3
4 columns of 3 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:296
+
tmat4x3< double, highp > highp_dmat4x3
4 columns of 3 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:663
+
tmat2x2< double, lowp > lowp_dmat2
2 columns of 2 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:454
+
highp_dmat3x3 dmat3x3
3 * 3 matrix of double-precision floating-point numbers.
Definition: type_mat.hpp:768
+
tmat3x2< double, mediump > mediump_dmat3x2
3 columns of 2 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:547
+
tmat3x4< float, highp > highp_mat3x4
3 columns of 4 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:251
+
tmat2x2< float, lowp > lowp_mat2
2 columns of 2 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:65
+
tmat3x2< float, mediump > mediump_mat3x2
3 columns of 2 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:171
+
highp_dmat2x2 dmat2x2
2 * 2 matrix of double-precision floating-point numbers.
Definition: type_mat.hpp:748
+
mat4x4 mat4
4 columns of 4 components matrix of floating-point numbers.
Definition: type_mat.hpp:442
+
OpenGL Mathematics (glm.g-truc.net)
+
tmat2x2< double, lowp > lowp_dmat2x2
2 columns of 2 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:472
+
tmat3x3< double, highp > highp_dmat3
3 columns of 3 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:576
+
tmat4x2< float, highp > highp_mat4x2
4 columns of 2 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:277
+
tmat3x3< double, highp > highp_dmat3x3
3 columns of 3 components matrix of high precision floating-point numbers.
Definition: type_mat.hpp:594
+
tmat4x4< double, lowp > lowp_dmat4
4 columns of 4 components matrix of low precision floating-point numbers.
Definition: type_mat.hpp:674
+
tmat2x2< double, mediump > mediump_dmat2
2 columns of 2 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:460
+
highp_dmat3x3 dmat3
3 * 3 matrix of double-precision floating-point numbers.
Definition: type_mat.hpp:738
+
tmat4x4< float, mediump > mediump_mat4x4
4 columns of 4 components matrix of medium precision floating-point numbers.
Definition: type_mat.hpp:344
+
+ + + + diff --git a/external/glm/doc/api/a00121.html b/external/glm/doc/api/a00121.html new file mode 100644 index 0000000..88faf02 --- /dev/null +++ b/external/glm/doc/api/a00121.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: type_mat2x2.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat2x2.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2005-01-27 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file type_mat2x2.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00121_source.html b/external/glm/doc/api/a00121_source.html new file mode 100644 index 0000000..54de1c9 --- /dev/null +++ b/external/glm/doc/api/a00121_source.html @@ -0,0 +1,262 @@ + + + + + + +0.9.7: type_mat2x2.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat2x2.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "../fwd.hpp"
+
36 #include "type_vec2.hpp"
+
37 #include "type_mat.hpp"
+
38 #include <limits>
+
39 #include <cstddef>
+
40 
+
41 namespace glm
+
42 {
+
43  template <typename T, precision P = defaultp>
+
44  struct tmat2x2
+
45  {
+
46  typedef tvec2<T, P> col_type;
+
47  typedef tvec2<T, P> row_type;
+
48  typedef tmat2x2<T, P> type;
+
49  typedef tmat2x2<T, P> transpose_type;
+
50  typedef T value_type;
+
51 
+
52  template <typename U, precision Q>
+
53  friend tvec2<U, Q> operator/(tmat2x2<U, Q> const & m, tvec2<U, Q> const & v);
+
54  template <typename U, precision Q>
+
55  friend tvec2<U, Q> operator/(tvec2<U, Q> const & v, tmat2x2<U, Q> const & m);
+
56 
+
57 # ifdef GLM_META_PROG_HELPERS
+
58  static GLM_RELAXED_CONSTEXPR length_t components = 2;
+
59  static GLM_RELAXED_CONSTEXPR length_t cols = 2;
+
60  static GLM_RELAXED_CONSTEXPR length_t rows = 2;
+
61  static GLM_RELAXED_CONSTEXPR precision prec = P;
+
62 # endif//GLM_META_PROG_HELPERS
+
63 
+
64  private:
+
65  col_type value[2];
+
66 
+
67  public:
+
68  // -- Constructors --
+
69 
+
70  GLM_FUNC_DECL tmat2x2() GLM_DEFAULT_CTOR;
+
71  GLM_FUNC_DECL tmat2x2(tmat2x2<T, P> const & m) GLM_DEFAULT;
+
72  template <precision Q>
+
73  GLM_FUNC_DECL tmat2x2(tmat2x2<T, Q> const & m);
+
74 
+
75  GLM_FUNC_DECL explicit tmat2x2(ctor);
+
76  GLM_FUNC_DECL explicit tmat2x2(T const & x);
+
77  GLM_FUNC_DECL tmat2x2(
+
78  T const & x1, T const & y1,
+
79  T const & x2, T const & y2);
+
80  GLM_FUNC_DECL tmat2x2(
+
81  col_type const & v1,
+
82  col_type const & v2);
+
83 
+
84  // -- Conversions --
+
85 
+
86  template <typename U, typename V, typename M, typename N>
+
87  GLM_FUNC_DECL tmat2x2(
+
88  U const & x1, V const & y1,
+
89  M const & x2, N const & y2);
+
90 
+
91  template <typename U, typename V>
+
92  GLM_FUNC_DECL tmat2x2(
+
93  tvec2<U, P> const & v1,
+
94  tvec2<V, P> const & v2);
+
95 
+
96  // -- Matrix conversions --
+
97 
+
98  template <typename U, precision Q>
+
99  GLM_FUNC_DECL GLM_EXPLICIT tmat2x2(tmat2x2<U, Q> const & m);
+
100 
+
101  GLM_FUNC_DECL explicit tmat2x2(tmat3x3<T, P> const & x);
+
102  GLM_FUNC_DECL explicit tmat2x2(tmat4x4<T, P> const & x);
+
103  GLM_FUNC_DECL explicit tmat2x2(tmat2x3<T, P> const & x);
+
104  GLM_FUNC_DECL explicit tmat2x2(tmat3x2<T, P> const & x);
+
105  GLM_FUNC_DECL explicit tmat2x2(tmat2x4<T, P> const & x);
+
106  GLM_FUNC_DECL explicit tmat2x2(tmat4x2<T, P> const & x);
+
107  GLM_FUNC_DECL explicit tmat2x2(tmat3x4<T, P> const & x);
+
108  GLM_FUNC_DECL explicit tmat2x2(tmat4x3<T, P> const & x);
+
109 
+
110  // -- Accesses --
+
111 
+
112 # ifdef GLM_FORCE_SIZE_FUNC
+
113  typedef size_t size_type;
+
114  GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
+
115 
+
116  GLM_FUNC_DECL col_type & operator[](size_type i);
+
117  GLM_FUNC_DECL col_type const & operator[](size_type i) const;
+
118 # else
+
119  typedef length_t length_type;
+
120  GLM_FUNC_DECL GLM_CONSTEXPR length_type length() const;
+
121 
+
122  GLM_FUNC_DECL col_type & operator[](length_type i);
+
123  GLM_FUNC_DECL col_type const & operator[](length_type i) const;
+
124 # endif//GLM_FORCE_SIZE_FUNC
+
125 
+
126  // -- Unary arithmetic operators --
+
127 
+
128  GLM_FUNC_DECL tmat2x2<T, P> & operator=(tmat2x2<T, P> const & v) GLM_DEFAULT;;
+
129 
+
130  template <typename U>
+
131  GLM_FUNC_DECL tmat2x2<T, P> & operator=(tmat2x2<U, P> const & m);
+
132  template <typename U>
+
133  GLM_FUNC_DECL tmat2x2<T, P> & operator+=(U s);
+
134  template <typename U>
+
135  GLM_FUNC_DECL tmat2x2<T, P> & operator+=(tmat2x2<U, P> const & m);
+
136  template <typename U>
+
137  GLM_FUNC_DECL tmat2x2<T, P> & operator-=(U s);
+
138  template <typename U>
+
139  GLM_FUNC_DECL tmat2x2<T, P> & operator-=(tmat2x2<U, P> const & m);
+
140  template <typename U>
+
141  GLM_FUNC_DECL tmat2x2<T, P> & operator*=(U s);
+
142  template <typename U>
+
143  GLM_FUNC_DECL tmat2x2<T, P> & operator*=(tmat2x2<U, P> const & m);
+
144  template <typename U>
+
145  GLM_FUNC_DECL tmat2x2<T, P> & operator/=(U s);
+
146  template <typename U>
+
147  GLM_FUNC_DECL tmat2x2<T, P> & operator/=(tmat2x2<U, P> const & m);
+
148 
+
149  // -- Increment and decrement operators --
+
150 
+
151  GLM_FUNC_DECL tmat2x2<T, P> & operator++ ();
+
152  GLM_FUNC_DECL tmat2x2<T, P> & operator-- ();
+
153  GLM_FUNC_DECL tmat2x2<T, P> operator++(int);
+
154  GLM_FUNC_DECL tmat2x2<T, P> operator--(int);
+
155  };
+
156 
+
157  // -- Unary operators --
+
158 
+
159  template <typename T, precision P>
+
160  GLM_FUNC_DECL tmat2x2<T, P> const operator-(tmat2x2<T, P> const & m);
+
161 
+
162  // -- Binary operators --
+
163 
+
164  template <typename T, precision P>
+
165  GLM_FUNC_DECL tmat2x2<T, P> operator+(tmat2x2<T, P> const & m, T const & s);
+
166 
+
167  template <typename T, precision P>
+
168  GLM_FUNC_DECL tmat2x2<T, P> operator+(T const & s, tmat2x2<T, P> const & m);
+
169 
+
170  template <typename T, precision P>
+
171  GLM_FUNC_DECL tmat2x2<T, P> operator+(tmat2x2<T, P> const & m1, tmat2x2<T, P> const & m2);
+
172 
+
173  template <typename T, precision P>
+
174  GLM_FUNC_DECL tmat2x2<T, P> operator-(tmat2x2<T, P> const & m, T const & s);
+
175 
+
176  template <typename T, precision P>
+
177  GLM_FUNC_DECL tmat2x2<T, P> operator-(T const & s, tmat2x2<T, P> const & m);
+
178 
+
179  template <typename T, precision P>
+
180  GLM_FUNC_DECL tmat2x2<T, P> operator-(tmat2x2<T, P> const & m1, tmat2x2<T, P> const & m2);
+
181 
+
182  template <typename T, precision P>
+
183  GLM_FUNC_DECL tmat2x2<T, P> operator*(tmat2x2<T, P> const & m, T const & s);
+
184 
+
185  template <typename T, precision P>
+
186  GLM_FUNC_DECL tmat2x2<T, P> operator*(T const & s, tmat2x2<T, P> const & m);
+
187 
+
188  template <typename T, precision P>
+
189  GLM_FUNC_DECL typename tmat2x2<T, P>::col_type operator*(tmat2x2<T, P> const & m, typename tmat2x2<T, P>::row_type const & v);
+
190 
+
191  template <typename T, precision P>
+
192  GLM_FUNC_DECL typename tmat2x2<T, P>::row_type operator*(typename tmat2x2<T, P>::col_type const & v, tmat2x2<T, P> const & m);
+
193 
+
194  template <typename T, precision P>
+
195  GLM_FUNC_DECL tmat2x2<T, P> operator*(tmat2x2<T, P> const & m1, tmat2x2<T, P> const & m2);
+
196 
+
197  template <typename T, precision P>
+
198  GLM_FUNC_DECL tmat3x2<T, P> operator*(tmat2x2<T, P> const & m1, tmat3x2<T, P> const & m2);
+
199 
+
200  template <typename T, precision P>
+
201  GLM_FUNC_DECL tmat4x2<T, P> operator*(tmat2x2<T, P> const & m1, tmat4x2<T, P> const & m2);
+
202 
+
203  template <typename T, precision P>
+
204  GLM_FUNC_DECL tmat2x2<T, P> operator/(tmat2x2<T, P> const & m, T const & s);
+
205 
+
206  template <typename T, precision P>
+
207  GLM_FUNC_DECL tmat2x2<T, P> operator/(T const & s, tmat2x2<T, P> const & m);
+
208 
+
209  template <typename T, precision P>
+
210  GLM_FUNC_DECL typename tmat2x2<T, P>::col_type operator/(tmat2x2<T, P> const & m, typename tmat2x2<T, P>::row_type const & v);
+
211 
+
212  template <typename T, precision P>
+
213  GLM_FUNC_DECL typename tmat2x2<T, P>::row_type operator/(typename tmat2x2<T, P>::col_type const & v, tmat2x2<T, P> const & m);
+
214 
+
215  template <typename T, precision P>
+
216  GLM_FUNC_DECL tmat2x2<T, P> operator/(tmat2x2<T, P> const & m1, tmat2x2<T, P> const & m2);
+
217 
+
218  // -- Boolean operators --
+
219 
+
220  template <typename T, precision P>
+
221  GLM_FUNC_DECL bool operator==(tmat2x2<T, P> const & m1, tmat2x2<T, P> const & m2);
+
222 
+
223  template <typename T, precision P>
+
224  GLM_FUNC_DECL bool operator!=(tmat2x2<T, P> const & m1, tmat2x2<T, P> const & m2);
+
225 } //namespace glm
+
226 
+
227 #ifndef GLM_EXTERNAL_TEMPLATE
+
228 #include "type_mat2x2.inl"
+
229 #endif
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00122.html b/external/glm/doc/api/a00122.html new file mode 100644 index 0000000..766a08d --- /dev/null +++ b/external/glm/doc/api/a00122.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: type_mat2x3.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat2x3.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2006-10-01 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file type_mat2x3.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00122_source.html b/external/glm/doc/api/a00122_source.html new file mode 100644 index 0000000..1d31b1f --- /dev/null +++ b/external/glm/doc/api/a00122_source.html @@ -0,0 +1,240 @@ + + + + + + +0.9.7: type_mat2x3.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat2x3.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "../fwd.hpp"
+
36 #include "type_vec2.hpp"
+
37 #include "type_vec3.hpp"
+
38 #include "type_mat.hpp"
+
39 #include <limits>
+
40 #include <cstddef>
+
41 
+
42 namespace glm
+
43 {
+
44  template <typename T, precision P = defaultp>
+
45  struct tmat2x3
+
46  {
+
47  typedef tvec3<T, P> col_type;
+
48  typedef tvec2<T, P> row_type;
+
49  typedef tmat2x3<T, P> type;
+
50  typedef tmat3x2<T, P> transpose_type;
+
51  typedef T value_type;
+
52 
+
53 # ifdef GLM_META_PROG_HELPERS
+
54  static GLM_RELAXED_CONSTEXPR length_t components = 2;
+
55  static GLM_RELAXED_CONSTEXPR length_t cols = 2;
+
56  static GLM_RELAXED_CONSTEXPR length_t rows = 3;
+
57  static GLM_RELAXED_CONSTEXPR precision prec = P;
+
58 # endif//GLM_META_PROG_HELPERS
+
59 
+
60  private:
+
61  col_type value[2];
+
62 
+
63  public:
+
64  // -- Constructors --
+
65 
+
66  GLM_FUNC_DECL tmat2x3() GLM_DEFAULT_CTOR;
+
67  GLM_FUNC_DECL tmat2x3(tmat2x3<T, P> const & m) GLM_DEFAULT;
+
68  template <precision Q>
+
69  GLM_FUNC_DECL tmat2x3(tmat2x3<T, Q> const & m);
+
70 
+
71  GLM_FUNC_DECL explicit tmat2x3(ctor);
+
72  GLM_FUNC_DECL explicit tmat2x3(T const & s);
+
73  GLM_FUNC_DECL tmat2x3(
+
74  T const & x0, T const & y0, T const & z0,
+
75  T const & x1, T const & y1, T const & z1);
+
76  GLM_FUNC_DECL tmat2x3(
+
77  col_type const & v0,
+
78  col_type const & v1);
+
79 
+
80  // -- Conversions --
+
81 
+
82  template <typename X1, typename Y1, typename Z1, typename X2, typename Y2, typename Z2>
+
83  GLM_FUNC_DECL tmat2x3(
+
84  X1 const & x1, Y1 const & y1, Z1 const & z1,
+
85  X2 const & x2, Y2 const & y2, Z2 const & z2);
+
86 
+
87  template <typename U, typename V>
+
88  GLM_FUNC_DECL tmat2x3(
+
89  tvec3<U, P> const & v1,
+
90  tvec3<V, P> const & v2);
+
91 
+
92  // -- Matrix conversions --
+
93 
+
94  template <typename U, precision Q>
+
95  GLM_FUNC_DECL GLM_EXPLICIT tmat2x3(tmat2x3<U, Q> const & m);
+
96 
+
97  GLM_FUNC_DECL explicit tmat2x3(tmat2x2<T, P> const & x);
+
98  GLM_FUNC_DECL explicit tmat2x3(tmat3x3<T, P> const & x);
+
99  GLM_FUNC_DECL explicit tmat2x3(tmat4x4<T, P> const & x);
+
100  GLM_FUNC_DECL explicit tmat2x3(tmat2x4<T, P> const & x);
+
101  GLM_FUNC_DECL explicit tmat2x3(tmat3x2<T, P> const & x);
+
102  GLM_FUNC_DECL explicit tmat2x3(tmat3x4<T, P> const & x);
+
103  GLM_FUNC_DECL explicit tmat2x3(tmat4x2<T, P> const & x);
+
104  GLM_FUNC_DECL explicit tmat2x3(tmat4x3<T, P> const & x);
+
105 
+
106  // -- Accesses --
+
107 
+
108 # ifdef GLM_FORCE_SIZE_FUNC
+
109  typedef size_t size_type;
+
110  GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
+
111 
+
112  GLM_FUNC_DECL col_type & operator[](size_type i);
+
113  GLM_FUNC_DECL col_type const & operator[](size_type i) const;
+
114 # else
+
115  typedef length_t length_type;
+
116  GLM_FUNC_DECL GLM_CONSTEXPR length_type length() const;
+
117 
+
118  GLM_FUNC_DECL col_type & operator[](length_type i);
+
119  GLM_FUNC_DECL col_type const & operator[](length_type i) const;
+
120 # endif//GLM_FORCE_SIZE_FUNC
+
121 
+
122  // -- Unary arithmetic operators --
+
123 
+
124  GLM_FUNC_DECL tmat2x3<T, P> & operator=(tmat2x3<T, P> const & m) GLM_DEFAULT;
+
125 
+
126  template <typename U>
+
127  GLM_FUNC_DECL tmat2x3<T, P> & operator=(tmat2x3<U, P> const & m);
+
128  template <typename U>
+
129  GLM_FUNC_DECL tmat2x3<T, P> & operator+=(U s);
+
130  template <typename U>
+
131  GLM_FUNC_DECL tmat2x3<T, P> & operator+=(tmat2x3<U, P> const & m);
+
132  template <typename U>
+
133  GLM_FUNC_DECL tmat2x3<T, P> & operator-=(U s);
+
134  template <typename U>
+
135  GLM_FUNC_DECL tmat2x3<T, P> & operator-=(tmat2x3<U, P> const & m);
+
136  template <typename U>
+
137  GLM_FUNC_DECL tmat2x3<T, P> & operator*=(U s);
+
138  template <typename U>
+
139  GLM_FUNC_DECL tmat2x3<T, P> & operator/=(U s);
+
140 
+
141  // -- Increment and decrement operators --
+
142 
+
143  GLM_FUNC_DECL tmat2x3<T, P> & operator++ ();
+
144  GLM_FUNC_DECL tmat2x3<T, P> & operator-- ();
+
145  GLM_FUNC_DECL tmat2x3<T, P> operator++(int);
+
146  GLM_FUNC_DECL tmat2x3<T, P> operator--(int);
+
147  };
+
148 
+
149  // -- Unary operators --
+
150 
+
151  template <typename T, precision P>
+
152  GLM_FUNC_DECL tmat2x3<T, P> const operator-(tmat2x3<T, P> const & m);
+
153 
+
154  // -- Binary operators --
+
155 
+
156  template <typename T, precision P>
+
157  GLM_FUNC_DECL tmat2x3<T, P> operator+(tmat2x3<T, P> const & m, T const & s);
+
158 
+
159  template <typename T, precision P>
+
160  GLM_FUNC_DECL tmat2x3<T, P> operator+(tmat2x3<T, P> const & m1, tmat2x3<T, P> const & m2);
+
161 
+
162  template <typename T, precision P>
+
163  GLM_FUNC_DECL tmat2x3<T, P> operator-(tmat2x3<T, P> const & m, T const & s);
+
164 
+
165  template <typename T, precision P>
+
166  GLM_FUNC_DECL tmat2x3<T, P> operator-(tmat2x3<T, P> const & m1, tmat2x3<T, P> const & m2);
+
167 
+
168  template <typename T, precision P>
+
169  GLM_FUNC_DECL tmat2x3<T, P> operator*(tmat2x3<T, P> const & m, T const & s);
+
170 
+
171  template <typename T, precision P>
+
172  GLM_FUNC_DECL tmat2x3<T, P> operator*(T const & s, tmat2x3<T, P> const & m);
+
173 
+
174  template <typename T, precision P>
+
175  GLM_FUNC_DECL typename tmat2x3<T, P>::col_type operator*(tmat2x3<T, P> const & m, typename tmat2x3<T, P>::row_type const & v);
+
176 
+
177  template <typename T, precision P>
+
178  GLM_FUNC_DECL typename tmat2x3<T, P>::row_type operator*(typename tmat2x3<T, P>::col_type const & v, tmat2x3<T, P> const & m);
+
179 
+
180  template <typename T, precision P>
+
181  GLM_FUNC_DECL tmat2x3<T, P> operator*(tmat2x3<T, P> const & m1, tmat2x2<T, P> const & m2);
+
182 
+
183  template <typename T, precision P>
+
184  GLM_FUNC_DECL tmat3x3<T, P> operator*(tmat2x3<T, P> const & m1, tmat3x2<T, P> const & m2);
+
185 
+
186  template <typename T, precision P>
+
187  GLM_FUNC_DECL tmat4x3<T, P> operator*(tmat2x3<T, P> const & m1, tmat4x2<T, P> const & m2);
+
188 
+
189  template <typename T, precision P>
+
190  GLM_FUNC_DECL tmat2x3<T, P> operator/(tmat2x3<T, P> const & m, T const & s);
+
191 
+
192  template <typename T, precision P>
+
193  GLM_FUNC_DECL tmat2x3<T, P> operator/(T const & s, tmat2x3<T, P> const & m);
+
194 
+
195  // -- Boolean operators --
+
196 
+
197  template <typename T, precision P>
+
198  GLM_FUNC_DECL bool operator==(tmat2x3<T, P> const & m1, tmat2x3<T, P> const & m2);
+
199 
+
200  template <typename T, precision P>
+
201  GLM_FUNC_DECL bool operator!=(tmat2x3<T, P> const & m1, tmat2x3<T, P> const & m2);
+
202 }//namespace glm
+
203 
+
204 #ifndef GLM_EXTERNAL_TEMPLATE
+
205 #include "type_mat2x3.inl"
+
206 #endif
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00123.html b/external/glm/doc/api/a00123.html new file mode 100644 index 0000000..f7ca1da --- /dev/null +++ b/external/glm/doc/api/a00123.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: type_mat2x4.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat2x4.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2006-08-05 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file type_mat2x4.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00123_source.html b/external/glm/doc/api/a00123_source.html new file mode 100644 index 0000000..bf38f36 --- /dev/null +++ b/external/glm/doc/api/a00123_source.html @@ -0,0 +1,242 @@ + + + + + + +0.9.7: type_mat2x4.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat2x4.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "../fwd.hpp"
+
36 #include "type_vec2.hpp"
+
37 #include "type_vec4.hpp"
+
38 #include "type_mat.hpp"
+
39 #include <limits>
+
40 #include <cstddef>
+
41 
+
42 namespace glm
+
43 {
+
44  template <typename T, precision P = defaultp>
+
45  struct tmat2x4
+
46  {
+
47  typedef tvec4<T, P> col_type;
+
48  typedef tvec2<T, P> row_type;
+
49  typedef tmat2x4<T, P> type;
+
50  typedef tmat4x2<T, P> transpose_type;
+
51  typedef T value_type;
+
52 
+
53 # ifdef GLM_META_PROG_HELPERS
+
54  static GLM_RELAXED_CONSTEXPR length_t components = 2;
+
55  static GLM_RELAXED_CONSTEXPR length_t cols = 2;
+
56  static GLM_RELAXED_CONSTEXPR length_t rows = 4;
+
57  static GLM_RELAXED_CONSTEXPR precision prec = P;
+
58 # endif//GLM_META_PROG_HELPERS
+
59 
+
60  private:
+
61  col_type value[2];
+
62 
+
63  public:
+
64  // -- Constructors --
+
65 
+
66  GLM_FUNC_DECL tmat2x4() GLM_DEFAULT_CTOR;
+
67  GLM_FUNC_DECL tmat2x4(tmat2x4<T, P> const & m) GLM_DEFAULT;
+
68  template <precision Q>
+
69  GLM_FUNC_DECL tmat2x4(tmat2x4<T, Q> const & m);
+
70 
+
71  GLM_FUNC_DECL explicit tmat2x4(ctor);
+
72  GLM_FUNC_DECL explicit tmat2x4(T const & s);
+
73  GLM_FUNC_DECL tmat2x4(
+
74  T const & x0, T const & y0, T const & z0, T const & w0,
+
75  T const & x1, T const & y1, T const & z1, T const & w1);
+
76  GLM_FUNC_DECL tmat2x4(
+
77  col_type const & v0,
+
78  col_type const & v1);
+
79 
+
80  // -- Conversions --
+
81 
+
82  template <
+
83  typename X1, typename Y1, typename Z1, typename W1,
+
84  typename X2, typename Y2, typename Z2, typename W2>
+
85  GLM_FUNC_DECL tmat2x4(
+
86  X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1,
+
87  X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2);
+
88 
+
89  template <typename U, typename V>
+
90  GLM_FUNC_DECL tmat2x4(
+
91  tvec4<U, P> const & v1,
+
92  tvec4<V, P> const & v2);
+
93 
+
94  // -- Matrix conversions --
+
95 
+
96  template <typename U, precision Q>
+
97  GLM_FUNC_DECL GLM_EXPLICIT tmat2x4(tmat2x4<U, Q> const & m);
+
98 
+
99  GLM_FUNC_DECL explicit tmat2x4(tmat2x2<T, P> const & x);
+
100  GLM_FUNC_DECL explicit tmat2x4(tmat3x3<T, P> const & x);
+
101  GLM_FUNC_DECL explicit tmat2x4(tmat4x4<T, P> const & x);
+
102  GLM_FUNC_DECL explicit tmat2x4(tmat2x3<T, P> const & x);
+
103  GLM_FUNC_DECL explicit tmat2x4(tmat3x2<T, P> const & x);
+
104  GLM_FUNC_DECL explicit tmat2x4(tmat3x4<T, P> const & x);
+
105  GLM_FUNC_DECL explicit tmat2x4(tmat4x2<T, P> const & x);
+
106  GLM_FUNC_DECL explicit tmat2x4(tmat4x3<T, P> const & x);
+
107 
+
108  // -- Accesses --
+
109 
+
110 # ifdef GLM_FORCE_SIZE_FUNC
+
111  typedef size_t size_type;
+
112  GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
+
113 
+
114  GLM_FUNC_DECL col_type & operator[](size_type i);
+
115  GLM_FUNC_DECL col_type const & operator[](size_type i) const;
+
116 # else
+
117  typedef length_t length_type;
+
118  GLM_FUNC_DECL GLM_CONSTEXPR length_type length() const;
+
119 
+
120  GLM_FUNC_DECL col_type & operator[](length_type i);
+
121  GLM_FUNC_DECL col_type const & operator[](length_type i) const;
+
122 # endif//GLM_FORCE_SIZE_FUNC
+
123 
+
124  // -- Unary arithmetic operators --
+
125 
+
126  GLM_FUNC_DECL tmat2x4<T, P> & operator=(tmat2x4<T, P> const & m) GLM_DEFAULT;
+
127 
+
128  template <typename U>
+
129  GLM_FUNC_DECL tmat2x4<T, P> & operator=(tmat2x4<U, P> const & m);
+
130  template <typename U>
+
131  GLM_FUNC_DECL tmat2x4<T, P> & operator+=(U s);
+
132  template <typename U>
+
133  GLM_FUNC_DECL tmat2x4<T, P> & operator+=(tmat2x4<U, P> const & m);
+
134  template <typename U>
+
135  GLM_FUNC_DECL tmat2x4<T, P> & operator-=(U s);
+
136  template <typename U>
+
137  GLM_FUNC_DECL tmat2x4<T, P> & operator-=(tmat2x4<U, P> const & m);
+
138  template <typename U>
+
139  GLM_FUNC_DECL tmat2x4<T, P> & operator*=(U s);
+
140  template <typename U>
+
141  GLM_FUNC_DECL tmat2x4<T, P> & operator/=(U s);
+
142 
+
143  // -- Increment and decrement operators --
+
144 
+
145  GLM_FUNC_DECL tmat2x4<T, P> & operator++ ();
+
146  GLM_FUNC_DECL tmat2x4<T, P> & operator-- ();
+
147  GLM_FUNC_DECL tmat2x4<T, P> operator++(int);
+
148  GLM_FUNC_DECL tmat2x4<T, P> operator--(int);
+
149  };
+
150 
+
151  // -- Unary operators --
+
152 
+
153  template <typename T, precision P>
+
154  GLM_FUNC_DECL tmat2x4<T, P> const operator-(tmat2x4<T, P> const & m);
+
155 
+
156  // -- Binary operators --
+
157 
+
158  template <typename T, precision P>
+
159  GLM_FUNC_DECL tmat2x4<T, P> operator+(tmat2x4<T, P> const & m, T const & s);
+
160 
+
161  template <typename T, precision P>
+
162  GLM_FUNC_DECL tmat2x4<T, P> operator+(tmat2x4<T, P> const & m1, tmat2x4<T, P> const & m2);
+
163 
+
164  template <typename T, precision P>
+
165  GLM_FUNC_DECL tmat2x4<T, P> operator-(tmat2x4<T, P> const & m, T const & s);
+
166 
+
167  template <typename T, precision P>
+
168  GLM_FUNC_DECL tmat2x4<T, P> operator-(tmat2x4<T, P> const & m1, tmat2x4<T, P> const & m2);
+
169 
+
170  template <typename T, precision P>
+
171  GLM_FUNC_DECL tmat2x4<T, P> operator*(tmat2x4<T, P> const & m, T const & s);
+
172 
+
173  template <typename T, precision P>
+
174  GLM_FUNC_DECL tmat2x4<T, P> operator*(T const & s, tmat2x4<T, P> const & m);
+
175 
+
176  template <typename T, precision P>
+
177  GLM_FUNC_DECL typename tmat2x4<T, P>::col_type operator*(tmat2x4<T, P> const & m, typename tmat2x4<T, P>::row_type const & v);
+
178 
+
179  template <typename T, precision P>
+
180  GLM_FUNC_DECL typename tmat2x4<T, P>::row_type operator*(typename tmat2x4<T, P>::col_type const & v, tmat2x4<T, P> const & m);
+
181 
+
182  template <typename T, precision P>
+
183  GLM_FUNC_DECL tmat4x4<T, P> operator*(tmat2x4<T, P> const & m1, tmat4x2<T, P> const & m2);
+
184 
+
185  template <typename T, precision P>
+
186  GLM_FUNC_DECL tmat2x4<T, P> operator*(tmat2x4<T, P> const & m1, tmat2x2<T, P> const & m2);
+
187 
+
188  template <typename T, precision P>
+
189  GLM_FUNC_DECL tmat3x4<T, P> operator*(tmat2x4<T, P> const & m1, tmat3x2<T, P> const & m2);
+
190 
+
191  template <typename T, precision P>
+
192  GLM_FUNC_DECL tmat2x4<T, P> operator/(tmat2x4<T, P> const & m, T s);
+
193 
+
194  template <typename T, precision P>
+
195  GLM_FUNC_DECL tmat2x4<T, P> operator/(T s, tmat2x4<T, P> const & m);
+
196 
+
197  // -- Boolean operators --
+
198 
+
199  template <typename T, precision P>
+
200  GLM_FUNC_DECL bool operator==(tmat2x4<T, P> const & m1, tmat2x4<T, P> const & m2);
+
201 
+
202  template <typename T, precision P>
+
203  GLM_FUNC_DECL bool operator!=(tmat2x4<T, P> const & m1, tmat2x4<T, P> const & m2);
+
204 }//namespace glm
+
205 
+
206 #ifndef GLM_EXTERNAL_TEMPLATE
+
207 #include "type_mat2x4.inl"
+
208 #endif
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00124.html b/external/glm/doc/api/a00124.html new file mode 100644 index 0000000..e92ab28 --- /dev/null +++ b/external/glm/doc/api/a00124.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: type_mat3x2.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat3x2.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2006-08-05 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file type_mat3x2.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00124_source.html b/external/glm/doc/api/a00124_source.html new file mode 100644 index 0000000..82d37c4 --- /dev/null +++ b/external/glm/doc/api/a00124_source.html @@ -0,0 +1,247 @@ + + + + + + +0.9.7: type_mat3x2.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat3x2.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "../fwd.hpp"
+
36 #include "type_vec2.hpp"
+
37 #include "type_vec3.hpp"
+
38 #include "type_mat.hpp"
+
39 #include <limits>
+
40 #include <cstddef>
+
41 
+
42 namespace glm
+
43 {
+
44  template <typename T, precision P = defaultp>
+
45  struct tmat3x2
+
46  {
+
47  typedef tvec2<T, P> col_type;
+
48  typedef tvec3<T, P> row_type;
+
49  typedef tmat3x2<T, P> type;
+
50  typedef tmat2x3<T, P> transpose_type;
+
51  typedef T value_type;
+
52 
+
53 # ifdef GLM_META_PROG_HELPERS
+
54  static GLM_RELAXED_CONSTEXPR length_t components = 3;
+
55  static GLM_RELAXED_CONSTEXPR length_t cols = 3;
+
56  static GLM_RELAXED_CONSTEXPR length_t rows = 2;
+
57  static GLM_RELAXED_CONSTEXPR precision prec = P;
+
58 # endif//GLM_META_PROG_HELPERS
+
59 
+
60  private:
+
61  col_type value[3];
+
62 
+
63  public:
+
64  // -- Constructors --
+
65 
+
66  GLM_FUNC_DECL tmat3x2() GLM_DEFAULT_CTOR;
+
67  GLM_FUNC_DECL tmat3x2(tmat3x2<T, P> const & m) GLM_DEFAULT;
+
68  template <precision Q>
+
69  GLM_FUNC_DECL tmat3x2(tmat3x2<T, Q> const & m);
+
70 
+
71  GLM_FUNC_DECL explicit tmat3x2(ctor);
+
72  GLM_FUNC_DECL explicit tmat3x2(T const & s);
+
73  GLM_FUNC_DECL tmat3x2(
+
74  T const & x0, T const & y0,
+
75  T const & x1, T const & y1,
+
76  T const & x2, T const & y2);
+
77  GLM_FUNC_DECL tmat3x2(
+
78  col_type const & v0,
+
79  col_type const & v1,
+
80  col_type const & v2);
+
81 
+
82  // -- Conversions --
+
83 
+
84  template<
+
85  typename X1, typename Y1,
+
86  typename X2, typename Y2,
+
87  typename X3, typename Y3>
+
88  GLM_FUNC_DECL tmat3x2(
+
89  X1 const & x1, Y1 const & y1,
+
90  X2 const & x2, Y2 const & y2,
+
91  X3 const & x3, Y3 const & y3);
+
92 
+
93  template <typename V1, typename V2, typename V3>
+
94  GLM_FUNC_DECL tmat3x2(
+
95  tvec2<V1, P> const & v1,
+
96  tvec2<V2, P> const & v2,
+
97  tvec2<V3, P> const & v3);
+
98 
+
99  // -- Matrix conversions --
+
100 
+
101  template <typename U, precision Q>
+
102  GLM_FUNC_DECL GLM_EXPLICIT tmat3x2(tmat3x2<U, Q> const & m);
+
103 
+
104  GLM_FUNC_DECL explicit tmat3x2(tmat2x2<T, P> const & x);
+
105  GLM_FUNC_DECL explicit tmat3x2(tmat3x3<T, P> const & x);
+
106  GLM_FUNC_DECL explicit tmat3x2(tmat4x4<T, P> const & x);
+
107  GLM_FUNC_DECL explicit tmat3x2(tmat2x3<T, P> const & x);
+
108  GLM_FUNC_DECL explicit tmat3x2(tmat2x4<T, P> const & x);
+
109  GLM_FUNC_DECL explicit tmat3x2(tmat3x4<T, P> const & x);
+
110  GLM_FUNC_DECL explicit tmat3x2(tmat4x2<T, P> const & x);
+
111  GLM_FUNC_DECL explicit tmat3x2(tmat4x3<T, P> const & x);
+
112 
+
113  // -- Accesses --
+
114 
+
115 # ifdef GLM_FORCE_SIZE_FUNC
+
116  typedef size_t size_type;
+
117  GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
+
118 
+
119  GLM_FUNC_DECL col_type & operator[](size_type i);
+
120  GLM_FUNC_DECL col_type const & operator[](size_type i) const;
+
121 # else
+
122  typedef length_t length_type;
+
123  GLM_FUNC_DECL GLM_CONSTEXPR length_type length() const;
+
124 
+
125  GLM_FUNC_DECL col_type & operator[](length_type i);
+
126  GLM_FUNC_DECL col_type const & operator[](length_type i) const;
+
127 # endif//GLM_FORCE_SIZE_FUNC
+
128 
+
129  // -- Unary arithmetic operators --
+
130 
+
131  GLM_FUNC_DECL tmat3x2<T, P> & operator=(tmat3x2<T, P> const & m) GLM_DEFAULT;
+
132 
+
133  template <typename U>
+
134  GLM_FUNC_DECL tmat3x2<T, P> & operator=(tmat3x2<U, P> const & m);
+
135  template <typename U>
+
136  GLM_FUNC_DECL tmat3x2<T, P> & operator+=(U s);
+
137  template <typename U>
+
138  GLM_FUNC_DECL tmat3x2<T, P> & operator+=(tmat3x2<U, P> const & m);
+
139  template <typename U>
+
140  GLM_FUNC_DECL tmat3x2<T, P> & operator-=(U s);
+
141  template <typename U>
+
142  GLM_FUNC_DECL tmat3x2<T, P> & operator-=(tmat3x2<U, P> const & m);
+
143  template <typename U>
+
144  GLM_FUNC_DECL tmat3x2<T, P> & operator*=(U s);
+
145  template <typename U>
+
146  GLM_FUNC_DECL tmat3x2<T, P> & operator/=(U s);
+
147 
+
148  // -- Increment and decrement operators --
+
149 
+
150  GLM_FUNC_DECL tmat3x2<T, P> & operator++ ();
+
151  GLM_FUNC_DECL tmat3x2<T, P> & operator-- ();
+
152  GLM_FUNC_DECL tmat3x2<T, P> operator++(int);
+
153  GLM_FUNC_DECL tmat3x2<T, P> operator--(int);
+
154  };
+
155 
+
156  // -- Unary operators --
+
157 
+
158  template <typename T, precision P>
+
159  GLM_FUNC_DECL tmat3x2<T, P> const operator-(tmat3x2<T, P> const & m);
+
160 
+
161  // -- Binary operators --
+
162 
+
163  template <typename T, precision P>
+
164  GLM_FUNC_DECL tmat3x2<T, P> operator+(tmat3x2<T, P> const & m, T const & s);
+
165 
+
166  template <typename T, precision P>
+
167  GLM_FUNC_DECL tmat3x2<T, P> operator+(tmat3x2<T, P> const & m1, tmat3x2<T, P> const & m2);
+
168 
+
169  template <typename T, precision P>
+
170  GLM_FUNC_DECL tmat3x2<T, P> operator-(tmat3x2<T, P> const & m, T const & s);
+
171 
+
172  template <typename T, precision P>
+
173  GLM_FUNC_DECL tmat3x2<T, P> operator-(tmat3x2<T, P> const & m1, tmat3x2<T, P> const & m2);
+
174 
+
175  template <typename T, precision P>
+
176  GLM_FUNC_DECL tmat3x2<T, P> operator*(tmat3x2<T, P> const & m, T const & s);
+
177 
+
178  template <typename T, precision P>
+
179  GLM_FUNC_DECL tmat3x2<T, P> operator*(T const & s, tmat3x2<T, P> const & m);
+
180 
+
181  template <typename T, precision P>
+
182  GLM_FUNC_DECL typename tmat3x2<T, P>::col_type operator*(tmat3x2<T, P> const & m, typename tmat3x2<T, P>::row_type const & v);
+
183 
+
184  template <typename T, precision P>
+
185  GLM_FUNC_DECL typename tmat3x2<T, P>::row_type operator*(typename tmat3x2<T, P>::col_type const & v, tmat3x2<T, P> const & m);
+
186 
+
187  template <typename T, precision P>
+
188  GLM_FUNC_DECL tmat2x2<T, P> operator*(tmat3x2<T, P> const & m1, tmat2x3<T, P> const & m2);
+
189 
+
190  template <typename T, precision P>
+
191  GLM_FUNC_DECL tmat3x2<T, P> operator*(tmat3x2<T, P> const & m1, tmat3x3<T, P> const & m2);
+
192 
+
193  template <typename T, precision P>
+
194  GLM_FUNC_DECL tmat4x2<T, P> operator*(tmat3x2<T, P> const & m1, tmat4x3<T, P> const & m2);
+
195 
+
196  template <typename T, precision P>
+
197  GLM_FUNC_DECL tmat3x2<T, P> operator/(tmat3x2<T, P> const & m, T const & s);
+
198 
+
199  template <typename T, precision P>
+
200  GLM_FUNC_DECL tmat3x2<T, P> operator/(T const & s, tmat3x2<T, P> const & m);
+
201 
+
202  // -- Boolean operators --
+
203 
+
204  template <typename T, precision P>
+
205  GLM_FUNC_DECL bool operator==(tmat3x2<T, P> const & m1, tmat3x2<T, P> const & m2);
+
206 
+
207  template <typename T, precision P>
+
208  GLM_FUNC_DECL bool operator!=(tmat3x2<T, P> const & m1, tmat3x2<T, P> const & m2);
+
209 }//namespace glm
+
210 
+
211 #ifndef GLM_EXTERNAL_TEMPLATE
+
212 #include "type_mat3x2.inl"
+
213 #endif
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00125.html b/external/glm/doc/api/a00125.html new file mode 100644 index 0000000..5583ae7 --- /dev/null +++ b/external/glm/doc/api/a00125.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: type_mat3x3.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat3x3.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2005-01-27 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file type_mat3x3.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00125_source.html b/external/glm/doc/api/a00125_source.html new file mode 100644 index 0000000..a07108a --- /dev/null +++ b/external/glm/doc/api/a00125_source.html @@ -0,0 +1,269 @@ + + + + + + +0.9.7: type_mat3x3.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat3x3.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "../fwd.hpp"
+
36 #include "type_vec3.hpp"
+
37 #include "type_mat.hpp"
+
38 #include <limits>
+
39 #include <cstddef>
+
40 
+
41 namespace glm
+
42 {
+
43  template <typename T, precision P = defaultp>
+
44  struct tmat3x3
+
45  {
+
46  typedef tvec3<T, P> col_type;
+
47  typedef tvec3<T, P> row_type;
+
48  typedef tmat3x3<T, P> type;
+
49  typedef tmat3x3<T, P> transpose_type;
+
50  typedef T value_type;
+
51 
+
52 # ifdef GLM_META_PROG_HELPERS
+
53  static GLM_RELAXED_CONSTEXPR length_t components = 3;
+
54  static GLM_RELAXED_CONSTEXPR length_t cols = 3;
+
55  static GLM_RELAXED_CONSTEXPR length_t rows = 3;
+
56  static GLM_RELAXED_CONSTEXPR precision prec = P;
+
57 # endif//GLM_META_PROG_HELPERS
+
58 
+
59  template <typename U, precision Q>
+
60  friend tvec3<U, Q> operator/(tmat3x3<U, Q> const & m, tvec3<U, Q> const & v);
+
61  template <typename U, precision Q>
+
62  friend tvec3<U, Q> operator/(tvec3<U, Q> const & v, tmat3x3<U, Q> const & m);
+
63 
+
64  private:
+
65  col_type value[3];
+
66 
+
67  public:
+
68  // -- Constructors --
+
69 
+
70  GLM_FUNC_DECL tmat3x3() GLM_DEFAULT_CTOR;
+
71  GLM_FUNC_DECL tmat3x3(tmat3x3<T, P> const & m) GLM_DEFAULT;
+
72  template <precision Q>
+
73  GLM_FUNC_DECL tmat3x3(tmat3x3<T, Q> const & m);
+
74 
+
75  GLM_FUNC_DECL explicit tmat3x3(ctor);
+
76  GLM_FUNC_DECL explicit tmat3x3(T const & s);
+
77  GLM_FUNC_DECL tmat3x3(
+
78  T const & x0, T const & y0, T const & z0,
+
79  T const & x1, T const & y1, T const & z1,
+
80  T const & x2, T const & y2, T const & z2);
+
81  GLM_FUNC_DECL tmat3x3(
+
82  col_type const & v0,
+
83  col_type const & v1,
+
84  col_type const & v2);
+
85 
+
86  // -- Conversions --
+
87 
+
88  template<
+
89  typename X1, typename Y1, typename Z1,
+
90  typename X2, typename Y2, typename Z2,
+
91  typename X3, typename Y3, typename Z3>
+
92  GLM_FUNC_DECL tmat3x3(
+
93  X1 const & x1, Y1 const & y1, Z1 const & z1,
+
94  X2 const & x2, Y2 const & y2, Z2 const & z2,
+
95  X3 const & x3, Y3 const & y3, Z3 const & z3);
+
96 
+
97  template <typename V1, typename V2, typename V3>
+
98  GLM_FUNC_DECL tmat3x3(
+
99  tvec3<V1, P> const & v1,
+
100  tvec3<V2, P> const & v2,
+
101  tvec3<V3, P> const & v3);
+
102 
+
103  // -- Matrix conversions --
+
104 
+
105  template <typename U, precision Q>
+
106  GLM_FUNC_DECL GLM_EXPLICIT tmat3x3(tmat3x3<U, Q> const & m);
+
107 
+
108  GLM_FUNC_DECL explicit tmat3x3(tmat2x2<T, P> const & x);
+
109  GLM_FUNC_DECL explicit tmat3x3(tmat4x4<T, P> const & x);
+
110  GLM_FUNC_DECL explicit tmat3x3(tmat2x3<T, P> const & x);
+
111  GLM_FUNC_DECL explicit tmat3x3(tmat3x2<T, P> const & x);
+
112  GLM_FUNC_DECL explicit tmat3x3(tmat2x4<T, P> const & x);
+
113  GLM_FUNC_DECL explicit tmat3x3(tmat4x2<T, P> const & x);
+
114  GLM_FUNC_DECL explicit tmat3x3(tmat3x4<T, P> const & x);
+
115  GLM_FUNC_DECL explicit tmat3x3(tmat4x3<T, P> const & x);
+
116 
+
117  // -- Accesses --
+
118 
+
119 # ifdef GLM_FORCE_SIZE_FUNC
+
120  typedef size_t size_type;
+
121  GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
+
122 
+
123  GLM_FUNC_DECL col_type & operator[](size_type i);
+
124  GLM_FUNC_DECL col_type const & operator[](size_type i) const;
+
125 # else
+
126  typedef length_t length_type;
+
127  GLM_FUNC_DECL GLM_CONSTEXPR length_type length() const;
+
128 
+
129  GLM_FUNC_DECL col_type & operator[](length_type i);
+
130  GLM_FUNC_DECL col_type const & operator[](length_type i) const;
+
131 # endif//GLM_FORCE_SIZE_FUNC
+
132 
+
133  // -- Unary arithmetic operators --
+
134 
+
135  GLM_FUNC_DECL tmat3x3<T, P> & operator=(tmat3x3<T, P> const & m) GLM_DEFAULT;
+
136 
+
137  template <typename U>
+
138  GLM_FUNC_DECL tmat3x3<T, P> & operator=(tmat3x3<U, P> const & m);
+
139  template <typename U>
+
140  GLM_FUNC_DECL tmat3x3<T, P> & operator+=(U s);
+
141  template <typename U>
+
142  GLM_FUNC_DECL tmat3x3<T, P> & operator+=(tmat3x3<U, P> const & m);
+
143  template <typename U>
+
144  GLM_FUNC_DECL tmat3x3<T, P> & operator-=(U s);
+
145  template <typename U>
+
146  GLM_FUNC_DECL tmat3x3<T, P> & operator-=(tmat3x3<U, P> const & m);
+
147  template <typename U>
+
148  GLM_FUNC_DECL tmat3x3<T, P> & operator*=(U s);
+
149  template <typename U>
+
150  GLM_FUNC_DECL tmat3x3<T, P> & operator*=(tmat3x3<U, P> const & m);
+
151  template <typename U>
+
152  GLM_FUNC_DECL tmat3x3<T, P> & operator/=(U s);
+
153  template <typename U>
+
154  GLM_FUNC_DECL tmat3x3<T, P> & operator/=(tmat3x3<U, P> const & m);
+
155 
+
156  // -- Increment and decrement operators --
+
157 
+
158  GLM_FUNC_DECL tmat3x3<T, P> & operator++();
+
159  GLM_FUNC_DECL tmat3x3<T, P> & operator--();
+
160  GLM_FUNC_DECL tmat3x3<T, P> operator++(int);
+
161  GLM_FUNC_DECL tmat3x3<T, P> operator--(int);
+
162  };
+
163 
+
164  // -- Unary operators --
+
165 
+
166  template <typename T, precision P>
+
167  GLM_FUNC_DECL tmat3x3<T, P> const operator-(tmat3x3<T, P> const & m);
+
168 
+
169  // -- Binary operators --
+
170 
+
171  template <typename T, precision P>
+
172  GLM_FUNC_DECL tmat3x3<T, P> operator+(tmat3x3<T, P> const & m, T const & s);
+
173 
+
174  template <typename T, precision P>
+
175  GLM_FUNC_DECL tmat3x3<T, P> operator+(T const & s, tmat3x3<T, P> const & m);
+
176 
+
177  template <typename T, precision P>
+
178  GLM_FUNC_DECL tmat3x3<T, P> operator+(tmat3x3<T, P> const & m1, tmat3x3<T, P> const & m2);
+
179 
+
180  template <typename T, precision P>
+
181  GLM_FUNC_DECL tmat3x3<T, P> operator-(tmat3x3<T, P> const & m, T const & s);
+
182 
+
183  template <typename T, precision P>
+
184  GLM_FUNC_DECL tmat3x3<T, P> operator-(T const & s, tmat3x3<T, P> const & m);
+
185 
+
186  template <typename T, precision P>
+
187  GLM_FUNC_DECL tmat3x3<T, P> operator-(tmat3x3<T, P> const & m1, tmat3x3<T, P> const & m2);
+
188 
+
189  template <typename T, precision P>
+
190  GLM_FUNC_DECL tmat3x3<T, P> operator*(tmat3x3<T, P> const & m, T const & s);
+
191 
+
192  template <typename T, precision P>
+
193  GLM_FUNC_DECL tmat3x3<T, P> operator*(T const & s, tmat3x3<T, P> const & m);
+
194 
+
195  template <typename T, precision P>
+
196  GLM_FUNC_DECL typename tmat3x3<T, P>::col_type operator*(tmat3x3<T, P> const & m, typename tmat3x3<T, P>::row_type const & v);
+
197 
+
198  template <typename T, precision P>
+
199  GLM_FUNC_DECL typename tmat3x3<T, P>::row_type operator*(typename tmat3x3<T, P>::col_type const & v, tmat3x3<T, P> const & m);
+
200 
+
201  template <typename T, precision P>
+
202  GLM_FUNC_DECL tmat3x3<T, P> operator*(tmat3x3<T, P> const & m1, tmat3x3<T, P> const & m2);
+
203 
+
204  template <typename T, precision P>
+
205  GLM_FUNC_DECL tmat2x3<T, P> operator*(tmat3x3<T, P> const & m1, tmat2x3<T, P> const & m2);
+
206 
+
207  template <typename T, precision P>
+
208  GLM_FUNC_DECL tmat4x3<T, P> operator*(tmat3x3<T, P> const & m1, tmat4x3<T, P> const & m2);
+
209 
+
210  template <typename T, precision P>
+
211  GLM_FUNC_DECL tmat3x3<T, P> operator/(tmat3x3<T, P> const & m, T const & s);
+
212 
+
213  template <typename T, precision P>
+
214  GLM_FUNC_DECL tmat3x3<T, P> operator/(T const & s, tmat3x3<T, P> const & m);
+
215 
+
216  template <typename T, precision P>
+
217  GLM_FUNC_DECL typename tmat3x3<T, P>::col_type operator/(tmat3x3<T, P> const & m, typename tmat3x3<T, P>::row_type const & v);
+
218 
+
219  template <typename T, precision P>
+
220  GLM_FUNC_DECL typename tmat3x3<T, P>::row_type operator/(typename tmat3x3<T, P>::col_type const & v, tmat3x3<T, P> const & m);
+
221 
+
222  template <typename T, precision P>
+
223  GLM_FUNC_DECL tmat3x3<T, P> operator/(tmat3x3<T, P> const & m1, tmat3x3<T, P> const & m2);
+
224 
+
225  // -- Boolean operators --
+
226 
+
227  template <typename T, precision P>
+
228  GLM_FUNC_DECL bool operator==(tmat3x3<T, P> const & m1, tmat3x3<T, P> const & m2);
+
229 
+
230  template <typename T, precision P>
+
231  GLM_FUNC_DECL bool operator!=(tmat3x3<T, P> const & m1, tmat3x3<T, P> const & m2);
+
232 }//namespace glm
+
233 
+
234 #ifndef GLM_EXTERNAL_TEMPLATE
+
235 #include "type_mat3x3.inl"
+
236 #endif
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00126.html b/external/glm/doc/api/a00126.html new file mode 100644 index 0000000..8fbce27 --- /dev/null +++ b/external/glm/doc/api/a00126.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: type_mat3x4.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat3x4.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2006-08-05 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file type_mat3x4.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00126_source.html b/external/glm/doc/api/a00126_source.html new file mode 100644 index 0000000..3687710 --- /dev/null +++ b/external/glm/doc/api/a00126_source.html @@ -0,0 +1,247 @@ + + + + + + +0.9.7: type_mat3x4.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat3x4.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "../fwd.hpp"
+
36 #include "type_vec3.hpp"
+
37 #include "type_vec4.hpp"
+
38 #include "type_mat.hpp"
+
39 #include <limits>
+
40 #include <cstddef>
+
41 
+
42 namespace glm
+
43 {
+
44  template <typename T, precision P = defaultp>
+
45  struct tmat3x4
+
46  {
+
47  typedef tvec4<T, P> col_type;
+
48  typedef tvec3<T, P> row_type;
+
49  typedef tmat3x4<T, P> type;
+
50  typedef tmat4x3<T, P> transpose_type;
+
51  typedef T value_type;
+
52 
+
53 # ifdef GLM_META_PROG_HELPERS
+
54  static GLM_RELAXED_CONSTEXPR length_t components = 3;
+
55  static GLM_RELAXED_CONSTEXPR length_t cols = 3;
+
56  static GLM_RELAXED_CONSTEXPR length_t rows = 4;
+
57  static GLM_RELAXED_CONSTEXPR precision prec = P;
+
58 # endif//GLM_META_PROG_HELPERS
+
59 
+
60  private:
+
61  col_type value[3];
+
62 
+
63  public:
+
64  // -- Constructors --
+
65 
+
66  GLM_FUNC_DECL tmat3x4() GLM_DEFAULT_CTOR;
+
67  GLM_FUNC_DECL tmat3x4(tmat3x4<T, P> const & m) GLM_DEFAULT;
+
68  template <precision Q>
+
69  GLM_FUNC_DECL tmat3x4(tmat3x4<T, Q> const & m);
+
70 
+
71  GLM_FUNC_DECL explicit tmat3x4(ctor);
+
72  GLM_FUNC_DECL explicit tmat3x4(T const & s);
+
73  GLM_FUNC_DECL tmat3x4(
+
74  T const & x0, T const & y0, T const & z0, T const & w0,
+
75  T const & x1, T const & y1, T const & z1, T const & w1,
+
76  T const & x2, T const & y2, T const & z2, T const & w2);
+
77  GLM_FUNC_DECL tmat3x4(
+
78  col_type const & v0,
+
79  col_type const & v1,
+
80  col_type const & v2);
+
81 
+
82  // -- Conversions --
+
83 
+
84  template<
+
85  typename X1, typename Y1, typename Z1, typename W1,
+
86  typename X2, typename Y2, typename Z2, typename W2,
+
87  typename X3, typename Y3, typename Z3, typename W3>
+
88  GLM_FUNC_DECL tmat3x4(
+
89  X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1,
+
90  X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2,
+
91  X3 const & x3, Y3 const & y3, Z3 const & z3, W3 const & w3);
+
92 
+
93  template <typename V1, typename V2, typename V3>
+
94  GLM_FUNC_DECL tmat3x4(
+
95  tvec4<V1, P> const & v1,
+
96  tvec4<V2, P> const & v2,
+
97  tvec4<V3, P> const & v3);
+
98 
+
99  // -- Matrix conversions --
+
100 
+
101  template <typename U, precision Q>
+
102  GLM_FUNC_DECL GLM_EXPLICIT tmat3x4(tmat3x4<U, Q> const & m);
+
103 
+
104  GLM_FUNC_DECL explicit tmat3x4(tmat2x2<T, P> const & x);
+
105  GLM_FUNC_DECL explicit tmat3x4(tmat3x3<T, P> const & x);
+
106  GLM_FUNC_DECL explicit tmat3x4(tmat4x4<T, P> const & x);
+
107  GLM_FUNC_DECL explicit tmat3x4(tmat2x3<T, P> const & x);
+
108  GLM_FUNC_DECL explicit tmat3x4(tmat3x2<T, P> const & x);
+
109  GLM_FUNC_DECL explicit tmat3x4(tmat2x4<T, P> const & x);
+
110  GLM_FUNC_DECL explicit tmat3x4(tmat4x2<T, P> const & x);
+
111  GLM_FUNC_DECL explicit tmat3x4(tmat4x3<T, P> const & x);
+
112 
+
113  // -- Accesses --
+
114 
+
115 # ifdef GLM_FORCE_SIZE_FUNC
+
116  typedef size_t size_type;
+
117  GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
+
118 
+
119  GLM_FUNC_DECL col_type & operator[](size_type i);
+
120  GLM_FUNC_DECL col_type const & operator[](size_type i) const;
+
121 # else
+
122  typedef length_t length_type;
+
123  GLM_FUNC_DECL GLM_CONSTEXPR length_type length() const;
+
124 
+
125  GLM_FUNC_DECL col_type & operator[](length_type i);
+
126  GLM_FUNC_DECL col_type const & operator[](length_type i) const;
+
127 # endif//GLM_FORCE_SIZE_FUNC
+
128 
+
129  // -- Unary arithmetic operators --
+
130 
+
131  GLM_FUNC_DECL tmat3x4<T, P> & operator=(tmat3x4<T, P> const & m) GLM_DEFAULT;
+
132 
+
133  template <typename U>
+
134  GLM_FUNC_DECL tmat3x4<T, P> & operator=(tmat3x4<U, P> const & m);
+
135  template <typename U>
+
136  GLM_FUNC_DECL tmat3x4<T, P> & operator+=(U s);
+
137  template <typename U>
+
138  GLM_FUNC_DECL tmat3x4<T, P> & operator+=(tmat3x4<U, P> const & m);
+
139  template <typename U>
+
140  GLM_FUNC_DECL tmat3x4<T, P> & operator-=(U s);
+
141  template <typename U>
+
142  GLM_FUNC_DECL tmat3x4<T, P> & operator-=(tmat3x4<U, P> const & m);
+
143  template <typename U>
+
144  GLM_FUNC_DECL tmat3x4<T, P> & operator*=(U s);
+
145  template <typename U>
+
146  GLM_FUNC_DECL tmat3x4<T, P> & operator/=(U s);
+
147 
+
148  // -- Increment and decrement operators --
+
149 
+
150  GLM_FUNC_DECL tmat3x4<T, P> & operator++();
+
151  GLM_FUNC_DECL tmat3x4<T, P> & operator--();
+
152  GLM_FUNC_DECL tmat3x4<T, P> operator++(int);
+
153  GLM_FUNC_DECL tmat3x4<T, P> operator--(int);
+
154  };
+
155 
+
156  // -- Unary operators --
+
157 
+
158  template <typename T, precision P>
+
159  GLM_FUNC_DECL tmat3x4<T, P> const operator-(tmat3x4<T, P> const & m);
+
160 
+
161  // -- Binary operators --
+
162 
+
163  template <typename T, precision P>
+
164  GLM_FUNC_DECL tmat3x4<T, P> operator+(tmat3x4<T, P> const & m, T const & s);
+
165 
+
166  template <typename T, precision P>
+
167  GLM_FUNC_DECL tmat3x4<T, P> operator+(tmat3x4<T, P> const & m1, tmat3x4<T, P> const & m2);
+
168 
+
169  template <typename T, precision P>
+
170  GLM_FUNC_DECL tmat3x4<T, P> operator-(tmat3x4<T, P> const & m, T const & s);
+
171 
+
172  template <typename T, precision P>
+
173  GLM_FUNC_DECL tmat3x4<T, P> operator-(tmat3x4<T, P> const & m1, tmat3x4<T, P> const & m2);
+
174 
+
175  template <typename T, precision P>
+
176  GLM_FUNC_DECL tmat3x4<T, P> operator*(tmat3x4<T, P> const & m, T const & s);
+
177 
+
178  template <typename T, precision P>
+
179  GLM_FUNC_DECL tmat3x4<T, P> operator*(T const & s, tmat3x4<T, P> const & m);
+
180 
+
181  template <typename T, precision P>
+
182  GLM_FUNC_DECL typename tmat3x4<T, P>::col_type operator*(tmat3x4<T, P> const & m, typename tmat3x4<T, P>::row_type const & v);
+
183 
+
184  template <typename T, precision P>
+
185  GLM_FUNC_DECL typename tmat3x4<T, P>::row_type operator*(typename tmat3x4<T, P>::col_type const & v, tmat3x4<T, P> const & m);
+
186 
+
187  template <typename T, precision P>
+
188  GLM_FUNC_DECL tmat4x4<T, P> operator*(tmat3x4<T, P> const & m1, tmat4x3<T, P> const & m2);
+
189 
+
190  template <typename T, precision P>
+
191  GLM_FUNC_DECL tmat2x4<T, P> operator*(tmat3x4<T, P> const & m1, tmat2x3<T, P> const & m2);
+
192 
+
193  template <typename T, precision P>
+
194  GLM_FUNC_DECL tmat3x4<T, P> operator*(tmat3x4<T, P> const & m1, tmat3x3<T, P> const & m2);
+
195 
+
196  template <typename T, precision P>
+
197  GLM_FUNC_DECL tmat3x4<T, P> operator/(tmat3x4<T, P> const & m, T const & s);
+
198 
+
199  template <typename T, precision P>
+
200  GLM_FUNC_DECL tmat3x4<T, P> operator/(T const & s, tmat3x4<T, P> const & m);
+
201 
+
202  // -- Boolean operators --
+
203 
+
204  template <typename T, precision P>
+
205  GLM_FUNC_DECL bool operator==(tmat3x4<T, P> const & m1, tmat3x4<T, P> const & m2);
+
206 
+
207  template <typename T, precision P>
+
208  GLM_FUNC_DECL bool operator!=(tmat3x4<T, P> const & m1, tmat3x4<T, P> const & m2);
+
209 }//namespace glm
+
210 
+
211 #ifndef GLM_EXTERNAL_TEMPLATE
+
212 #include "type_mat3x4.inl"
+
213 #endif
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00127.html b/external/glm/doc/api/a00127.html new file mode 100644 index 0000000..40f4f05 --- /dev/null +++ b/external/glm/doc/api/a00127.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: type_mat4x2.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat4x2.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2006-10-01 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file type_mat4x2.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00127_source.html b/external/glm/doc/api/a00127_source.html new file mode 100644 index 0000000..d2d6007 --- /dev/null +++ b/external/glm/doc/api/a00127_source.html @@ -0,0 +1,252 @@ + + + + + + +0.9.7: type_mat4x2.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat4x2.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "../fwd.hpp"
+
36 #include "type_vec2.hpp"
+
37 #include "type_vec4.hpp"
+
38 #include "type_mat.hpp"
+
39 #include <limits>
+
40 #include <cstddef>
+
41 
+
42 namespace glm
+
43 {
+
44  template <typename T, precision P = defaultp>
+
45  struct tmat4x2
+
46  {
+
47  typedef tvec2<T, P> col_type;
+
48  typedef tvec4<T, P> row_type;
+
49  typedef tmat4x2<T, P> type;
+
50  typedef tmat2x4<T, P> transpose_type;
+
51  typedef T value_type;
+
52 
+
53 # ifdef GLM_META_PROG_HELPERS
+
54  static GLM_RELAXED_CONSTEXPR length_t components = 4;
+
55  static GLM_RELAXED_CONSTEXPR length_t cols = 4;
+
56  static GLM_RELAXED_CONSTEXPR length_t rows = 2;
+
57  static GLM_RELAXED_CONSTEXPR precision prec = P;
+
58 # endif//GLM_META_PROG_HELPERS
+
59 
+
60  private:
+
61  col_type value[4];
+
62 
+
63  public:
+
64  // -- Constructors --
+
65 
+
66  GLM_FUNC_DECL tmat4x2() GLM_DEFAULT_CTOR;
+
67  GLM_FUNC_DECL tmat4x2(tmat4x2<T, P> const & m) GLM_DEFAULT;
+
68  template <precision Q>
+
69  GLM_FUNC_DECL tmat4x2(tmat4x2<T, Q> const & m);
+
70 
+
71  GLM_FUNC_DECL explicit tmat4x2(ctor);
+
72  GLM_FUNC_DECL explicit tmat4x2(T const & x);
+
73  GLM_FUNC_DECL tmat4x2(
+
74  T const & x0, T const & y0,
+
75  T const & x1, T const & y1,
+
76  T const & x2, T const & y2,
+
77  T const & x3, T const & y3);
+
78  GLM_FUNC_DECL tmat4x2(
+
79  col_type const & v0,
+
80  col_type const & v1,
+
81  col_type const & v2,
+
82  col_type const & v3);
+
83 
+
84  // -- Conversions --
+
85 
+
86  template <
+
87  typename X1, typename Y1,
+
88  typename X2, typename Y2,
+
89  typename X3, typename Y3,
+
90  typename X4, typename Y4>
+
91  GLM_FUNC_DECL tmat4x2(
+
92  X1 const & x1, Y1 const & y1,
+
93  X2 const & x2, Y2 const & y2,
+
94  X3 const & x3, Y3 const & y3,
+
95  X4 const & x4, Y4 const & y4);
+
96 
+
97  template <typename V1, typename V2, typename V3, typename V4>
+
98  GLM_FUNC_DECL tmat4x2(
+
99  tvec2<V1, P> const & v1,
+
100  tvec2<V2, P> const & v2,
+
101  tvec2<V3, P> const & v3,
+
102  tvec2<V4, P> const & v4);
+
103 
+
104  // -- Matrix conversions --
+
105 
+
106  template <typename U, precision Q>
+
107  GLM_FUNC_DECL GLM_EXPLICIT tmat4x2(tmat4x2<U, Q> const & m);
+
108 
+
109  GLM_FUNC_DECL explicit tmat4x2(tmat2x2<T, P> const & x);
+
110  GLM_FUNC_DECL explicit tmat4x2(tmat3x3<T, P> const & x);
+
111  GLM_FUNC_DECL explicit tmat4x2(tmat4x4<T, P> const & x);
+
112  GLM_FUNC_DECL explicit tmat4x2(tmat2x3<T, P> const & x);
+
113  GLM_FUNC_DECL explicit tmat4x2(tmat3x2<T, P> const & x);
+
114  GLM_FUNC_DECL explicit tmat4x2(tmat2x4<T, P> const & x);
+
115  GLM_FUNC_DECL explicit tmat4x2(tmat4x3<T, P> const & x);
+
116  GLM_FUNC_DECL explicit tmat4x2(tmat3x4<T, P> const & x);
+
117 
+
118  // -- Accesses --
+
119 
+
120 # ifdef GLM_FORCE_SIZE_FUNC
+
121  typedef size_t size_type;
+
122  GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
+
123 
+
124  GLM_FUNC_DECL col_type & operator[](size_type i);
+
125  GLM_FUNC_DECL col_type const & operator[](size_type i) const;
+
126 # else
+
127  typedef length_t length_type;
+
128  GLM_FUNC_DECL GLM_CONSTEXPR length_type length() const;
+
129 
+
130  GLM_FUNC_DECL col_type & operator[](length_type i);
+
131  GLM_FUNC_DECL col_type const & operator[](length_type i) const;
+
132 # endif//GLM_FORCE_SIZE_FUNC
+
133 
+
134  // -- Unary arithmetic operators --
+
135 
+
136  GLM_FUNC_DECL tmat4x2<T, P> & operator=(tmat4x2<T, P> const & m) GLM_DEFAULT;
+
137 
+
138  template <typename U>
+
139  GLM_FUNC_DECL tmat4x2<T, P> & operator=(tmat4x2<U, P> const & m);
+
140  template <typename U>
+
141  GLM_FUNC_DECL tmat4x2<T, P> & operator+=(U s);
+
142  template <typename U>
+
143  GLM_FUNC_DECL tmat4x2<T, P> & operator+=(tmat4x2<U, P> const & m);
+
144  template <typename U>
+
145  GLM_FUNC_DECL tmat4x2<T, P> & operator-=(U s);
+
146  template <typename U>
+
147  GLM_FUNC_DECL tmat4x2<T, P> & operator-=(tmat4x2<U, P> const & m);
+
148  template <typename U>
+
149  GLM_FUNC_DECL tmat4x2<T, P> & operator*=(U s);
+
150  template <typename U>
+
151  GLM_FUNC_DECL tmat4x2<T, P> & operator/=(U s);
+
152 
+
153  // -- Increment and decrement operators --
+
154 
+
155  GLM_FUNC_DECL tmat4x2<T, P> & operator++ ();
+
156  GLM_FUNC_DECL tmat4x2<T, P> & operator-- ();
+
157  GLM_FUNC_DECL tmat4x2<T, P> operator++(int);
+
158  GLM_FUNC_DECL tmat4x2<T, P> operator--(int);
+
159  };
+
160 
+
161  // -- Unary operators --
+
162 
+
163  template <typename T, precision P>
+
164  GLM_FUNC_DECL tmat4x2<T, P> const operator-(tmat4x2<T, P> const & m);
+
165 
+
166  // -- Binary operators --
+
167 
+
168  template <typename T, precision P>
+
169  GLM_FUNC_DECL tmat4x2<T, P> operator+(tmat4x2<T, P> const & m, T const & s);
+
170 
+
171  template <typename T, precision P>
+
172  GLM_FUNC_DECL tmat4x2<T, P> operator+(tmat4x2<T, P> const & m1, tmat4x2<T, P> const & m2);
+
173 
+
174  template <typename T, precision P>
+
175  GLM_FUNC_DECL tmat4x2<T, P> operator-(tmat4x2<T, P> const & m, T const & s);
+
176 
+
177  template <typename T, precision P>
+
178  GLM_FUNC_DECL tmat4x2<T, P> operator-(tmat4x2<T, P> const & m1, tmat4x2<T, P> const & m2);
+
179 
+
180  template <typename T, precision P>
+
181  GLM_FUNC_DECL tmat4x2<T, P> operator*(tmat4x2<T, P> const & m, T const & s);
+
182 
+
183  template <typename T, precision P>
+
184  GLM_FUNC_DECL tmat4x2<T, P> operator*(T const & s, tmat4x2<T, P> const & m);
+
185 
+
186  template <typename T, precision P>
+
187  GLM_FUNC_DECL typename tmat4x2<T, P>::col_type operator*(tmat4x2<T, P> const & m, typename tmat4x2<T, P>::row_type const & v);
+
188 
+
189  template <typename T, precision P>
+
190  GLM_FUNC_DECL typename tmat4x2<T, P>::row_type operator*(typename tmat4x2<T, P>::col_type const & v, tmat4x2<T, P> const & m);
+
191 
+
192  template <typename T, precision P>
+
193  GLM_FUNC_DECL tmat3x2<T, P> operator*(tmat4x2<T, P> const & m1, tmat3x4<T, P> const & m2);
+
194 
+
195  template <typename T, precision P>
+
196  GLM_FUNC_DECL tmat4x2<T, P> operator*(tmat4x2<T, P> const & m1, tmat4x4<T, P> const & m2);
+
197 
+
198  template <typename T, precision P>
+
199  GLM_FUNC_DECL tmat2x3<T, P> operator*(tmat4x3<T, P> const & m1, tmat2x4<T, P> const & m2);
+
200 
+
201  template <typename T, precision P>
+
202  GLM_FUNC_DECL tmat4x2<T, P> operator/(tmat4x2<T, P> const & m, T const & s);
+
203 
+
204  template <typename T, precision P>
+
205  GLM_FUNC_DECL tmat4x2<T, P> operator/(T const & s, tmat4x2<T, P> const & m);
+
206 
+
207  // -- Boolean operators --
+
208 
+
209  template <typename T, precision P>
+
210  GLM_FUNC_DECL bool operator==(tmat4x2<T, P> const & m1, tmat4x2<T, P> const & m2);
+
211 
+
212  template <typename T, precision P>
+
213  GLM_FUNC_DECL bool operator!=(tmat4x2<T, P> const & m1, tmat4x2<T, P> const & m2);
+
214 }//namespace glm
+
215 
+
216 #ifndef GLM_EXTERNAL_TEMPLATE
+
217 #include "type_mat4x2.inl"
+
218 #endif
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00128.html b/external/glm/doc/api/a00128.html new file mode 100644 index 0000000..d21cc31 --- /dev/null +++ b/external/glm/doc/api/a00128.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: type_mat4x3.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat4x3.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2006-08-04 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file type_mat4x3.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00128_source.html b/external/glm/doc/api/a00128_source.html new file mode 100644 index 0000000..52d8417 --- /dev/null +++ b/external/glm/doc/api/a00128_source.html @@ -0,0 +1,252 @@ + + + + + + +0.9.7: type_mat4x3.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat4x3.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "../fwd.hpp"
+
36 #include "type_vec3.hpp"
+
37 #include "type_vec4.hpp"
+
38 #include "type_mat.hpp"
+
39 #include <limits>
+
40 #include <cstddef>
+
41 
+
42 namespace glm
+
43 {
+
44  template <typename T, precision P = defaultp>
+
45  struct tmat4x3
+
46  {
+
47  typedef tvec3<T, P> col_type;
+
48  typedef tvec4<T, P> row_type;
+
49  typedef tmat4x3<T, P> type;
+
50  typedef tmat3x4<T, P> transpose_type;
+
51  typedef T value_type;
+
52 
+
53 # ifdef GLM_META_PROG_HELPERS
+
54  static GLM_RELAXED_CONSTEXPR length_t components = 4;
+
55  static GLM_RELAXED_CONSTEXPR length_t cols = 4;
+
56  static GLM_RELAXED_CONSTEXPR length_t rows = 3;
+
57  static GLM_RELAXED_CONSTEXPR precision prec = P;
+
58 # endif//GLM_META_PROG_HELPERS
+
59 
+
60  private:
+
61  col_type value[4];
+
62 
+
63  public:
+
64  // -- Constructors --
+
65 
+
66  GLM_FUNC_DECL tmat4x3() GLM_DEFAULT_CTOR;
+
67  GLM_FUNC_DECL tmat4x3(tmat4x3<T, P> const & m) GLM_DEFAULT;
+
68  template <precision Q>
+
69  GLM_FUNC_DECL tmat4x3(tmat4x3<T, Q> const & m);
+
70 
+
71  GLM_FUNC_DECL explicit tmat4x3(ctor);
+
72  GLM_FUNC_DECL explicit tmat4x3(T const & x);
+
73  GLM_FUNC_DECL tmat4x3(
+
74  T const & x0, T const & y0, T const & z0,
+
75  T const & x1, T const & y1, T const & z1,
+
76  T const & x2, T const & y2, T const & z2,
+
77  T const & x3, T const & y3, T const & z3);
+
78  GLM_FUNC_DECL tmat4x3(
+
79  col_type const & v0,
+
80  col_type const & v1,
+
81  col_type const & v2,
+
82  col_type const & v3);
+
83 
+
84  // -- Conversions --
+
85 
+
86  template <
+
87  typename X1, typename Y1, typename Z1,
+
88  typename X2, typename Y2, typename Z2,
+
89  typename X3, typename Y3, typename Z3,
+
90  typename X4, typename Y4, typename Z4>
+
91  GLM_FUNC_DECL tmat4x3(
+
92  X1 const & x1, Y1 const & y1, Z1 const & z1,
+
93  X2 const & x2, Y2 const & y2, Z2 const & z2,
+
94  X3 const & x3, Y3 const & y3, Z3 const & z3,
+
95  X4 const & x4, Y4 const & y4, Z4 const & z4);
+
96 
+
97  template <typename V1, typename V2, typename V3, typename V4>
+
98  GLM_FUNC_DECL tmat4x3(
+
99  tvec3<V1, P> const & v1,
+
100  tvec3<V2, P> const & v2,
+
101  tvec3<V3, P> const & v3,
+
102  tvec3<V4, P> const & v4);
+
103 
+
104  // -- Matrix conversions --
+
105 
+
106  template <typename U, precision Q>
+
107  GLM_FUNC_DECL GLM_EXPLICIT tmat4x3(tmat4x3<U, Q> const & m);
+
108 
+
109  GLM_FUNC_DECL explicit tmat4x3(tmat2x2<T, P> const & x);
+
110  GLM_FUNC_DECL explicit tmat4x3(tmat3x3<T, P> const & x);
+
111  GLM_FUNC_DECL explicit tmat4x3(tmat4x4<T, P> const & x);
+
112  GLM_FUNC_DECL explicit tmat4x3(tmat2x3<T, P> const & x);
+
113  GLM_FUNC_DECL explicit tmat4x3(tmat3x2<T, P> const & x);
+
114  GLM_FUNC_DECL explicit tmat4x3(tmat2x4<T, P> const & x);
+
115  GLM_FUNC_DECL explicit tmat4x3(tmat4x2<T, P> const & x);
+
116  GLM_FUNC_DECL explicit tmat4x3(tmat3x4<T, P> const & x);
+
117 
+
118  // -- Accesses --
+
119 
+
120 # ifdef GLM_FORCE_SIZE_FUNC
+
121  typedef size_t size_type;
+
122  GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
+
123 
+
124  GLM_FUNC_DECL col_type & operator[](size_type i);
+
125  GLM_FUNC_DECL col_type const & operator[](size_type i) const;
+
126 # else
+
127  typedef length_t length_type;
+
128  GLM_FUNC_DECL GLM_CONSTEXPR length_type length() const;
+
129 
+
130  GLM_FUNC_DECL col_type & operator[](length_type i);
+
131  GLM_FUNC_DECL col_type const & operator[](length_type i) const;
+
132 # endif//GLM_FORCE_SIZE_FUNC
+
133 
+
134  // -- Unary arithmetic operators --
+
135 
+
136  GLM_FUNC_DECL tmat4x3<T, P> & operator=(tmat4x3<T, P> const & m) GLM_DEFAULT;
+
137 
+
138  template <typename U>
+
139  GLM_FUNC_DECL tmat4x3<T, P> & operator=(tmat4x3<U, P> const & m);
+
140  template <typename U>
+
141  GLM_FUNC_DECL tmat4x3<T, P> & operator+=(U s);
+
142  template <typename U>
+
143  GLM_FUNC_DECL tmat4x3<T, P> & operator+=(tmat4x3<U, P> const & m);
+
144  template <typename U>
+
145  GLM_FUNC_DECL tmat4x3<T, P> & operator-=(U s);
+
146  template <typename U>
+
147  GLM_FUNC_DECL tmat4x3<T, P> & operator-=(tmat4x3<U, P> const & m);
+
148  template <typename U>
+
149  GLM_FUNC_DECL tmat4x3<T, P> & operator*=(U s);
+
150  template <typename U>
+
151  GLM_FUNC_DECL tmat4x3<T, P> & operator/=(U s);
+
152 
+
153  // -- Increment and decrement operators --
+
154 
+
155  GLM_FUNC_DECL tmat4x3<T, P> & operator++();
+
156  GLM_FUNC_DECL tmat4x3<T, P> & operator--();
+
157  GLM_FUNC_DECL tmat4x3<T, P> operator++(int);
+
158  GLM_FUNC_DECL tmat4x3<T, P> operator--(int);
+
159  };
+
160 
+
161  // -- Unary operators --
+
162 
+
163  template <typename T, precision P>
+
164  GLM_FUNC_DECL tmat4x3<T, P> const operator-(tmat4x3<T, P> const & m);
+
165 
+
166  // -- Binary operators --
+
167 
+
168  template <typename T, precision P>
+
169  GLM_FUNC_DECL tmat4x3<T, P> operator+(tmat4x3<T, P> const & m, T const & s);
+
170 
+
171  template <typename T, precision P>
+
172  GLM_FUNC_DECL tmat4x3<T, P> operator+(tmat4x3<T, P> const & m1, tmat4x3<T, P> const & m2);
+
173 
+
174  template <typename T, precision P>
+
175  GLM_FUNC_DECL tmat4x3<T, P> operator-(tmat4x3<T, P> const & m, T const & s);
+
176 
+
177  template <typename T, precision P>
+
178  GLM_FUNC_DECL tmat4x3<T, P> operator-(tmat4x3<T, P> const & m1, tmat4x3<T, P> const & m2);
+
179 
+
180  template <typename T, precision P>
+
181  GLM_FUNC_DECL tmat4x3<T, P> operator*(tmat4x3<T, P> const & m, T const & s);
+
182 
+
183  template <typename T, precision P>
+
184  GLM_FUNC_DECL tmat4x3<T, P> operator*(T const & s, tmat4x3<T, P> const & m);
+
185 
+
186  template <typename T, precision P>
+
187  GLM_FUNC_DECL typename tmat4x3<T, P>::col_type operator*(tmat4x3<T, P> const & m, typename tmat4x3<T, P>::row_type const & v);
+
188 
+
189  template <typename T, precision P>
+
190  GLM_FUNC_DECL typename tmat4x3<T, P>::row_type operator*(typename tmat4x3<T, P>::col_type const & v, tmat4x3<T, P> const & m);
+
191 
+
192  template <typename T, precision P>
+
193  GLM_FUNC_DECL tmat2x3<T, P> operator*(tmat4x3<T, P> const & m1, tmat2x4<T, P> const & m2);
+
194 
+
195  template <typename T, precision P>
+
196  GLM_FUNC_DECL tmat3x3<T, P> operator*(tmat4x3<T, P> const & m1, tmat3x4<T, P> const & m2);
+
197 
+
198  template <typename T, precision P>
+
199  GLM_FUNC_DECL tmat4x3<T, P> operator*(tmat4x3<T, P> const & m1, tmat4x4<T, P> const & m2);
+
200 
+
201  template <typename T, precision P>
+
202  GLM_FUNC_DECL tmat4x3<T, P> operator/(tmat4x3<T, P> const & m, T const & s);
+
203 
+
204  template <typename T, precision P>
+
205  GLM_FUNC_DECL tmat4x3<T, P> operator/(T const & s, tmat4x3<T, P> const & m);
+
206 
+
207  // -- Boolean operators --
+
208 
+
209  template <typename T, precision P>
+
210  GLM_FUNC_DECL bool operator==(tmat4x3<T, P> const & m1, tmat4x3<T, P> const & m2);
+
211 
+
212  template <typename T, precision P>
+
213  GLM_FUNC_DECL bool operator!=(tmat4x3<T, P> const & m1, tmat4x3<T, P> const & m2);
+
214 }//namespace glm
+
215 
+
216 #ifndef GLM_EXTERNAL_TEMPLATE
+
217 #include "type_mat4x3.inl"
+
218 #endif //GLM_EXTERNAL_TEMPLATE
+
OpenGL Mathematics (glm.g-truc.net)
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00129.html b/external/glm/doc/api/a00129.html new file mode 100644 index 0000000..102ec7c --- /dev/null +++ b/external/glm/doc/api/a00129.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: type_mat4x4.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat4x4.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2005-01-27 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file type_mat4x4.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00129_source.html b/external/glm/doc/api/a00129_source.html new file mode 100644 index 0000000..e30da42 --- /dev/null +++ b/external/glm/doc/api/a00129_source.html @@ -0,0 +1,274 @@ + + + + + + +0.9.7: type_mat4x4.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_mat4x4.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "../fwd.hpp"
+
36 #include "type_vec4.hpp"
+
37 #include "type_mat.hpp"
+
38 #include <limits>
+
39 #include <cstddef>
+
40 
+
41 namespace glm
+
42 {
+
43  template <typename T, precision P = defaultp>
+
44  struct tmat4x4
+
45  {
+
46  typedef tvec4<T, P> col_type;
+
47  typedef tvec4<T, P> row_type;
+
48  typedef tmat4x4<T, P> type;
+
49  typedef tmat4x4<T, P> transpose_type;
+
50  typedef T value_type;
+
51 
+
52 # ifdef GLM_META_PROG_HELPERS
+
53  static GLM_RELAXED_CONSTEXPR length_t components = 4;
+
54  static GLM_RELAXED_CONSTEXPR length_t cols = 4;
+
55  static GLM_RELAXED_CONSTEXPR length_t rows = 4;
+
56  static GLM_RELAXED_CONSTEXPR precision prec = P;
+
57 # endif//GLM_META_PROG_HELPERS
+
58 
+
59  template <typename U, precision Q>
+
60  friend tvec4<U, Q> operator/(tmat4x4<U, Q> const & m, tvec4<U, Q> const & v);
+
61  template <typename U, precision Q>
+
62  friend tvec4<U, Q> operator/(tvec4<U, Q> const & v, tmat4x4<U, Q> const & m);
+
63 
+
64  private:
+
65  col_type value[4];
+
66 
+
67  public:
+
68  // -- Constructors --
+
69 
+
70  GLM_FUNC_DECL tmat4x4() GLM_DEFAULT_CTOR;
+
71  GLM_FUNC_DECL tmat4x4(tmat4x4<T, P> const & m) GLM_DEFAULT;
+
72  template <precision Q>
+
73  GLM_FUNC_DECL tmat4x4(tmat4x4<T, Q> const & m);
+
74 
+
75  GLM_FUNC_DECL explicit tmat4x4(ctor);
+
76  GLM_FUNC_DECL explicit tmat4x4(T const & x);
+
77  GLM_FUNC_DECL tmat4x4(
+
78  T const & x0, T const & y0, T const & z0, T const & w0,
+
79  T const & x1, T const & y1, T const & z1, T const & w1,
+
80  T const & x2, T const & y2, T const & z2, T const & w2,
+
81  T const & x3, T const & y3, T const & z3, T const & w3);
+
82  GLM_FUNC_DECL tmat4x4(
+
83  col_type const & v0,
+
84  col_type const & v1,
+
85  col_type const & v2,
+
86  col_type const & v3);
+
87 
+
88  // -- Conversions --
+
89 
+
90  template <
+
91  typename X1, typename Y1, typename Z1, typename W1,
+
92  typename X2, typename Y2, typename Z2, typename W2,
+
93  typename X3, typename Y3, typename Z3, typename W3,
+
94  typename X4, typename Y4, typename Z4, typename W4>
+
95  GLM_FUNC_DECL tmat4x4(
+
96  X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1,
+
97  X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2,
+
98  X3 const & x3, Y3 const & y3, Z3 const & z3, W3 const & w3,
+
99  X4 const & x4, Y4 const & y4, Z4 const & z4, W4 const & w4);
+
100 
+
101  template <typename V1, typename V2, typename V3, typename V4>
+
102  GLM_FUNC_DECL tmat4x4(
+
103  tvec4<V1, P> const & v1,
+
104  tvec4<V2, P> const & v2,
+
105  tvec4<V3, P> const & v3,
+
106  tvec4<V4, P> const & v4);
+
107 
+
108  // -- Matrix conversions --
+
109 
+
110  template <typename U, precision Q>
+
111  GLM_FUNC_DECL GLM_EXPLICIT tmat4x4(tmat4x4<U, Q> const & m);
+
112 
+
113  GLM_FUNC_DECL explicit tmat4x4(tmat2x2<T, P> const & x);
+
114  GLM_FUNC_DECL explicit tmat4x4(tmat3x3<T, P> const & x);
+
115  GLM_FUNC_DECL explicit tmat4x4(tmat2x3<T, P> const & x);
+
116  GLM_FUNC_DECL explicit tmat4x4(tmat3x2<T, P> const & x);
+
117  GLM_FUNC_DECL explicit tmat4x4(tmat2x4<T, P> const & x);
+
118  GLM_FUNC_DECL explicit tmat4x4(tmat4x2<T, P> const & x);
+
119  GLM_FUNC_DECL explicit tmat4x4(tmat3x4<T, P> const & x);
+
120  GLM_FUNC_DECL explicit tmat4x4(tmat4x3<T, P> const & x);
+
121 
+
122  // -- Accesses --
+
123 
+
124 # ifdef GLM_FORCE_SIZE_FUNC
+
125  typedef size_t size_type;
+
126  GLM_FUNC_DECL GLM_CONSTEXPR size_t size() const;
+
127 
+
128  GLM_FUNC_DECL col_type & operator[](size_type i);
+
129  GLM_FUNC_DECL col_type const & operator[](size_type i) const;
+
130 # else
+
131  typedef length_t length_type;
+
132  GLM_FUNC_DECL GLM_CONSTEXPR length_type length() const;
+
133 
+
134  GLM_FUNC_DECL col_type & operator[](length_type i);
+
135  GLM_FUNC_DECL col_type const & operator[](length_type i) const;
+
136 # endif//GLM_FORCE_SIZE_FUNC
+
137 
+
138  // -- Unary arithmetic operators --
+
139 
+
140  GLM_FUNC_DECL tmat4x4<T, P> & operator=(tmat4x4<T, P> const & m) GLM_DEFAULT;
+
141 
+
142  template <typename U>
+
143  GLM_FUNC_DECL tmat4x4<T, P> & operator=(tmat4x4<U, P> const & m);
+
144  template <typename U>
+
145  GLM_FUNC_DECL tmat4x4<T, P> & operator+=(U s);
+
146  template <typename U>
+
147  GLM_FUNC_DECL tmat4x4<T, P> & operator+=(tmat4x4<U, P> const & m);
+
148  template <typename U>
+
149  GLM_FUNC_DECL tmat4x4<T, P> & operator-=(U s);
+
150  template <typename U>
+
151  GLM_FUNC_DECL tmat4x4<T, P> & operator-=(tmat4x4<U, P> const & m);
+
152  template <typename U>
+
153  GLM_FUNC_DECL tmat4x4<T, P> & operator*=(U s);
+
154  template <typename U>
+
155  GLM_FUNC_DECL tmat4x4<T, P> & operator*=(tmat4x4<U, P> const & m);
+
156  template <typename U>
+
157  GLM_FUNC_DECL tmat4x4<T, P> & operator/=(U s);
+
158  template <typename U>
+
159  GLM_FUNC_DECL tmat4x4<T, P> & operator/=(tmat4x4<U, P> const & m);
+
160 
+
161  // -- Increment and decrement operators --
+
162 
+
163  GLM_FUNC_DECL tmat4x4<T, P> & operator++();
+
164  GLM_FUNC_DECL tmat4x4<T, P> & operator--();
+
165  GLM_FUNC_DECL tmat4x4<T, P> operator++(int);
+
166  GLM_FUNC_DECL tmat4x4<T, P> operator--(int);
+
167  };
+
168 
+
169  // -- Unary operators --
+
170 
+
171  template <typename T, precision P>
+
172  GLM_FUNC_DECL tmat4x4<T, P> const operator-(tmat4x4<T, P> const & m);
+
173 
+
174  // -- Binary operators --
+
175 
+
176  template <typename T, precision P>
+
177  GLM_FUNC_DECL tmat4x4<T, P> operator+(tmat4x4<T, P> const & m, T const & s);
+
178 
+
179  template <typename T, precision P>
+
180  GLM_FUNC_DECL tmat4x4<T, P> operator+(T const & s, tmat4x4<T, P> const & m);
+
181 
+
182  template <typename T, precision P>
+
183  GLM_FUNC_DECL tmat4x4<T, P> operator+(tmat4x4<T, P> const & m1, tmat4x4<T, P> const & m2);
+
184 
+
185  template <typename T, precision P>
+
186  GLM_FUNC_DECL tmat4x4<T, P> operator-(tmat4x4<T, P> const & m, T const & s);
+
187 
+
188  template <typename T, precision P>
+
189  GLM_FUNC_DECL tmat4x4<T, P> operator-(T const & s, tmat4x4<T, P> const & m);
+
190 
+
191  template <typename T, precision P>
+
192  GLM_FUNC_DECL tmat4x4<T, P> operator-(tmat4x4<T, P> const & m1, tmat4x4<T, P> const & m2);
+
193 
+
194  template <typename T, precision P>
+
195  GLM_FUNC_DECL tmat4x4<T, P> operator*(tmat4x4<T, P> const & m, T const & s);
+
196 
+
197  template <typename T, precision P>
+
198  GLM_FUNC_DECL tmat4x4<T, P> operator*(T const & s, tmat4x4<T, P> const & m);
+
199 
+
200  template <typename T, precision P>
+
201  GLM_FUNC_DECL typename tmat4x4<T, P>::col_type operator*(tmat4x4<T, P> const & m, typename tmat4x4<T, P>::row_type const & v);
+
202 
+
203  template <typename T, precision P>
+
204  GLM_FUNC_DECL typename tmat4x4<T, P>::row_type operator*(typename tmat4x4<T, P>::col_type const & v, tmat4x4<T, P> const & m);
+
205 
+
206  template <typename T, precision P>
+
207  GLM_FUNC_DECL tmat2x4<T, P> operator*(tmat4x4<T, P> const & m1, tmat2x4<T, P> const & m2);
+
208 
+
209  template <typename T, precision P>
+
210  GLM_FUNC_DECL tmat3x4<T, P> operator*(tmat4x4<T, P> const & m1, tmat3x4<T, P> const & m2);
+
211 
+
212  template <typename T, precision P>
+
213  GLM_FUNC_DECL tmat4x4<T, P> operator*(tmat4x4<T, P> const & m1, tmat4x4<T, P> const & m2);
+
214 
+
215  template <typename T, precision P>
+
216  GLM_FUNC_DECL tmat4x4<T, P> operator/(tmat4x4<T, P> const & m, T const & s);
+
217 
+
218  template <typename T, precision P>
+
219  GLM_FUNC_DECL tmat4x4<T, P> operator/(T const & s, tmat4x4<T, P> const & m);
+
220 
+
221  template <typename T, precision P>
+
222  GLM_FUNC_DECL typename tmat4x4<T, P>::col_type operator/(tmat4x4<T, P> const & m, typename tmat4x4<T, P>::row_type const & v);
+
223 
+
224  template <typename T, precision P>
+
225  GLM_FUNC_DECL typename tmat4x4<T, P>::row_type operator/(typename tmat4x4<T, P>::col_type & v, tmat4x4<T, P> const & m);
+
226 
+
227  template <typename T, precision P>
+
228  GLM_FUNC_DECL tmat4x4<T, P> operator/(tmat4x4<T, P> const & m1, tmat4x4<T, P> const & m2);
+
229 
+
230  // -- Boolean operators --
+
231 
+
232  template <typename T, precision P>
+
233  GLM_FUNC_DECL bool operator==(tmat4x4<T, P> const & m1, tmat4x4<T, P> const & m2);
+
234 
+
235  template <typename T, precision P>
+
236  GLM_FUNC_DECL bool operator!=(tmat4x4<T, P> const & m1, tmat4x4<T, P> const & m2);
+
237 }//namespace glm
+
238 
+
239 #ifndef GLM_EXTERNAL_TEMPLATE
+
240 #include "type_mat4x4.inl"
+
241 #endif//GLM_EXTERNAL_TEMPLATE
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00130.html b/external/glm/doc/api/a00130.html new file mode 100644 index 0000000..0a61195 --- /dev/null +++ b/external/glm/doc/api/a00130.html @@ -0,0 +1,78 @@ + + + + + + +0.9.7: type_precision.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_precision.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_type_precision

+
Date
2009-06-04 / 2011-12-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+gtc_half_float (dependence)
+
+GLM_GTC_quaternion (dependence)
+ +

Definition in file type_precision.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00130_source.html b/external/glm/doc/api/a00130_source.html new file mode 100644 index 0000000..7317c72 --- /dev/null +++ b/external/glm/doc/api/a00130_source.html @@ -0,0 +1,692 @@ + + + + + + +0.9.7: type_precision.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
47 #pragma once
+
48 
+
49 // Dependency:
+
50 #include "../gtc/quaternion.hpp"
+
51 #include "../gtc/vec1.hpp"
+
52 #include "../vec2.hpp"
+
53 #include "../vec3.hpp"
+
54 #include "../vec4.hpp"
+
55 #include "../mat2x2.hpp"
+
56 #include "../mat2x3.hpp"
+
57 #include "../mat2x4.hpp"
+
58 #include "../mat3x2.hpp"
+
59 #include "../mat3x3.hpp"
+
60 #include "../mat3x4.hpp"
+
61 #include "../mat4x2.hpp"
+
62 #include "../mat4x3.hpp"
+
63 #include "../mat4x4.hpp"
+
64 
+
65 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
66 # pragma message("GLM: GLM_GTC_type_precision extension included")
+
67 #endif
+
68 
+
69 namespace glm
+
70 {
+
72  // Signed int vector types
+
73 
+
76 
+
79  typedef detail::int8 lowp_int8;
+
80 
+
83  typedef detail::int16 lowp_int16;
+
84 
+
87  typedef detail::int32 lowp_int32;
+
88 
+
91  typedef detail::int64 lowp_int64;
+
92 
+
95  typedef detail::int8 lowp_int8_t;
+
96 
+
99  typedef detail::int16 lowp_int16_t;
+
100 
+
103  typedef detail::int32 lowp_int32_t;
+
104 
+
107  typedef detail::int64 lowp_int64_t;
+
108 
+
111  typedef detail::int8 lowp_i8;
+
112 
+
115  typedef detail::int16 lowp_i16;
+
116 
+
119  typedef detail::int32 lowp_i32;
+
120 
+
123  typedef detail::int64 lowp_i64;
+
124 
+
127  typedef detail::int8 mediump_int8;
+
128 
+
131  typedef detail::int16 mediump_int16;
+
132 
+
135  typedef detail::int32 mediump_int32;
+
136 
+
139  typedef detail::int64 mediump_int64;
+
140 
+
143  typedef detail::int8 mediump_int8_t;
+
144 
+
147  typedef detail::int16 mediump_int16_t;
+
148 
+
151  typedef detail::int32 mediump_int32_t;
+
152 
+
155  typedef detail::int64 mediump_int64_t;
+
156 
+
159  typedef detail::int8 mediump_i8;
+
160 
+
163  typedef detail::int16 mediump_i16;
+
164 
+
167  typedef detail::int32 mediump_i32;
+
168 
+
171  typedef detail::int64 mediump_i64;
+
172 
+
175  typedef detail::int8 highp_int8;
+
176 
+
179  typedef detail::int16 highp_int16;
+
180 
+
183  typedef detail::int32 highp_int32;
+
184 
+
187  typedef detail::int64 highp_int64;
+
188 
+
191  typedef detail::int8 highp_int8_t;
+
192 
+
195  typedef detail::int16 highp_int16_t;
+
196 
+
199  typedef detail::int32 highp_int32_t;
+
200 
+
203  typedef detail::int64 highp_int64_t;
+
204 
+
207  typedef detail::int8 highp_i8;
+
208 
+
211  typedef detail::int16 highp_i16;
+
212 
+
215  typedef detail::int32 highp_i32;
+
216 
+
219  typedef detail::int64 highp_i64;
+
220 
+
221 
+
224  typedef detail::int8 int8;
+
225 
+
228  typedef detail::int16 int16;
+
229 
+
232  typedef detail::int32 int32;
+
233 
+
236  typedef detail::int64 int64;
+
237 
+
238 #if GLM_HAS_EXTENDED_INTEGER_TYPE
+
239  using std::int8_t;
+
240  using std::int16_t;
+
241  using std::int32_t;
+
242  using std::int64_t;
+
243 #else
+
244  typedef detail::int8 int8_t;
+
247 
+
250  typedef detail::int16 int16_t;
+
251 
+
254  typedef detail::int32 int32_t;
+
255 
+
258  typedef detail::int64 int64_t;
+
259 #endif
+
260 
+
263  typedef detail::int8 i8;
+
264 
+
267  typedef detail::int16 i16;
+
268 
+
271  typedef detail::int32 i32;
+
272 
+
275  typedef detail::int64 i64;
+
276 
+
277 
+
280  typedef tvec1<i8, defaultp> i8vec1;
+
281 
+
284  typedef tvec2<i8, defaultp> i8vec2;
+
285 
+
288  typedef tvec3<i8, defaultp> i8vec3;
+
289 
+
292  typedef tvec4<i8, defaultp> i8vec4;
+
293 
+
294 
+
297  typedef tvec1<i16, defaultp> i16vec1;
+
298 
+
301  typedef tvec2<i16, defaultp> i16vec2;
+
302 
+
305  typedef tvec3<i16, defaultp> i16vec3;
+
306 
+
309  typedef tvec4<i16, defaultp> i16vec4;
+
310 
+
311 
+
314  typedef tvec1<i32, defaultp> i32vec1;
+
315 
+
318  typedef tvec2<i32, defaultp> i32vec2;
+
319 
+
322  typedef tvec3<i32, defaultp> i32vec3;
+
323 
+
326  typedef tvec4<i32, defaultp> i32vec4;
+
327 
+
328 
+
331  typedef tvec1<i64, defaultp> i64vec1;
+
332 
+
335  typedef tvec2<i64, defaultp> i64vec2;
+
336 
+
339  typedef tvec3<i64, defaultp> i64vec3;
+
340 
+
343  typedef tvec4<i64, defaultp> i64vec4;
+
344 
+
345 
+
347  // Unsigned int vector types
+
348 
+
351  typedef detail::uint8 lowp_uint8;
+
352 
+
355  typedef detail::uint16 lowp_uint16;
+
356 
+
359  typedef detail::uint32 lowp_uint32;
+
360 
+
363  typedef detail::uint64 lowp_uint64;
+
364 
+
367  typedef detail::uint8 lowp_uint8_t;
+
368 
+
371  typedef detail::uint16 lowp_uint16_t;
+
372 
+
375  typedef detail::uint32 lowp_uint32_t;
+
376 
+
379  typedef detail::uint64 lowp_uint64_t;
+
380 
+
383  typedef detail::uint8 lowp_u8;
+
384 
+
387  typedef detail::uint16 lowp_u16;
+
388 
+
391  typedef detail::uint32 lowp_u32;
+
392 
+
395  typedef detail::uint64 lowp_u64;
+
396 
+
399  typedef detail::uint8 mediump_uint8;
+
400 
+
403  typedef detail::uint16 mediump_uint16;
+
404 
+
407  typedef detail::uint32 mediump_uint32;
+
408 
+
411  typedef detail::uint64 mediump_uint64;
+
412 
+
415  typedef detail::uint8 mediump_uint8_t;
+
416 
+
419  typedef detail::uint16 mediump_uint16_t;
+
420 
+
423  typedef detail::uint32 mediump_uint32_t;
+
424 
+
427  typedef detail::uint64 mediump_uint64_t;
+
428 
+
431  typedef detail::uint8 mediump_u8;
+
432 
+
435  typedef detail::uint16 mediump_u16;
+
436 
+
439  typedef detail::uint32 mediump_u32;
+
440 
+
443  typedef detail::uint64 mediump_u64;
+
444 
+
447  typedef detail::uint8 highp_uint8;
+
448 
+
451  typedef detail::uint16 highp_uint16;
+
452 
+
455  typedef detail::uint32 highp_uint32;
+
456 
+
459  typedef detail::uint64 highp_uint64;
+
460 
+
463  typedef detail::uint8 highp_uint8_t;
+
464 
+
467  typedef detail::uint16 highp_uint16_t;
+
468 
+
471  typedef detail::uint32 highp_uint32_t;
+
472 
+
475  typedef detail::uint64 highp_uint64_t;
+
476 
+
479  typedef detail::uint8 highp_u8;
+
480 
+
483  typedef detail::uint16 highp_u16;
+
484 
+
487  typedef detail::uint32 highp_u32;
+
488 
+
491  typedef detail::uint64 highp_u64;
+
492 
+
495  typedef detail::uint8 uint8;
+
496 
+
499  typedef detail::uint16 uint16;
+
500 
+
503  typedef detail::uint32 uint32;
+
504 
+
507  typedef detail::uint64 uint64;
+
508 
+
509 #if GLM_HAS_EXTENDED_INTEGER_TYPE
+
510  using std::uint8_t;
+
511  using std::uint16_t;
+
512  using std::uint32_t;
+
513  using std::uint64_t;
+
514 #else
+
515  typedef detail::uint8 uint8_t;
+
518 
+
521  typedef detail::uint16 uint16_t;
+
522 
+
525  typedef detail::uint32 uint32_t;
+
526 
+
529  typedef detail::uint64 uint64_t;
+
530 #endif
+
531 
+
534  typedef detail::uint8 u8;
+
535 
+
538  typedef detail::uint16 u16;
+
539 
+
542  typedef detail::uint32 u32;
+
543 
+
546  typedef detail::uint64 u64;
+
547 
+
548 
+
549 
+
552  typedef tvec1<u8, defaultp> u8vec1;
+
553 
+
556  typedef tvec2<u8, defaultp> u8vec2;
+
557 
+
560  typedef tvec3<u8, defaultp> u8vec3;
+
561 
+
564  typedef tvec4<u8, defaultp> u8vec4;
+
565 
+
566 
+
569  typedef tvec1<u16, defaultp> u16vec1;
+
570 
+
573  typedef tvec2<u16, defaultp> u16vec2;
+
574 
+
577  typedef tvec3<u16, defaultp> u16vec3;
+
578 
+
581  typedef tvec4<u16, defaultp> u16vec4;
+
582 
+
583 
+
586  typedef tvec1<u32, defaultp> u32vec1;
+
587 
+
590  typedef tvec2<u32, defaultp> u32vec2;
+
591 
+
594  typedef tvec3<u32, defaultp> u32vec3;
+
595 
+
598  typedef tvec4<u32, defaultp> u32vec4;
+
599 
+
600 
+
603  typedef tvec1<u64, defaultp> u64vec1;
+
604 
+
607  typedef tvec2<u64, defaultp> u64vec2;
+
608 
+
611  typedef tvec3<u64, defaultp> u64vec3;
+
612 
+
615  typedef tvec4<u64, defaultp> u64vec4;
+
616 
+
617 
+
619  // Float vector types
+
620 
+
623  typedef detail::float32 float32;
+
624 
+
627  typedef detail::float64 float64;
+
628 
+
629 
+
632  typedef detail::float32 float32_t;
+
633 
+
636  typedef detail::float64 float64_t;
+
637 
+
638 
+
641  typedef float32 f32;
+
642 
+
645  typedef float64 f64;
+
646 
+
647 
+
650  typedef tvec1<float, defaultp> fvec1;
+
651 
+
654  typedef tvec2<float, defaultp> fvec2;
+
655 
+
658  typedef tvec3<float, defaultp> fvec3;
+
659 
+
662  typedef tvec4<float, defaultp> fvec4;
+
663 
+
664 
+
667  typedef tvec1<f32, defaultp> f32vec1;
+
668 
+
671  typedef tvec2<f32, defaultp> f32vec2;
+
672 
+
675  typedef tvec3<f32, defaultp> f32vec3;
+
676 
+
679  typedef tvec4<f32, defaultp> f32vec4;
+
680 
+
681 
+
684  typedef tvec1<f64, defaultp> f64vec1;
+
685 
+
688  typedef tvec2<f64, defaultp> f64vec2;
+
689 
+
692  typedef tvec3<f64, defaultp> f64vec3;
+
693 
+
696  typedef tvec4<f64, defaultp> f64vec4;
+
697 
+
698 
+
700  // Float matrix types
+
701 
+
704  //typedef detail::tmat1x1<f32> fmat1;
+
705 
+
708  typedef tmat2x2<f32, defaultp> fmat2;
+
709 
+
712  typedef tmat3x3<f32, defaultp> fmat3;
+
713 
+
716  typedef tmat4x4<f32, defaultp> fmat4;
+
717 
+
718 
+
721  //typedef f32 fmat1x1;
+
722 
+
725  typedef tmat2x2<f32, defaultp> fmat2x2;
+
726 
+
729  typedef tmat2x3<f32, defaultp> fmat2x3;
+
730 
+
733  typedef tmat2x4<f32, defaultp> fmat2x4;
+
734 
+
737  typedef tmat3x2<f32, defaultp> fmat3x2;
+
738 
+
741  typedef tmat3x3<f32, defaultp> fmat3x3;
+
742 
+
745  typedef tmat3x4<f32, defaultp> fmat3x4;
+
746 
+
749  typedef tmat4x2<f32, defaultp> fmat4x2;
+
750 
+
753  typedef tmat4x3<f32, defaultp> fmat4x3;
+
754 
+
757  typedef tmat4x4<f32, defaultp> fmat4x4;
+
758 
+
759 
+
762  //typedef detail::tmat1x1<f32, defaultp> f32mat1;
+
763 
+
766  typedef tmat2x2<f32, defaultp> f32mat2;
+
767 
+
770  typedef tmat3x3<f32, defaultp> f32mat3;
+
771 
+
774  typedef tmat4x4<f32, defaultp> f32mat4;
+
775 
+
776 
+
779  //typedef f32 f32mat1x1;
+
780 
+
783  typedef tmat2x2<f32, defaultp> f32mat2x2;
+
784 
+
787  typedef tmat2x3<f32, defaultp> f32mat2x3;
+
788 
+
791  typedef tmat2x4<f32, defaultp> f32mat2x4;
+
792 
+
795  typedef tmat3x2<f32, defaultp> f32mat3x2;
+
796 
+
799  typedef tmat3x3<f32, defaultp> f32mat3x3;
+
800 
+
803  typedef tmat3x4<f32, defaultp> f32mat3x4;
+
804 
+
807  typedef tmat4x2<f32, defaultp> f32mat4x2;
+
808 
+
811  typedef tmat4x3<f32, defaultp> f32mat4x3;
+
812 
+
815  typedef tmat4x4<f32, defaultp> f32mat4x4;
+
816 
+
817 
+
820  //typedef detail::tmat1x1<f64, defaultp> f64mat1;
+
821 
+
824  typedef tmat2x2<f64, defaultp> f64mat2;
+
825 
+
828  typedef tmat3x3<f64, defaultp> f64mat3;
+
829 
+
832  typedef tmat4x4<f64, defaultp> f64mat4;
+
833 
+
834 
+
837  //typedef f64 f64mat1x1;
+
838 
+
841  typedef tmat2x2<f64, defaultp> f64mat2x2;
+
842 
+
845  typedef tmat2x3<f64, defaultp> f64mat2x3;
+
846 
+
849  typedef tmat2x4<f64, defaultp> f64mat2x4;
+
850 
+
853  typedef tmat3x2<f64, defaultp> f64mat3x2;
+
854 
+
857  typedef tmat3x3<f64, defaultp> f64mat3x3;
+
858 
+
861  typedef tmat3x4<f64, defaultp> f64mat3x4;
+
862 
+
865  typedef tmat4x2<f64, defaultp> f64mat4x2;
+
866 
+
869  typedef tmat4x3<f64, defaultp> f64mat4x3;
+
870 
+
873  typedef tmat4x4<f64, defaultp> f64mat4x4;
+
874 
+
875 
+
877  // Quaternion types
+
878 
+
881  typedef tquat<f32, defaultp> f32quat;
+
882 
+
885  typedef tquat<f64, defaultp> f64quat;
+
886 
+
888 }//namespace glm
+
889 
+
890 #include "type_precision.inl"
+
detail::int8 int8_t
8 bit signed integer type.
Definition: fwd.hpp:297
+
detail::uint32 lowp_uint32
Low precision 32 bit unsigned integer type.
Definition: fwd.hpp:740
+
detail::int64 lowp_int64_t
Low precision 64 bit signed integer type.
Definition: fwd.hpp:157
+
detail::int16 lowp_int16
Low precision 16 bit signed integer type.
Definition: fwd.hpp:133
+
highp_u16vec1 u16vec1
Default precision 16 bit unsigned integer scalar type.
Definition: fwd.hpp:1082
+
detail::uint32 u32
32 bit unsigned integer type.
Definition: fwd.hpp:931
+
detail::uint16 lowp_uint16
Low precision 16 bit unsigned integer type.
Definition: fwd.hpp:736
+
highp_f32vec3 fvec3
Default single-precision floating-point vector of 3 components.
Definition: fwd.hpp:2364
+
highp_f32mat3x3 fmat3x3
Default single-precision floating-point 3x3 matrix.
Definition: fwd.hpp:2388
+
highp_i64vec4 i64vec4
Default precision 64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:723
+
f32mat3x3 f32mat3
Default single-precision floating-point 3x3 matrix.
Definition: fwd.hpp:2482
+
detail::uint8 mediump_u8
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:816
+
detail::int64 highp_i64
High precision 64 bit signed integer type.
Definition: fwd.hpp:269
+
highp_u32vec2 u32vec2
Default precision 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:1165
+
highp_u8vec4 u8vec4
Default precision 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:1014
+
detail::int64 highp_int64_t
High precision 64 bit signed integer type.
Definition: fwd.hpp:253
+
highp_i64vec2 i64vec2
Default precision 64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:715
+
detail::int32 int32_t
32 bit signed integer type.
Definition: fwd.hpp:305
+
highp_i16vec4 i16vec4
Default precision 16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:485
+
detail::int32 mediump_i32
Medium precision 32 bit signed integer type.
Definition: fwd.hpp:217
+
detail::int8 lowp_int8
Low precision 8 bit signed integer type.
Definition: fwd.hpp:129
+
detail::uint64 u64
64 bit unsigned integer type.
Definition: fwd.hpp:935
+
detail::uint8 lowp_u8
Low precision 8 bit unsigned integer type.
Definition: fwd.hpp:766
+
detail::int8 i8
8 bit signed integer type.
Definition: fwd.hpp:314
+
detail::uint8 mediump_uint8
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:784
+
f64mat4x4 f64mat4
Default double-precision floating-point 4x4 matrix.
Definition: fwd.hpp:2592
+
detail::uint32 lowp_uint32_t
Low precision 32 bit unsigned integer type.
Definition: fwd.hpp:757
+
detail::int64 mediump_i64
Medium precision 64 bit signed integer type.
Definition: fwd.hpp:221
+
highp_i64vec3 i64vec3
Default precision 64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:719
+
detail::int32 highp_i32
High precision 32 bit signed integer type.
Definition: fwd.hpp:265
+
detail::uint32 lowp_u32
Low precision 32 bit unsigned integer type.
Definition: fwd.hpp:774
+
detail::int16 highp_i16
High precision 16 bit signed integer type.
Definition: fwd.hpp:261
+
detail::int8 highp_i8
High precision 8 bit signed integer type.
Definition: fwd.hpp:257
+
highp_u32vec3 u32vec3
Default precision 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:1169
+
fmat4x4 fmat4
Default single-precision floating-point 4x4 matrix.
Definition: fwd.hpp:2416
+
detail::uint32 mediump_u32
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:824
+
highp_f32vec2 fvec2
Default single-precision floating-point vector of 2 components.
Definition: fwd.hpp:2360
+
detail::int8 mediump_int8
Medium precision 8 bit signed integer type.
Definition: fwd.hpp:177
+
detail::uint32 highp_u32
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:874
+
detail::uint64 mediump_uint64_t
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:812
+
highp_i32vec1 i32vec1
Default precision 32 bit signed integer scalar type.
Definition: fwd.hpp:552
+
detail::uint8 highp_u8
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:866
+
highp_u16vec3 u16vec3
Default precision 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:1090
+
highp_i16vec2 i16vec2
Default precision 16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:477
+
f32mat2x2 f32mat2
Default single-precision floating-point 2x2 matrix.
Definition: fwd.hpp:2478
+
highp_i32vec4 i32vec4
Default precision 32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:564
+
detail::int64 lowp_int64
Low precision 64 bit signed integer type.
Definition: fwd.hpp:141
+
highp_f32mat2x4 f32mat2x4
Default single-precision floating-point 2x4 matrix.
Definition: fwd.hpp:2450
+
highp_f32mat3x2 f32mat3x2
Default single-precision floating-point 3x2 matrix.
Definition: fwd.hpp:2454
+
highp_f64vec4 f64vec4
Default double-precision floating-point vector of 4 components.
Definition: fwd.hpp:2544
+
f64mat2x2 f64mat2
Default double-precision floating-point 2x2 matrix.
Definition: fwd.hpp:2584
+
detail::int32 lowp_i32
Low precision 32 bit signed integer type.
Definition: fwd.hpp:169
+
detail::uint64 mediump_uint64
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:796
+
highp_f32vec2 f32vec2
Default single-precision floating-point vector of 2 components.
Definition: fwd.hpp:2430
+
detail::uint16 u16
16 bit unsigned integer type.
Definition: fwd.hpp:927
+
highp_float64_t f64
Default 64 bit double-precision floating-point scalar.
Definition: fwd.hpp:1538
+
f64mat3x3 f64mat3
Default double-precision floating-point 3x3 matrix.
Definition: fwd.hpp:2588
+
highp_f64vec1 f64vec1
Default double-precision floating-point vector of 1 components.
Definition: fwd.hpp:2532
+
highp_f32vec4 fvec4
Default single-precision floating-point vector of 4 components.
Definition: fwd.hpp:2368
+
detail::int8 mediump_i8
Medium precision 8 bit signed integer type.
Definition: fwd.hpp:209
+
highp_f32mat4x4 f32mat4x4
Default single-precision floating-point 4x4 matrix.
Definition: fwd.hpp:2474
+
highp_f64mat2x2 f64mat2x2
Default double-precision floating-point 2x2 matrix.
Definition: fwd.hpp:2548
+
highp_float64_t float64_t
Default 64 bit double-precision floating-point scalar.
Definition: fwd.hpp:1530
+
highp_u8vec1 u8vec1
Default precision 8 bit unsigned integer scalar type.
Definition: fwd.hpp:1002
+
highp_f32mat4x2 fmat4x2
Default single-precision floating-point 4x2 matrix.
Definition: fwd.hpp:2396
+
highp_u8vec2 u8vec2
Default precision 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:1006
+
highp_u64vec1 u64vec1
Default precision 64 bit unsigned integer scalar type.
Definition: fwd.hpp:1320
+
detail::uint8 highp_uint8
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:834
+
detail::uint16 mediump_u16
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:820
+
highp_f64mat3x3 f64mat3x3
Default double-precision floating-point 3x3 matrix.
Definition: fwd.hpp:2564
+
detail::uint32 mediump_uint32
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:792
+
highp_f32mat4x2 f32mat4x2
Default single-precision floating-point 4x2 matrix.
Definition: fwd.hpp:2466
+
detail::int16 highp_int16
High precision 16 bit signed integer type.
Definition: fwd.hpp:229
+
detail::int32 highp_int32
High precision 32 bit signed integer type.
Definition: fwd.hpp:233
+
detail::int8 mediump_int8_t
Medium precision 8 bit signed integer type.
Definition: fwd.hpp:193
+
highp_f32quat f32quat
Default single-precision floating-point quaternion.
Definition: fwd.hpp:2490
+
highp_i8vec4 i8vec4
Default precision 8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:405
+
detail::int8 highp_int8
High precision 8 bit signed integer type.
Definition: fwd.hpp:225
+
highp_f64mat2x4 f64mat2x4
Default double-precision floating-point 2x4 matrix.
Definition: fwd.hpp:2556
+
highp_u16vec4 u16vec4
Default precision 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:1094
+
highp_u64vec2 u64vec2
Default precision 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:1324
+
detail::uint64 highp_uint64_t
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:862
+
highp_float32_t f32
Default 32 bit single-precision floating-point scalar.
Definition: fwd.hpp:1534
+
detail::int8 lowp_i8
Low precision 8 bit signed integer type.
Definition: fwd.hpp:161
+
highp_f32vec1 f32vec1
Default single-precision floating-point vector of 1 components.
Definition: fwd.hpp:2426
+
detail::uint32 uint32_t
32 bit unsigned integer type.
Definition: fwd.hpp:914
+
detail::uint8 u8
8 bit unsigned integer type.
Definition: fwd.hpp:923
+
detail::uint16 lowp_u16
Low precision 16 bit unsigned integer type.
Definition: fwd.hpp:770
+
highp_f32mat2x4 fmat2x4
Default single-precision floating-point 2x4 matrix.
Definition: fwd.hpp:2380
+
highp_f32vec1 fvec1
Default single-precision floating-point vector of 1 components.
Definition: fwd.hpp:2356
+
detail::int16 lowp_i16
Low precision 16 bit signed integer type.
Definition: fwd.hpp:165
+
detail::uint8 lowp_uint8_t
Low precision 8 bit unsigned integer type.
Definition: fwd.hpp:749
+
highp_i32vec2 i32vec2
Default precision 32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:556
+
Definition: _noise.hpp:40
+
detail::uint16 mediump_uint16
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:788
+
highp_f64quat f64quat
Default double-precision floating-point quaternion.
Definition: fwd.hpp:2596
+
detail::int8 highp_int8_t
High precision 8 bit signed integer type.
Definition: fwd.hpp:241
+
detail::uint8 highp_uint8_t
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:850
+
highp_i8vec1 i8vec1
Default precision 8 bit signed integer scalar type.
Definition: fwd.hpp:393
+
highp_i16vec1 i16vec1
Default precision 16 bit signed integer scalar type.
Definition: fwd.hpp:473
+
detail::int64 mediump_int64_t
Medium precision 64 bit signed integer type.
Definition: fwd.hpp:205
+
highp_f32mat2x2 fmat2x2
Default single-precision floating-point 2x2 matrix.
Definition: fwd.hpp:2372
+
detail::int8 lowp_int8_t
Low precision 8 bit signed integer type.
Definition: fwd.hpp:145
+
detail::uint16 highp_uint16
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:838
+
detail::uint64 lowp_uint64
Low precision 64 bit unsigned integer type.
Definition: fwd.hpp:744
+
highp_f32mat2x3 fmat2x3
Default single-precision floating-point 2x3 matrix.
Definition: fwd.hpp:2376
+
highp_float32_t float32_t
Default 32 bit single-precision floating-point scalar.
Definition: fwd.hpp:1526
+
highp_i8vec3 i8vec3
Default precision 8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:401
+
highp_f32mat3x2 fmat3x2
Default single-precision floating-point 3x2 matrix.
Definition: fwd.hpp:2384
+
detail::int16 mediump_i16
Medium precision 16 bit signed integer type.
Definition: fwd.hpp:213
+
detail::uint16 mediump_uint16_t
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:804
+
highp_u32vec4 u32vec4
Default precision 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:1173
+
highp_f64mat3x4 f64mat3x4
Default double-precision floating-point 3x4 matrix.
Definition: fwd.hpp:2568
+
detail::uint16 lowp_uint16_t
Low precision 16 bit unsigned integer type.
Definition: fwd.hpp:753
+
detail::int16 mediump_int16
Medium precision 16 bit signed integer type.
Definition: fwd.hpp:181
+
highp_f32mat3x4 fmat3x4
Default single-precision floating-point 3x4 matrix.
Definition: fwd.hpp:2392
+
highp_f32mat4x3 fmat4x3
Default single-precision floating-point 4x3 matrix.
Definition: fwd.hpp:2400
+
highp_u8vec3 u8vec3
Default precision 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:1010
+
highp_f64vec3 f64vec3
Default double-precision floating-point vector of 3 components.
Definition: fwd.hpp:2540
+
highp_u64vec4 u64vec4
Default precision 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:1332
+
detail::int16 mediump_int16_t
Medium precision 16 bit signed integer type.
Definition: fwd.hpp:197
+
detail::int16 lowp_int16_t
Low precision 16 bit signed integer type.
Definition: fwd.hpp:149
+
highp_f64mat4x3 f64mat4x3
Default double-precision floating-point 4x3 matrix.
Definition: fwd.hpp:2576
+
detail::uint32 mediump_uint32_t
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:808
+
detail::int32 mediump_int32_t
Medium precision 32 bit signed integer type.
Definition: fwd.hpp:201
+
detail::uint8 uint8_t
8 bit unsigned integer type.
Definition: fwd.hpp:906
+
highp_f64mat3x2 f64mat3x2
Default double-precision floating-point 3x2 matrix.
Definition: fwd.hpp:2560
+
highp_f32mat2x2 f32mat2x2
Default single-precision floating-point 2x2 matrix.
Definition: fwd.hpp:2442
+
highp_f32mat3x3 f32mat3x3
Default single-precision floating-point 3x3 matrix.
Definition: fwd.hpp:2458
+
detail::uint16 highp_uint16_t
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:854
+
highp_i8vec2 i8vec2
Default precision 8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:397
+
detail::int16 highp_int16_t
High precision 16 bit signed integer type.
Definition: fwd.hpp:245
+
detail::int32 lowp_int32
Low precision 32 bit signed integer type.
Definition: fwd.hpp:137
+
detail::uint64 highp_u64
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:878
+
highp_f64mat4x2 f64mat4x2
Default double-precision floating-point 4x2 matrix.
Definition: fwd.hpp:2572
+
detail::int32 mediump_int32
Medium precision 32 bit signed integer type.
Definition: fwd.hpp:185
+
detail::int64 int64_t
64 bit signed integer type.
Definition: fwd.hpp:309
+
f32mat4x4 f32mat4
Default single-precision floating-point 4x4 matrix.
Definition: fwd.hpp:2486
+
detail::uint64 lowp_u64
Low precision 64 bit unsigned integer type.
Definition: fwd.hpp:778
+
detail::uint64 mediump_u64
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:828
+
detail::uint64 lowp_uint64_t
Low precision 64 bit unsigned integer type.
Definition: fwd.hpp:761
+
detail::uint32 highp_uint32_t
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:858
+
highp_i16vec3 i16vec3
Default precision 16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:481
+
highp_f32mat4x4 fmat4x4
Default single-precision floating-point 4x4 matrix.
Definition: fwd.hpp:2404
+
detail::int32 highp_int32_t
32 bit signed integer type.
Definition: fwd.hpp:249
+
detail::uint16 uint16_t
16 bit unsigned integer type.
Definition: fwd.hpp:910
+
highp_f32vec3 f32vec3
Default single-precision floating-point vector of 3 components.
Definition: fwd.hpp:2434
+
highp_f64mat4x4 f64mat4x4
Default double-precision floating-point 4x4 matrix.
Definition: fwd.hpp:2580
+
highp_f64mat2x3 f64mat2x3
Default double-precision floating-point 2x3 matrix.
Definition: fwd.hpp:2552
+
detail::uint32 highp_uint32
Medium precision 32 bit unsigned integer type.
Definition: fwd.hpp:842
+
detail::uint16 highp_u16
Medium precision 16 bit unsigned integer type.
Definition: fwd.hpp:870
+
highp_f32mat2x3 f32mat2x3
Default single-precision floating-point 2x3 matrix.
Definition: fwd.hpp:2446
+
fmat2x2 fmat2
Default single-precision floating-point 2x2 matrix.
Definition: fwd.hpp:2408
+
detail::uint8 mediump_uint8_t
Medium precision 8 bit unsigned integer type.
Definition: fwd.hpp:800
+
detail::int32 i32
32 bit signed integer type.
Definition: fwd.hpp:322
+
highp_f32vec4 f32vec4
Default single-precision floating-point vector of 4 components.
Definition: fwd.hpp:2438
+
highp_i32vec3 i32vec3
Default precision 32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:560
+
highp_u16vec2 u16vec2
Default precision 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:1086
+
detail::uint8 lowp_uint8
Low precision 8 bit unsigned integer type.
Definition: fwd.hpp:732
+
highp_i64vec1 i64vec1
Default precision 64 bit signed integer scalar type.
Definition: fwd.hpp:711
+
detail::int16 i16
16 bit signed integer type.
Definition: fwd.hpp:318
+
highp_f32mat3x4 f32mat3x4
Default single-precision floating-point 3x4 matrix.
Definition: fwd.hpp:2462
+
detail::uint64 uint64_t
64 bit unsigned integer type.
Definition: fwd.hpp:918
+
detail::int64 highp_int64
High precision 64 bit signed integer type.
Definition: fwd.hpp:237
+
highp_u32vec1 u32vec1
Default precision 32 bit unsigned integer scalar type.
Definition: fwd.hpp:1161
+
detail::int16 int16_t
16 bit signed integer type.
Definition: fwd.hpp:301
+
highp_f32mat4x3 f32mat4x3
Default single-precision floating-point 4x3 matrix.
Definition: fwd.hpp:2470
+
fmat3x3 fmat3
Default single-precision floating-point 3x3 matrix.
Definition: fwd.hpp:2412
+
detail::int64 mediump_int64
Medium precision 64 bit signed integer type.
Definition: fwd.hpp:189
+
detail::int32 lowp_int32_t
Low precision 32 bit signed integer type.
Definition: fwd.hpp:153
+
highp_f64vec2 f64vec2
Default double-precision floating-point vector of 2 components.
Definition: fwd.hpp:2536
+
detail::uint64 highp_uint64
Medium precision 64 bit unsigned integer type.
Definition: fwd.hpp:846
+
detail::int64 i64
64 bit signed integer type.
Definition: fwd.hpp:326
+
highp_u64vec3 u64vec3
Default precision 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:1328
+
detail::int64 lowp_i64
Low precision 64 bit signed integer type.
Definition: fwd.hpp:173
+
+ + + + diff --git a/external/glm/doc/api/a00131.html b/external/glm/doc/api/a00131.html new file mode 100644 index 0000000..70c913e --- /dev/null +++ b/external/glm/doc/api/a00131.html @@ -0,0 +1,135 @@ + + + + + + +0.9.7: type_ptr.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
type_ptr.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL tmat2x2< T, defaultp > make_mat2 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat2x2< T, defaultp > make_mat2x2 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat2x3< T, defaultp > make_mat2x3 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat2x4< T, defaultp > make_mat2x4 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat3x3< T, defaultp > make_mat3 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat3x2< T, defaultp > make_mat3x2 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat3x3< T, defaultp > make_mat3x3 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat3x4< T, defaultp > make_mat3x4 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > make_mat4 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat4x2< T, defaultp > make_mat4x2 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat4x3< T, defaultp > make_mat4x3 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > make_mat4x4 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tquat< T, defaultp > make_quat (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tvec2< T, defaultp > make_vec2 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tvec3< T, defaultp > make_vec3 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tvec4< T, defaultp > make_vec4 (T const *const ptr)
 
template<typename genType >
GLM_FUNC_DECL genType::value_type const * value_ptr (genType const &vec)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_type_ptr

+
Date
2009-05-06 / 2011-06-05
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+gtc_half_float (dependence)
+
+GLM_GTC_quaternion (dependence)
+ +

Definition in file type_ptr.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00131_source.html b/external/glm/doc/api/a00131_source.html new file mode 100644 index 0000000..8745246 --- /dev/null +++ b/external/glm/doc/api/a00131_source.html @@ -0,0 +1,158 @@ + + + + + + +0.9.7: type_ptr.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_ptr.hpp
+
+
+Go to the documentation of this file.
1 
+
63 #pragma once
+
64 
+
65 // Dependency:
+
66 #include "../gtc/quaternion.hpp"
+
67 #include "../vec2.hpp"
+
68 #include "../vec3.hpp"
+
69 #include "../vec4.hpp"
+
70 #include "../mat2x2.hpp"
+
71 #include "../mat2x3.hpp"
+
72 #include "../mat2x4.hpp"
+
73 #include "../mat3x2.hpp"
+
74 #include "../mat3x3.hpp"
+
75 #include "../mat3x4.hpp"
+
76 #include "../mat4x2.hpp"
+
77 #include "../mat4x3.hpp"
+
78 #include "../mat4x4.hpp"
+
79 #include <cstring>
+
80 
+
81 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
82 # pragma message("GLM: GLM_GTC_type_ptr extension included")
+
83 #endif
+
84 
+
85 namespace glm
+
86 {
+
89 
+
92  template<typename genType>
+
93  GLM_FUNC_DECL typename genType::value_type const * value_ptr(genType const & vec);
+
94 
+
97  template<typename T>
+
98  GLM_FUNC_DECL tvec2<T, defaultp> make_vec2(T const * const ptr);
+
99 
+
102  template<typename T>
+
103  GLM_FUNC_DECL tvec3<T, defaultp> make_vec3(T const * const ptr);
+
104 
+
107  template<typename T>
+
108  GLM_FUNC_DECL tvec4<T, defaultp> make_vec4(T const * const ptr);
+
109 
+
112  template<typename T>
+
113  GLM_FUNC_DECL tmat2x2<T, defaultp> make_mat2x2(T const * const ptr);
+
114 
+
117  template<typename T>
+
118  GLM_FUNC_DECL tmat2x3<T, defaultp> make_mat2x3(T const * const ptr);
+
119 
+
122  template<typename T>
+
123  GLM_FUNC_DECL tmat2x4<T, defaultp> make_mat2x4(T const * const ptr);
+
124 
+
127  template<typename T>
+
128  GLM_FUNC_DECL tmat3x2<T, defaultp> make_mat3x2(T const * const ptr);
+
129 
+
132  template<typename T>
+
133  GLM_FUNC_DECL tmat3x3<T, defaultp> make_mat3x3(T const * const ptr);
+
134 
+
137  template<typename T>
+
138  GLM_FUNC_DECL tmat3x4<T, defaultp> make_mat3x4(T const * const ptr);
+
139 
+
142  template<typename T>
+
143  GLM_FUNC_DECL tmat4x2<T, defaultp> make_mat4x2(T const * const ptr);
+
144 
+
147  template<typename T>
+
148  GLM_FUNC_DECL tmat4x3<T, defaultp> make_mat4x3(T const * const ptr);
+
149 
+
152  template<typename T>
+
153  GLM_FUNC_DECL tmat4x4<T, defaultp> make_mat4x4(T const * const ptr);
+
154 
+
157  template<typename T>
+
158  GLM_FUNC_DECL tmat2x2<T, defaultp> make_mat2(T const * const ptr);
+
159 
+
162  template<typename T>
+
163  GLM_FUNC_DECL tmat3x3<T, defaultp> make_mat3(T const * const ptr);
+
164 
+
167  template<typename T>
+
168  GLM_FUNC_DECL tmat4x4<T, defaultp> make_mat4(T const * const ptr);
+
169 
+
172  template<typename T>
+
173  GLM_FUNC_DECL tquat<T, defaultp> make_quat(T const * const ptr);
+
174 
+
176 }//namespace glm
+
177 
+
178 #include "type_ptr.inl"
+
GLM_FUNC_DECL tmat2x4< T, defaultp > make_mat2x4(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL tmat2x2< T, defaultp > make_mat2x2(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL tquat< T, defaultp > make_quat(T const *const ptr)
Build a quaternion from a pointer.
+
GLM_FUNC_DECL tmat4x3< T, defaultp > make_mat4x3(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL tmat3x3< T, defaultp > make_mat3x3(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL tvec2< T, defaultp > make_vec2(T const *const ptr)
Build a vector from a pointer.
+
GLM_FUNC_DECL tmat3x4< T, defaultp > make_mat3x4(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL tmat2x3< T, defaultp > make_mat2x3(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL tmat4x2< T, defaultp > make_mat4x2(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL tvec3< T, defaultp > make_vec3(T const *const ptr)
Build a vector from a pointer.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL tmat2x2< T, defaultp > make_mat2(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL tvec4< T, defaultp > make_vec4(T const *const ptr)
Build a vector from a pointer.
+
GLM_FUNC_DECL tmat4x4< T, defaultp > make_mat4(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL tmat4x4< T, defaultp > make_mat4x4(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL tmat3x2< T, defaultp > make_mat3x2(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL tmat3x3< T, defaultp > make_mat3(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL genType::value_type const * value_ptr(genType const &vec)
Return the constant address to the data of the input parameter.
+
+ + + + diff --git a/external/glm/doc/api/a00132.html b/external/glm/doc/api/a00132.html new file mode 100644 index 0000000..d230c79 --- /dev/null +++ b/external/glm/doc/api/a00132.html @@ -0,0 +1,199 @@ + + + + + + +0.9.7: type_vec.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
type_vec.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef highp_bvec2 bvec2
 
typedef highp_bvec3 bvec3
 
typedef highp_bvec4 bvec4
 
typedef highp_dvec2 dvec2
 
typedef highp_dvec3 dvec3
 
typedef highp_dvec4 dvec4
 
typedef tvec2< bool, highp > highp_bvec2
 
typedef tvec3< bool, highp > highp_bvec3
 
typedef tvec4< bool, highp > highp_bvec4
 
typedef tvec2< double, highp > highp_dvec2
 
typedef tvec3< double, highp > highp_dvec3
 
typedef tvec4< double, highp > highp_dvec4
 
typedef tvec2< int, highp > highp_ivec2
 
typedef tvec3< int, highp > highp_ivec3
 
typedef tvec4< int, highp > highp_ivec4
 
typedef tvec2< uint, highp > highp_uvec2
 
typedef tvec3< uint, highp > highp_uvec3
 
typedef tvec4< uint, highp > highp_uvec4
 
typedef tvec2< float, highp > highp_vec2
 
typedef tvec3< float, highp > highp_vec3
 
typedef tvec4< float, highp > highp_vec4
 
typedef highp_ivec2 ivec2
 
typedef highp_ivec3 ivec3
 
typedef highp_ivec4 ivec4
 
typedef tvec2< bool, lowp > lowp_bvec2
 
typedef tvec3< bool, lowp > lowp_bvec3
 
typedef tvec4< bool, lowp > lowp_bvec4
 
typedef tvec2< double, lowp > lowp_dvec2
 
typedef tvec3< double, lowp > lowp_dvec3
 
typedef tvec4< double, lowp > lowp_dvec4
 
typedef tvec2< int, lowp > lowp_ivec2
 
typedef tvec3< int, lowp > lowp_ivec3
 
typedef tvec4< int, lowp > lowp_ivec4
 
typedef tvec2< uint, lowp > lowp_uvec2
 
typedef tvec3< uint, lowp > lowp_uvec3
 
typedef tvec4< uint, lowp > lowp_uvec4
 
typedef tvec2< float, lowp > lowp_vec2
 
typedef tvec3< float, lowp > lowp_vec3
 
typedef tvec4< float, lowp > lowp_vec4
 
typedef tvec2< bool, mediump > mediump_bvec2
 
typedef tvec3< bool, mediump > mediump_bvec3
 
typedef tvec4< bool, mediump > mediump_bvec4
 
typedef tvec2< double, mediump > mediump_dvec2
 
typedef tvec3< double, mediump > mediump_dvec3
 
typedef tvec4< double, mediump > mediump_dvec4
 
typedef tvec2< int, mediump > mediump_ivec2
 
typedef tvec3< int, mediump > mediump_ivec3
 
typedef tvec4< int, mediump > mediump_ivec4
 
typedef tvec2< uint, mediump > mediump_uvec2
 
typedef tvec3< uint, mediump > mediump_uvec3
 
typedef tvec4< uint, mediump > mediump_uvec4
 
typedef tvec2< float, mediump > mediump_vec2
 
typedef tvec3< float, mediump > mediump_vec3
 
typedef tvec4< float, mediump > mediump_vec4
 
typedef highp_uvec2 uvec2
 
typedef highp_uvec3 uvec3
 
typedef highp_uvec4 uvec4
 
typedef highp_vec2 vec2
 
typedef highp_vec3 vec3
 
typedef highp_vec4 vec4
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2010-01-26 / 2014-10-05
+
Author
Christophe Riccio
+ +

Definition in file type_vec.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00132_source.html b/external/glm/doc/api/a00132_source.html new file mode 100644 index 0000000..83ab617 --- /dev/null +++ b/external/glm/doc/api/a00132_source.html @@ -0,0 +1,340 @@ + + + + + + +0.9.7: type_vec.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_vec.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "precision.hpp"
+
36 #include "type_int.hpp"
+
37 
+
38 namespace glm
+
39 {
+
40  template <typename T, precision P> struct tvec1;
+
41  template <typename T, precision P> struct tvec2;
+
42  template <typename T, precision P> struct tvec3;
+
43  template <typename T, precision P> struct tvec4;
+
44 
+
45  typedef tvec1<float, highp> highp_vec1_t;
+
46  typedef tvec1<float, mediump> mediump_vec1_t;
+
47  typedef tvec1<float, lowp> lowp_vec1_t;
+
48  typedef tvec1<double, highp> highp_dvec1_t;
+
49  typedef tvec1<double, mediump> mediump_dvec1_t;
+
50  typedef tvec1<double, lowp> lowp_dvec1_t;
+
51  typedef tvec1<int, highp> highp_ivec1_t;
+
52  typedef tvec1<int, mediump> mediump_ivec1_t;
+
53  typedef tvec1<int, lowp> lowp_ivec1_t;
+
54  typedef tvec1<uint, highp> highp_uvec1_t;
+
55  typedef tvec1<uint, mediump> mediump_uvec1_t;
+
56  typedef tvec1<uint, lowp> lowp_uvec1_t;
+
57  typedef tvec1<bool, highp> highp_bvec1_t;
+
58  typedef tvec1<bool, mediump> mediump_bvec1_t;
+
59  typedef tvec1<bool, lowp> lowp_bvec1_t;
+
60 
+
63 
+
69  typedef tvec2<float, highp> highp_vec2;
+
70 
+
76  typedef tvec2<float, mediump> mediump_vec2;
+
77 
+
83  typedef tvec2<float, lowp> lowp_vec2;
+
84 
+
90  typedef tvec2<double, highp> highp_dvec2;
+
91 
+
97  typedef tvec2<double, mediump> mediump_dvec2;
+
98 
+
104  typedef tvec2<double, lowp> lowp_dvec2;
+
105 
+
111  typedef tvec2<int, highp> highp_ivec2;
+
112 
+
118  typedef tvec2<int, mediump> mediump_ivec2;
+
119 
+
125  typedef tvec2<int, lowp> lowp_ivec2;
+
126 
+
132  typedef tvec2<uint, highp> highp_uvec2;
+
133 
+
139  typedef tvec2<uint, mediump> mediump_uvec2;
+
140 
+
146  typedef tvec2<uint, lowp> lowp_uvec2;
+
147 
+
153  typedef tvec2<bool, highp> highp_bvec2;
+
154 
+
160  typedef tvec2<bool, mediump> mediump_bvec2;
+
161 
+
167  typedef tvec2<bool, lowp> lowp_bvec2;
+
168 
+
170 
+
173 
+
179  typedef tvec3<float, highp> highp_vec3;
+
180 
+
186  typedef tvec3<float, mediump> mediump_vec3;
+
187 
+
193  typedef tvec3<float, lowp> lowp_vec3;
+
194 
+
200  typedef tvec3<double, highp> highp_dvec3;
+
201 
+
207  typedef tvec3<double, mediump> mediump_dvec3;
+
208 
+
214  typedef tvec3<double, lowp> lowp_dvec3;
+
215 
+
221  typedef tvec3<int, highp> highp_ivec3;
+
222 
+
228  typedef tvec3<int, mediump> mediump_ivec3;
+
229 
+
235  typedef tvec3<int, lowp> lowp_ivec3;
+
236 
+
242  typedef tvec3<uint, highp> highp_uvec3;
+
243 
+
249  typedef tvec3<uint, mediump> mediump_uvec3;
+
250 
+
256  typedef tvec3<uint, lowp> lowp_uvec3;
+
257 
+
262  typedef tvec3<bool, highp> highp_bvec3;
+
263 
+
268  typedef tvec3<bool, mediump> mediump_bvec3;
+
269 
+
274  typedef tvec3<bool, lowp> lowp_bvec3;
+
275 
+
277 
+
280 
+
285  typedef tvec4<float, highp> highp_vec4;
+
286 
+
291  typedef tvec4<float, mediump> mediump_vec4;
+
292 
+
297  typedef tvec4<float, lowp> lowp_vec4;
+
298 
+
303  typedef tvec4<double, highp> highp_dvec4;
+
304 
+
309  typedef tvec4<double, mediump> mediump_dvec4;
+
310 
+
315  typedef tvec4<double, lowp> lowp_dvec4;
+
316 
+
321  typedef tvec4<int, highp> highp_ivec4;
+
322 
+
327  typedef tvec4<int, mediump> mediump_ivec4;
+
328 
+
333  typedef tvec4<int, lowp> lowp_ivec4;
+
334 
+
339  typedef tvec4<uint, highp> highp_uvec4;
+
340 
+
345  typedef tvec4<uint, mediump> mediump_uvec4;
+
346 
+
351  typedef tvec4<uint, lowp> lowp_uvec4;
+
352 
+
357  typedef tvec4<bool, highp> highp_bvec4;
+
358 
+
363  typedef tvec4<bool, mediump> mediump_bvec4;
+
364 
+
369  typedef tvec4<bool, lowp> lowp_bvec4;
+
370 
+
372 
+
375 
+
376  // -- Default float definition --
+
377 
+
378 #if(defined(GLM_PRECISION_LOWP_FLOAT))
+
379  typedef lowp_vec2 vec2;
+
380  typedef lowp_vec3 vec3;
+
381  typedef lowp_vec4 vec4;
+
382 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
+
383  typedef mediump_vec2 vec2;
+
384  typedef mediump_vec3 vec3;
+
385  typedef mediump_vec4 vec4;
+
386 #else //defined(GLM_PRECISION_HIGHP_FLOAT)
+
387  typedef highp_vec2 vec2;
+
391 
+
395  typedef highp_vec3 vec3;
+
396 
+
400  typedef highp_vec4 vec4;
+
401 #endif//GLM_PRECISION
+
402 
+
403  // -- Default double definition --
+
404 
+
405 #if(defined(GLM_PRECISION_LOWP_DOUBLE))
+
406  typedef lowp_dvec2 dvec2;
+
407  typedef lowp_dvec3 dvec3;
+
408  typedef lowp_dvec4 dvec4;
+
409 #elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE))
+
410  typedef mediump_dvec2 dvec2;
+
411  typedef mediump_dvec3 dvec3;
+
412  typedef mediump_dvec4 dvec4;
+
413 #else //defined(GLM_PRECISION_HIGHP_DOUBLE)
+
414  typedef highp_dvec2 dvec2;
+
418 
+
422  typedef highp_dvec3 dvec3;
+
423 
+
427  typedef highp_dvec4 dvec4;
+
428 #endif//GLM_PRECISION
+
429 
+
430  // -- Signed integer definition --
+
431 
+
432 #if(defined(GLM_PRECISION_LOWP_INT))
+
433  typedef lowp_ivec2 ivec2;
+
434  typedef lowp_ivec3 ivec3;
+
435  typedef lowp_ivec4 ivec4;
+
436 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
+
437  typedef mediump_ivec2 ivec2;
+
438  typedef mediump_ivec3 ivec3;
+
439  typedef mediump_ivec4 ivec4;
+
440 #else //defined(GLM_PRECISION_HIGHP_INT)
+
441  typedef highp_ivec2 ivec2;
+
445 
+
449  typedef highp_ivec3 ivec3;
+
450 
+
454  typedef highp_ivec4 ivec4;
+
455 #endif//GLM_PRECISION
+
456 
+
457  // -- Unsigned integer definition --
+
458 
+
459 #if(defined(GLM_PRECISION_LOWP_UINT))
+
460  typedef lowp_uvec2 uvec2;
+
461  typedef lowp_uvec3 uvec3;
+
462  typedef lowp_uvec4 uvec4;
+
463 #elif(defined(GLM_PRECISION_MEDIUMP_UINT))
+
464  typedef mediump_uvec2 uvec2;
+
465  typedef mediump_uvec3 uvec3;
+
466  typedef mediump_uvec4 uvec4;
+
467 #else //defined(GLM_PRECISION_HIGHP_UINT)
+
468  typedef highp_uvec2 uvec2;
+
472 
+
476  typedef highp_uvec3 uvec3;
+
477 
+
481  typedef highp_uvec4 uvec4;
+
482 #endif//GLM_PRECISION
+
483 
+
484  // -- Boolean definition --
+
485 
+
486 #if(defined(GLM_PRECISION_LOWP_BOOL))
+
487  typedef lowp_bvec2 bvec2;
+
488  typedef lowp_bvec3 bvec3;
+
489  typedef lowp_bvec4 bvec4;
+
490 #elif(defined(GLM_PRECISION_MEDIUMP_BOOL))
+
491  typedef mediump_bvec2 bvec2;
+
492  typedef mediump_bvec3 bvec3;
+
493  typedef mediump_bvec4 bvec4;
+
494 #else //defined(GLM_PRECISION_HIGHP_BOOL)
+
495  typedef highp_bvec2 bvec2;
+
499 
+
503  typedef highp_bvec3 bvec3;
+
504 
+
508  typedef highp_bvec4 bvec4;
+
509 #endif//GLM_PRECISION
+
510 
+
512 }//namespace glm
+
tvec2< float, highp > highp_vec2
2 components vector of high single-precision floating-point numbers.
Definition: type_vec.hpp:69
+
highp_ivec3 ivec3
3 components vector of signed integer numbers.
Definition: type_vec.hpp:449
+
tvec3< float, mediump > mediump_vec3
3 components vector of medium single-precision floating-point numbers.
Definition: type_vec.hpp:186
+
highp_dvec2 dvec2
2 components vector of double-precision floating-point numbers.
Definition: type_vec.hpp:417
+
tvec2< int, lowp > lowp_ivec2
2 components vector of low precision signed integer numbers.
Definition: type_vec.hpp:125
+
highp_uvec3 uvec3
3 components vector of unsigned integer numbers.
Definition: type_vec.hpp:476
+
tvec3< double, highp > highp_dvec3
3 components vector of high double-precision floating-point numbers.
Definition: type_vec.hpp:200
+
tvec2< float, mediump > mediump_vec2
2 components vector of medium single-precision floating-point numbers.
Definition: type_vec.hpp:76
+
tvec4< double, mediump > mediump_dvec4
4 components vector of medium double-precision floating-point numbers.
Definition: type_vec.hpp:309
+
tvec3< float, highp > highp_vec3
3 components vector of high single-precision floating-point numbers.
Definition: type_vec.hpp:179
+
highp_uvec4 uvec4
4 components vector of unsigned integer numbers.
Definition: type_vec.hpp:481
+
highp_dvec4 dvec4
4 components vector of double-precision floating-point numbers.
Definition: type_vec.hpp:427
+
tvec4< float, highp > highp_vec4
4 components vector of high single-precision floating-point numbers.
Definition: type_vec.hpp:285
+
tvec4< float, mediump > mediump_vec4
4 components vector of medium single-precision floating-point numbers.
Definition: type_vec.hpp:291
+
tvec4< uint, highp > highp_uvec4
4 components vector of high precision unsigned integer numbers.
Definition: type_vec.hpp:339
+
tvec4< bool, highp > highp_bvec4
4 components vector of high precision bool numbers.
Definition: type_vec.hpp:357
+
tvec3< int, highp > highp_ivec3
3 components vector of high precision signed integer numbers.
Definition: type_vec.hpp:221
+
highp_vec2 vec2
2 components vector of floating-point numbers.
Definition: type_vec.hpp:390
+
tvec4< bool, lowp > lowp_bvec4
4 components vector of low precision bool numbers.
Definition: type_vec.hpp:369
+
tvec4< uint, mediump > mediump_uvec4
4 components vector of medium precision unsigned integer numbers.
Definition: type_vec.hpp:345
+
highp_uvec2 uvec2
2 components vector of unsigned integer numbers.
Definition: type_vec.hpp:471
+
tvec2< double, lowp > lowp_dvec2
2 components vector of low double-precision floating-point numbers.
Definition: type_vec.hpp:104
+
tvec3< int, mediump > mediump_ivec3
3 components vector of medium precision signed integer numbers.
Definition: type_vec.hpp:228
+
tvec2< bool, lowp > lowp_bvec2
2 components vector of low precision bool numbers.
Definition: type_vec.hpp:167
+
tvec4< int, mediump > mediump_ivec4
4 components vector of medium precision signed integer numbers.
Definition: type_vec.hpp:327
+
tvec2< uint, mediump > mediump_uvec2
2 components vector of medium precision unsigned integer numbers.
Definition: type_vec.hpp:139
+
highp_bvec2 bvec2
2 components vector of boolean.
Definition: type_vec.hpp:498
+
tvec4< bool, mediump > mediump_bvec4
4 components vector of medium precision bool numbers.
Definition: type_vec.hpp:363
+
tvec4< int, lowp > lowp_ivec4
4 components vector of low precision signed integer numbers.
Definition: type_vec.hpp:333
+
tvec3< bool, mediump > mediump_bvec3
3 components vector of medium precision bool numbers.
Definition: type_vec.hpp:268
+
tvec3< double, mediump > mediump_dvec3
3 components vector of medium double-precision floating-point numbers.
Definition: type_vec.hpp:207
+
tvec2< double, mediump > mediump_dvec2
2 components vector of medium double-precision floating-point numbers.
Definition: type_vec.hpp:97
+
Definition: _noise.hpp:40
+
highp_ivec4 ivec4
4 components vector of signed integer numbers.
Definition: type_vec.hpp:454
+
highp_bvec4 bvec4
4 components vector of boolean.
Definition: type_vec.hpp:508
+
tvec2< bool, mediump > mediump_bvec2
2 components vector of medium precision bool numbers.
Definition: type_vec.hpp:160
+
tvec2< int, highp > highp_ivec2
2 components vector of high precision signed integer numbers.
Definition: type_vec.hpp:111
+
tvec3< bool, lowp > lowp_bvec3
3 components vector of low precision bool numbers.
Definition: type_vec.hpp:274
+
tvec4< double, lowp > lowp_dvec4
4 components vector of low double-precision floating-point numbers.
Definition: type_vec.hpp:315
+
tvec2< bool, highp > highp_bvec2
2 components vector of high precision bool numbers.
Definition: type_vec.hpp:153
+
highp_bvec3 bvec3
3 components vector of boolean.
Definition: type_vec.hpp:503
+
tvec3< double, lowp > lowp_dvec3
3 components vector of low double-precision floating-point numbers.
Definition: type_vec.hpp:214
+
tvec4< double, highp > highp_dvec4
4 components vector of high double-precision floating-point numbers.
Definition: type_vec.hpp:303
+
highp_vec4 vec4
4 components vector of floating-point numbers.
Definition: type_vec.hpp:400
+
tvec4< uint, lowp > lowp_uvec4
4 components vector of low precision unsigned integer numbers.
Definition: type_vec.hpp:351
+
tvec3< int, lowp > lowp_ivec3
3 components vector of low precision signed integer numbers.
Definition: type_vec.hpp:235
+
tvec2< uint, lowp > lowp_uvec2
2 components vector of low precision unsigned integer numbers.
Definition: type_vec.hpp:146
+
tvec3< uint, mediump > mediump_uvec3
3 components vector of medium precision unsigned integer numbers.
Definition: type_vec.hpp:249
+
tvec2< float, lowp > lowp_vec2
2 components vector of low single-precision floating-point numbers.
Definition: type_vec.hpp:83
+
tvec3< uint, lowp > lowp_uvec3
3 components vector of low precision unsigned integer numbers.
Definition: type_vec.hpp:256
+
highp_vec3 vec3
3 components vector of floating-point numbers.
Definition: type_vec.hpp:395
+
highp_dvec3 dvec3
3 components vector of double-precision floating-point numbers.
Definition: type_vec.hpp:422
+
tvec3< uint, highp > highp_uvec3
3 components vector of high precision unsigned integer numbers.
Definition: type_vec.hpp:242
+
tvec3< bool, highp > highp_bvec3
3 components vector of high precision bool numbers.
Definition: type_vec.hpp:262
+
tvec3< float, lowp > lowp_vec3
3 components vector of low single-precision floating-point numbers.
Definition: type_vec.hpp:193
+
highp_ivec2 ivec2
2 components vector of signed integer numbers.
Definition: type_vec.hpp:444
+
tvec2< uint, highp > highp_uvec2
2 components vector of high precision unsigned integer numbers.
Definition: type_vec.hpp:132
+
tvec2< int, mediump > mediump_ivec2
2 components vector of medium precision signed integer numbers.
Definition: type_vec.hpp:118
+
OpenGL Mathematics (glm.g-truc.net)
+
tvec4< int, highp > highp_ivec4
4 components vector of high precision signed integer numbers.
Definition: type_vec.hpp:321
+
tvec4< float, lowp > lowp_vec4
4 components vector of low single-precision floating-point numbers.
Definition: type_vec.hpp:297
+
OpenGL Mathematics (glm.g-truc.net)
+
tvec2< double, highp > highp_dvec2
2 components vector of high double-precision floating-point numbers.
Definition: type_vec.hpp:90
+
+ + + + diff --git a/external/glm/doc/api/a00133.html b/external/glm/doc/api/a00133.html new file mode 100644 index 0000000..da3056b --- /dev/null +++ b/external/glm/doc/api/a00133.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: type_vec1.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_vec1.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2008-08-25 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file type_vec1.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00133_source.html b/external/glm/doc/api/a00133_source.html new file mode 100644 index 0000000..0ade632 --- /dev/null +++ b/external/glm/doc/api/a00133_source.html @@ -0,0 +1,344 @@ + + + + + + +0.9.7: type_vec1.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_vec1.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "../fwd.hpp"
+
36 #include "type_vec.hpp"
+
37 #ifdef GLM_SWIZZLE
+
38 # if GLM_HAS_ANONYMOUS_UNION
+
39 # include "_swizzle.hpp"
+
40 # else
+
41 # include "_swizzle_func.hpp"
+
42 # endif
+
43 #endif //GLM_SWIZZLE
+
44 #include <cstddef>
+
45 
+
46 namespace glm
+
47 {
+
48  template <typename T, precision P = defaultp>
+
49  struct tvec1
+
50  {
+
51  // -- Implementation detail --
+
52 
+
53  typedef tvec1<T, P> type;
+
54  typedef tvec1<bool, P> bool_type;
+
55  typedef T value_type;
+
56 
+
57 # ifdef GLM_META_PROG_HELPERS
+
58  static GLM_RELAXED_CONSTEXPR length_t components = 1;
+
59  static GLM_RELAXED_CONSTEXPR precision prec = P;
+
60 # endif//GLM_META_PROG_HELPERS
+
61 
+
62  // -- Data --
+
63 
+
64 # if GLM_HAS_ANONYMOUS_UNION
+
65  union
+
66  {
+
67  T x;
+
68  T r;
+
69  T s;
+
70 /*
+
71 # ifdef GLM_SWIZZLE
+
72  _GLM_SWIZZLE1_2_MEMBERS(T, P, tvec2, x)
+
73  _GLM_SWIZZLE1_2_MEMBERS(T, P, tvec2, r)
+
74  _GLM_SWIZZLE1_2_MEMBERS(T, P, tvec2, s)
+
75  _GLM_SWIZZLE1_3_MEMBERS(T, P, tvec3, x)
+
76  _GLM_SWIZZLE1_3_MEMBERS(T, P, tvec3, r)
+
77  _GLM_SWIZZLE1_3_MEMBERS(T, P, tvec3, s)
+
78  _GLM_SWIZZLE1_4_MEMBERS(T, P, tvec4, x)
+
79  _GLM_SWIZZLE1_4_MEMBERS(T, P, tvec4, r)
+
80  _GLM_SWIZZLE1_4_MEMBERS(T, P, tvec4, s)
+
81 # endif//GLM_SWIZZLE*/
+
82  };
+
83 # else
+
84  union {T x, r, s;};
+
85 /*
+
86 # ifdef GLM_SWIZZLE
+
87  GLM_SWIZZLE_GEN_VEC_FROM_VEC1(T, P, tvec2, tvec2, tvec3, tvec4)
+
88 # endif//GLM_SWIZZLE*/
+
89 # endif
+
90 
+
91  // -- Component accesses --
+
92 
+
93 # ifdef GLM_FORCE_SIZE_FUNC
+
94  typedef size_t size_type;
+
96  GLM_FUNC_DECL GLM_CONSTEXPR size_type size() const;
+
97 
+
98  GLM_FUNC_DECL T & operator[](size_type i);
+
99  GLM_FUNC_DECL T const & operator[](size_type i) const;
+
100 # else
+
101  typedef length_t length_type;
+
103  GLM_FUNC_DECL GLM_CONSTEXPR length_type length() const;
+
104 
+
105  GLM_FUNC_DECL T & operator[](length_type i);
+
106  GLM_FUNC_DECL T const & operator[](length_type i) const;
+
107 # endif//GLM_FORCE_SIZE_FUNC
+
108 
+
109  // -- Implicit basic constructors --
+
110 
+
111  GLM_FUNC_DECL tvec1() GLM_DEFAULT_CTOR;
+
112  GLM_FUNC_DECL tvec1(tvec1<T, P> const & v) GLM_DEFAULT;
+
113  template <precision Q>
+
114  GLM_FUNC_DECL tvec1(tvec1<T, Q> const & v);
+
115 
+
116  // -- Explicit basic constructors --
+
117 
+
118  GLM_FUNC_DECL explicit tvec1(ctor);
+
119  GLM_FUNC_DECL explicit tvec1(T const & s);
+
120 
+
121  // -- Conversion vector constructors --
+
122 
+
124  template <typename U, precision Q>
+
125  GLM_FUNC_DECL explicit tvec1(tvec2<U, Q> const & v);
+
127  template <typename U, precision Q>
+
128  GLM_FUNC_DECL explicit tvec1(tvec3<U, Q> const & v);
+
130  template <typename U, precision Q>
+
131  GLM_FUNC_DECL explicit tvec1(tvec4<U, Q> const & v);
+
132 
+
134  template <typename U, precision Q>
+
135  GLM_FUNC_DECL GLM_EXPLICIT tvec1(tvec1<U, Q> const & v);
+
136 
+
137  // -- Swizzle constructors --
+
138 
+
139 # if(GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE))
+
140  template <int E0>
+
141  GLM_FUNC_DECL tvec1(detail::_swizzle<1, T, P, tvec1<T, P>, E0, -1,-2,-3> const & that)
+
142  {
+
143  *this = that();
+
144  }
+
145 # endif//(GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE))
+
146 
+
147  // -- Unary arithmetic operators --
+
148 
+
149  GLM_FUNC_DECL tvec1<T, P> & operator=(tvec1<T, P> const & v) GLM_DEFAULT;
+
150 
+
151  template <typename U>
+
152  GLM_FUNC_DECL tvec1<T, P> & operator=(tvec1<U, P> const & v);
+
153  template <typename U>
+
154  GLM_FUNC_DECL tvec1<T, P> & operator+=(U const & s);
+
155  template <typename U>
+
156  GLM_FUNC_DECL tvec1<T, P> & operator+=(tvec1<U, P> const & v);
+
157  template <typename U>
+
158  GLM_FUNC_DECL tvec1<T, P> & operator-=(U const & s);
+
159  template <typename U>
+
160  GLM_FUNC_DECL tvec1<T, P> & operator-=(tvec1<U, P> const & v);
+
161  template <typename U>
+
162  GLM_FUNC_DECL tvec1<T, P> & operator*=(U const & s);
+
163  template <typename U>
+
164  GLM_FUNC_DECL tvec1<T, P> & operator*=(tvec1<U, P> const & v);
+
165  template <typename U>
+
166  GLM_FUNC_DECL tvec1<T, P> & operator/=(U const & s);
+
167  template <typename U>
+
168  GLM_FUNC_DECL tvec1<T, P> & operator/=(tvec1<U, P> const & v);
+
169 
+
170  // -- Increment and decrement operators --
+
171 
+
172  GLM_FUNC_DECL tvec1<T, P> & operator++();
+
173  GLM_FUNC_DECL tvec1<T, P> & operator--();
+
174  GLM_FUNC_DECL tvec1<T, P> operator++(int);
+
175  GLM_FUNC_DECL tvec1<T, P> operator--(int);
+
176 
+
177  // -- Unary bit operators --
+
178 
+
179  template <typename U>
+
180  GLM_FUNC_DECL tvec1<T, P> & operator%=(U const & s);
+
181  template <typename U>
+
182  GLM_FUNC_DECL tvec1<T, P> & operator%=(tvec1<U, P> const & v);
+
183  template <typename U>
+
184  GLM_FUNC_DECL tvec1<T, P> & operator&=(U const & s);
+
185  template <typename U>
+
186  GLM_FUNC_DECL tvec1<T, P> & operator&=(tvec1<U, P> const & v);
+
187  template <typename U>
+
188  GLM_FUNC_DECL tvec1<T, P> & operator|=(U const & s);
+
189  template <typename U>
+
190  GLM_FUNC_DECL tvec1<T, P> & operator|=(tvec1<U, P> const & v);
+
191  template <typename U>
+
192  GLM_FUNC_DECL tvec1<T, P> & operator^=(U const & s);
+
193  template <typename U>
+
194  GLM_FUNC_DECL tvec1<T, P> & operator^=(tvec1<U, P> const & v);
+
195  template <typename U>
+
196  GLM_FUNC_DECL tvec1<T, P> & operator<<=(U const & s);
+
197  template <typename U>
+
198  GLM_FUNC_DECL tvec1<T, P> & operator<<=(tvec1<U, P> const & v);
+
199  template <typename U>
+
200  GLM_FUNC_DECL tvec1<T, P> & operator>>=(U const & s);
+
201  template <typename U>
+
202  GLM_FUNC_DECL tvec1<T, P> & operator>>=(tvec1<U, P> const & v);
+
203  };
+
204 
+
205  // -- Unary operators --
+
206 
+
207  template <typename T, precision P>
+
208  GLM_FUNC_DECL tvec1<T, P> operator-(tvec1<T, P> const & v);
+
209 
+
210  // -- Binary operators --
+
211 
+
212  template <typename T, precision P>
+
213  GLM_FUNC_DECL tvec1<T, P> operator+(tvec1<T, P> const & v, T const & s);
+
214 
+
215  template <typename T, precision P>
+
216  GLM_FUNC_DECL tvec1<T, P> operator+(T const & s, tvec1<T, P> const & v);
+
217 
+
218  template <typename T, precision P>
+
219  GLM_FUNC_DECL tvec1<T, P> operator+(tvec1<T, P> const & v1, tvec1<T, P> const & v2);
+
220 
+
221  template <typename T, precision P>
+
222  GLM_FUNC_DECL tvec1<T, P> operator-(tvec1<T, P> const & v, T const & s);
+
223 
+
224  template <typename T, precision P>
+
225  GLM_FUNC_DECL tvec1<T, P> operator-(T const & s, tvec1<T, P> const & v);
+
226 
+
227  template <typename T, precision P>
+
228  GLM_FUNC_DECL tvec1<T, P> operator- (tvec1<T, P> const & v1, tvec1<T, P> const & v2);
+
229 
+
230  template <typename T, precision P>
+
231  GLM_FUNC_DECL tvec1<T, P> operator*(tvec1<T, P> const & v, T const & s);
+
232 
+
233  template <typename T, precision P>
+
234  GLM_FUNC_DECL tvec1<T, P> operator*(T const & s, tvec1<T, P> const & v);
+
235 
+
236  template <typename T, precision P>
+
237  GLM_FUNC_DECL tvec1<T, P> operator*(tvec1<T, P> const & v1, tvec1<T, P> const & v2);
+
238 
+
239  template <typename T, precision P>
+
240  GLM_FUNC_DECL tvec1<T, P> operator/(tvec1<T, P> const & v, T const & s);
+
241 
+
242  template <typename T, precision P>
+
243  GLM_FUNC_DECL tvec1<T, P> operator/(T const & s, tvec1<T, P> const & v);
+
244 
+
245  template <typename T, precision P>
+
246  GLM_FUNC_DECL tvec1<T, P> operator/(tvec1<T, P> const & v1, tvec1<T, P> const & v2);
+
247 
+
248  template <typename T, precision P>
+
249  GLM_FUNC_DECL tvec1<T, P> operator%(tvec1<T, P> const & v, T const & s);
+
250 
+
251  template <typename T, precision P>
+
252  GLM_FUNC_DECL tvec1<T, P> operator%(T const & s, tvec1<T, P> const & v);
+
253 
+
254  template <typename T, precision P>
+
255  GLM_FUNC_DECL tvec1<T, P> operator%(tvec1<T, P> const & v1, tvec1<T, P> const & v2);
+
256 
+
257  template <typename T, precision P>
+
258  GLM_FUNC_DECL tvec1<T, P> operator&(tvec1<T, P> const & v, T const & s);
+
259 
+
260  template <typename T, precision P>
+
261  GLM_FUNC_DECL tvec1<T, P> operator&(T const & s, tvec1<T, P> const & v);
+
262 
+
263  template <typename T, precision P>
+
264  GLM_FUNC_DECL tvec1<T, P> operator&(tvec1<T, P> const & v1, tvec1<T, P> const & v2);
+
265 
+
266  template <typename T, precision P>
+
267  GLM_FUNC_DECL tvec1<T, P> operator|(tvec1<T, P> const & v, T const & s);
+
268 
+
269  template <typename T, precision P>
+
270  GLM_FUNC_DECL tvec1<T, P> operator|(T const & s, tvec1<T, P> const & v);
+
271 
+
272  template <typename T, precision P>
+
273  GLM_FUNC_DECL tvec1<T, P> operator|(tvec1<T, P> const & v1, tvec1<T, P> const & v2);
+
274 
+
275  template <typename T, precision P>
+
276  GLM_FUNC_DECL tvec1<T, P> operator^(tvec1<T, P> const & v, T const & s);
+
277 
+
278  template <typename T, precision P>
+
279  GLM_FUNC_DECL tvec1<T, P> operator^(T const & s, tvec1<T, P> const & v);
+
280 
+
281  template <typename T, precision P>
+
282  GLM_FUNC_DECL tvec1<T, P> operator^(tvec1<T, P> const & v1, tvec1<T, P> const & v2);
+
283 
+
284  template <typename T, precision P>
+
285  GLM_FUNC_DECL tvec1<T, P> operator<<(tvec1<T, P> const & v, T const & s);
+
286 
+
287  template <typename T, precision P>
+
288  GLM_FUNC_DECL tvec1<T, P> operator<<(T const & s, tvec1<T, P> const & v);
+
289 
+
290  template <typename T, precision P>
+
291  GLM_FUNC_DECL tvec1<T, P> operator<<(tvec1<T, P> const & v1, tvec1<T, P> const & v2);
+
292 
+
293  template <typename T, precision P>
+
294  GLM_FUNC_DECL tvec1<T, P> operator>>(tvec1<T, P> const & v, T const & s);
+
295 
+
296  template <typename T, precision P>
+
297  GLM_FUNC_DECL tvec1<T, P> operator>>(T const & s, tvec1<T, P> const & v);
+
298 
+
299  template <typename T, precision P>
+
300  GLM_FUNC_DECL tvec1<T, P> operator>>(tvec1<T, P> const & v1, tvec1<T, P> const & v2);
+
301 
+
302  template <typename T, precision P>
+
303  GLM_FUNC_DECL tvec1<T, P> operator~(tvec1<T, P> const & v);
+
304 
+
305  // -- Boolean operators --
+
306 
+
307  template <typename T, precision P>
+
308  GLM_FUNC_DECL bool operator==(tvec1<T, P> const & v1, tvec1<T, P> const & v2);
+
309 
+
310  template <typename T, precision P>
+
311  GLM_FUNC_DECL bool operator!=(tvec1<T, P> const & v1, tvec1<T, P> const & v2);
+
312 }//namespace glm
+
313 
+
314 #ifndef GLM_EXTERNAL_TEMPLATE
+
315 #include "type_vec1.inl"
+
316 #endif//GLM_EXTERNAL_TEMPLATE
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00134.html b/external/glm/doc/api/a00134.html new file mode 100644 index 0000000..b7fd90f --- /dev/null +++ b/external/glm/doc/api/a00134.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: type_vec2.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_vec2.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2008-08-18 / 2013-08-27
+
Author
Christophe Riccio
+ +

Definition in file type_vec2.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00134_source.html b/external/glm/doc/api/a00134_source.html new file mode 100644 index 0000000..46b5e37 --- /dev/null +++ b/external/glm/doc/api/a00134_source.html @@ -0,0 +1,433 @@ + + + + + + +0.9.7: type_vec2.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_vec2.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "type_vec.hpp"
+
36 #ifdef GLM_SWIZZLE
+
37 # if GLM_HAS_ANONYMOUS_UNION
+
38 # include "_swizzle.hpp"
+
39 # else
+
40 # include "_swizzle_func.hpp"
+
41 # endif
+
42 #endif //GLM_SWIZZLE
+
43 #include <cstddef>
+
44 
+
45 namespace glm
+
46 {
+
47  template <typename T, precision P = defaultp>
+
48  struct tvec2
+
49  {
+
50  // -- Implementation detail --
+
51 
+
52  typedef tvec2<T, P> type;
+
53  typedef tvec2<bool, P> bool_type;
+
54  typedef T value_type;
+
55 
+
56 # ifdef GLM_META_PROG_HELPERS
+
57  static GLM_RELAXED_CONSTEXPR length_t components = 2;
+
58  static GLM_RELAXED_CONSTEXPR precision prec = P;
+
59 # endif//GLM_META_PROG_HELPERS
+
60 
+
61  // -- Data --
+
62 
+
63 # if GLM_HAS_ANONYMOUS_UNION
+
64  union
+
65  {
+
66  struct{ T x, y; };
+
67  struct{ T r, g; };
+
68  struct{ T s, t; };
+
69 
+
70 # ifdef GLM_SWIZZLE
+
71  _GLM_SWIZZLE2_2_MEMBERS(T, P, tvec2, x, y)
+
72  _GLM_SWIZZLE2_2_MEMBERS(T, P, tvec2, r, g)
+
73  _GLM_SWIZZLE2_2_MEMBERS(T, P, tvec2, s, t)
+
74  _GLM_SWIZZLE2_3_MEMBERS(T, P, tvec3, x, y)
+
75  _GLM_SWIZZLE2_3_MEMBERS(T, P, tvec3, r, g)
+
76  _GLM_SWIZZLE2_3_MEMBERS(T, P, tvec3, s, t)
+
77  _GLM_SWIZZLE2_4_MEMBERS(T, P, tvec4, x, y)
+
78  _GLM_SWIZZLE2_4_MEMBERS(T, P, tvec4, r, g)
+
79  _GLM_SWIZZLE2_4_MEMBERS(T, P, tvec4, s, t)
+
80 # endif//GLM_SWIZZLE
+
81  };
+
82 # else
+
83  union {T x, r, s;};
+
84  union {T y, g, t;};
+
85 
+
86 # ifdef GLM_SWIZZLE
+
87  GLM_SWIZZLE_GEN_VEC_FROM_VEC2(T, P, tvec2, tvec2, tvec3, tvec4)
+
88 # endif//GLM_SWIZZLE
+
89 # endif
+
90 
+
91  // -- Component accesses --
+
92 
+
93 # ifdef GLM_FORCE_SIZE_FUNC
+
94  typedef size_t size_type;
+
96  GLM_FUNC_DECL GLM_CONSTEXPR size_type size() const;
+
97 
+
98  GLM_FUNC_DECL T & operator[](size_type i);
+
99  GLM_FUNC_DECL T const & operator[](size_type i) const;
+
100 # else
+
101  typedef length_t length_type;
+
103  GLM_FUNC_DECL GLM_CONSTEXPR length_type length() const;
+
104 
+
105  GLM_FUNC_DECL T & operator[](length_type i);
+
106  GLM_FUNC_DECL T const & operator[](length_type i) const;
+
107 # endif//GLM_FORCE_SIZE_FUNC
+
108 
+
109  // -- Implicit basic constructors --
+
110 
+
111  GLM_FUNC_DECL tvec2() GLM_DEFAULT_CTOR;
+
112  GLM_FUNC_DECL tvec2(tvec2<T, P> const & v) GLM_DEFAULT;
+
113  template <precision Q>
+
114  GLM_FUNC_DECL tvec2(tvec2<T, Q> const & v);
+
115 
+
116  // -- Explicit basic constructors --
+
117 
+
118  GLM_FUNC_DECL explicit tvec2(ctor);
+
119  GLM_FUNC_DECL explicit tvec2(T const & s);
+
120  GLM_FUNC_DECL tvec2(T const & s1, T const & s2);
+
121 
+
122  // -- Conversion constructors --
+
123 
+
125  template <typename A, typename B>
+
126  GLM_FUNC_DECL tvec2(A const & x, B const & y);
+
127  template <typename A, typename B>
+
128  GLM_FUNC_DECL tvec2(tvec1<A, P> const & v1, tvec1<B, P> const & v2);
+
129 
+
130  // -- Conversion vector constructors --
+
131 
+
133  template <typename U, precision Q>
+
134  GLM_FUNC_DECL explicit tvec2(tvec3<U, Q> const & v);
+
136  template <typename U, precision Q>
+
137  GLM_FUNC_DECL explicit tvec2(tvec4<U, Q> const & v);
+
138 
+
140  template <typename U, precision Q>
+
141  GLM_FUNC_DECL GLM_EXPLICIT tvec2(tvec2<U, Q> const & v);
+
142 
+
143  // -- Swizzle constructors --
+
144 
+
145 # if GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE)
+
146  template <int E0, int E1>
+
147  GLM_FUNC_DECL tvec2(detail::_swizzle<2, T, P, tvec2<T, P>, E0, E1,-1,-2> const & that)
+
148  {
+
149  *this = that();
+
150  }
+
151 # endif// GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE)
+
152 
+
153  // -- Unary arithmetic operators --
+
154 
+
155  GLM_FUNC_DECL tvec2<T, P>& operator=(tvec2<T, P> const & v) GLM_DEFAULT;
+
156 
+
157  template <typename U>
+
158  GLM_FUNC_DECL tvec2<T, P>& operator=(tvec2<U, P> const & v);
+
159  template <typename U>
+
160  GLM_FUNC_DECL tvec2<T, P>& operator+=(U s);
+
161  template <typename U>
+
162  GLM_FUNC_DECL tvec2<T, P>& operator+=(tvec1<U, P> const & v);
+
163  template <typename U>
+
164  GLM_FUNC_DECL tvec2<T, P>& operator+=(tvec2<U, P> const & v);
+
165  template <typename U>
+
166  GLM_FUNC_DECL tvec2<T, P>& operator-=(U s);
+
167  template <typename U>
+
168  GLM_FUNC_DECL tvec2<T, P>& operator-=(tvec1<U, P> const & v);
+
169  template <typename U>
+
170  GLM_FUNC_DECL tvec2<T, P>& operator-=(tvec2<U, P> const & v);
+
171  template <typename U>
+
172  GLM_FUNC_DECL tvec2<T, P>& operator*=(U s);
+
173  template <typename U>
+
174  GLM_FUNC_DECL tvec2<T, P>& operator*=(tvec1<U, P> const & v);
+
175  template <typename U>
+
176  GLM_FUNC_DECL tvec2<T, P>& operator*=(tvec2<U, P> const & v);
+
177  template <typename U>
+
178  GLM_FUNC_DECL tvec2<T, P>& operator/=(U s);
+
179  template <typename U>
+
180  GLM_FUNC_DECL tvec2<T, P>& operator/=(tvec1<U, P> const & v);
+
181  template <typename U>
+
182  GLM_FUNC_DECL tvec2<T, P>& operator/=(tvec2<U, P> const & v);
+
183 
+
184  // -- Increment and decrement operators --
+
185 
+
186  GLM_FUNC_DECL tvec2<T, P> & operator++();
+
187  GLM_FUNC_DECL tvec2<T, P> & operator--();
+
188  GLM_FUNC_DECL tvec2<T, P> operator++(int);
+
189  GLM_FUNC_DECL tvec2<T, P> operator--(int);
+
190 
+
191  // -- Unary bit operators --
+
192 
+
193  template <typename U>
+
194  GLM_FUNC_DECL tvec2<T, P> & operator%=(U s);
+
195  template <typename U>
+
196  GLM_FUNC_DECL tvec2<T, P> & operator%=(tvec1<U, P> const & v);
+
197  template <typename U>
+
198  GLM_FUNC_DECL tvec2<T, P> & operator%=(tvec2<U, P> const & v);
+
199  template <typename U>
+
200  GLM_FUNC_DECL tvec2<T, P> & operator&=(U s);
+
201  template <typename U>
+
202  GLM_FUNC_DECL tvec2<T, P> & operator&=(tvec1<U, P> const & v);
+
203  template <typename U>
+
204  GLM_FUNC_DECL tvec2<T, P> & operator&=(tvec2<U, P> const & v);
+
205  template <typename U>
+
206  GLM_FUNC_DECL tvec2<T, P> & operator|=(U s);
+
207  template <typename U>
+
208  GLM_FUNC_DECL tvec2<T, P> & operator|=(tvec1<U, P> const & v);
+
209  template <typename U>
+
210  GLM_FUNC_DECL tvec2<T, P> & operator|=(tvec2<U, P> const & v);
+
211  template <typename U>
+
212  GLM_FUNC_DECL tvec2<T, P> & operator^=(U s);
+
213  template <typename U>
+
214  GLM_FUNC_DECL tvec2<T, P> & operator^=(tvec1<U, P> const & v);
+
215  template <typename U>
+
216  GLM_FUNC_DECL tvec2<T, P> & operator^=(tvec2<U, P> const & v);
+
217  template <typename U>
+
218  GLM_FUNC_DECL tvec2<T, P> & operator<<=(U s);
+
219  template <typename U>
+
220  GLM_FUNC_DECL tvec2<T, P> & operator<<=(tvec1<U, P> const & v);
+
221  template <typename U>
+
222  GLM_FUNC_DECL tvec2<T, P> & operator<<=(tvec2<U, P> const & v);
+
223  template <typename U>
+
224  GLM_FUNC_DECL tvec2<T, P> & operator>>=(U s);
+
225  template <typename U>
+
226  GLM_FUNC_DECL tvec2<T, P> & operator>>=(tvec1<U, P> const & v);
+
227  template <typename U>
+
228  GLM_FUNC_DECL tvec2<T, P> & operator>>=(tvec2<U, P> const & v);
+
229  };
+
230 
+
231  // -- Unary operators --
+
232 
+
233  template <typename T, precision P>
+
234  GLM_FUNC_DECL tvec2<T, P> operator-(tvec2<T, P> const & v);
+
235 
+
236  // -- Binary operators --
+
237 
+
238  template <typename T, precision P>
+
239  GLM_FUNC_DECL tvec2<T, P> operator+(tvec2<T, P> const & v, T const & s);
+
240 
+
241  template <typename T, precision P>
+
242  GLM_FUNC_DECL tvec2<T, P> operator+(tvec2<T, P> const & v1, tvec1<T, P> const & v2);
+
243 
+
244  template <typename T, precision P>
+
245  GLM_FUNC_DECL tvec2<T, P> operator+(T const & s, tvec2<T, P> const & v);
+
246 
+
247  template <typename T, precision P>
+
248  GLM_FUNC_DECL tvec2<T, P> operator+(tvec1<T, P> const & v1, tvec2<T, P> const & v2);
+
249 
+
250  template <typename T, precision P>
+
251  GLM_FUNC_DECL tvec2<T, P> operator+(tvec2<T, P> const & v1, tvec2<T, P> const & v2);
+
252 
+
253  template <typename T, precision P>
+
254  GLM_FUNC_DECL tvec2<T, P> operator-(tvec2<T, P> const & v, T const & s);
+
255 
+
256  template <typename T, precision P>
+
257  GLM_FUNC_DECL tvec2<T, P> operator-(tvec2<T, P> const & v1, tvec1<T, P> const & v2);
+
258 
+
259  template <typename T, precision P>
+
260  GLM_FUNC_DECL tvec2<T, P> operator-(T const & s, tvec2<T, P> const & v);
+
261 
+
262  template <typename T, precision P>
+
263  GLM_FUNC_DECL tvec2<T, P> operator-(tvec1<T, P> const & v1, tvec2<T, P> const & v2);
+
264 
+
265  template <typename T, precision P>
+
266  GLM_FUNC_DECL tvec2<T, P> operator-(tvec2<T, P> const & v1, tvec2<T, P> const & v2);
+
267 
+
268  template <typename T, precision P>
+
269  GLM_FUNC_DECL tvec2<T, P> operator*(tvec2<T, P> const & v, T const & s);
+
270 
+
271  template <typename T, precision P>
+
272  GLM_FUNC_DECL tvec2<T, P> operator*(tvec2<T, P> const & v1, tvec1<T, P> const & v2);
+
273 
+
274  template <typename T, precision P>
+
275  GLM_FUNC_DECL tvec2<T, P> operator*(T const & s, tvec2<T, P> const & v);
+
276 
+
277  template <typename T, precision P>
+
278  GLM_FUNC_DECL tvec2<T, P> operator*(tvec1<T, P> const & v1, tvec2<T, P> const & v2);
+
279 
+
280  template <typename T, precision P>
+
281  GLM_FUNC_DECL tvec2<T, P> operator*(tvec2<T, P> const & v1, tvec2<T, P> const & v2);
+
282 
+
283  template <typename T, precision P>
+
284  GLM_FUNC_DECL tvec2<T, P> operator/(tvec2<T, P> const & v, T const & s);
+
285 
+
286  template <typename T, precision P>
+
287  GLM_FUNC_DECL tvec2<T, P> operator/(tvec2<T, P> const & v1, tvec1<T, P> const & v2);
+
288 
+
289  template <typename T, precision P>
+
290  GLM_FUNC_DECL tvec2<T, P> operator/(T const & s, tvec2<T, P> const & v);
+
291 
+
292  template <typename T, precision P>
+
293  GLM_FUNC_DECL tvec2<T, P> operator/(tvec1<T, P> const & v1, tvec2<T, P> const & v2);
+
294 
+
295  template <typename T, precision P>
+
296  GLM_FUNC_DECL tvec2<T, P> operator/(tvec2<T, P> const & v1, tvec2<T, P> const & v2);
+
297 
+
298  template <typename T, precision P>
+
299  GLM_FUNC_DECL tvec2<T, P> operator-(tvec2<T, P> const & v);
+
300 
+
301  template <typename T, precision P>
+
302  GLM_FUNC_DECL tvec2<T, P> operator%(tvec2<T, P> const & v, T const & s);
+
303 
+
304  template <typename T, precision P>
+
305  GLM_FUNC_DECL tvec2<T, P> operator%(tvec2<T, P> const & v1, tvec1<T, P> const & v2);
+
306 
+
307  template <typename T, precision P>
+
308  GLM_FUNC_DECL tvec2<T, P> operator%(T const & s, tvec2<T, P> const & v);
+
309 
+
310  template <typename T, precision P>
+
311  GLM_FUNC_DECL tvec2<T, P> operator%(tvec1<T, P> const & v1, tvec2<T, P> const & v2);
+
312 
+
313  template <typename T, precision P>
+
314  GLM_FUNC_DECL tvec2<T, P> operator%(tvec2<T, P> const & v1, tvec2<T, P> const & v2);
+
315 
+
316  template <typename T, precision P>
+
317  GLM_FUNC_DECL tvec2<T, P> operator&(tvec2<T, P> const & v, T const & s);
+
318 
+
319  template <typename T, precision P>
+
320  GLM_FUNC_DECL tvec2<T, P> operator&(tvec2<T, P> const & v1, tvec1<T, P> const & v2);
+
321 
+
322  template <typename T, precision P>
+
323  GLM_FUNC_DECL tvec2<T, P> operator&(T const & s, tvec2<T, P> const & v);
+
324 
+
325  template <typename T, precision P>
+
326  GLM_FUNC_DECL tvec2<T, P> operator&(tvec1<T, P> const & v1, tvec2<T, P> const & v2);
+
327 
+
328  template <typename T, precision P>
+
329  GLM_FUNC_DECL tvec2<T, P> operator&(tvec2<T, P> const & v1, tvec2<T, P> const & v2);
+
330 
+
331  template <typename T, precision P>
+
332  GLM_FUNC_DECL tvec2<T, P> operator|(tvec2<T, P> const & v, T const & s);
+
333 
+
334  template <typename T, precision P>
+
335  GLM_FUNC_DECL tvec2<T, P> operator|(tvec2<T, P> const & v1, tvec1<T, P> const & v2);
+
336 
+
337  template <typename T, precision P>
+
338  GLM_FUNC_DECL tvec2<T, P> operator|(T const & s, tvec2<T, P> const & v);
+
339 
+
340  template <typename T, precision P>
+
341  GLM_FUNC_DECL tvec2<T, P> operator|(tvec1<T, P> const & v1, tvec2<T, P> const & v2);
+
342 
+
343  template <typename T, precision P>
+
344  GLM_FUNC_DECL tvec2<T, P> operator|(tvec2<T, P> const & v1, tvec2<T, P> const & v2);
+
345 
+
346  template <typename T, precision P>
+
347  GLM_FUNC_DECL tvec2<T, P> operator^(tvec2<T, P> const & v, T const & s);
+
348 
+
349  template <typename T, precision P>
+
350  GLM_FUNC_DECL tvec2<T, P> operator^(tvec2<T, P> const & v1, tvec1<T, P> const & v2);
+
351 
+
352  template <typename T, precision P>
+
353  GLM_FUNC_DECL tvec2<T, P> operator^(T const & s, tvec2<T, P> const & v);
+
354 
+
355  template <typename T, precision P>
+
356  GLM_FUNC_DECL tvec2<T, P> operator^(tvec1<T, P> const & v1, tvec2<T, P> const & v2);
+
357 
+
358  template <typename T, precision P>
+
359  GLM_FUNC_DECL tvec2<T, P> operator^(tvec2<T, P> const & v1, tvec2<T, P> const & v2);
+
360 
+
361  template <typename T, precision P>
+
362  GLM_FUNC_DECL tvec2<T, P> operator<<(tvec2<T, P> const & v, T const & s);
+
363 
+
364  template <typename T, precision P>
+
365  GLM_FUNC_DECL tvec2<T, P> operator<<(tvec2<T, P> const & v1, tvec1<T, P> const & v2);
+
366 
+
367  template <typename T, precision P>
+
368  GLM_FUNC_DECL tvec2<T, P> operator<<(T const & s, tvec2<T, P> const & v);
+
369 
+
370  template <typename T, precision P>
+
371  GLM_FUNC_DECL tvec2<T, P> operator<<(tvec1<T, P> const & v1, tvec2<T, P> const & v2);
+
372 
+
373  template <typename T, precision P>
+
374  GLM_FUNC_DECL tvec2<T, P> operator<<(tvec2<T, P> const & v1, tvec2<T, P> const & v2);
+
375 
+
376  template <typename T, precision P>
+
377  GLM_FUNC_DECL tvec2<T, P> operator>>(tvec2<T, P> const & v, T const & s);
+
378 
+
379  template <typename T, precision P>
+
380  GLM_FUNC_DECL tvec2<T, P> operator>>(tvec2<T, P> const & v1, tvec1<T, P> const & v2);
+
381 
+
382  template <typename T, precision P>
+
383  GLM_FUNC_DECL tvec2<T, P> operator>>(T const & s, tvec2<T, P> const & v);
+
384 
+
385  template <typename T, precision P>
+
386  GLM_FUNC_DECL tvec2<T, P> operator>>(tvec1<T, P> const & v1, tvec2<T, P> const & v2);
+
387 
+
388  template <typename T, precision P>
+
389  GLM_FUNC_DECL tvec2<T, P> operator>>(tvec2<T, P> const & v1, tvec2<T, P> const & v2);
+
390 
+
391  template <typename T, precision P>
+
392  GLM_FUNC_DECL tvec2<T, P> operator~(tvec2<T, P> const & v);
+
393 
+
394  // -- Boolean operators --
+
395 
+
396  template <typename T, precision P>
+
397  GLM_FUNC_DECL bool operator==(tvec2<T, P> const & v1, tvec2<T, P> const & v2);
+
398 
+
399  template <typename T, precision P>
+
400  GLM_FUNC_DECL bool operator!=(tvec2<T, P> const & v1, tvec2<T, P> const & v2);
+
401 }//namespace glm
+
402 
+
403 #ifndef GLM_EXTERNAL_TEMPLATE
+
404 #include "type_vec2.inl"
+
405 #endif//GLM_EXTERNAL_TEMPLATE
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00135.html b/external/glm/doc/api/a00135.html new file mode 100644 index 0000000..42a2af9 --- /dev/null +++ b/external/glm/doc/api/a00135.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: type_vec3.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_vec3.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2008-08-22 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file type_vec3.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00135_source.html b/external/glm/doc/api/a00135_source.html new file mode 100644 index 0000000..a7e2ea5 --- /dev/null +++ b/external/glm/doc/api/a00135_source.html @@ -0,0 +1,449 @@ + + + + + + +0.9.7: type_vec3.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_vec3.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "type_vec.hpp"
+
36 #ifdef GLM_SWIZZLE
+
37 # if GLM_HAS_ANONYMOUS_UNION
+
38 # include "_swizzle.hpp"
+
39 # else
+
40 # include "_swizzle_func.hpp"
+
41 # endif
+
42 #endif //GLM_SWIZZLE
+
43 #include <cstddef>
+
44 
+
45 namespace glm
+
46 {
+
47  template <typename T, precision P = defaultp>
+
48  struct tvec3
+
49  {
+
50  // -- Implementation detail --
+
51 
+
52  typedef tvec3<T, P> type;
+
53  typedef tvec3<bool, P> bool_type;
+
54  typedef T value_type;
+
55 
+
56 # ifdef GLM_META_PROG_HELPERS
+
57  static GLM_RELAXED_CONSTEXPR length_t components = 3;
+
58  static GLM_RELAXED_CONSTEXPR precision prec = P;
+
59 # endif//GLM_META_PROG_HELPERS
+
60 
+
61  // -- Data --
+
62 
+
63 # if GLM_HAS_ANONYMOUS_UNION
+
64  union
+
65  {
+
66  struct{ T x, y, z; };
+
67  struct{ T r, g, b; };
+
68  struct{ T s, t, p; };
+
69 
+
70 # ifdef GLM_SWIZZLE
+
71  _GLM_SWIZZLE3_2_MEMBERS(T, P, tvec2, x, y, z)
+
72  _GLM_SWIZZLE3_2_MEMBERS(T, P, tvec2, r, g, b)
+
73  _GLM_SWIZZLE3_2_MEMBERS(T, P, tvec2, s, t, p)
+
74  _GLM_SWIZZLE3_3_MEMBERS(T, P, tvec3, x, y, z)
+
75  _GLM_SWIZZLE3_3_MEMBERS(T, P, tvec3, r, g, b)
+
76  _GLM_SWIZZLE3_3_MEMBERS(T, P, tvec3, s, t, p)
+
77  _GLM_SWIZZLE3_4_MEMBERS(T, P, tvec4, x, y, z)
+
78  _GLM_SWIZZLE3_4_MEMBERS(T, P, tvec4, r, g, b)
+
79  _GLM_SWIZZLE3_4_MEMBERS(T, P, tvec4, s, t, p)
+
80 # endif//GLM_SWIZZLE
+
81  };
+
82 # else
+
83  union { T x, r, s; };
+
84  union { T y, g, t; };
+
85  union { T z, b, p; };
+
86 
+
87 # ifdef GLM_SWIZZLE
+
88  GLM_SWIZZLE_GEN_VEC_FROM_VEC3(T, P, tvec3, tvec2, tvec3, tvec4)
+
89 # endif//GLM_SWIZZLE
+
90 # endif//GLM_LANG
+
91 
+
92  // -- Component accesses --
+
93 
+
94 # ifdef GLM_FORCE_SIZE_FUNC
+
95  typedef size_t size_type;
+
97  GLM_FUNC_DECL GLM_CONSTEXPR size_type size() const;
+
98 
+
99  GLM_FUNC_DECL T & operator[](size_type i);
+
100  GLM_FUNC_DECL T const & operator[](size_type i) const;
+
101 # else
+
102  typedef length_t length_type;
+
104  GLM_FUNC_DECL GLM_CONSTEXPR length_type length() const;
+
105 
+
106  GLM_FUNC_DECL T & operator[](length_type i);
+
107  GLM_FUNC_DECL T const & operator[](length_type i) const;
+
108 # endif//GLM_FORCE_SIZE_FUNC
+
109 
+
110  // -- Implicit basic constructors --
+
111 
+
112  GLM_FUNC_DECL tvec3() GLM_DEFAULT_CTOR;
+
113  GLM_FUNC_DECL tvec3(tvec3<T, P> const & v) GLM_DEFAULT;
+
114  template <precision Q>
+
115  GLM_FUNC_DECL tvec3(tvec3<T, Q> const & v);
+
116 
+
117  // -- Explicit basic constructors --
+
118 
+
119  GLM_FUNC_DECL explicit tvec3(ctor);
+
120  GLM_FUNC_DECL explicit tvec3(T const & s);
+
121  GLM_FUNC_DECL tvec3(T const & a, T const & b, T const & c);
+
122 
+
123  // -- Conversion scalar constructors --
+
124 
+
126  template <typename A, typename B, typename C>
+
127  GLM_FUNC_DECL tvec3(A const & a, B const & b, C const & c);
+
128  template <typename A, typename B, typename C>
+
129  GLM_FUNC_DECL tvec3(tvec1<A, P> const & a, tvec1<B, P> const & b, tvec1<C, P> const & c);
+
130 
+
131  // -- Conversion vector constructors --
+
132 
+
134  template <typename A, typename B, precision Q>
+
135  GLM_FUNC_DECL explicit tvec3(tvec2<A, Q> const & a, B const & b);
+
137  template <typename A, typename B, precision Q>
+
138  GLM_FUNC_DECL explicit tvec3(tvec2<A, Q> const & a, tvec1<B, Q> const & b);
+
140  template <typename A, typename B, precision Q>
+
141  GLM_FUNC_DECL explicit tvec3(A const & a, tvec2<B, Q> const & b);
+
143  template <typename A, typename B, precision Q>
+
144  GLM_FUNC_DECL explicit tvec3(tvec1<A, Q> const & a, tvec2<B, Q> const & b);
+
146  template <typename U, precision Q>
+
147  GLM_FUNC_DECL explicit tvec3(tvec4<U, Q> const & v);
+
148 
+
150  template <typename U, precision Q>
+
151  GLM_FUNC_DECL GLM_EXPLICIT tvec3(tvec3<U, Q> const & v);
+
152 
+
153  // -- Swizzle constructors --
+
154 
+
155 # if GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE)
+
156  template <int E0, int E1, int E2>
+
157  GLM_FUNC_DECL tvec3(detail::_swizzle<3, T, P, tvec3<T, P>, E0, E1, E2, -1> const & that)
+
158  {
+
159  *this = that();
+
160  }
+
161 
+
162  template <int E0, int E1>
+
163  GLM_FUNC_DECL tvec3(detail::_swizzle<2, T, P, tvec2<T, P>, E0, E1, -1, -2> const & v, T const & s)
+
164  {
+
165  *this = tvec3<T, P>(v(), s);
+
166  }
+
167 
+
168  template <int E0, int E1>
+
169  GLM_FUNC_DECL tvec3(T const & s, detail::_swizzle<2, T, P, tvec2<T, P>, E0, E1, -1, -2> const & v)
+
170  {
+
171  *this = tvec3<T, P>(s, v());
+
172  }
+
173 # endif// GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE)
+
174 
+
175  // -- Unary arithmetic operators --
+
176 
+
177  GLM_FUNC_DECL tvec3<T, P> & operator=(tvec3<T, P> const & v) GLM_DEFAULT;
+
178 
+
179  template <typename U>
+
180  GLM_FUNC_DECL tvec3<T, P> & operator=(tvec3<U, P> const & v);
+
181  template <typename U>
+
182  GLM_FUNC_DECL tvec3<T, P> & operator+=(U s);
+
183  template <typename U>
+
184  GLM_FUNC_DECL tvec3<T, P> & operator+=(tvec1<U, P> const & v);
+
185  template <typename U>
+
186  GLM_FUNC_DECL tvec3<T, P> & operator+=(tvec3<U, P> const & v);
+
187  template <typename U>
+
188  GLM_FUNC_DECL tvec3<T, P> & operator-=(U s);
+
189  template <typename U>
+
190  GLM_FUNC_DECL tvec3<T, P> & operator-=(tvec1<U, P> const & v);
+
191  template <typename U>
+
192  GLM_FUNC_DECL tvec3<T, P> & operator-=(tvec3<U, P> const & v);
+
193  template <typename U>
+
194  GLM_FUNC_DECL tvec3<T, P> & operator*=(U s);
+
195  template <typename U>
+
196  GLM_FUNC_DECL tvec3<T, P> & operator*=(tvec1<U, P> const & v);
+
197  template <typename U>
+
198  GLM_FUNC_DECL tvec3<T, P> & operator*=(tvec3<U, P> const & v);
+
199  template <typename U>
+
200  GLM_FUNC_DECL tvec3<T, P> & operator/=(U s);
+
201  template <typename U>
+
202  GLM_FUNC_DECL tvec3<T, P> & operator/=(tvec1<U, P> const & v);
+
203  template <typename U>
+
204  GLM_FUNC_DECL tvec3<T, P> & operator/=(tvec3<U, P> const & v);
+
205 
+
206  // -- Increment and decrement operators --
+
207 
+
208  GLM_FUNC_DECL tvec3<T, P> & operator++();
+
209  GLM_FUNC_DECL tvec3<T, P> & operator--();
+
210  GLM_FUNC_DECL tvec3<T, P> operator++(int);
+
211  GLM_FUNC_DECL tvec3<T, P> operator--(int);
+
212 
+
213  // -- Unary bit operators --
+
214 
+
215  template <typename U>
+
216  GLM_FUNC_DECL tvec3<T, P> & operator%=(U s);
+
217  template <typename U>
+
218  GLM_FUNC_DECL tvec3<T, P> & operator%=(tvec1<U, P> const & v);
+
219  template <typename U>
+
220  GLM_FUNC_DECL tvec3<T, P> & operator%=(tvec3<U, P> const & v);
+
221  template <typename U>
+
222  GLM_FUNC_DECL tvec3<T, P> & operator&=(U s);
+
223  template <typename U>
+
224  GLM_FUNC_DECL tvec3<T, P> & operator&=(tvec1<U, P> const & v);
+
225  template <typename U>
+
226  GLM_FUNC_DECL tvec3<T, P> & operator&=(tvec3<U, P> const & v);
+
227  template <typename U>
+
228  GLM_FUNC_DECL tvec3<T, P> & operator|=(U s);
+
229  template <typename U>
+
230  GLM_FUNC_DECL tvec3<T, P> & operator|=(tvec1<U, P> const & v);
+
231  template <typename U>
+
232  GLM_FUNC_DECL tvec3<T, P> & operator|=(tvec3<U, P> const & v);
+
233  template <typename U>
+
234  GLM_FUNC_DECL tvec3<T, P> & operator^=(U s);
+
235  template <typename U>
+
236  GLM_FUNC_DECL tvec3<T, P> & operator^=(tvec1<U, P> const & v);
+
237  template <typename U>
+
238  GLM_FUNC_DECL tvec3<T, P> & operator^=(tvec3<U, P> const & v);
+
239  template <typename U>
+
240  GLM_FUNC_DECL tvec3<T, P> & operator<<=(U s);
+
241  template <typename U>
+
242  GLM_FUNC_DECL tvec3<T, P> & operator<<=(tvec1<U, P> const & v);
+
243  template <typename U>
+
244  GLM_FUNC_DECL tvec3<T, P> & operator<<=(tvec3<U, P> const & v);
+
245  template <typename U>
+
246  GLM_FUNC_DECL tvec3<T, P> & operator>>=(U s);
+
247  template <typename U>
+
248  GLM_FUNC_DECL tvec3<T, P> & operator>>=(tvec1<U, P> const & v);
+
249  template <typename U>
+
250  GLM_FUNC_DECL tvec3<T, P> & operator>>=(tvec3<U, P> const & v);
+
251  };
+
252 
+
253  // -- Unary operators --
+
254 
+
255  template <typename T, precision P>
+
256  GLM_FUNC_DECL tvec3<T, P> operator-(tvec3<T, P> const & v);
+
257 
+
258  // -- Binary operators --
+
259 
+
260  template <typename T, precision P>
+
261  GLM_FUNC_DECL tvec3<T, P> operator+(tvec3<T, P> const & v, T const & s);
+
262 
+
263  template <typename T, precision P>
+
264  GLM_FUNC_DECL tvec3<T, P> operator+(tvec3<T, P> const & v, tvec1<T, P> const & s);
+
265 
+
266  template <typename T, precision P>
+
267  GLM_FUNC_DECL tvec3<T, P> operator+(T const & s, tvec3<T, P> const & v);
+
268 
+
269  template <typename T, precision P>
+
270  GLM_FUNC_DECL tvec3<T, P> operator+(tvec1<T, P> const & s, tvec3<T, P> const & v);
+
271 
+
272  template <typename T, precision P>
+
273  GLM_FUNC_DECL tvec3<T, P> operator+(tvec3<T, P> const & v1, tvec3<T, P> const & v2);
+
274 
+
275  template <typename T, precision P>
+
276  GLM_FUNC_DECL tvec3<T, P> operator-(tvec3<T, P> const & v, T const & s);
+
277 
+
278  template <typename T, precision P>
+
279  GLM_FUNC_DECL tvec3<T, P> operator-(tvec3<T, P> const & v, tvec1<T, P> const & s);
+
280 
+
281  template <typename T, precision P>
+
282  GLM_FUNC_DECL tvec3<T, P> operator-(T const & s, tvec3<T, P> const & v);
+
283 
+
284  template <typename T, precision P>
+
285  GLM_FUNC_DECL tvec3<T, P> operator-(tvec1<T, P> const & s, tvec3<T, P> const & v);
+
286 
+
287  template <typename T, precision P>
+
288  GLM_FUNC_DECL tvec3<T, P> operator-(tvec3<T, P> const & v1, tvec3<T, P> const & v2);
+
289 
+
290  template <typename T, precision P>
+
291  GLM_FUNC_DECL tvec3<T, P> operator*(tvec3<T, P> const & v, T const & s);
+
292 
+
293  template <typename T, precision P>
+
294  GLM_FUNC_DECL tvec3<T, P> operator*(tvec3<T, P> const & v, tvec1<T, P> const & s);
+
295 
+
296  template <typename T, precision P>
+
297  GLM_FUNC_DECL tvec3<T, P> operator*(T const & s, tvec3<T, P> const & v);
+
298 
+
299  template <typename T, precision P>
+
300  GLM_FUNC_DECL tvec3<T, P> operator*(tvec1<T, P> const & s, tvec3<T, P> const & v);
+
301 
+
302  template <typename T, precision P>
+
303  GLM_FUNC_DECL tvec3<T, P> operator*(tvec3<T, P> const & v1, tvec3<T, P> const & v2);
+
304 
+
305  template <typename T, precision P>
+
306  GLM_FUNC_DECL tvec3<T, P> operator/(tvec3<T, P> const & v, T const & s);
+
307 
+
308  template <typename T, precision P>
+
309  GLM_FUNC_DECL tvec3<T, P> operator/(tvec3<T, P> const & v, tvec1<T, P> const & s);
+
310 
+
311  template <typename T, precision P>
+
312  GLM_FUNC_DECL tvec3<T, P> operator/(T const & s, tvec3<T, P> const & v);
+
313 
+
314  template <typename T, precision P>
+
315  GLM_FUNC_DECL tvec3<T, P> operator/(tvec1<T, P> const & s, tvec3<T, P> const & v);
+
316 
+
317  template <typename T, precision P>
+
318  GLM_FUNC_DECL tvec3<T, P> operator/(tvec3<T, P> const & v1, tvec3<T, P> const & v2);
+
319 
+
320  template <typename T, precision P>
+
321  GLM_FUNC_DECL tvec3<T, P> operator%(tvec3<T, P> const & v, T const & s);
+
322 
+
323  template <typename T, precision P>
+
324  GLM_FUNC_DECL tvec3<T, P> operator%(tvec3<T, P> const & v, tvec1<T, P> const & s);
+
325 
+
326  template <typename T, precision P>
+
327  GLM_FUNC_DECL tvec3<T, P> operator%(T const & s, tvec3<T, P> const & v);
+
328 
+
329  template <typename T, precision P>
+
330  GLM_FUNC_DECL tvec3<T, P> operator%(tvec1<T, P> const & s, tvec3<T, P> const & v);
+
331 
+
332  template <typename T, precision P>
+
333  GLM_FUNC_DECL tvec3<T, P> operator%(tvec3<T, P> const & v1, tvec3<T, P> const & v2);
+
334 
+
335  template <typename T, precision P>
+
336  GLM_FUNC_DECL tvec3<T, P> operator&(tvec3<T, P> const & v, T const & s);
+
337 
+
338  template <typename T, precision P>
+
339  GLM_FUNC_DECL tvec3<T, P> operator&(tvec3<T, P> const & v, tvec1<T, P> const & s);
+
340 
+
341  template <typename T, precision P>
+
342  GLM_FUNC_DECL tvec3<T, P> operator&(T const & s, tvec3<T, P> const & v);
+
343 
+
344  template <typename T, precision P>
+
345  GLM_FUNC_DECL tvec3<T, P> operator&(tvec1<T, P> const & s, tvec3<T, P> const & v);
+
346 
+
347  template <typename T, precision P>
+
348  GLM_FUNC_DECL tvec3<T, P> operator&(tvec3<T, P> const & v1, tvec3<T, P> const & v2);
+
349 
+
350  template <typename T, precision P>
+
351  GLM_FUNC_DECL tvec3<T, P> operator|(tvec3<T, P> const & v, T const & s);
+
352 
+
353  template <typename T, precision P>
+
354  GLM_FUNC_DECL tvec3<T, P> operator|(tvec3<T, P> const & v, tvec1<T, P> const & s);
+
355 
+
356  template <typename T, precision P>
+
357  GLM_FUNC_DECL tvec3<T, P> operator|(T const & s, tvec3<T, P> const & v);
+
358 
+
359  template <typename T, precision P>
+
360  GLM_FUNC_DECL tvec3<T, P> operator|(tvec1<T, P> const & s, tvec3<T, P> const & v);
+
361 
+
362  template <typename T, precision P>
+
363  GLM_FUNC_DECL tvec3<T, P> operator|(tvec3<T, P> const & v1, tvec3<T, P> const & v2);
+
364 
+
365  template <typename T, precision P>
+
366  GLM_FUNC_DECL tvec3<T, P> operator^(tvec3<T, P> const & v, T const & s);
+
367 
+
368  template <typename T, precision P>
+
369  GLM_FUNC_DECL tvec3<T, P> operator^(tvec3<T, P> const & v, tvec1<T, P> const & s);
+
370 
+
371  template <typename T, precision P>
+
372  GLM_FUNC_DECL tvec3<T, P> operator^(T const & s, tvec3<T, P> const & v);
+
373 
+
374  template <typename T, precision P>
+
375  GLM_FUNC_DECL tvec3<T, P> operator^(tvec1<T, P> const & s, tvec3<T, P> const & v);
+
376 
+
377  template <typename T, precision P>
+
378  GLM_FUNC_DECL tvec3<T, P> operator^(tvec3<T, P> const & v1, tvec3<T, P> const & v2);
+
379 
+
380  template <typename T, precision P>
+
381  GLM_FUNC_DECL tvec3<T, P> operator<<(tvec3<T, P> const & v, T const & s);
+
382 
+
383  template <typename T, precision P>
+
384  GLM_FUNC_DECL tvec3<T, P> operator<<(tvec3<T, P> const & v, tvec1<T, P> const & s);
+
385 
+
386  template <typename T, precision P>
+
387  GLM_FUNC_DECL tvec3<T, P> operator<<(T const & s, tvec3<T, P> const & v);
+
388 
+
389  template <typename T, precision P>
+
390  GLM_FUNC_DECL tvec3<T, P> operator<<(tvec1<T, P> const & s, tvec3<T, P> const & v);
+
391 
+
392  template <typename T, precision P>
+
393  GLM_FUNC_DECL tvec3<T, P> operator<<(tvec3<T, P> const & v1, tvec3<T, P> const & v2);
+
394 
+
395  template <typename T, precision P>
+
396  GLM_FUNC_DECL tvec3<T, P> operator>>(tvec3<T, P> const & v, T const & s);
+
397 
+
398  template <typename T, precision P>
+
399  GLM_FUNC_DECL tvec3<T, P> operator>>(tvec3<T, P> const & v, tvec1<T, P> const & s);
+
400 
+
401  template <typename T, precision P>
+
402  GLM_FUNC_DECL tvec3<T, P> operator>>(T const & s, tvec3<T, P> const & v);
+
403 
+
404  template <typename T, precision P>
+
405  GLM_FUNC_DECL tvec3<T, P> operator>>(tvec1<T, P> const & s, tvec3<T, P> const & v);
+
406 
+
407  template <typename T, precision P>
+
408  GLM_FUNC_DECL tvec3<T, P> operator>>(tvec3<T, P> const & v1, tvec3<T, P> const & v2);
+
409 
+
410  template <typename T, precision P>
+
411  GLM_FUNC_DECL tvec3<T, P> operator~(tvec3<T, P> const & v);
+
412 
+
413  // -- Boolean operators --
+
414 
+
415  template <typename T, precision P>
+
416  GLM_FUNC_DECL bool operator==(tvec3<T, P> const & v1, tvec3<T, P> const & v2);
+
417 
+
418  template <typename T, precision P>
+
419  GLM_FUNC_DECL bool operator!=(tvec3<T, P> const & v1, tvec3<T, P> const & v2);
+
420 }//namespace glm
+
421 
+
422 #ifndef GLM_EXTERNAL_TEMPLATE
+
423 #include "type_vec3.inl"
+
424 #endif//GLM_EXTERNAL_TEMPLATE
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00136.html b/external/glm/doc/api/a00136.html new file mode 100644 index 0000000..8f516f1 --- /dev/null +++ b/external/glm/doc/api/a00136.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: type_vec4.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_vec4.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2008-08-22 / 2011-06-15
+
Author
Christophe Riccio
+ +

Definition in file type_vec4.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00136_source.html b/external/glm/doc/api/a00136_source.html new file mode 100644 index 0000000..93e64c7 --- /dev/null +++ b/external/glm/doc/api/a00136_source.html @@ -0,0 +1,549 @@ + + + + + + +0.9.7: type_vec4.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
type_vec4.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "setup.hpp"
+
36 #include "type_vec.hpp"
+
37 #ifdef GLM_SWIZZLE
+
38 # if GLM_HAS_ANONYMOUS_UNION
+
39 # include "_swizzle.hpp"
+
40 # else
+
41 # include "_swizzle_func.hpp"
+
42 # endif
+
43 #endif //GLM_SWIZZLE
+
44 #include <cstddef>
+
45 
+
46 namespace glm{
+
47 namespace detail
+
48 {
+
49  template <typename T>
+
50  struct simd
+
51  {
+
52  typedef T type[4];
+
53  };
+
54 
+
55 # define GLM_NOT_BUGGY_VC32BITS !(GLM_MODEL == GLM_MODEL_32 && (GLM_COMPILER & GLM_COMPILER_VC) && GLM_COMPILER < GLM_COMPILER_VC2013)
+
56 
+
57 # if (GLM_ARCH & GLM_ARCH_SSE2) && GLM_NOT_BUGGY_VC32BITS
+
58  template <>
+
59  struct simd<float>
+
60  {
+
61  typedef __m128 type;
+
62  };
+
63 
+
64  template <>
+
65  struct simd<int>
+
66  {
+
67  typedef __m128i type;
+
68  };
+
69 
+
70  template <>
+
71  struct simd<unsigned int>
+
72  {
+
73  typedef __m128i type;
+
74  };
+
75 # endif
+
76 
+
77 # if (GLM_ARCH & GLM_ARCH_AVX) && GLM_NOT_BUGGY_VC32BITS
+
78  template <>
+
79  struct simd<double>
+
80  {
+
81  typedef __m256d type;
+
82  };
+
83 # endif
+
84 
+
85 # if (GLM_ARCH & GLM_ARCH_AVX2) && GLM_NOT_BUGGY_VC32BITS
+
86  template <>
+
87  struct simd<int64>
+
88  {
+
89  typedef __m256i type;
+
90  };
+
91 
+
92  template <>
+
93  struct simd<uint64>
+
94  {
+
95  typedef __m256i type;
+
96  };
+
97 # endif
+
98 
+
99 }//namespace detail
+
100 
+
101  template <typename T, precision P = defaultp>
+
102  struct tvec4
+
103  {
+
104  // -- Implementation detail --
+
105 
+
106  typedef tvec4<T, P> type;
+
107  typedef tvec4<bool, P> bool_type;
+
108  typedef T value_type;
+
109 
+
110 # ifdef GLM_META_PROG_HELPERS
+
111  static GLM_RELAXED_CONSTEXPR length_t components = 4;
+
112  static GLM_RELAXED_CONSTEXPR precision prec = P;
+
113 # endif//GLM_META_PROG_HELPERS
+
114 
+
115  // -- Data --
+
116 
+
117 # if GLM_HAS_ANONYMOUS_UNION
+
118  union
+
119  {
+
120  struct { T x, y, z, w;};
+
121  struct { T r, g, b, a; };
+
122  struct { T s, t, p, q; };
+
123 
+
124  typename detail::simd<T>::type data;
+
125 
+
126 # ifdef GLM_SWIZZLE
+
127  _GLM_SWIZZLE4_2_MEMBERS(T, P, tvec2, x, y, z, w)
+
128  _GLM_SWIZZLE4_2_MEMBERS(T, P, tvec2, r, g, b, a)
+
129  _GLM_SWIZZLE4_2_MEMBERS(T, P, tvec2, s, t, p, q)
+
130  _GLM_SWIZZLE4_3_MEMBERS(T, P, tvec3, x, y, z, w)
+
131  _GLM_SWIZZLE4_3_MEMBERS(T, P, tvec3, r, g, b, a)
+
132  _GLM_SWIZZLE4_3_MEMBERS(T, P, tvec3, s, t, p, q)
+
133  _GLM_SWIZZLE4_4_MEMBERS(T, P, tvec4, x, y, z, w)
+
134  _GLM_SWIZZLE4_4_MEMBERS(T, P, tvec4, r, g, b, a)
+
135  _GLM_SWIZZLE4_4_MEMBERS(T, P, tvec4, s, t, p, q)
+
136 # endif//GLM_SWIZZLE
+
137  };
+
138 # else
+
139  union { T x, r, s; };
+
140  union { T y, g, t; };
+
141  union { T z, b, p; };
+
142  union { T w, a, q; };
+
143 
+
144 # ifdef GLM_SWIZZLE
+
145  GLM_SWIZZLE_GEN_VEC_FROM_VEC4(T, P, tvec4, tvec2, tvec3, tvec4)
+
146 # endif//GLM_SWIZZLE
+
147 # endif//GLM_LANG
+
148 
+
149  // -- Component accesses --
+
150 
+
151 # ifdef GLM_FORCE_SIZE_FUNC
+
152  typedef size_t size_type;
+
154  GLM_FUNC_DECL GLM_CONSTEXPR size_type size() const;
+
155 
+
156  GLM_FUNC_DECL T & operator[](size_type i);
+
157  GLM_FUNC_DECL T const & operator[](size_type i) const;
+
158 # else
+
159  typedef length_t length_type;
+
161  GLM_FUNC_DECL GLM_CONSTEXPR length_type length() const;
+
162 
+
163  GLM_FUNC_DECL T & operator[](length_type i);
+
164  GLM_FUNC_DECL T const & operator[](length_type i) const;
+
165 # endif//GLM_FORCE_SIZE_FUNC
+
166 
+
167  // -- Implicit basic constructors --
+
168 
+
169  GLM_FUNC_DECL tvec4() GLM_DEFAULT_CTOR;
+
170  GLM_FUNC_DECL tvec4(tvec4<T, P> const & v) GLM_DEFAULT;
+
171  template <precision Q>
+
172  GLM_FUNC_DECL tvec4(tvec4<T, Q> const & v);
+
173 
+
174  // -- Explicit basic constructors --
+
175 
+
176  GLM_FUNC_DECL explicit tvec4(ctor);
+
177  GLM_FUNC_DECL explicit tvec4(T s);
+
178  GLM_FUNC_DECL tvec4(T a, T b, T c, T d);
+
179 
+
180  // -- Conversion scalar constructors --
+
181 
+
183  template <typename A, typename B, typename C, typename D>
+
184  GLM_FUNC_DECL tvec4(A a, B b, C c, D d);
+
185  template <typename A, typename B, typename C, typename D>
+
186  GLM_FUNC_DECL tvec4(tvec1<A, P> const & a, tvec1<B, P> const & b, tvec1<C, P> const & c, tvec1<D, P> const & d);
+
187 
+
188  // -- Conversion vector constructors --
+
189 
+
191  template <typename A, typename B, typename C, precision Q>
+
192  GLM_FUNC_DECL explicit tvec4(tvec2<A, Q> const & a, B b, C c);
+
194  template <typename A, typename B, typename C, precision Q>
+
195  GLM_FUNC_DECL explicit tvec4(tvec2<A, Q> const & a, tvec1<B, Q> const & b, tvec1<C, Q> const & c);
+
197  template <typename A, typename B, typename C, precision Q>
+
198  GLM_FUNC_DECL explicit tvec4(A a, tvec2<B, Q> const & b, C c);
+
200  template <typename A, typename B, typename C, precision Q>
+
201  GLM_FUNC_DECL explicit tvec4(tvec1<A, Q> const & a, tvec2<B, Q> const & b, tvec1<C, Q> const & c);
+
203  template <typename A, typename B, typename C, precision Q>
+
204  GLM_FUNC_DECL explicit tvec4(A a, B b, tvec2<C, Q> const & c);
+
206  template <typename A, typename B, typename C, precision Q>
+
207  GLM_FUNC_DECL explicit tvec4(tvec1<A, Q> const & a, tvec1<B, Q> const & b, tvec2<C, Q> const & c);
+
209  template <typename A, typename B, precision Q>
+
210  GLM_FUNC_DECL explicit tvec4(tvec3<A, Q> const & a, B b);
+
212  template <typename A, typename B, precision Q>
+
213  GLM_FUNC_DECL explicit tvec4(tvec3<A, Q> const & a, tvec1<B, Q> const & b);
+
215  template <typename A, typename B, precision Q>
+
216  GLM_FUNC_DECL explicit tvec4(A a, tvec3<B, Q> const & b);
+
218  template <typename A, typename B, precision Q>
+
219  GLM_FUNC_DECL explicit tvec4(tvec1<A, Q> const & a, tvec3<B, Q> const & b);
+
221  template <typename A, typename B, precision Q>
+
222  GLM_FUNC_DECL explicit tvec4(tvec2<A, Q> const & a, tvec2<B, Q> const & b);
+
223 
+
225  template <typename U, precision Q>
+
226  GLM_FUNC_DECL GLM_EXPLICIT tvec4(tvec4<U, Q> const & v);
+
227 
+
228  // -- Swizzle constructors --
+
229 
+
230 # if GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE)
+
231  template <int E0, int E1, int E2, int E3>
+
232  GLM_FUNC_DECL tvec4(detail::_swizzle<4, T, P, tvec4<T, P>, E0, E1, E2, E3> const & that)
+
233  {
+
234  *this = that();
+
235  }
+
236 
+
237  template <int E0, int E1, int F0, int F1>
+
238  GLM_FUNC_DECL tvec4(detail::_swizzle<2, T, P, tvec2<T, P>, E0, E1, -1, -2> const & v, detail::_swizzle<2, T, P, tvec2<T, P>, F0, F1, -1, -2> const & u)
+
239  {
+
240  *this = tvec4<T, P>(v(), u());
+
241  }
+
242 
+
243  template <int E0, int E1>
+
244  GLM_FUNC_DECL tvec4(T const & x, T const & y, detail::_swizzle<2, T, P, tvec2<T, P>, E0, E1, -1, -2> const & v)
+
245  {
+
246  *this = tvec4<T, P>(x, y, v());
+
247  }
+
248 
+
249  template <int E0, int E1>
+
250  GLM_FUNC_DECL tvec4(T const & x, detail::_swizzle<2, T, P, tvec2<T, P>, E0, E1, -1, -2> const & v, T const & w)
+
251  {
+
252  *this = tvec4<T, P>(x, v(), w);
+
253  }
+
254 
+
255  template <int E0, int E1>
+
256  GLM_FUNC_DECL tvec4(detail::_swizzle<2, T, P, tvec2<T, P>, E0, E1, -1, -2> const & v, T const & z, T const & w)
+
257  {
+
258  *this = tvec4<T, P>(v(), z, w);
+
259  }
+
260 
+
261  template <int E0, int E1, int E2>
+
262  GLM_FUNC_DECL tvec4(detail::_swizzle<3, T, P, tvec3<T, P>, E0, E1, E2, -1> const & v, T const & w)
+
263  {
+
264  *this = tvec4<T, P>(v(), w);
+
265  }
+
266 
+
267  template <int E0, int E1, int E2>
+
268  GLM_FUNC_DECL tvec4(T const & x, detail::_swizzle<3, T, P, tvec3<T, P>, E0, E1, E2, -1> const & v)
+
269  {
+
270  *this = tvec4<T, P>(x, v());
+
271  }
+
272 # endif// GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE)
+
273 
+
274  // -- Unary arithmetic operators --
+
275 
+
276  GLM_FUNC_DECL tvec4<T, P> & operator=(tvec4<T, P> const & v) GLM_DEFAULT;
+
277 
+
278  template <typename U>
+
279  GLM_FUNC_DECL tvec4<T, P> & operator=(tvec4<U, P> const & v);
+
280  template <typename U>
+
281  GLM_FUNC_DECL tvec4<T, P> & operator+=(U scalar);
+
282  template <typename U>
+
283  GLM_FUNC_DECL tvec4<T, P> & operator+=(tvec1<U, P> const & v);
+
284  template <typename U>
+
285  GLM_FUNC_DECL tvec4<T, P> & operator+=(tvec4<U, P> const & v);
+
286  template <typename U>
+
287  GLM_FUNC_DECL tvec4<T, P> & operator-=(U scalar);
+
288  template <typename U>
+
289  GLM_FUNC_DECL tvec4<T, P> & operator-=(tvec1<U, P> const & v);
+
290  template <typename U>
+
291  GLM_FUNC_DECL tvec4<T, P> & operator-=(tvec4<U, P> const & v);
+
292  template <typename U>
+
293  GLM_FUNC_DECL tvec4<T, P> & operator*=(U scalar);
+
294  template <typename U>
+
295  GLM_FUNC_DECL tvec4<T, P> & operator*=(tvec1<U, P> const & v);
+
296  template <typename U>
+
297  GLM_FUNC_DECL tvec4<T, P> & operator*=(tvec4<U, P> const & v);
+
298  template <typename U>
+
299  GLM_FUNC_DECL tvec4<T, P> & operator/=(U scalar);
+
300  template <typename U>
+
301  GLM_FUNC_DECL tvec4<T, P> & operator/=(tvec1<U, P> const & v);
+
302  template <typename U>
+
303  GLM_FUNC_DECL tvec4<T, P> & operator/=(tvec4<U, P> const & v);
+
304 
+
305  // -- Increment and decrement operators --
+
306 
+
307  GLM_FUNC_DECL tvec4<T, P> & operator++();
+
308  GLM_FUNC_DECL tvec4<T, P> & operator--();
+
309  GLM_FUNC_DECL tvec4<T, P> operator++(int);
+
310  GLM_FUNC_DECL tvec4<T, P> operator--(int);
+
311 
+
312  // -- Unary bit operators --
+
313 
+
314  template <typename U>
+
315  GLM_FUNC_DECL tvec4<T, P> & operator%=(U scalar);
+
316  template <typename U>
+
317  GLM_FUNC_DECL tvec4<T, P> & operator%=(tvec1<U, P> const & v);
+
318  template <typename U>
+
319  GLM_FUNC_DECL tvec4<T, P> & operator%=(tvec4<U, P> const & v);
+
320  template <typename U>
+
321  GLM_FUNC_DECL tvec4<T, P> & operator&=(U scalar);
+
322  template <typename U>
+
323  GLM_FUNC_DECL tvec4<T, P> & operator&=(tvec1<U, P> const & v);
+
324  template <typename U>
+
325  GLM_FUNC_DECL tvec4<T, P> & operator&=(tvec4<U, P> const & v);
+
326  template <typename U>
+
327  GLM_FUNC_DECL tvec4<T, P> & operator|=(U scalar);
+
328  template <typename U>
+
329  GLM_FUNC_DECL tvec4<T, P> & operator|=(tvec1<U, P> const & v);
+
330  template <typename U>
+
331  GLM_FUNC_DECL tvec4<T, P> & operator|=(tvec4<U, P> const & v);
+
332  template <typename U>
+
333  GLM_FUNC_DECL tvec4<T, P> & operator^=(U scalar);
+
334  template <typename U>
+
335  GLM_FUNC_DECL tvec4<T, P> & operator^=(tvec1<U, P> const & v);
+
336  template <typename U>
+
337  GLM_FUNC_DECL tvec4<T, P> & operator^=(tvec4<U, P> const & v);
+
338  template <typename U>
+
339  GLM_FUNC_DECL tvec4<T, P> & operator<<=(U scalar);
+
340  template <typename U>
+
341  GLM_FUNC_DECL tvec4<T, P> & operator<<=(tvec1<U, P> const & v);
+
342  template <typename U>
+
343  GLM_FUNC_DECL tvec4<T, P> & operator<<=(tvec4<U, P> const & v);
+
344  template <typename U>
+
345  GLM_FUNC_DECL tvec4<T, P> & operator>>=(U scalar);
+
346  template <typename U>
+
347  GLM_FUNC_DECL tvec4<T, P> & operator>>=(tvec1<U, P> const & v);
+
348  template <typename U>
+
349  GLM_FUNC_DECL tvec4<T, P> & operator>>=(tvec4<U, P> const & v);
+
350  };
+
351 
+
352  // -- Unary operators --
+
353 
+
354  template <typename T, precision P>
+
355  GLM_FUNC_DECL tvec4<T, P> operator-(tvec4<T, P> const & v);
+
356 
+
357  // -- Binary operators --
+
358 
+
359  template <typename T, precision P>
+
360  GLM_FUNC_DECL tvec4<T, P> operator+(tvec4<T, P> const & v, T scalar);
+
361 
+
362  template <typename T, precision P>
+
363  GLM_FUNC_DECL tvec4<T, P> operator+(tvec4<T, P> const & v, tvec1<T, P> const & s);
+
364 
+
365  template <typename T, precision P>
+
366  GLM_FUNC_DECL tvec4<T, P> operator+(T scalar, tvec4<T, P> const & v);
+
367 
+
368  template <typename T, precision P>
+
369  GLM_FUNC_DECL tvec4<T, P> operator+(tvec1<T, P> const & s, tvec4<T, P> const & v);
+
370 
+
371  template <typename T, precision P>
+
372  GLM_FUNC_DECL tvec4<T, P> operator+(tvec4<T, P> const & v1, tvec4<T, P> const & v2);
+
373 
+
374  template <typename T, precision P>
+
375  GLM_FUNC_DECL tvec4<T, P> operator-(tvec4<T, P> const & v, T scalar);
+
376 
+
377  template <typename T, precision P>
+
378  GLM_FUNC_DECL tvec4<T, P> operator-(tvec4<T, P> const & v, tvec1<T, P> const & s);
+
379 
+
380  template <typename T, precision P>
+
381  GLM_FUNC_DECL tvec4<T, P> operator-(T scalar, tvec4<T, P> const & v);
+
382 
+
383  template <typename T, precision P>
+
384  GLM_FUNC_DECL tvec4<T, P> operator-(tvec1<T, P> const & s, tvec4<T, P> const & v);
+
385 
+
386  template <typename T, precision P>
+
387  GLM_FUNC_DECL tvec4<T, P> operator-(tvec4<T, P> const & v1, tvec4<T, P> const & v2);
+
388 
+
389  template <typename T, precision P>
+
390  GLM_FUNC_DECL tvec4<T, P> operator*(tvec4<T, P> const & v, T scalar);
+
391 
+
392  template <typename T, precision P>
+
393  GLM_FUNC_DECL tvec4<T, P> operator*(tvec4<T, P> const & v, tvec1<T, P> const & s);
+
394 
+
395  template <typename T, precision P>
+
396  GLM_FUNC_DECL tvec4<T, P> operator*(T scalar, tvec4<T, P> const & v);
+
397 
+
398  template <typename T, precision P>
+
399  GLM_FUNC_DECL tvec4<T, P> operator*(tvec1<T, P> const & s, tvec4<T, P> const & v);
+
400 
+
401  template <typename T, precision P>
+
402  GLM_FUNC_DECL tvec4<T, P> operator*(tvec4<T, P> const & v1, tvec4<T, P> const & v2);
+
403 
+
404  template <typename T, precision P>
+
405  GLM_FUNC_DECL tvec4<T, P> operator/(tvec4<T, P> const & v, T scalar);
+
406 
+
407  template <typename T, precision P>
+
408  GLM_FUNC_DECL tvec4<T, P> operator/(tvec4<T, P> const & v, tvec1<T, P> const & s);
+
409 
+
410  template <typename T, precision P>
+
411  GLM_FUNC_DECL tvec4<T, P> operator/(T scalar, tvec4<T, P> const & v);
+
412 
+
413  template <typename T, precision P>
+
414  GLM_FUNC_DECL tvec4<T, P> operator/(tvec1<T, P> const & s, tvec4<T, P> const & v);
+
415 
+
416  template <typename T, precision P>
+
417  GLM_FUNC_DECL tvec4<T, P> operator/(tvec4<T, P> const & v1, tvec4<T, P> const & v2);
+
418 
+
419  template <typename T, precision P>
+
420  GLM_FUNC_DECL bool operator==(tvec4<T, P> const & v1, tvec4<T, P> const & v2);
+
421 
+
422  template <typename T, precision P>
+
423  GLM_FUNC_DECL bool operator!=(tvec4<T, P> const & v1, tvec4<T, P> const & v2);
+
424 
+
425  template <typename T, precision P>
+
426  GLM_FUNC_DECL tvec4<T, P> operator%(tvec4<T, P> const & v, T scalar);
+
427 
+
428  template <typename T, precision P>
+
429  GLM_FUNC_DECL tvec4<T, P> operator%(tvec4<T, P> const & v, tvec1<T, P> const & s);
+
430 
+
431  template <typename T, precision P>
+
432  GLM_FUNC_DECL tvec4<T, P> operator%(T scalar, tvec4<T, P> const & v);
+
433 
+
434  template <typename T, precision P>
+
435  GLM_FUNC_DECL tvec4<T, P> operator%(tvec1<T, P> const & s, tvec4<T, P> const & v);
+
436 
+
437  template <typename T, precision P>
+
438  GLM_FUNC_DECL tvec4<T, P> operator%(tvec4<T, P> const & v1, tvec4<T, P> const & v2);
+
439 
+
440  template <typename T, precision P>
+
441  GLM_FUNC_DECL tvec4<T, P> operator&(tvec4<T, P> const & v, T scalar);
+
442 
+
443  template <typename T, precision P>
+
444  GLM_FUNC_DECL tvec4<T, P> operator&(tvec4<T, P> const & v, tvec1<T, P> const & s);
+
445 
+
446  template <typename T, precision P>
+
447  GLM_FUNC_DECL tvec4<T, P> operator&(T scalar, tvec4<T, P> const & v);
+
448 
+
449  template <typename T, precision P>
+
450  GLM_FUNC_DECL tvec4<T, P> operator&(tvec1<T, P> const & s, tvec4<T, P> const & v);
+
451 
+
452  template <typename T, precision P>
+
453  GLM_FUNC_DECL tvec4<T, P> operator&(tvec4<T, P> const & v1, tvec4<T, P> const & v2);
+
454 
+
455  template <typename T, precision P>
+
456  GLM_FUNC_DECL tvec4<T, P> operator|(tvec4<T, P> const & v, T scalar);
+
457 
+
458  template <typename T, precision P>
+
459  GLM_FUNC_DECL tvec4<T, P> operator|(tvec4<T, P> const & v, tvec1<T, P> const & s);
+
460 
+
461  template <typename T, precision P>
+
462  GLM_FUNC_DECL tvec4<T, P> operator|(T scalar, tvec4<T, P> const & v);
+
463 
+
464  template <typename T, precision P>
+
465  GLM_FUNC_DECL tvec4<T, P> operator|(tvec1<T, P> const & s, tvec4<T, P> const & v);
+
466 
+
467  template <typename T, precision P>
+
468  GLM_FUNC_DECL tvec4<T, P> operator|(tvec4<T, P> const & v1, tvec4<T, P> const & v2);
+
469 
+
470  template <typename T, precision P>
+
471  GLM_FUNC_DECL tvec4<T, P> operator^(tvec4<T, P> const & v, T scalar);
+
472 
+
473  template <typename T, precision P>
+
474  GLM_FUNC_DECL tvec4<T, P> operator^(tvec4<T, P> const & v, tvec1<T, P> const & s);
+
475 
+
476  template <typename T, precision P>
+
477  GLM_FUNC_DECL tvec4<T, P> operator^(T scalar, tvec4<T, P> const & v);
+
478 
+
479  template <typename T, precision P>
+
480  GLM_FUNC_DECL tvec4<T, P> operator^(tvec1<T, P> const & s, tvec4<T, P> const & v);
+
481 
+
482  template <typename T, precision P>
+
483  GLM_FUNC_DECL tvec4<T, P> operator^(tvec4<T, P> const & v1, tvec4<T, P> const & v2);
+
484 
+
485  template <typename T, precision P>
+
486  GLM_FUNC_DECL tvec4<T, P> operator<<(tvec4<T, P> const & v, T scalar);
+
487 
+
488  template <typename T, precision P>
+
489  GLM_FUNC_DECL tvec4<T, P> operator<<(tvec4<T, P> const & v, tvec1<T, P> const & s);
+
490 
+
491  template <typename T, precision P>
+
492  GLM_FUNC_DECL tvec4<T, P> operator<<(T scalar, tvec4<T, P> const & v);
+
493 
+
494  template <typename T, precision P>
+
495  GLM_FUNC_DECL tvec4<T, P> operator<<(tvec1<T, P> const & s, tvec4<T, P> const & v);
+
496 
+
497  template <typename T, precision P>
+
498  GLM_FUNC_DECL tvec4<T, P> operator<<(tvec4<T, P> const & v1, tvec4<T, P> const & v2);
+
499 
+
500  template <typename T, precision P>
+
501  GLM_FUNC_DECL tvec4<T, P> operator>>(tvec4<T, P> const & v, T scalar);
+
502 
+
503  template <typename T, precision P>
+
504  GLM_FUNC_DECL tvec4<T, P> operator>>(tvec4<T, P> const & v, tvec1<T, P> const & s);
+
505 
+
506  template <typename T, precision P>
+
507  GLM_FUNC_DECL tvec4<T, P> operator>>(T scalar, tvec4<T, P> const & v);
+
508 
+
509  template <typename T, precision P>
+
510  GLM_FUNC_DECL tvec4<T, P> operator>>(tvec1<T, P> const & s, tvec4<T, P> const & v);
+
511 
+
512  template <typename T, precision P>
+
513  GLM_FUNC_DECL tvec4<T, P> operator>>(tvec4<T, P> const & v1, tvec4<T, P> const & v2);
+
514 
+
515  template <typename T, precision P>
+
516  GLM_FUNC_DECL tvec4<T, P> operator~(tvec4<T, P> const & v);
+
517 
+
518  // -- Boolean operators --
+
519 
+
520  template <typename T, precision P>
+
521  GLM_FUNC_DECL bool operator==(tvec4<T, P> const & v1, tvec4<T, P> const & v2);
+
522 
+
523  template <typename T, precision P>
+
524  GLM_FUNC_DECL bool operator!=(tvec4<T, P> const & v1, tvec4<T, P> const & v2);
+
525 }//namespace glm
+
526 
+
527 #ifndef GLM_EXTERNAL_TEMPLATE
+
528 #include "type_vec4.inl"
+
529 #endif//GLM_EXTERNAL_TEMPLATE
+
GLM_FUNC_DECL T length(vecType< T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
Definition: _noise.hpp:40
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00137.html b/external/glm/doc/api/a00137.html new file mode 100644 index 0000000..705074a --- /dev/null +++ b/external/glm/doc/api/a00137.html @@ -0,0 +1,98 @@ + + + + + + +0.9.7: ulp.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
ulp.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL uint float_distance (T const &x, T const &y)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_DECL vecType< uint > float_distance (vecType< T > const &x, vecType< T > const &y)
 
template<typename genType >
GLM_FUNC_DECL genType next_float (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType next_float (genType const &x, uint const &Distance)
 
template<typename genType >
GLM_FUNC_DECL genType prev_float (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType prev_float (genType const &x, uint const &Distance)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_ulp

+
Date
2011-02-21 / 2011-12-12
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file ulp.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00137_source.html b/external/glm/doc/api/a00137_source.html new file mode 100644 index 0000000..3ad2c53 --- /dev/null +++ b/external/glm/doc/api/a00137_source.html @@ -0,0 +1,101 @@ + + + + + + +0.9.7: ulp.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
ulp.hpp
+
+
+Go to the documentation of this file.
1 
+
43 #pragma once
+
44 
+
45 // Dependencies
+
46 #include "../detail/setup.hpp"
+
47 #include "../detail/precision.hpp"
+
48 #include "../detail/type_int.hpp"
+
49 
+
50 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
51 # pragma message("GLM: GLM_GTC_ulp extension included")
+
52 #endif
+
53 
+
54 namespace glm
+
55 {
+
58 
+
61  template <typename genType>
+
62  GLM_FUNC_DECL genType next_float(genType const & x);
+
63 
+
66  template <typename genType>
+
67  GLM_FUNC_DECL genType prev_float(genType const & x);
+
68 
+
71  template <typename genType>
+
72  GLM_FUNC_DECL genType next_float(genType const & x, uint const & Distance);
+
73 
+
76  template <typename genType>
+
77  GLM_FUNC_DECL genType prev_float(genType const & x, uint const & Distance);
+
78 
+
81  template <typename T>
+
82  GLM_FUNC_DECL uint float_distance(T const & x, T const & y);
+
83 
+
86  template<typename T, template<typename> class vecType>
+
87  GLM_FUNC_DECL vecType<uint> float_distance(vecType<T> const & x, vecType<T> const & y);
+
88 
+
90 }// namespace glm
+
91 
+
92 #include "ulp.inl"
+
GLM_FUNC_DECL vecType< uint > float_distance(vecType< T > const &x, vecType< T > const &y)
Return the distance in the number of ULP between 2 vectors.
+
GLM_FUNC_DECL genType prev_float(genType const &x, uint const &Distance)
Return the value(s) ULP distance before the input value(s).
+
unsigned int uint
Unsigned integer type.
Definition: type_int.hpp:308
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL genType next_float(genType const &x, uint const &Distance)
Return the value(s) ULP distance after the input value(s).
+
+ + + + diff --git a/external/glm/doc/api/a00138.html b/external/glm/doc/api/a00138.html new file mode 100644 index 0000000..fa328d7 --- /dev/null +++ b/external/glm/doc/api/a00138.html @@ -0,0 +1,114 @@ + + + + + + +0.9.7: vec1.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
vec1.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef highp_bvec1 bvec1
 
typedef highp_dvec1 dvec1
 
typedef highp_bvec1_t highp_bvec1
 
typedef highp_dvec1_t highp_dvec1
 
typedef highp_ivec1_t highp_ivec1
 
typedef highp_uvec1_t highp_uvec1
 
typedef highp_ivec1 ivec1
 
typedef lowp_bvec1_t lowp_bvec1
 
typedef lowp_dvec1_t lowp_dvec1
 
typedef lowp_ivec1_t lowp_ivec1
 
typedef lowp_uvec1_t lowp_uvec1
 
typedef mediump_bvec1_t mediump_bvec1
 
typedef mediump_dvec1_t mediump_dvec1
 
typedef mediump_ivec1_t mediump_ivec1
 
typedef mediump_uvec1_t mediump_uvec1
 
typedef highp_uvec1 uvec1
 
typedef highp_vec1 vec1
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTC_vec1

+
Date
2010-02-08 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file vec1.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00138_source.html b/external/glm/doc/api/a00138_source.html new file mode 100644 index 0000000..ef72fd0 --- /dev/null +++ b/external/glm/doc/api/a00138_source.html @@ -0,0 +1,159 @@ + + + + + + +0.9.7: vec1.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
vec1.hpp
+
+
+Go to the documentation of this file.
1 
+
41 #pragma once
+
42 
+
43 // Dependency:
+
44 #include "../glm.hpp"
+
45 #include "../detail/type_vec1.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTC_vec1 extension included")
+
49 #endif
+
50 
+
51 namespace glm
+
52 {
+
56  typedef highp_vec1_t highp_vec1;
+
57 
+
61  typedef mediump_vec1_t mediump_vec1;
+
62 
+
66  typedef lowp_vec1_t lowp_vec1;
+
67 
+
71  typedef highp_dvec1_t highp_dvec1;
+
72 
+
76  typedef mediump_dvec1_t mediump_dvec1;
+
77 
+
81  typedef lowp_dvec1_t lowp_dvec1;
+
82 
+
86  typedef highp_ivec1_t highp_ivec1;
+
87 
+
91  typedef mediump_ivec1_t mediump_ivec1;
+
92 
+
96  typedef lowp_ivec1_t lowp_ivec1;
+
97 
+
101  typedef highp_uvec1_t highp_uvec1;
+
102 
+
106  typedef mediump_uvec1_t mediump_uvec1;
+
107 
+
111  typedef lowp_uvec1_t lowp_uvec1;
+
112 
+
116  typedef highp_bvec1_t highp_bvec1;
+
117 
+
121  typedef mediump_bvec1_t mediump_bvec1;
+
122 
+
126  typedef lowp_bvec1_t lowp_bvec1;
+
127 
+
129  // vec1 definition
+
130 
+
131 #if(defined(GLM_PRECISION_HIGHP_BOOL))
+
132  typedef highp_bvec1 bvec1;
+
133 #elif(defined(GLM_PRECISION_MEDIUMP_BOOL))
+
134  typedef mediump_bvec1 bvec1;
+
135 #elif(defined(GLM_PRECISION_LOWP_BOOL))
+
136  typedef lowp_bvec1 bvec1;
+
137 #else
+
138  typedef highp_bvec1 bvec1;
+
141 #endif//GLM_PRECISION
+
142 
+
143 #if(defined(GLM_PRECISION_HIGHP_FLOAT))
+
144  typedef highp_vec1 vec1;
+
145 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
+
146  typedef mediump_vec1 vec1;
+
147 #elif(defined(GLM_PRECISION_LOWP_FLOAT))
+
148  typedef lowp_vec1 vec1;
+
149 #else
+
150  typedef highp_vec1 vec1;
+
153 #endif//GLM_PRECISION
+
154 
+
155 #if(defined(GLM_PRECISION_HIGHP_DOUBLE))
+
156  typedef highp_dvec1 dvec1;
+
157 #elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE))
+
158  typedef mediump_dvec1 dvec1;
+
159 #elif(defined(GLM_PRECISION_LOWP_DOUBLE))
+
160  typedef lowp_dvec1 dvec1;
+
161 #else
+
162  typedef highp_dvec1 dvec1;
+
165 #endif//GLM_PRECISION
+
166 
+
167 #if(defined(GLM_PRECISION_HIGHP_INT))
+
168  typedef highp_ivec1 ivec1;
+
169 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
+
170  typedef mediump_ivec1 ivec1;
+
171 #elif(defined(GLM_PRECISION_LOWP_INT))
+
172  typedef lowp_ivec1 ivec1;
+
173 #else
+
174  typedef highp_ivec1 ivec1;
+
177 #endif//GLM_PRECISION
+
178 
+
179 #if(defined(GLM_PRECISION_HIGHP_UINT))
+
180  typedef highp_uvec1 uvec1;
+
181 #elif(defined(GLM_PRECISION_MEDIUMP_UINT))
+
182  typedef mediump_uvec1 uvec1;
+
183 #elif(defined(GLM_PRECISION_LOWP_UINT))
+
184  typedef lowp_uvec1 uvec1;
+
185 #else
+
186  typedef highp_uvec1 uvec1;
+
189 #endif//GLM_PRECISION
+
190 
+
191 }// namespace glm
+
192 
+
193 #include "vec1.inl"
+
Definition: _noise.hpp:40
+
+ + + + diff --git a/external/glm/doc/api/a00139.html b/external/glm/doc/api/a00139.html new file mode 100644 index 0000000..3393fab --- /dev/null +++ b/external/glm/doc/api/a00139.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: vec2.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
vec2.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file vec2.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00139_source.html b/external/glm/doc/api/a00139_source.html new file mode 100644 index 0000000..1e0d61d --- /dev/null +++ b/external/glm/doc/api/a00139_source.html @@ -0,0 +1,65 @@ + + + + + + +0.9.7: vec2.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
vec2.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "detail/type_vec2.hpp"
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00140.html b/external/glm/doc/api/a00140.html new file mode 100644 index 0000000..9eca1e2 --- /dev/null +++ b/external/glm/doc/api/a00140.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: vec3.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
vec3.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file vec3.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00140_source.html b/external/glm/doc/api/a00140_source.html new file mode 100644 index 0000000..b5b3041 --- /dev/null +++ b/external/glm/doc/api/a00140_source.html @@ -0,0 +1,65 @@ + + + + + + +0.9.7: vec3.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
vec3.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "detail/type_vec3.hpp"
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00141.html b/external/glm/doc/api/a00141.html new file mode 100644 index 0000000..f9705a9 --- /dev/null +++ b/external/glm/doc/api/a00141.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: vec4.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
vec4.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file vec4.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00141_source.html b/external/glm/doc/api/a00141_source.html new file mode 100644 index 0000000..9a74293 --- /dev/null +++ b/external/glm/doc/api/a00141_source.html @@ -0,0 +1,65 @@ + + + + + + +0.9.7: vec4.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
vec4.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+
35 #include "detail/type_vec4.hpp"
+
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00142.html b/external/glm/doc/api/a00142.html new file mode 100644 index 0000000..bf26f41 --- /dev/null +++ b/external/glm/doc/api/a00142.html @@ -0,0 +1,93 @@ + + + + + + +0.9.7: vector_angle.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
vector_angle.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Functions

template<typename vecType >
GLM_FUNC_DECL vecType::value_type angle (vecType const &x, vecType const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL T orientedAngle (tvec2< T, P > const &x, tvec2< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL T orientedAngle (tvec3< T, P > const &x, tvec3< T, P > const &y, tvec3< T, P > const &ref)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_vector_angle

+
Date
2005-12-30 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+
+GLM_GTX_quaternion (dependence)
+
+gtx_epsilon (dependence)
+ +

Definition in file vector_angle.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00142_source.html b/external/glm/doc/api/a00142_source.html new file mode 100644 index 0000000..be51d24 --- /dev/null +++ b/external/glm/doc/api/a00142_source.html @@ -0,0 +1,98 @@ + + + + + + +0.9.7: vector_angle.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
vector_angle.hpp
+
+
+Go to the documentation of this file.
1 
+
44 #pragma once
+
45 
+
46 // Dependency:
+
47 #include "../glm.hpp"
+
48 #include "../gtc/epsilon.hpp"
+
49 #include "../gtx/quaternion.hpp"
+
50 #include "../gtx/rotate_vector.hpp"
+
51 
+
52 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
53 # pragma message("GLM: GLM_GTX_vector_angle extension included")
+
54 #endif
+
55 
+
56 namespace glm
+
57 {
+
60 
+
64  template <typename vecType>
+
65  GLM_FUNC_DECL typename vecType::value_type angle(
+
66  vecType const & x,
+
67  vecType const & y);
+
68 
+
72  template <typename T, precision P>
+
73  GLM_FUNC_DECL T orientedAngle(
+
74  tvec2<T, P> const & x,
+
75  tvec2<T, P> const & y);
+
76 
+
80  template <typename T, precision P>
+
81  GLM_FUNC_DECL T orientedAngle(
+
82  tvec3<T, P> const & x,
+
83  tvec3<T, P> const & y,
+
84  tvec3<T, P> const & ref);
+
85 
+
87 }// namespace glm
+
88 
+
89 #include "vector_angle.inl"
+
GLM_FUNC_DECL vecType::value_type angle(vecType const &x, vecType const &y)
Returns the absolute angle between two vectors Parameters need to be normalized.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL T orientedAngle(tvec3< T, P > const &x, tvec3< T, P > const &y, tvec3< T, P > const &ref)
Returns the oriented angle between two 3d vectors based from a reference axis.
+
+ + + + diff --git a/external/glm/doc/api/a00143.html b/external/glm/doc/api/a00143.html new file mode 100644 index 0000000..33b0813 --- /dev/null +++ b/external/glm/doc/api/a00143.html @@ -0,0 +1,98 @@ + + + + + + +0.9.7: vector_query.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
vector_query.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL bool areCollinear (vecType< T, P > const &v0, vecType< T, P > const &v1, T const &epsilon)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL bool areOrthogonal (vecType< T, P > const &v0, vecType< T, P > const &v1, T const &epsilon)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL bool areOrthonormal (vecType< T, P > const &v0, vecType< T, P > const &v1, T const &epsilon)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > isCompNull (vecType< T, P > const &v, T const &epsilon)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL bool isNormalized (vecType< T, P > const &v, T const &epsilon)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL bool isNull (vecType< T, P > const &v, T const &epsilon)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_vector_query

+
Date
2008-03-10 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file vector_query.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00143_source.html b/external/glm/doc/api/a00143_source.html new file mode 100644 index 0000000..c667598 --- /dev/null +++ b/external/glm/doc/api/a00143_source.html @@ -0,0 +1,104 @@ + + + + + + +0.9.7: vector_query.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
vector_query.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 #include <cfloat>
+
47 #include <limits>
+
48 
+
49 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
50 # pragma message("GLM: GLM_GTX_vector_query extension included")
+
51 #endif
+
52 
+
53 namespace glm
+
54 {
+
57 
+
60  template <typename T, precision P, template <typename, precision> class vecType>
+
61  GLM_FUNC_DECL bool areCollinear(vecType<T, P> const & v0, vecType<T, P> const & v1, T const & epsilon);
+
62 
+
65  template <typename T, precision P, template <typename, precision> class vecType>
+
66  GLM_FUNC_DECL bool areOrthogonal(vecType<T, P> const & v0, vecType<T, P> const & v1, T const & epsilon);
+
67 
+
70  template <typename T, precision P, template <typename, precision> class vecType>
+
71  GLM_FUNC_DECL bool isNormalized(vecType<T, P> const & v, T const & epsilon);
+
72 
+
75  template <typename T, precision P, template <typename, precision> class vecType>
+
76  GLM_FUNC_DECL bool isNull(vecType<T, P> const & v, T const & epsilon);
+
77 
+
80  template <typename T, precision P, template <typename, precision> class vecType>
+
81  GLM_FUNC_DECL vecType<bool, P> isCompNull(vecType<T, P> const & v, T const & epsilon);
+
82 
+
85  template <typename T, precision P, template <typename, precision> class vecType>
+
86  GLM_FUNC_DECL bool areOrthonormal(vecType<T, P> const & v0, vecType<T, P> const & v1, T const & epsilon);
+
87 
+
89 }// namespace glm
+
90 
+
91 #include "vector_query.inl"
+
GLM_FUNC_DECL bool isNormalized(vecType< T, P > const &v, T const &epsilon)
Check whether a vector is normalized.
+
GLM_FUNC_DECL genType epsilon()
Return the epsilon constant for floating point types.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL vecType< bool, P > isCompNull(vecType< T, P > const &v, T const &epsilon)
Check whether a each component of a vector is null.
+
GLM_FUNC_DECL bool areOrthogonal(vecType< T, P > const &v0, vecType< T, P > const &v1, T const &epsilon)
Check whether two vectors are orthogonals.
+
GLM_FUNC_DECL bool isNull(vecType< T, P > const &v, T const &epsilon)
Check whether a vector is null.
+
GLM_FUNC_DECL bool areOrthonormal(vecType< T, P > const &v0, vecType< T, P > const &v1, T const &epsilon)
Check whether two vectors are orthonormal.
+
GLM_FUNC_DECL bool areCollinear(vecType< T, P > const &v0, vecType< T, P > const &v1, T const &epsilon)
Check whether two vectors are collinears.
+
+ + + + diff --git a/external/glm/doc/api/a00144.html b/external/glm/doc/api/a00144.html new file mode 100644 index 0000000..c712fc5 --- /dev/null +++ b/external/glm/doc/api/a00144.html @@ -0,0 +1,73 @@ + + + + + + +0.9.7: vector_relational.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
vector_relational.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM Core

+
Date
2013-12-24 / 2013-12-24
+
Author
Christophe Riccio
+ +

Definition in file vector_relational.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00144_source.html b/external/glm/doc/api/a00144_source.html new file mode 100644 index 0000000..8d37145 --- /dev/null +++ b/external/glm/doc/api/a00144_source.html @@ -0,0 +1,65 @@ + + + + + + +0.9.7: vector_relational.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
vector_relational.hpp
+
+
+Go to the documentation of this file.
1 
+
33 #pragma once
+
34 
+ +
OpenGL Mathematics (glm.g-truc.net)
+
+ + + + diff --git a/external/glm/doc/api/a00145.html b/external/glm/doc/api/a00145.html new file mode 100644 index 0000000..6b1e6c1 --- /dev/null +++ b/external/glm/doc/api/a00145.html @@ -0,0 +1,92 @@ + + + + + + +0.9.7: wrap.hpp File Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+ +
+
wrap.hpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType clamp (genType const &Texcoord)
 
template<typename genType >
GLM_FUNC_DECL genType mirrorClamp (genType const &Texcoord)
 
template<typename genType >
GLM_FUNC_DECL genType mirrorRepeat (genType const &Texcoord)
 
template<typename genType >
GLM_FUNC_DECL genType repeat (genType const &Texcoord)
 
+

Detailed Description

+

OpenGL Mathematics (glm.g-truc.net)

+

Copyright (c) 2005 - 2015 G-Truc Creation (www.g-truc.net) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

+

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

+

Restrictions: By making use of the Software for military purposes, you choose to make a Bunny unhappy.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+

GLM_GTX_wrap

+
Date
2009-11-25 / 2011-06-07
+
Author
Christophe Riccio
+
See also
GLM Core (dependence)
+ +

Definition in file wrap.hpp.

+
+ + + + diff --git a/external/glm/doc/api/a00145_source.html b/external/glm/doc/api/a00145_source.html new file mode 100644 index 0000000..f87fbd5 --- /dev/null +++ b/external/glm/doc/api/a00145_source.html @@ -0,0 +1,93 @@ + + + + + + +0.9.7: wrap.hpp Source File + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + + +
+
+
+
wrap.hpp
+
+
+Go to the documentation of this file.
1 
+
42 #pragma once
+
43 
+
44 // Dependency:
+
45 #include "../glm.hpp"
+
46 
+
47 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
+
48 # pragma message("GLM: GLM_GTX_wrap extension included")
+
49 #endif
+
50 
+
51 namespace glm
+
52 {
+
55 
+
58  template <typename genType>
+
59  GLM_FUNC_DECL genType clamp(genType const & Texcoord);
+
60 
+
63  template <typename genType>
+
64  GLM_FUNC_DECL genType repeat(genType const & Texcoord);
+
65 
+
68  template <typename genType>
+
69  GLM_FUNC_DECL genType mirrorClamp(genType const & Texcoord);
+
70 
+
73  template <typename genType>
+
74  GLM_FUNC_DECL genType mirrorRepeat(genType const & Texcoord);
+
75 
+
77 }// namespace glm
+
78 
+
79 #include "wrap.inl"
+
GLM_FUNC_DECL genType repeat(genType const &Texcoord)
Simulate GL_REPEAT OpenGL wrap mode.
+
GLM_FUNC_DECL genType mirrorClamp(genType const &Texcoord)
Simulate GL_MIRRORED_REPEAT OpenGL wrap mode.
+
Definition: _noise.hpp:40
+
GLM_FUNC_DECL genType clamp(genType const &Texcoord)
Simulate GL_CLAMP OpenGL wrap mode.
+
GLM_FUNC_DECL genType mirrorRepeat(genType const &Texcoord)
Simulate GL_MIRROR_REPEAT OpenGL wrap mode.
+
+ + + + diff --git a/external/glm/doc/api/a00151.html b/external/glm/doc/api/a00151.html new file mode 100644 index 0000000..7d26630 --- /dev/null +++ b/external/glm/doc/api/a00151.html @@ -0,0 +1,1123 @@ + + + + + + +0.9.7: Common functions + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
Common functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType abs (genType x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > ceil (vecType< T, P > const &x)
 
template<typename genType >
GLM_FUNC_DECL genType clamp (genType x, genType minVal, genType maxVal)
 
GLM_FUNC_DECL int floatBitsToInt (float const &v)
 
template<template< typename, precision > class vecType, precision P>
GLM_FUNC_DECL vecType< int, P > floatBitsToInt (vecType< float, P > const &v)
 
GLM_FUNC_DECL uint floatBitsToUint (float const &v)
 
template<template< typename, precision > class vecType, precision P>
GLM_FUNC_DECL vecType< uint, P > floatBitsToUint (vecType< float, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > floor (vecType< T, P > const &x)
 
template<typename genType >
GLM_FUNC_DECL genType fma (genType const &a, genType const &b, genType const &c)
 
template<typename genType >
GLM_FUNC_DECL genType fract (genType x)
 
template<typename genType , typename genIType >
GLM_FUNC_DECL genType frexp (genType const &x, genIType &exp)
 
GLM_FUNC_DECL float intBitsToFloat (int const &v)
 
template<template< typename, precision > class vecType, precision P>
GLM_FUNC_DECL vecType< float, P > intBitsToFloat (vecType< int, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > isinf (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > isnan (vecType< T, P > const &x)
 
template<typename genType , typename genIType >
GLM_FUNC_DECL genType ldexp (genType const &x, genIType const &exp)
 
template<typename genType >
GLM_FUNC_DECL genType max (genType x, genType y)
 
template<typename genType >
GLM_FUNC_DECL genType min (genType x, genType y)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > mix (vecType< T, P > const &x, vecType< T, P > const &y, vecType< U, P > const &a)
 
template<typename genType >
GLM_FUNC_DECL genType mod (genType x, genType y)
 
template<typename genType >
GLM_FUNC_DECL genType modf (genType x, genType &i)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > round (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > roundEven (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > sign (vecType< T, P > const &x)
 
template<typename genType >
GLM_FUNC_DECL genType smoothstep (genType edge0, genType edge1, genType x)
 
template<typename genType >
GLM_FUNC_DECL genType step (genType edge, genType x)
 
template<template< typename, precision > class vecType, typename T , precision P>
GLM_FUNC_DECL vecType< T, P > step (T edge, vecType< T, P > const &x)
 
template<template< typename, precision > class vecType, typename T , precision P>
GLM_FUNC_DECL vecType< T, P > step (vecType< T, P > const &edge, vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > trunc (vecType< T, P > const &x)
 
GLM_FUNC_DECL float uintBitsToFloat (uint const &v)
 
template<template< typename, precision > class vecType, precision P>
GLM_FUNC_DECL vecType< float, P > uintBitsToFloat (vecType< uint, P > const &v)
 
+

Detailed Description

+

These all operate component-wise.

+

The description is per component.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::abs (genType x)
+
+ +

Returns x if x >= 0; otherwise, it returns -x.

+
Template Parameters
+ + +
genTypefloating-point or signed integer; scalar or vector types.
+
+
+
See also
GLSL abs man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::ceil (vecType< T, P > const & x)
+
+ +

Returns a value equal to the nearest integer that is greater than or equal to x.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL ceil man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::clamp (genType x,
genType minVal,
genType maxVal 
)
+
+ +

Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal.

+
Template Parameters
+ + +
genTypeFloating-point or integer; scalar or vector types.
+
+
+
See also
GLSL clamp man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +

Referenced by glm::saturate().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL int glm::floatBitsToInt (float const & v)
+
+ +

Returns a signed integer value representing the encoding of a floating-point value.

+

The floating-point value's bit-level representation is preserved.

+
See also
GLSL floatBitsToInt man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<int, P> glm::floatBitsToInt (vecType< float, P > const & v)
+
+ +

Returns a signed integer value representing the encoding of a floating-point value.

+

The floatingpoint value's bit-level representation is preserved.

+
See also
GLSL floatBitsToInt man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::floatBitsToUint (float const & v)
+
+ +

Returns a unsigned integer value representing the encoding of a floating-point value.

+

The floatingpoint value's bit-level representation is preserved.

+
See also
GLSL floatBitsToUint man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<uint, P> glm::floatBitsToUint (vecType< float, P > const & v)
+
+ +

Returns a unsigned integer value representing the encoding of a floating-point value.

+

The floatingpoint value's bit-level representation is preserved.

+
See also
GLSL floatBitsToUint man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::floor (vecType< T, P > const & x)
+
+ +

Returns a value equal to the nearest integer that is less then or equal to x.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL floor man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::fma (genType const & a,
genType const & b,
genType const & c 
)
+
+ +

Computes and returns a * b + c.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL fma man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::fract (genType x)
+
+ +

Return x - floor(x).

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL fract man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::frexp (genType const & x,
genIType & exp 
)
+
+ +

Splits x into a floating-point significand in the range [0.5, 1.0) and an integral exponent of two, such that: x = significand * exp(2, exponent)

+

The significand is returned by the function and the exponent is returned in the parameter exp. For a floating-point value of zero, the significant and exponent are both zero. For a floating-point value that is an infinity or is not a number, the results are undefined.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL frexp man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL float glm::intBitsToFloat (int const & v)
+
+ +

Returns a floating-point value corresponding to a signed integer encoding of a floating-point value.

+

If an inf or NaN is passed in, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit-level representation is preserved.

+
See also
GLSL intBitsToFloat man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<float, P> glm::intBitsToFloat (vecType< int, P > const & v)
+
+ +

Returns a floating-point value corresponding to a signed integer encoding of a floating-point value.

+

If an inf or NaN is passed in, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit-level representation is preserved.

+
See also
GLSL intBitsToFloat man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<bool, P> glm::isinf (vecType< T, P > const & x)
+
+ +

Returns true if x holds a positive infinity or negative infinity representation in the underlying implementation's set of floating point representations.

+

Returns false otherwise, including for implementations with no infinity representations.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL isinf man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<bool, P> glm::isnan (vecType< T, P > const & x)
+
+ +

Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of floating point representations.

+

Returns false otherwise, including for implementations with no NaN representations.

+

/!\ When using compiler fast math, this function may fail.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL isnan man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::ldexp (genType const & x,
genIType const & exp 
)
+
+ +

Builds a floating-point number from x and the corresponding integral exponent of two in exp, returning: significand * exp(2, exponent)

+

If this product is too large to be represented in the floating-point type, the result is undefined.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL ldexp man page;
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::max (genType x,
genType y 
)
+
+ +

Returns y if x < y; otherwise, it returns x.

+
Template Parameters
+ + +
genTypeFloating-point or integer; scalar or vector types.
+
+
+
See also
GLSL max man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::min (genType x,
genType y 
)
+
+ +

Returns y if y < x; otherwise, it returns x.

+
Template Parameters
+ + +
genTypeFloating-point or integer; scalar or vector types.
+
+
+
See also
GLSL min man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::mix (vecType< T, P > const & x,
vecType< T, P > const & y,
vecType< U, P > const & a 
)
+
+ +

If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a.

+

The value for a is not restricted to the range [0, 1].

+

If genTypeU is a boolean scalar or vector: Selects which vector each returned component comes from. For a component of that is false, the corresponding component of x is returned. For a component of a that is true, the corresponding component of y is returned. Components of x and y that are not selected are allowed to be invalid floating point values and will have no effect on the results. Thus, this provides different functionality than genType mix(genType x, genType y, genType(a)) where a is a Boolean vector.

+
See also
GLSL mix man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+
Parameters
+ + + + +
[in]xValue to interpolate.
[in]yValue to interpolate.
[in]aInterpolant.
+
+
+
Template Parameters
+ + + +
genTypeTFloating point scalar or vector.
genTypeUFloating point or boolean scalar or vector. It can't be a vector if it is the length of genTypeT.
+
+
+
#include <glm/glm.hpp>
+
...
+
float a;
+
bool b;
+ + + + +
...
+
glm::vec4 r = glm::mix(g, h, a); // Interpolate with a floating-point scalar two vectors.
+
glm::vec4 s = glm::mix(g, h, b); // Teturns g or h;
+
glm::dvec3 t = glm::mix(e, f, a); // Types of the third parameter is not required to match with the first and the second.
+
glm::vec4 u = glm::mix(g, h, r); // Interpolations can be perform per component with a vector for the last parameter.
+
+

Referenced by glm::lerp().

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::mod (genType x,
genType y 
)
+
+ +

Modulus.

+

Returns x - y * floor(x / y) for each component in x using the floating point value y.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL mod man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::modf (genType x,
genType & i 
)
+
+ +

Returns the fractional part of x and sets i to the integer part (as a whole number floating point value).

+

Both the return value and the output parameter will have the same sign as x.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL modf man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::round (vecType< T, P > const & x)
+
+ +

Returns a value equal to the nearest integer to x.

+

The fraction 0.5 will round in a direction chosen by the implementation, presumably the direction that is fastest. This includes the possibility that round(x) returns the same value as roundEven(x) for all values of x.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL round man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::roundEven (vecType< T, P > const & x)
+
+ +

Returns a value equal to the nearest integer to x.

+

A fractional part of 0.5 will round toward the nearest even integer. (Both 3.5 and 4.5 for x will return 4.0.)

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL roundEven man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+
+New round to even technique
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::sign (vecType< T, P > const & x)
+
+ +

Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0.

+
Template Parameters
+ + +
genTypeFloating-point or signed integer; scalar or vector types.
+
+
+
See also
GLSL sign man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::smoothstep (genType edge0,
genType edge1,
genType x 
)
+
+ +

Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 and 1 when edge0 < x < edge1.

+

This is useful in cases where you would want a threshold function with a smooth transition. This is equivalent to: genType t; t = clamp ((x - edge0) / (edge1 - edge0), 0, 1); return t * t * (3 - 2 * t); Results are undefined if edge0 >= edge1.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL smoothstep man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::step (genType edge,
genType x 
)
+
+ +

Returns 0.0 if x < edge, otherwise it returns 1.0 for each component of a genType.

+
See also
GLSL step man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::step (T edge,
vecType< T, P > const & x 
)
+
+ +

Returns 0.0 if x < edge, otherwise it returns 1.0.

+
See also
GLSL step man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::step (vecType< T, P > const & edge,
vecType< T, P > const & x 
)
+
+ +

Returns 0.0 if x < edge, otherwise it returns 1.0.

+
See also
GLSL step man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::trunc (vecType< T, P > const & x)
+
+ +

Returns a value equal to the nearest integer to x whose absolute value is not larger than the absolute value of x.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL trunc man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL float glm::uintBitsToFloat (uint const & v)
+
+ +

Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value.

+

If an inf or NaN is passed in, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit-level representation is preserved.

+
See also
GLSL uintBitsToFloat man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<float, P> glm::uintBitsToFloat (vecType< uint, P > const & v)
+
+ +

Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value.

+

If an inf or NaN is passed in, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit-level representation is preserved.

+
See also
GLSL uintBitsToFloat man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00152.html b/external/glm/doc/api/a00152.html new file mode 100644 index 0000000..7a82558 --- /dev/null +++ b/external/glm/doc/api/a00152.html @@ -0,0 +1,325 @@ + + + + + + +0.9.7: Exponential functions + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
Exponential functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > exp (vecType< T, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > exp2 (vecType< T, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > inversesqrt (vecType< T, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > log (vecType< T, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > log2 (vecType< T, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > pow (vecType< T, P > const &base, vecType< T, P > const &exponent)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > sqrt (vecType< T, P > const &v)
 
+

Detailed Description

+

These all operate component-wise.

+

The description is per component.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::exp (vecType< T, P > const & v)
+
+ +

Returns the natural exponentiation of x, i.e., e^x.

+
Parameters
+ + +
vexp function is defined for input values of v defined in the range (inf-, inf+) in the limit of the type precision.
+
+
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL exp man page
+
+GLSL 4.20.8 specification, section 8.2 Exponential Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::exp2 (vecType< T, P > const & v)
+
+ +

Returns 2 raised to the v power.

+
Parameters
+ + +
vexp2 function is defined for input values of v defined in the range (inf-, inf+) in the limit of the type precision.
+
+
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL exp2 man page
+
+GLSL 4.20.8 specification, section 8.2 Exponential Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::inversesqrt (vecType< T, P > const & v)
+
+ +

Returns the reciprocal of the positive square root of v.

+
Parameters
+ + +
vinversesqrt function is defined for input values of v defined in the range [0, inf+) in the limit of the type precision.
+
+
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL inversesqrt man page
+
+GLSL 4.20.8 specification, section 8.2 Exponential Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::log (vecType< T, P > const & v)
+
+ +

Returns the natural logarithm of v, i.e., returns the value y which satisfies the equation x = e^y.

+

Results are undefined if v <= 0.

+
Parameters
+ + +
vlog function is defined for input values of v defined in the range (0, inf+) in the limit of the type precision.
+
+
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL log man page
+
+GLSL 4.20.8 specification, section 8.2 Exponential Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::log2 (vecType< T, P > const & v)
+
+ +

Returns the base 2 log of x, i.e., returns the value y, which satisfies the equation x = 2 ^ y.

+
Parameters
+ + +
vlog2 function is defined for input values of v defined in the range (0, inf+) in the limit of the type precision.
+
+
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL log2 man page
+
+GLSL 4.20.8 specification, section 8.2 Exponential Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::pow (vecType< T, P > const & base,
vecType< T, P > const & exponent 
)
+
+ +

Returns 'base' raised to the power 'exponent'.

+
Parameters
+ + + +
baseFloating point value. pow function is defined for input values of 'base' defined in the range (inf-, inf+) in the limit of the type precision.
exponentFloating point value representing the 'exponent'.
+
+
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL pow man page
+
+GLSL 4.20.8 specification, section 8.2 Exponential Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::sqrt (vecType< T, P > const & v)
+
+ +

Returns the positive square root of v.

+
Parameters
+ + +
vsqrt function is defined for input values of v defined in the range [0, inf+) in the limit of the type precision.
+
+
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL sqrt man page
+
+GLSL 4.20.8 specification, section 8.2 Exponential Functions
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00153.html b/external/glm/doc/api/a00153.html new file mode 100644 index 0000000..40e4596 --- /dev/null +++ b/external/glm/doc/api/a00153.html @@ -0,0 +1,367 @@ + + + + + + +0.9.7: Geometric functions + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
Geometric functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > cross (tvec3< T, P > const &x, tvec3< T, P > const &y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T distance (vecType< T, P > const &p0, vecType< T, P > const &p1)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T dot (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > faceforward (vecType< T, P > const &N, vecType< T, P > const &I, vecType< T, P > const &Nref)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T length (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > normalize (vecType< T, P > const &x)
 
template<typename genType >
GLM_FUNC_DECL genType reflect (genType const &I, genType const &N)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > refract (vecType< T, P > const &I, vecType< T, P > const &N, T eta)
 
+

Detailed Description

+

These operate on vectors as vectors, not component-wise.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::cross (tvec3< T, P > const & x,
tvec3< T, P > const & y 
)
+
+ +

Returns the cross product of x and y.

+
Template Parameters
+ + +
valTypeFloating-point scalar types.
+
+
+
See also
GLSL cross man page
+
+GLSL 4.20.8 specification, section 8.5 Geometric Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::distance (vecType< T, P > const & p0,
vecType< T, P > const & p1 
)
+
+ +

Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).

+
Template Parameters
+ + +
genTypeFloating-point vector types.
+
+
+
See also
GLSL distance man page
+
+GLSL 4.20.8 specification, section 8.5 Geometric Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::dot (vecType< T, P > const & x,
vecType< T, P > const & y 
)
+
+ +

Returns the dot product of x and y, i.e., result = x * y.

+
Template Parameters
+ + +
genTypeFloating-point vector types.
+
+
+
See also
GLSL dot man page
+
+GLSL 4.20.8 specification, section 8.5 Geometric Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::faceforward (vecType< T, P > const & N,
vecType< T, P > const & I,
vecType< T, P > const & Nref 
)
+
+ +

If dot(Nref, I) < 0.0, return N, otherwise, return -N.

+
Template Parameters
+ + +
genTypeFloating-point vector types.
+
+
+
See also
GLSL faceforward man page
+
+GLSL 4.20.8 specification, section 8.5 Geometric Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::length (vecType< T, P > const & x)
+
+ +

Returns the length of x, i.e., sqrt(x * x).

+
Template Parameters
+ + +
genTypeFloating-point vector types.
+
+
+
See also
GLSL length man page
+
+GLSL 4.20.8 specification, section 8.5 Geometric Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::normalize (vecType< T, P > const & x)
+
+ +

Returns a vector in the same direction as x but with length of 1.

+

According to issue 10 GLSL 1.10 specification, if length(x) == 0 then result is undefined and generate an error.

+
See also
GLSL normalize man page
+
+GLSL 4.20.8 specification, section 8.5 Geometric Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::reflect (genType const & I,
genType const & N 
)
+
+ +

For the incident vector I and surface orientation N, returns the reflection direction : result = I - 2.0 * dot(N, I) * N.

+
Template Parameters
+ + +
genTypeFloating-point vector types.
+
+
+
See also
GLSL reflect man page
+
+GLSL 4.20.8 specification, section 8.5 Geometric Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::refract (vecType< T, P > const & I,
vecType< T, P > const & N,
T eta 
)
+
+ +

For the incident vector I and surface normal N, and the ratio of indices of refraction eta, return the refraction vector.

+
Template Parameters
+ + +
genTypeFloating-point vector types.
+
+
+
See also
GLSL refract man page
+
+GLSL 4.20.8 specification, section 8.5 Geometric Functions
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00154.html b/external/glm/doc/api/a00154.html new file mode 100644 index 0000000..c95d3f1 --- /dev/null +++ b/external/glm/doc/api/a00154.html @@ -0,0 +1,577 @@ + + + + + + +0.9.7: Integer functions + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
Integer functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL int bitCount (genType v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< int, P > bitCount (vecType< T, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > bitfieldExtract (vecType< T, P > const &Value, int Offset, int Bits)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > bitfieldInsert (vecType< T, P > const &Base, vecType< T, P > const &Insert, int Offset, int Bits)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > bitfieldReverse (vecType< T, P > const &v)
 
template<typename genIUType >
GLM_FUNC_DECL int findLSB (genIUType x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< int, P > findLSB (vecType< T, P > const &v)
 
template<typename genIUType >
GLM_FUNC_DECL int findMSB (genIUType x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< int, P > findMSB (vecType< T, P > const &v)
 
template<precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL void imulExtended (vecType< int, P > const &x, vecType< int, P > const &y, vecType< int, P > &msb, vecType< int, P > &lsb)
 
template<precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< uint, P > uaddCarry (vecType< uint, P > const &x, vecType< uint, P > const &y, vecType< uint, P > &carry)
 
template<precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL void umulExtended (vecType< uint, P > const &x, vecType< uint, P > const &y, vecType< uint, P > &msb, vecType< uint, P > &lsb)
 
template<precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< uint, P > usubBorrow (vecType< uint, P > const &x, vecType< uint, P > const &y, vecType< uint, P > &borrow)
 
+

Detailed Description

+

These all operate component-wise.

+

The description is per component. The notation [a, b] means the set of bits from bit-number a through bit-number b, inclusive. The lowest-order bit is bit 0.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL int glm::bitCount (genType v)
+
+ +

Returns the number of bits set to 1 in the binary representation of value.

+
Template Parameters
+ + +
TSigned or unsigned integer scalar or vector types.
+
+
+
See also
GLSL bitCount man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<int, P> glm::bitCount (vecType< T, P > const & v)
+
+ +

Returns the number of bits set to 1 in the binary representation of value.

+
Template Parameters
+ + +
TSigned or unsigned integer scalar or vector types.
+
+
+
See also
GLSL bitCount man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::bitfieldExtract (vecType< T, P > const & Value,
int Offset,
int Bits 
)
+
+ +

Extracts bits [offset, offset + bits - 1] from value, returning them in the least significant bits of the result.

+

For unsigned data types, the most significant bits of the result will be set to zero. For signed data types, the most significant bits will be set to the value of bit offset + base - 1.

+

If bits is zero, the result will be zero. The result will be undefined if offset or bits is negative, or if the sum of offset and bits is greater than the number of bits used to store the operand.

+
Template Parameters
+ + +
TSigned or unsigned integer scalar or vector types.
+
+
+
See also
GLSL bitfieldExtract man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::bitfieldInsert (vecType< T, P > const & Base,
vecType< T, P > const & Insert,
int Offset,
int Bits 
)
+
+ +

Returns the insertion the bits least-significant bits of insert into base.

+

The result will have bits [offset, offset + bits - 1] taken from bits [0, bits - 1] of insert, and all other bits taken directly from the corresponding bits of base. If bits is zero, the result will simply be base. The result will be undefined if offset or bits is negative, or if the sum of offset and bits is greater than the number of bits used to store the operand.

+
Template Parameters
+ + +
TSigned or unsigned integer scalar or vector types.
+
+
+
See also
GLSL bitfieldInsert man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::bitfieldReverse (vecType< T, P > const & v)
+
+ +

Returns the reversal of the bits of value.

+

The bit numbered n of the result will be taken from bit (bits - 1) - n of value, where bits is the total number of bits used to represent value.

+
Template Parameters
+ + +
TSigned or unsigned integer scalar or vector types.
+
+
+
See also
GLSL bitfieldReverse man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL int glm::findLSB (genIUType x)
+
+ +

Returns the bit number of the least significant bit set to 1 in the binary representation of value.

+

If value is zero, -1 will be returned.

+
Template Parameters
+ + +
TSigned or unsigned integer scalar types.
+
+
+
See also
GLSL findLSB man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<int, P> glm::findLSB (vecType< T, P > const & v)
+
+ +

Returns the bit number of the least significant bit set to 1 in the binary representation of value.

+

If value is zero, -1 will be returned.

+
Template Parameters
+ + +
TSigned or unsigned integer scalar types.
+
+
+
See also
GLSL findLSB man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL int glm::findMSB (genIUType x)
+
+ +

Returns the bit number of the most significant bit in the binary representation of value.

+

For positive integers, the result will be the bit number of the most significant bit set to 1. For negative integers, the result will be the bit number of the most significant bit set to 0. For a value of zero or negative one, -1 will be returned.

+
Template Parameters
+ + +
TSigned or unsigned integer scalar types.
+
+
+
See also
GLSL findMSB man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<int, P> glm::findMSB (vecType< T, P > const & v)
+
+ +

Returns the bit number of the most significant bit in the binary representation of value.

+

For positive integers, the result will be the bit number of the most significant bit set to 1. For negative integers, the result will be the bit number of the most significant bit set to 0. For a value of zero or negative one, -1 will be returned.

+
Template Parameters
+ + +
TSigned or unsigned integer scalar types.
+
+
+
See also
GLSL findMSB man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL void glm::imulExtended (vecType< int, P > const & x,
vecType< int, P > const & y,
vecType< int, P > & msb,
vecType< int, P > & lsb 
)
+
+ +

Multiplies 32-bit integers x and y, producing a 64-bit result.

+

The 32 least-significant bits are returned in lsb. The 32 most-significant bits are returned in msb.

+
Template Parameters
+ + +
genITypeSigned integer scalar or vector types.
+
+
+
See also
GLSL imulExtended man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<uint, P> glm::uaddCarry (vecType< uint, P > const & x,
vecType< uint, P > const & y,
vecType< uint, P > & carry 
)
+
+ +

Adds 32-bit unsigned integer x and y, returning the sum modulo pow(2, 32).

+

The value carry is set to 0 if the sum was less than pow(2, 32), or to 1 otherwise.

+
Template Parameters
+ + +
genUTypeUnsigned integer scalar or vector types.
+
+
+
See also
GLSL uaddCarry man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL void glm::umulExtended (vecType< uint, P > const & x,
vecType< uint, P > const & y,
vecType< uint, P > & msb,
vecType< uint, P > & lsb 
)
+
+ +

Multiplies 32-bit integers x and y, producing a 64-bit result.

+

The 32 least-significant bits are returned in lsb. The 32 most-significant bits are returned in msb.

+
Template Parameters
+ + +
genUTypeUnsigned integer scalar or vector types.
+
+
+
See also
GLSL umulExtended man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<uint, P> glm::usubBorrow (vecType< uint, P > const & x,
vecType< uint, P > const & y,
vecType< uint, P > & borrow 
)
+
+ +

Subtracts the 32-bit unsigned integer y from x, returning the difference if non-negative, or pow(2, 32) plus the difference otherwise.

+

The value borrow is set to 0 if x >= y, or to 1 otherwise.

+
Template Parameters
+ + +
genUTypeUnsigned integer scalar or vector types.
+
+
+
See also
GLSL usubBorrow man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00155.html b/external/glm/doc/api/a00155.html new file mode 100644 index 0000000..dc7848c --- /dev/null +++ b/external/glm/doc/api/a00155.html @@ -0,0 +1,210 @@ + + + + + + +0.9.7: Matrix functions + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
Matrix functions
+
+
+ + + + + + + + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class matType>
GLM_FUNC_DECL T determinant (matType< T, P > const &m)
 
template<typename T , precision P, template< typename, precision > class matType>
GLM_FUNC_DECL matType< T, P > inverse (matType< T, P > const &m)
 
template<typename T , precision P, template< typename, precision > class matType>
GLM_FUNC_DECL matType< T, P > matrixCompMult (matType< T, P > const &x, matType< T, P > const &y)
 
template<typename T , precision P, template< typename, precision > class vecTypeA, template< typename, precision > class vecTypeB>
GLM_FUNC_DECL detail::outerProduct_trait< T, P, vecTypeA, vecTypeB >::type outerProduct (vecTypeA< T, P > const &c, vecTypeB< T, P > const &r)
 
+

Detailed Description

+

For each of the following built-in matrix functions, there is both a single-precision floating point version, where all arguments and return values are single precision, and a double-precision floating version, where all arguments and return values are double precision.

+

Only the single-precision floating point version is shown.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::determinant (matType< T, P > const & m)
+
+ +

Returns the transposed matrix of x.

+
Template Parameters
+ + +
matTypeFloating-point matrix types.
+
+
+
See also
GLSL transpose man page
+
+GLSL 4.20.8 specification, section 8.6 Matrix Functions Return the determinant of a squared matrix.
+
Template Parameters
+ + +
valTypeFloating-point scalar types.
+
+
+
See also
GLSL determinant man page
+
+GLSL 4.20.8 specification, section 8.6 Matrix Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL matType<T, P> glm::inverse (matType< T, P > const & m)
+
+ +

Return the inverse of a squared matrix.

+
Template Parameters
+ + +
valTypeFloating-point scalar types.
+
+
+
See also
GLSL inverse man page
+
+GLSL 4.20.8 specification, section 8.6 Matrix Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL matType<T, P> glm::matrixCompMult (matType< T, P > const & x,
matType< T, P > const & y 
)
+
+ +

Multiply matrix x by matrix y component-wise, i.e., result[i][j] is the scalar product of x[i][j] and y[i][j].

+
Template Parameters
+ + +
matTypeFloating-point matrix types.
+
+
+
See also
GLSL matrixCompMult man page
+
+GLSL 4.20.8 specification, section 8.6 Matrix Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL detail::outerProduct_trait<T, P, vecTypeA, vecTypeB>::type glm::outerProduct (vecTypeA< T, P > const & c,
vecTypeB< T, P > const & r 
)
+
+ +

Treats the first parameter c as a column vector and the second parameter r as a row vector and does a linear algebraic matrix multiply c * r.

+
Template Parameters
+ + +
matTypeFloating-point matrix types.
+
+
+
See also
GLSL outerProduct man page
+
+GLSL 4.20.8 specification, section 8.6 Matrix Functions
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00156.html b/external/glm/doc/api/a00156.html new file mode 100644 index 0000000..638a04b --- /dev/null +++ b/external/glm/doc/api/a00156.html @@ -0,0 +1,181 @@ + + + + + + +0.9.7: Noise functions + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
Noise functions
+
+
+ + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType::value_type noise1 (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL tvec2< typename genType::value_type, defaultp > noise2 (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL tvec3< typename genType::value_type, defaultp > noise3 (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL tvec4< typename genType::value_type, defaultp > noise4 (genType const &x)
 
+

Detailed Description

+

Noise functions are stochastic functions that can be used to increase visual complexity.

+

Values returned by the following noise functions give the appearance of randomness, but are not truly random.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType::value_type glm::noise1 (genType const & x)
+
+ +

Returns a 1D noise value based on the input value x.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL noise1 man page
+
+GLSL 4.20.8 specification, section 8.13 Noise Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec2<typename genType::value_type, defaultp> glm::noise2 (genType const & x)
+
+ +

Returns a 2D noise value based on the input value x.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL noise2 man page
+
+GLSL 4.20.8 specification, section 8.13 Noise Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec3<typename genType::value_type, defaultp> glm::noise3 (genType const & x)
+
+ +

Returns a 3D noise value based on the input value x.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL noise3 man page
+
+GLSL 4.20.8 specification, section 8.13 Noise Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec4<typename genType::value_type, defaultp> glm::noise4 (genType const & x)
+
+ +

Returns a 4D noise value based on the input value x.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL noise4 man page
+
+GLSL 4.20.8 specification, section 8.13 Noise Functions
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00157.html b/external/glm/doc/api/a00157.html new file mode 100644 index 0000000..f433da4 --- /dev/null +++ b/external/glm/doc/api/a00157.html @@ -0,0 +1,364 @@ + + + + + + +0.9.7: Floating-Point Pack and Unpack Functions + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
Floating-Point Pack and Unpack Functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GLM_FUNC_DECL double packDouble2x32 (uvec2 const &v)
 
GLM_FUNC_DECL uint packHalf2x16 (vec2 const &v)
 
GLM_FUNC_DECL uint packSnorm2x16 (vec2 const &v)
 
GLM_FUNC_DECL uint packSnorm4x8 (vec4 const &v)
 
GLM_FUNC_DECL uint packUnorm2x16 (vec2 const &v)
 
GLM_FUNC_DECL uint packUnorm4x8 (vec4 const &v)
 
GLM_FUNC_DECL uvec2 unpackDouble2x32 (double v)
 
GLM_FUNC_DECL vec2 unpackHalf2x16 (uint v)
 
GLM_FUNC_DECL vec2 unpackSnorm2x16 (uint p)
 
GLM_FUNC_DECL vec4 unpackSnorm4x8 (uint p)
 
GLM_FUNC_DECL vec2 unpackUnorm2x16 (uint p)
 
GLM_FUNC_DECL vec4 unpackUnorm4x8 (uint p)
 
+

Detailed Description

+

These functions do not operate component-wise, rather as described in each case.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL double glm::packDouble2x32 (uvec2 const & v)
+
+ +

Returns a double-precision value obtained by packing the components of v into a 64-bit value.

+

If an IEEE 754 Inf or NaN is created, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit- level representation of v is preserved. The first vector component specifies the 32 least significant bits; the second component specifies the 32 most significant bits.

+
See also
GLSL packDouble2x32 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::packHalf2x16 (vec2 const & v)
+
+ +

Returns an unsigned integer obtained by converting the components of a two-component floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification, and then packing these two 16- bit integers into a 32-bit unsigned integer.

+

The first vector component specifies the 16 least-significant bits of the result; the second component specifies the 16 most-significant bits.

+
See also
GLSL packHalf2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::packSnorm2x16 (vec2 const & v)
+
+ +

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

+

Then, the results are packed into the returned 32-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packSnorm2x16: round(clamp(v, -1, +1) * 32767.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also
GLSL packSnorm2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::packSnorm4x8 (vec4 const & v)
+
+ +

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

+

Then, the results are packed into the returned 32-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packSnorm4x8: round(clamp(c, -1, +1) * 127.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also
GLSL packSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::packUnorm2x16 (vec2 const & v)
+
+ +

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

+

Then, the results are packed into the returned 32-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packUnorm2x16: round(clamp(c, 0, +1) * 65535.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also
GLSL packUnorm2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::packUnorm4x8 (vec4 const & v)
+
+ +

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

+

Then, the results are packed into the returned 32-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packUnorm4x8: round(clamp(c, 0, +1) * 255.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also
GLSL packUnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uvec2 glm::unpackDouble2x32 (double v)
+
+ +

Returns a two-component unsigned integer vector representation of v.

+

The bit-level representation of v is preserved. The first component of the vector contains the 32 least significant bits of the double; the second component consists the 32 most significant bits.

+
See also
GLSL unpackDouble2x32 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec2 glm::unpackHalf2x16 (uint v)
+
+ +

Returns a two-component floating-point vector with components obtained by unpacking a 32-bit unsigned integer into a pair of 16-bit values, interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification, and converting them to 32-bit floating-point values.

+

The first component of the vector is obtained from the 16 least-significant bits of v; the second component is obtained from the 16 most-significant bits of v.

+
See also
GLSL unpackHalf2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec2 glm::unpackSnorm2x16 (uint p)
+
+ +

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm2x16: clamp(f / 32767.0, -1, +1)

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLSL unpackSnorm2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec4 glm::unpackSnorm4x8 (uint p)
+
+ +

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm4x8: clamp(f / 127.0, -1, +1)

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLSL unpackSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec2 glm::unpackUnorm2x16 (uint p)
+
+ +

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm2x16: f / 65535.0

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLSL unpackUnorm2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec4 glm::unpackUnorm4x8 (uint p)
+
+ +

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm4x8: f / 255.0

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLSL unpackUnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00158.html b/external/glm/doc/api/a00158.html new file mode 100644 index 0000000..7869615 --- /dev/null +++ b/external/glm/doc/api/a00158.html @@ -0,0 +1,532 @@ + + + + + + +0.9.7: Angle and Trigonometry Functions + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
Angle and Trigonometry Functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > acos (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > acosh (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > asin (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > asinh (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > atan (vecType< T, P > const &y, vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > atan (vecType< T, P > const &y_over_x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > atanh (vecType< T, P > const &x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > cos (vecType< T, P > const &angle)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > cosh (vecType< T, P > const &angle)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > degrees (vecType< T, P > const &radians)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > radians (vecType< T, P > const &degrees)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > sin (vecType< T, P > const &angle)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > sinh (vecType< T, P > const &angle)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > tan (vecType< T, P > const &angle)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > tanh (vecType< T, P > const &angle)
 
+

Detailed Description

+

Function parameters specified as angle are assumed to be in units of radians.

+

In no case will any of these functions result in a divide by zero error. If the divisor of a ratio is 0, then results will be undefined.

+

These all operate component-wise. The description is per component.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::acos (vecType< T, P > const & x)
+
+ +

Arc cosine.

+

Returns an angle whose sine is x. The range of values returned by this function is [0, PI]. Results are undefined if |x| > 1.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL acos man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::acosh (vecType< T, P > const & x)
+
+ +

Arc hyperbolic cosine; returns the non-negative inverse of cosh.

+

Results are undefined if x < 1.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL acosh man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::asin (vecType< T, P > const & x)
+
+ +

Arc sine.

+

Returns an angle whose sine is x. The range of values returned by this function is [-PI/2, PI/2]. Results are undefined if |x| > 1.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL asin man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::asinh (vecType< T, P > const & x)
+
+ +

Arc hyperbolic sine; returns the inverse of sinh.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL asinh man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::atan (vecType< T, P > const & y,
vecType< T, P > const & x 
)
+
+ +

Arc tangent.

+

Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL atan man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +

Referenced by glm::atan2().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::atan (vecType< T, P > const & y_over_x)
+
+ +

Arc tangent.

+

Returns an angle whose tangent is y_over_x. The range of values returned by this function is [-PI/2, PI/2].

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL atan man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::atanh (vecType< T, P > const & x)
+
+ +

Arc hyperbolic tangent; returns the inverse of tanh.

+

Results are undefined if abs(x) >= 1.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL atanh man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::cos (vecType< T, P > const & angle)
+
+ +

The standard trigonometric cosine function.

+

The values returned by this function will range from [-1, 1].

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL cos man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::cosh (vecType< T, P > const & angle)
+
+ +

Returns the hyperbolic cosine function, (exp(x) + exp(-x)) / 2.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL cosh man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::degrees (vecType< T, P > const & radians)
+
+ +

Converts radians to degrees and returns the result.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL degrees man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::radians (vecType< T, P > const & degrees)
+
+ +

Converts degrees to radians and returns the result.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL radians man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::sin (vecType< T, P > const & angle)
+
+ +

The standard trigonometric sine function.

+

The values returned by this function will range from [-1, 1].

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL sin man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::sinh (vecType< T, P > const & angle)
+
+ +

Returns the hyperbolic sine function, (exp(x) - exp(-x)) / 2.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL sinh man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::tan (vecType< T, P > const & angle)
+
+ +

The standard trigonometric tangent function.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL tan man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::tanh (vecType< T, P > const & angle)
+
+ +

Returns the hyperbolic tangent function, sinh(angle) / cosh(angle)

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL tanh man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00159.html b/external/glm/doc/api/a00159.html new file mode 100644 index 0000000..d265ff0 --- /dev/null +++ b/external/glm/doc/api/a00159.html @@ -0,0 +1,393 @@ + + + + + + +0.9.7: Vector Relational Functions + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
Vector Relational Functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL bool all (vecType< bool, P > const &v)
 
template<precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL bool any (vecType< bool, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > equal (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > greaterThan (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > greaterThanEqual (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > lessThan (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > lessThanEqual (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > not_ (vecType< bool, P > const &v)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > notEqual (vecType< T, P > const &x, vecType< T, P > const &y)
 
+

Detailed Description

+

Relational and equality operators (<, <=, >, >=, ==, !=) are defined to operate on scalars and produce scalar Boolean results.

+

For vector results, use the following built-in functions.

+

In all cases, the sizes of all the input and return vectors for any particular call must match.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL bool glm::all (vecType< bool, P > const & v)
+
+ +

Returns true if all components of x are true.

+
Template Parameters
+ + +
vecTypeBoolean vector types.
+
+
+
See also
GLSL all man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL bool glm::any (vecType< bool, P > const & v)
+
+ +

Returns true if any component of x is true.

+
Template Parameters
+ + +
vecTypeBoolean vector types.
+
+
+
See also
GLSL any man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<bool, P> glm::equal (vecType< T, P > const & x,
vecType< T, P > const & y 
)
+
+ +

Returns the component-wise comparison of result x == y.

+
Template Parameters
+ + +
vecTypeFloating-point, integer or boolean vector types.
+
+
+
See also
GLSL equal man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<bool, P> glm::greaterThan (vecType< T, P > const & x,
vecType< T, P > const & y 
)
+
+ +

Returns the component-wise comparison of result x > y.

+
Template Parameters
+ + +
vecTypeFloating-point or integer vector types.
+
+
+
See also
GLSL greaterThan man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<bool, P> glm::greaterThanEqual (vecType< T, P > const & x,
vecType< T, P > const & y 
)
+
+ +

Returns the component-wise comparison of result x >= y.

+
Template Parameters
+ + +
vecTypeFloating-point or integer vector types.
+
+
+
See also
GLSL greaterThanEqual man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<bool, P> glm::lessThan (vecType< T, P > const & x,
vecType< T, P > const & y 
)
+
+ +

Returns the component-wise comparison result of x < y.

+
Template Parameters
+ + +
vecTypeFloating-point or integer vector types.
+
+
+
See also
GLSL lessThan man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<bool, P> glm::lessThanEqual (vecType< T, P > const & x,
vecType< T, P > const & y 
)
+
+ +

Returns the component-wise comparison of result x <= y.

+
Template Parameters
+ + +
vecTypeFloating-point or integer vector types.
+
+
+
See also
GLSL lessThanEqual man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<bool, P> glm::not_ (vecType< bool, P > const & v)
+
+ +

Returns the component-wise logical complement of x.

+

/!\ Because of language incompatibilities between C++ and GLSL, GLM defines the function not but not_ instead.

+
Template Parameters
+ + +
vecTypeBoolean vector types.
+
+
+
See also
GLSL not man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<bool, P> glm::notEqual (vecType< T, P > const & x,
vecType< T, P > const & y 
)
+
+ +

Returns the component-wise comparison of result x != y.

+
Template Parameters
+ + +
vecTypeFloating-point, integer or boolean vector types.
+
+
+
See also
GLSL notEqual man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00160.html b/external/glm/doc/api/a00160.html new file mode 100644 index 0000000..5928a18 --- /dev/null +++ b/external/glm/doc/api/a00160.html @@ -0,0 +1,99 @@ + + + + + + +0.9.7: GTC Extensions (Stable) + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GTC Extensions (Stable)
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Modules

 GLM_GTC_bitfield
 
 GLM_GTC_color_space
 
 GLM_GTC_constants
 
 GLM_GTC_epsilon
 
 GLM_GTC_integer
 
 GLM_GTC_matrix_access
 
 GLM_GTC_matrix_integer
 
 GLM_GTC_matrix_inverse
 
 GLM_GTC_matrix_transform
 
 GLM_GTC_noise
 
 GLM_GTC_packing
 
 GLM_GTC_quaternion
 
 GLM_GTC_random
 
 GLM_GTC_reciprocal
 
 GLM_GTC_round
 
 GLM_GTC_type_precision
 
 GLM_GTC_type_ptr
 
 GLM_GTC_ulp
 
 GLM_GTC_vec1
 
+

Detailed Description

+

Functions and types that the GLSL specification doesn't define, but useful to have for a C++ program.

+

GTC extensions aim to be stable.

+

Even if it's highly unrecommended, it's possible to include all the extensions at once by including <glm/ext.hpp>. Otherwise, each extension needs to be included a specific file.

+
+ + + + diff --git a/external/glm/doc/api/a00161.html b/external/glm/doc/api/a00161.html new file mode 100644 index 0000000..c123718 --- /dev/null +++ b/external/glm/doc/api/a00161.html @@ -0,0 +1,175 @@ + + + + + + +0.9.7: GTX Extensions (Experimental) + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GTX Extensions (Experimental)
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Modules

 GLM_GTX_associated_min_max
 
 GLM_GTX_bit
 
 GLM_GTX_closest_point
 
 GLM_GTX_color_space
 
 GLM_GTX_color_space_YCoCg
 
 GLM_GTX_common
 
 GLM_GTX_compatibility
 
 GLM_GTX_component_wise
 
 GLM_GTX_dual_quaternion
 
 GLM_GTX_euler_angles
 
 GLM_GTX_extend
 
 GLM_GTX_extented_min_max
 
 GLM_GTX_fast_exponential
 
 GLM_GTX_fast_square_root
 
 GLM_GTX_fast_trigonometry
 
 GLM_GTX_gradient_paint
 
 GLM_GTX_handed_coordinate_space
 
 GLM_GTX_hash
 
 GLM_GTX_integer
 
 GLM_GTX_intersect
 
 GLM_GTX_io
 
 GLM_GTX_log_base
 
 GLM_GTX_matrix_cross_product
 
 GLM_GTX_matrix_decompose
 
 GLM_GTX_matrix_interpolation
 
 GLM_GTX_matrix_major_storage
 
 GLM_GTX_matrix_operation
 
 GLM_GTX_matrix_query
 
 GLM_GTX_matrix_transform_2d
 
 GLM_GTX_mixed_producte
 
 GLM_GTX_norm
 
 GLM_GTX_normal
 
 GLM_GTX_normalize_dot
 
 GLM_GTX_number_precision
 
 GLM_GTX_optimum_pow
 
 GLM_GTX_orthonormalize
 
 GLM_GTX_perpendicular
 
 GLM_GTX_polar_coordinates
 
 GLM_GTX_projection
 
 GLM_GTX_quaternion
 
 GLM_GTX_range
 
 GLM_GTX_raw_data
 
 GLM_GTX_rotate_normalized_axis
 
 GLM_GTX_rotate_vector
 
 GLM_GTX_scalar_relational
 
 GLM_GTX_simd_mat4
 
 GLM_GTX_simd_quat
 
 GLM_GTX_simd_vec4
 
 GLM_GTX_spline
 
 GLM_GTX_std_based_type
 
 GLM_GTX_string_cast
 
 GLM_GTX_transform
 
 GLM_GTX_transform2
 
 GLM_GTX_type_aligned
 
 GLM_GTX_vector_angle
 
 GLM_GTX_vector_query
 
 GLM_GTX_wrap
 
+

Detailed Description

+

Functions and types that the GLSL specification doesn't define, but useful to have for a C++ program.

+

Experimental extensions are useful functions and types, but the development of their API and functionality is not necessarily stable. They can change substantially between versions. Backwards compatibility is not much of an issue for them.

+

Even if it's highly unrecommended, it's possible to include all the extensions at once by including <glm/ext.hpp>. Otherwise, each extension needs to be included a specific file.

+
+ + + + diff --git a/external/glm/doc/api/a00162.html b/external/glm/doc/api/a00162.html new file mode 100644 index 0000000..40b6991 --- /dev/null +++ b/external/glm/doc/api/a00162.html @@ -0,0 +1,86 @@ + + + + + + +0.9.7: GLM Core + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM Core
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Modules

 Common functions
 
 Exponential functions
 
 Geometric functions
 
 Integer functions
 
 Matrix functions
 
 Noise functions
 
 Floating-Point Pack and Unpack Functions
 
 Angle and Trigonometry Functions
 
 Vector Relational Functions
 
 Types
 
 Precision types
 
 Template types
 
+

Detailed Description

+

The core of GLM, which implements exactly and only the GLSL specification to the degree possible.

+

The GLM core consists of C++ types that mirror GLSL types and C++ functions that mirror the GLSL functions. It also includes a set of precision-based types that can be used in the appropriate functions. The C++ types are all based on a basic set of template types.

+

The best documentation for GLM Core is the current GLSL specification, version 4.2 (pdf file).

+

GLM core functionnalities require <glm/glm.hpp> to be included to be used.

+
+ + + + diff --git a/external/glm/doc/api/a00163.html b/external/glm/doc/api/a00163.html new file mode 100644 index 0000000..9927b22 --- /dev/null +++ b/external/glm/doc/api/a00163.html @@ -0,0 +1,808 @@ + + + + + + +0.9.7: Types + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
+
+
+ + + + +

+Modules

 Precision types
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef highp_bvec2 bvec2
 
typedef highp_bvec3 bvec3
 
typedef highp_bvec4 bvec4
 
typedef highp_dmat2x2 dmat2
 
typedef highp_dmat2x2 dmat2x2
 
typedef highp_dmat2x3 dmat2x3
 
typedef highp_dmat2x4 dmat2x4
 
typedef highp_dmat3x3 dmat3
 
typedef highp_dmat3x2 dmat3x2
 
typedef highp_dmat3x3 dmat3x3
 
typedef highp_dmat3x4 dmat3x4
 
typedef highp_dmat4x4 dmat4
 
typedef highp_dmat4x2 dmat4x2
 
typedef highp_dmat4x3 dmat4x3
 
typedef highp_dmat4x4 dmat4x4
 
typedef highp_dvec2 dvec2
 
typedef highp_dvec3 dvec3
 
typedef highp_dvec4 dvec4
 
typedef highp_ivec2 ivec2
 
typedef highp_ivec3 ivec3
 
typedef highp_ivec4 ivec4
 
typedef mat2x2 mat2
 
typedef highp_mat2x2 mat2x2
 
typedef highp_mat2x3 mat2x3
 
typedef highp_mat2x4 mat2x4
 
typedef mat3x3 mat3
 
typedef highp_mat3x2 mat3x2
 
typedef highp_mat3x3 mat3x3
 
typedef highp_mat3x4 mat3x4
 
typedef mat4x4 mat4
 
typedef highp_mat4x2 mat4x2
 
typedef highp_mat4x3 mat4x3
 
typedef highp_mat4x4 mat4x4
 
typedef highp_uvec2 uvec2
 
typedef highp_uvec3 uvec3
 
typedef highp_uvec4 uvec4
 
typedef highp_vec2 vec2
 
typedef highp_vec3 vec3
 
typedef highp_vec4 vec4
 
+

Detailed Description

+

The standard types defined by the specification.

+

These types are all typedefs of more generalized, template types. To see the definiton of these template types, go to Template types.

+

Typedef Documentation

+ +
+
+ + + + +
typedef highp_bvec2 bvec2
+
+ +

2 components vector of boolean.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 498 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_bvec3 bvec3
+
+ +

3 components vector of boolean.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 503 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_bvec4 bvec4
+
+ +

4 components vector of boolean.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 508 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_dmat2x2 dmat2
+
+ +

2 * 2 matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 733 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_dmat2x2 dmat2x2
+
+ +

2 * 2 matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 748 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_dmat2x3 dmat2x3
+
+ +

2 * 3 matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 753 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_dmat2x4 dmat2x4
+
+ +

2 * 4 matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 758 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_dmat3x3 dmat3
+
+ +

3 * 3 matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 738 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_dmat3x2 dmat3x2
+
+ +

3 * 2 matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 763 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_dmat3x3 dmat3x3
+
+ +

3 * 3 matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 768 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_dmat3x4 dmat3x4
+
+ +

3 * 4 matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 773 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_dmat4x4 dmat4
+
+ +

4 * 4 matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 743 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_dmat4x2 dmat4x2
+
+ +

4 * 2 matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 778 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_dmat4x3 dmat4x3
+
+ +

4 * 3 matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 783 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_dmat4x4 dmat4x4
+
+ +

4 * 4 matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 788 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_dvec2 dvec2
+
+ +

2 components vector of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 417 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_dvec3 dvec3
+
+ +

3 components vector of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 422 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_dvec4 dvec4
+
+ +

4 components vector of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 427 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_ivec2 ivec2
+
+ +

2 components vector of signed integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 444 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_ivec3 ivec3
+
+ +

3 components vector of signed integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 449 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_ivec4 ivec4
+
+ +

4 components vector of signed integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 454 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef mat2x2 mat2
+
+ +

2 columns of 2 components matrix of floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 432 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_mat2x2 mat2x2
+
+ +

2 columns of 2 components matrix of floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 385 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_mat2x3 mat2x3
+
+ +

2 columns of 3 components matrix of floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 390 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_mat2x4 mat2x4
+
+ +

2 columns of 4 components matrix of floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 395 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef mat3x3 mat3
+
+ +

3 columns of 3 components matrix of floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 437 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_mat3x2 mat3x2
+
+ +

3 columns of 2 components matrix of floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 400 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_mat3x3 mat3x3
+
+ +

3 columns of 3 components matrix of floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 405 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_mat3x4 mat3x4
+
+ +

3 columns of 4 components matrix of floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 410 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef mat4x4 mat4
+
+ +

4 columns of 4 components matrix of floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 442 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_mat4x2 mat4x2
+
+ +

4 columns of 2 components matrix of floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 415 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_mat4x3 mat4x3
+
+ +

4 columns of 3 components matrix of floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 420 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_mat4x4 mat4x4
+
+ +

4 columns of 4 components matrix of floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 425 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_uvec2 uvec2
+
+ +

2 components vector of unsigned integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 471 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_uvec3 uvec3
+
+ +

3 components vector of unsigned integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 476 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_uvec4 uvec4
+
+ +

4 components vector of unsigned integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 481 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_vec2 vec2
+
+ +

2 components vector of floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 390 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_vec3 vec3
+
+ +

3 components vector of floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 395 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_vec4 vec4
+
+ +

4 components vector of floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 400 of file type_vec.hpp.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00164.html b/external/glm/doc/api/a00164.html new file mode 100644 index 0000000..46fc136 --- /dev/null +++ b/external/glm/doc/api/a00164.html @@ -0,0 +1,2827 @@ + + + + + + +0.9.7: Precision types + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
Precision types
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef tvec2< bool, highp > highp_bvec2
 
typedef tvec3< bool, highp > highp_bvec3
 
typedef tvec4< bool, highp > highp_bvec4
 
typedef tmat2x2< double, highp > highp_dmat2
 
typedef tmat2x2< double, highp > highp_dmat2x2
 
typedef tmat2x3< double, highp > highp_dmat2x3
 
typedef tmat2x4< double, highp > highp_dmat2x4
 
typedef tmat3x3< double, highp > highp_dmat3
 
typedef tmat3x2< double, highp > highp_dmat3x2
 
typedef tmat3x3< double, highp > highp_dmat3x3
 
typedef tmat3x4< double, highp > highp_dmat3x4
 
typedef tmat4x4< double, highp > highp_dmat4
 
typedef tmat4x2< double, highp > highp_dmat4x2
 
typedef tmat4x3< double, highp > highp_dmat4x3
 
typedef tmat4x4< double, highp > highp_dmat4x4
 
typedef tvec2< double, highp > highp_dvec2
 
typedef tvec3< double, highp > highp_dvec3
 
typedef tvec4< double, highp > highp_dvec4
 
typedef highp_float_t highp_float
 
typedef detail::highp_int_t highp_int
 
typedef tvec2< int, highp > highp_ivec2
 
typedef tvec3< int, highp > highp_ivec3
 
typedef tvec4< int, highp > highp_ivec4
 
typedef tmat2x2< float, highp > highp_mat2
 
typedef tmat2x2< float, highp > highp_mat2x2
 
typedef tmat2x3< float, highp > highp_mat2x3
 
typedef tmat2x4< float, highp > highp_mat2x4
 
typedef tmat3x3< float, highp > highp_mat3
 
typedef tmat3x2< float, highp > highp_mat3x2
 
typedef tmat3x3< float, highp > highp_mat3x3
 
typedef tmat3x4< float, highp > highp_mat3x4
 
typedef tmat4x4< float, highp > highp_mat4
 
typedef tmat4x2< float, highp > highp_mat4x2
 
typedef tmat4x3< float, highp > highp_mat4x3
 
typedef tmat4x4< float, highp > highp_mat4x4
 
typedef detail::highp_uint_t highp_uint
 
typedef tvec2< uint, highp > highp_uvec2
 
typedef tvec3< uint, highp > highp_uvec3
 
typedef tvec4< uint, highp > highp_uvec4
 
typedef tvec2< float, highp > highp_vec2
 
typedef tvec3< float, highp > highp_vec3
 
typedef tvec4< float, highp > highp_vec4
 
typedef tvec2< bool, lowp > lowp_bvec2
 
typedef tvec3< bool, lowp > lowp_bvec3
 
typedef tvec4< bool, lowp > lowp_bvec4
 
typedef tmat2x2< double, lowp > lowp_dmat2
 
typedef tmat2x2< double, lowp > lowp_dmat2x2
 
typedef tmat2x3< double, lowp > lowp_dmat2x3
 
typedef tmat2x4< double, lowp > lowp_dmat2x4
 
typedef tmat3x3< float, lowp > lowp_dmat3
 
typedef tmat3x2< double, lowp > lowp_dmat3x2
 
typedef tmat3x3< double, lowp > lowp_dmat3x3
 
typedef tmat3x4< double, lowp > lowp_dmat3x4
 
typedef tmat4x4< double, lowp > lowp_dmat4
 
typedef tmat4x2< double, lowp > lowp_dmat4x2
 
typedef tmat4x3< double, lowp > lowp_dmat4x3
 
typedef tmat4x4< double, lowp > lowp_dmat4x4
 
typedef tvec2< double, lowp > lowp_dvec2
 
typedef tvec3< double, lowp > lowp_dvec3
 
typedef tvec4< double, lowp > lowp_dvec4
 
typedef lowp_float_t lowp_float
 
typedef detail::lowp_int_t lowp_int
 
typedef tvec2< int, lowp > lowp_ivec2
 
typedef tvec3< int, lowp > lowp_ivec3
 
typedef tvec4< int, lowp > lowp_ivec4
 
typedef tmat2x2< float, lowp > lowp_mat2
 
typedef tmat2x2< float, lowp > lowp_mat2x2
 
typedef tmat2x3< float, lowp > lowp_mat2x3
 
typedef tmat2x4< float, lowp > lowp_mat2x4
 
typedef tmat3x3< float, lowp > lowp_mat3
 
typedef tmat3x2< float, lowp > lowp_mat3x2
 
typedef tmat3x3< float, lowp > lowp_mat3x3
 
typedef tmat3x4< float, lowp > lowp_mat3x4
 
typedef tmat4x4< float, lowp > lowp_mat4
 
typedef tmat4x2< float, lowp > lowp_mat4x2
 
typedef tmat4x3< float, lowp > lowp_mat4x3
 
typedef tmat4x4< float, lowp > lowp_mat4x4
 
typedef detail::lowp_uint_t lowp_uint
 
typedef tvec2< uint, lowp > lowp_uvec2
 
typedef tvec3< uint, lowp > lowp_uvec3
 
typedef tvec4< uint, lowp > lowp_uvec4
 
typedef tvec2< float, lowp > lowp_vec2
 
typedef tvec3< float, lowp > lowp_vec3
 
typedef tvec4< float, lowp > lowp_vec4
 
typedef tvec2< bool, mediump > mediump_bvec2
 
typedef tvec3< bool, mediump > mediump_bvec3
 
typedef tvec4< bool, mediump > mediump_bvec4
 
typedef tmat2x2< double, mediump > mediump_dmat2
 
typedef tmat2x2< double, mediump > mediump_dmat2x2
 
typedef tmat2x3< double, mediump > mediump_dmat2x3
 
typedef tmat2x4< double, mediump > mediump_dmat2x4
 
typedef tmat3x3< double, mediump > mediump_dmat3
 
typedef tmat3x2< double, mediump > mediump_dmat3x2
 
typedef tmat3x3< double, mediump > mediump_dmat3x3
 
typedef tmat3x4< double, mediump > mediump_dmat3x4
 
typedef tmat4x4< double, mediump > mediump_dmat4
 
typedef tmat4x2< double, mediump > mediump_dmat4x2
 
typedef tmat4x3< double, mediump > mediump_dmat4x3
 
typedef tmat4x4< double, mediump > mediump_dmat4x4
 
typedef tvec2< double, mediump > mediump_dvec2
 
typedef tvec3< double, mediump > mediump_dvec3
 
typedef tvec4< double, mediump > mediump_dvec4
 
typedef mediump_float_t mediump_float
 
typedef detail::mediump_int_t mediump_int
 
typedef tvec2< int, mediump > mediump_ivec2
 
typedef tvec3< int, mediump > mediump_ivec3
 
typedef tvec4< int, mediump > mediump_ivec4
 
typedef tmat2x2< float, mediump > mediump_mat2
 
typedef tmat2x2< float, mediump > mediump_mat2x2
 
typedef tmat2x3< float, mediump > mediump_mat2x3
 
typedef tmat2x4< float, mediump > mediump_mat2x4
 
typedef tmat3x3< float, mediump > mediump_mat3
 
typedef tmat3x2< float, mediump > mediump_mat3x2
 
typedef tmat3x3< float, mediump > mediump_mat3x3
 
typedef tmat3x4< float, mediump > mediump_mat3x4
 
typedef tmat4x4< float, mediump > mediump_mat4
 
typedef tmat4x2< float, mediump > mediump_mat4x2
 
typedef tmat4x3< float, mediump > mediump_mat4x3
 
typedef tmat4x4< float, mediump > mediump_mat4x4
 
typedef detail::mediump_uint_t mediump_uint
 
typedef tvec2< uint, mediump > mediump_uvec2
 
typedef tvec3< uint, mediump > mediump_uvec3
 
typedef tvec4< uint, mediump > mediump_uvec4
 
typedef tvec2< float, mediump > mediump_vec2
 
typedef tvec3< float, mediump > mediump_vec3
 
typedef tvec4< float, mediump > mediump_vec4
 
typedef unsigned int uint
 
+

Detailed Description

+

Non-GLSL types that are used to define precision-based types.

+

The GLSL language allows the user to define the precision of a particular variable. In OpenGL's GLSL, these precision qualifiers have no effect; they are there for compatibility with OpenGL ES's precision qualifiers, where they do have an effect.

+

C++ has no language equivalent to precision qualifiers. So GLM provides the next-best thing: a number of typedefs of the Template types that use a particular precision.

+

None of these types make any guarantees about the actual precision used.

+

Typedef Documentation

+ +
+
+ + + + +
typedef tvec2<bool, highp> highp_bvec2
+
+ +

2 components vector of high precision bool numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 153 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3<bool, highp> highp_bvec3
+
+ +

3 components vector of high precision bool numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 262 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4<bool, highp> highp_bvec4
+
+ +

4 components vector of high precision bool numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 357 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2<double, highp> highp_dmat2
+
+ +

2 columns of 2 components matrix of high precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 466 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2<double, highp> highp_dmat2x2
+
+ +

2 columns of 2 components matrix of high precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 484 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x3<double, highp> highp_dmat2x3
+
+ +

2 columns of 3 components matrix of high precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 507 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x4<double, highp> highp_dmat2x4
+
+ +

2 columns of 4 components matrix of high precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 530 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<double, highp> highp_dmat3
+
+ +

3 columns of 3 components matrix of high precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 576 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x2<double, highp> highp_dmat3x2
+
+ +

3 columns of 2 components matrix of high precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 553 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<double, highp> highp_dmat3x3
+
+ +

3 columns of 3 components matrix of high precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 594 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x4<double, highp> highp_dmat3x4
+
+ +

3 columns of 4 components matrix of high precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 617 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<double, highp> highp_dmat4
+
+ +

4 columns of 4 components matrix of high precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 686 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x2<double, highp> highp_dmat4x2
+
+ +

4 columns of 2 components matrix of high precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 640 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x3<double, highp> highp_dmat4x3
+
+ +

4 columns of 3 components matrix of high precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 663 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<double, highp> highp_dmat4x4
+
+ +

4 columns of 4 components matrix of high precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 704 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2<double, highp> highp_dvec2
+
+ +

2 components vector of high double-precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 90 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3<double, highp> highp_dvec3
+
+ +

3 components vector of high double-precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 200 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4<double, highp> highp_dvec4
+
+ +

4 components vector of high double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 303 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_float_t highp_float
+
+ +

High precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.4 Floats
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 70 of file type_float.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::highp_int_t highp_int
+
+ +

High precision signed integer.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.3 Integers
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 258 of file type_int.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2<int, highp> highp_ivec2
+
+ +

2 components vector of high precision signed integer numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 111 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3<int, highp> highp_ivec3
+
+ +

3 components vector of high precision signed integer numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 221 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4<int, highp> highp_ivec4
+
+ +

4 components vector of high precision signed integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 321 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2< float, highp > highp_mat2
+
+ +

2 columns of 2 components matrix of high precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 79 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2< float, highp > highp_mat2x2
+
+ +

2 columns of 2 components matrix of high precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 100 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x3< float, highp > highp_mat2x3
+
+ +

2 columns of 3 components matrix of high precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 126 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x4< float, highp > highp_mat2x4
+
+ +

2 columns of 4 components matrix of high precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 152 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3< float, highp > highp_mat3
+
+ +

3 columns of 3 components matrix of high precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 204 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x2< float, highp > highp_mat3x2
+
+ +

3 columns of 2 components matrix of high precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 178 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3< float, highp > highp_mat3x3
+
+ +

3 columns of 3 components matrix of high precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 225 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x4< float, highp > highp_mat3x4
+
+ +

3 columns of 4 components matrix of high precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 251 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4< float, highp > highp_mat4
+
+ +

4 columns of 4 components matrix of high precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 330 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x2< float, highp > highp_mat4x2
+
+ +

4 columns of 2 components matrix of high precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 277 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x3< float, highp > highp_mat4x3
+
+ +

4 columns of 3 components matrix of high precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 303 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4< float, highp > highp_mat4x4
+
+ +

4 columns of 4 components matrix of high precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 351 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::highp_uint_t highp_uint
+
+ +

High precision unsigned integer.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.3 Integers
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 279 of file type_int.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2<uint, highp> highp_uvec2
+
+ +

2 components vector of high precision unsigned integer numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 132 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3<uint, highp> highp_uvec3
+
+ +

3 components vector of high precision unsigned integer numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 242 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4<uint, highp> highp_uvec4
+
+ +

4 components vector of high precision unsigned integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 339 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2< float, highp > highp_vec2
+
+ +

2 components vector of high single-precision floating-point numbers.

+

High Single-precision floating-point vector of 2 components.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+
+Precision types
+ +

Definition at line 69 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3< float, highp > highp_vec3
+
+ +

3 components vector of high single-precision floating-point numbers.

+

High Single-precision floating-point vector of 3 components.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+
+Precision types
+ +

Definition at line 179 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4< float, highp > highp_vec4
+
+ +

4 components vector of high single-precision floating-point numbers.

+

High Single-precision floating-point vector of 4 components.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+
+Precision types
+ +

Definition at line 285 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2<bool, lowp> lowp_bvec2
+
+ +

2 components vector of low precision bool numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 167 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3<bool, lowp> lowp_bvec3
+
+ +

3 components vector of low precision bool numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 274 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4<bool, lowp> lowp_bvec4
+
+ +

4 components vector of low precision bool numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 369 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2<double, lowp> lowp_dmat2
+
+ +

2 columns of 2 components matrix of low precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 454 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2<double, lowp> lowp_dmat2x2
+
+ +

2 columns of 2 components matrix of low precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 472 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x3<double, lowp> lowp_dmat2x3
+
+ +

2 columns of 3 components matrix of low precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 495 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x4<double, lowp> lowp_dmat2x4
+
+ +

2 columns of 4 components matrix of low precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 518 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<float, lowp> lowp_dmat3
+
+ +

3 columns of 3 components matrix of low precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 564 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x2<double, lowp> lowp_dmat3x2
+
+ +

3 columns of 2 components matrix of low precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 541 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<double, lowp> lowp_dmat3x3
+
+ +

3 columns of 3 components matrix of low precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 582 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x4<double, lowp> lowp_dmat3x4
+
+ +

3 columns of 4 components matrix of low precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 605 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<double, lowp> lowp_dmat4
+
+ +

4 columns of 4 components matrix of low precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 674 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x2<double, lowp> lowp_dmat4x2
+
+ +

4 columns of 2 components matrix of low precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 628 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x3<double, lowp> lowp_dmat4x3
+
+ +

4 columns of 3 components matrix of low precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 651 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<double, lowp> lowp_dmat4x4
+
+ +

4 columns of 4 components matrix of low precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 692 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2<double, lowp> lowp_dvec2
+
+ +

2 components vector of low double-precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 104 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3<double, lowp> lowp_dvec3
+
+ +

3 components vector of low double-precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 214 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4<double, lowp> lowp_dvec4
+
+ +

4 components vector of low double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 315 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef lowp_float_t lowp_float
+
+ +

Low precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.4 Floats
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 56 of file type_float.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::lowp_int_t lowp_int
+
+ +

Low precision signed integer.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.3 Integers
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 244 of file type_int.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2<int, lowp> lowp_ivec2
+
+ +

2 components vector of low precision signed integer numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 125 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3<int, lowp> lowp_ivec3
+
+ +

3 components vector of low precision signed integer numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 235 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4<int, lowp> lowp_ivec4
+
+ +

4 components vector of low precision signed integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 333 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2< float, lowp > lowp_mat2
+
+ +

2 columns of 2 components matrix of low precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 65 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2< float, lowp > lowp_mat2x2
+
+ +

2 columns of 2 components matrix of low precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 86 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x3< float, lowp > lowp_mat2x3
+
+ +

2 columns of 3 components matrix of low precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 112 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x4< float, lowp > lowp_mat2x4
+
+ +

2 columns of 4 components matrix of low precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 138 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3< float, lowp > lowp_mat3
+
+ +

3 columns of 3 components matrix of low precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 190 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x2< float, lowp > lowp_mat3x2
+
+ +

3 columns of 2 components matrix of low precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 164 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3< float, lowp > lowp_mat3x3
+
+ +

3 columns of 3 components matrix of low precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 211 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x4< float, lowp > lowp_mat3x4
+
+ +

3 columns of 4 components matrix of low precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 237 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4< float, lowp > lowp_mat4
+
+ +

4 columns of 4 components matrix of low precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 316 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x2< float, lowp > lowp_mat4x2
+
+ +

4 columns of 2 components matrix of low precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 263 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x3< float, lowp > lowp_mat4x3
+
+ +

4 columns of 3 components matrix of low precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 289 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4< float, lowp > lowp_mat4x4
+
+ +

4 columns of 4 components matrix of low precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 337 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::lowp_uint_t lowp_uint
+
+ +

Low precision unsigned integer.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.3 Integers
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 265 of file type_int.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2<uint, lowp> lowp_uvec2
+
+ +

2 components vector of low precision unsigned integer numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 146 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3<uint, lowp> lowp_uvec3
+
+ +

3 components vector of low precision unsigned integer numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 256 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4<uint, lowp> lowp_uvec4
+
+ +

4 components vector of low precision unsigned integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 351 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2< float, lowp > lowp_vec2
+
+ +

2 components vector of low single-precision floating-point numbers.

+

Low single-precision floating-point vector of 2 components.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+
+Precision types
+ +

Definition at line 83 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3< float, lowp > lowp_vec3
+
+ +

3 components vector of low single-precision floating-point numbers.

+

Low single-precision floating-point vector of 3 components.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+
+Precision types
+ +

Definition at line 193 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4< float, lowp > lowp_vec4
+
+ +

4 components vector of low single-precision floating-point numbers.

+

Low single-precision floating-point vector of 4 components.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+
+Precision types
+ +

Definition at line 297 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2<bool, mediump> mediump_bvec2
+
+ +

2 components vector of medium precision bool numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 160 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3<bool, mediump> mediump_bvec3
+
+ +

3 components vector of medium precision bool numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 268 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4<bool, mediump> mediump_bvec4
+
+ +

4 components vector of medium precision bool numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 363 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2<double, mediump> mediump_dmat2
+
+ +

2 columns of 2 components matrix of medium precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 460 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2<double, mediump> mediump_dmat2x2
+
+ +

2 columns of 2 components matrix of medium precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 478 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x3<double, mediump> mediump_dmat2x3
+
+ +

2 columns of 3 components matrix of medium precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 501 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x4<double, mediump> mediump_dmat2x4
+
+ +

2 columns of 4 components matrix of medium precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 524 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<double, mediump> mediump_dmat3
+
+ +

3 columns of 3 components matrix of medium precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 570 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x2<double, mediump> mediump_dmat3x2
+
+ +

3 columns of 2 components matrix of medium precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 547 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<double, mediump> mediump_dmat3x3
+
+ +

3 columns of 3 components matrix of medium precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 588 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x4<double, mediump> mediump_dmat3x4
+
+ +

3 columns of 4 components matrix of medium precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 611 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<double, mediump> mediump_dmat4
+
+ +

4 columns of 4 components matrix of medium precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 680 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x2<double, mediump> mediump_dmat4x2
+
+ +

4 columns of 2 components matrix of medium precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 634 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x3<double, mediump> mediump_dmat4x3
+
+ +

4 columns of 3 components matrix of medium precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 657 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<double, mediump> mediump_dmat4x4
+
+ +

4 columns of 4 components matrix of medium precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 698 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2<double, mediump> mediump_dvec2
+
+ +

2 components vector of medium double-precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 97 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3<double, mediump> mediump_dvec3
+
+ +

3 components vector of medium double-precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 207 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4<double, mediump> mediump_dvec4
+
+ +

4 components vector of medium double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 309 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_float_t mediump_float
+
+ +

Medium precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.4 Floats
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 63 of file type_float.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::mediump_int_t mediump_int
+
+ +

Medium precision signed integer.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.3 Integers
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 251 of file type_int.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2<int, mediump> mediump_ivec2
+
+ +

2 components vector of medium precision signed integer numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 118 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3<int, mediump> mediump_ivec3
+
+ +

3 components vector of medium precision signed integer numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 228 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4<int, mediump> mediump_ivec4
+
+ +

4 components vector of medium precision signed integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 327 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2< float, mediump > mediump_mat2
+
+ +

2 columns of 2 components matrix of medium precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 72 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2< float, mediump > mediump_mat2x2
+
+ +

2 columns of 2 components matrix of medium precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 93 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x3< float, mediump > mediump_mat2x3
+
+ +

2 columns of 3 components matrix of medium precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 119 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x4< float, mediump > mediump_mat2x4
+
+ +

2 columns of 4 components matrix of medium precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 145 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3< float, mediump > mediump_mat3
+
+ +

3 columns of 3 components matrix of medium precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 197 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x2< float, mediump > mediump_mat3x2
+
+ +

3 columns of 2 components matrix of medium precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 171 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3< float, mediump > mediump_mat3x3
+
+ +

3 columns of 3 components matrix of medium precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 218 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x4< float, mediump > mediump_mat3x4
+
+ +

3 columns of 4 components matrix of medium precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 244 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4< float, mediump > mediump_mat4
+
+ +

4 columns of 4 components matrix of medium precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 323 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x2< float, mediump > mediump_mat4x2
+
+ +

4 columns of 2 components matrix of medium precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 270 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x3< float, mediump > mediump_mat4x3
+
+ +

4 columns of 3 components matrix of medium precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 296 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4< float, mediump > mediump_mat4x4
+
+ +

4 columns of 4 components matrix of medium precision floating-point numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 344 of file type_mat.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::mediump_uint_t mediump_uint
+
+ +

Medium precision unsigned integer.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.3 Integers
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 272 of file type_int.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2<uint, mediump> mediump_uvec2
+
+ +

2 components vector of medium precision unsigned integer numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 139 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3<uint, mediump> mediump_uvec3
+
+ +

3 components vector of medium precision unsigned integer numbers.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 249 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4<uint, mediump> mediump_uvec4
+
+ +

4 components vector of medium precision unsigned integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 345 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2< float, mediump > mediump_vec2
+
+ +

2 components vector of medium single-precision floating-point numbers.

+

Medium Single-precision floating-point vector of 2 components.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+
+Precision types
+ +

Definition at line 76 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3< float, mediump > mediump_vec3
+
+ +

3 components vector of medium single-precision floating-point numbers.

+

Medium Single-precision floating-point vector of 3 components.

+

There is no guarantee on the actual precision.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+
+Precision types
+ +

Definition at line 186 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4< float, mediump > mediump_vec4
+
+ +

4 components vector of medium single-precision floating-point numbers.

+

Medium Single-precision floating-point vector of 4 components.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+
+Precision types
+ +

Definition at line 291 of file type_vec.hpp.

+ +
+
+ +
+
+ + + + +
typedef unsigned int uint
+
+ +

Unsigned integer type.

+
See also
GLSL 4.20.8 specification, section 4.1.3 Integers
+ +

Definition at line 308 of file type_int.hpp.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00165.html b/external/glm/doc/api/a00165.html new file mode 100644 index 0000000..923fb4c --- /dev/null +++ b/external/glm/doc/api/a00165.html @@ -0,0 +1,53 @@ + + + + + + +0.9.7: Template types + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+
+
Template types
+
+
+

The generic template types used as the basis for the core types.

+

These types are all templates used to define the actual Types. These templetes are implementation details of GLM types and should not be used explicitly.

+
+ + + + diff --git a/external/glm/doc/api/a00166.html b/external/glm/doc/api/a00166.html new file mode 100644 index 0000000..9b847ec --- /dev/null +++ b/external/glm/doc/api/a00166.html @@ -0,0 +1,985 @@ + + + + + + +0.9.7: GLM_GTC_bitfield + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTC_bitfield
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldFillOne (genIUType Value, int FirstBit, int BitCount)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > bitfieldFillOne (vecType< T, P > const &Value, int FirstBit, int BitCount)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldFillZero (genIUType Value, int FirstBit, int BitCount)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > bitfieldFillZero (vecType< T, P > const &Value, int FirstBit, int BitCount)
 
GLM_FUNC_DECL int16 bitfieldInterleave (int8 x, int8 y)
 
GLM_FUNC_DECL uint16 bitfieldInterleave (uint8 x, uint8 y)
 
GLM_FUNC_DECL int32 bitfieldInterleave (int16 x, int16 y)
 
GLM_FUNC_DECL uint32 bitfieldInterleave (uint16 x, uint16 y)
 
GLM_FUNC_DECL int64 bitfieldInterleave (int32 x, int32 y)
 
GLM_FUNC_DECL uint64 bitfieldInterleave (uint32 x, uint32 y)
 
GLM_FUNC_DECL int32 bitfieldInterleave (int8 x, int8 y, int8 z)
 
GLM_FUNC_DECL uint32 bitfieldInterleave (uint8 x, uint8 y, uint8 z)
 
GLM_FUNC_DECL int64 bitfieldInterleave (int16 x, int16 y, int16 z)
 
GLM_FUNC_DECL uint64 bitfieldInterleave (uint16 x, uint16 y, uint16 z)
 
GLM_FUNC_DECL int64 bitfieldInterleave (int32 x, int32 y, int32 z)
 
GLM_FUNC_DECL uint64 bitfieldInterleave (uint32 x, uint32 y, uint32 z)
 
GLM_FUNC_DECL int32 bitfieldInterleave (int8 x, int8 y, int8 z, int8 w)
 
GLM_FUNC_DECL uint32 bitfieldInterleave (uint8 x, uint8 y, uint8 z, uint8 w)
 
GLM_FUNC_DECL int64 bitfieldInterleave (int16 x, int16 y, int16 z, int16 w)
 
GLM_FUNC_DECL uint64 bitfieldInterleave (uint16 x, uint16 y, uint16 z, uint16 w)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldRotateLeft (genIUType In, int Shift)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > bitfieldRotateLeft (vecType< T, P > const &In, int Shift)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldRotateRight (genIUType In, int Shift)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > bitfieldRotateRight (vecType< T, P > const &In, int Shift)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType mask (genIUType Bits)
 
template<typename T , precision P, template< typename, precision > class vecIUType>
GLM_FUNC_DECL vecIUType< T, P > mask (vecIUType< T, P > const &v)
 
+

Detailed Description

+

Allow to perform bit operations on integer values.

+

<glm/gtc/bitfield.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genIUType glm::bitfieldFillOne (genIUType Value,
int FirstBit,
int BitCount 
)
+
+ +

Set to 1 a range of bits.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::bitfieldFillOne (vecType< T, P > const & Value,
int FirstBit,
int BitCount 
)
+
+ +

Set to 1 a range of bits.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genIUType glm::bitfieldFillZero (genIUType Value,
int FirstBit,
int BitCount 
)
+
+ +

Set to 0 a range of bits.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::bitfieldFillZero (vecType< T, P > const & Value,
int FirstBit,
int BitCount 
)
+
+ +

Set to 0 a range of bits.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int16 glm::bitfieldInterleave (int8 x,
int8 y 
)
+
+ +

Interleaves the bits of x and y.

+

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint16 glm::bitfieldInterleave (uint8 x,
uint8 y 
)
+
+ +

Interleaves the bits of x and y.

+

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int32 glm::bitfieldInterleave (int16 x,
int16 y 
)
+
+ +

Interleaves the bits of x and y.

+

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint32 glm::bitfieldInterleave (uint16 x,
uint16 y 
)
+
+ +

Interleaves the bits of x and y.

+

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int64 glm::bitfieldInterleave (int32 x,
int32 y 
)
+
+ +

Interleaves the bits of x and y.

+

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint64 glm::bitfieldInterleave (uint32 x,
uint32 y 
)
+
+ +

Interleaves the bits of x and y.

+

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int32 glm::bitfieldInterleave (int8 x,
int8 y,
int8 z 
)
+
+ +

Interleaves the bits of x, y and z.

+

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint32 glm::bitfieldInterleave (uint8 x,
uint8 y,
uint8 z 
)
+
+ +

Interleaves the bits of x, y and z.

+

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int64 glm::bitfieldInterleave (int16 x,
int16 y,
int16 z 
)
+
+ +

Interleaves the bits of x, y and z.

+

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint64 glm::bitfieldInterleave (uint16 x,
uint16 y,
uint16 z 
)
+
+ +

Interleaves the bits of x, y and z.

+

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int64 glm::bitfieldInterleave (int32 x,
int32 y,
int32 z 
)
+
+ +

Interleaves the bits of x, y and z.

+

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint64 glm::bitfieldInterleave (uint32 x,
uint32 y,
uint32 z 
)
+
+ +

Interleaves the bits of x, y and z.

+

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int32 glm::bitfieldInterleave (int8 x,
int8 y,
int8 z,
int8 w 
)
+
+ +

Interleaves the bits of x, y, z and w.

+

The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint32 glm::bitfieldInterleave (uint8 x,
uint8 y,
uint8 z,
uint8 w 
)
+
+ +

Interleaves the bits of x, y, z and w.

+

The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int64 glm::bitfieldInterleave (int16 x,
int16 y,
int16 z,
int16 w 
)
+
+ +

Interleaves the bits of x, y, z and w.

+

The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint64 glm::bitfieldInterleave (uint16 x,
uint16 y,
uint16 z,
uint16 w 
)
+
+ +

Interleaves the bits of x, y, z and w.

+

The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genIUType glm::bitfieldRotateLeft (genIUType In,
int Shift 
)
+
+ +

Rotate all bits to the left.

+

All the bits dropped in the left side are inserted back on the right side.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::bitfieldRotateLeft (vecType< T, P > const & In,
int Shift 
)
+
+ +

Rotate all bits to the left.

+

All the bits dropped in the left side are inserted back on the right side.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genIUType glm::bitfieldRotateRight (genIUType In,
int Shift 
)
+
+ +

Rotate all bits to the right.

+

All the bits dropped in the right side are inserted back on the left side.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::bitfieldRotateRight (vecType< T, P > const & In,
int Shift 
)
+
+ +

Rotate all bits to the right.

+

All the bits dropped in the right side are inserted back on the left side.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genIUType glm::mask (genIUType Bits)
+
+ +

Build a mask of 'count' bits.

+
See also
GLM_GTC_bitfield
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecIUType<T, P> glm::mask (vecIUType< T, P > const & v)
+
+ +

Build a mask of 'count' bits.

+
See also
GLM_GTC_bitfield
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00167.html b/external/glm/doc/api/a00167.html new file mode 100644 index 0000000..56226c3 --- /dev/null +++ b/external/glm/doc/api/a00167.html @@ -0,0 +1,76 @@ + + + + + + +0.9.7: GLM_GTC_color_space + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTC_color_space
+
+
+ + + + + + + + + + + + + + +

+Functions

+template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > convertLinearToSRGB (vecType< T, P > const &ColorLinear)
 
+template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > convertLinearToSRGB (vecType< T, P > const &ColorLinear, T Gamma)
 
+template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > convertSRGBToLinear (vecType< T, P > const &ColorSRGB)
 
+template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > convertSRGBToLinear (vecType< T, P > const &ColorSRGB, T Gamma)
 
+

Detailed Description

+

Allow to perform bit operations on integer values.

+

<glm/gtc/color.hpp> need to be included to use these functionalities.

+
+ + + + diff --git a/external/glm/doc/api/a00168.html b/external/glm/doc/api/a00168.html new file mode 100644 index 0000000..ddf1366 --- /dev/null +++ b/external/glm/doc/api/a00168.html @@ -0,0 +1,670 @@ + + + + + + +0.9.7: GLM_GTC_constants + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTC_constants
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType e ()
 
template<typename genType >
GLM_FUNC_DECL genType epsilon ()
 
template<typename genType >
GLM_FUNC_DECL genType euler ()
 
template<typename genType >
GLM_FUNC_DECL genType four_over_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType golden_ratio ()
 
template<typename genType >
GLM_FUNC_DECL genType half_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType ln_ln_two ()
 
template<typename genType >
GLM_FUNC_DECL genType ln_ten ()
 
template<typename genType >
GLM_FUNC_DECL genType ln_two ()
 
template<typename genType >
GLM_FUNC_DECL genType one ()
 
template<typename genType >
GLM_FUNC_DECL genType one_over_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType one_over_root_two ()
 
template<typename genType >
GLM_FUNC_DECL genType one_over_two_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType pi ()
 
template<typename genType >
GLM_FUNC_DECL genType quarter_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType root_five ()
 
template<typename genType >
GLM_FUNC_DECL genType root_half_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType root_ln_four ()
 
template<typename genType >
GLM_FUNC_DECL genType root_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType root_three ()
 
template<typename genType >
GLM_FUNC_DECL genType root_two ()
 
template<typename genType >
GLM_FUNC_DECL genType root_two_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType third ()
 
template<typename genType >
GLM_FUNC_DECL genType three_over_two_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType two_over_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType two_over_root_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType two_pi ()
 
template<typename genType >
GLM_FUNC_DECL genType two_thirds ()
 
template<typename genType >
GLM_FUNC_DECL genType zero ()
 
+

Detailed Description

+

Provide a list of constants and precomputed useful values.

+

<glm/gtc/constants.hpp> need to be included to use these features.

+

Function Documentation

+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::e ()
+
+ +

Return e constant.

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::epsilon ()
+
+ +

Return the epsilon constant for floating point types.

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::euler ()
+
+ +

Return Euler's constant.

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::four_over_pi ()
+
+ +

Return 4 / pi.

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::golden_ratio ()
+
+ +

Return the golden ratio constant.

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::half_pi ()
+
+ +

Return pi / 2.

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::ln_ln_two ()
+
+ +

Return ln(ln(2)).

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::ln_ten ()
+
+ +

Return ln(10).

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::ln_two ()
+
+ +

Return ln(2).

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::one ()
+
+ +

Return 1.

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::one_over_pi ()
+
+ +

Return 1 / pi.

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::one_over_root_two ()
+
+ +

Return 1 / sqrt(2).

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::one_over_two_pi ()
+
+ +

Return 1 / (pi * 2).

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::pi ()
+
+ +

Return the pi constant.

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::quarter_pi ()
+
+ +

Return pi / 4.

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::root_five ()
+
+ +

Return sqrt(5).

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::root_half_pi ()
+
+ +

Return sqrt(pi / 2).

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::root_ln_four ()
+
+ +

Return sqrt(ln(4)).

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::root_pi ()
+
+ +

Return square root of pi.

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::root_three ()
+
+ +

Return sqrt(3).

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::root_two ()
+
+ +

Return sqrt(2).

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::root_two_pi ()
+
+ +

Return sqrt(2 * pi).

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::third ()
+
+ +

Return 1 / 3.

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::three_over_two_pi ()
+
+ +

Return pi / 2 * 3.

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::two_over_pi ()
+
+ +

Return 2 / pi.

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::two_over_root_pi ()
+
+ +

Return 2 / sqrt(pi).

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::two_pi ()
+
+ +

Return pi * 2.

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::two_thirds ()
+
+ +

Return 2 / 3.

+
See also
GLM_GTC_constants
+ +
+
+ +
+
+ + + + + + + +
GLM_FUNC_DECL genType glm::zero ()
+
+ +

Return 0.

+
See also
GLM_GTC_constants
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00169.html b/external/glm/doc/api/a00169.html new file mode 100644 index 0000000..7a39e4a --- /dev/null +++ b/external/glm/doc/api/a00169.html @@ -0,0 +1,217 @@ + + + + + + +0.9.7: GLM_GTC_epsilon + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
+
+
+ + + + + + + + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > epsilonEqual (vecType< T, P > const &x, vecType< T, P > const &y, T const &epsilon)
 
template<typename genType >
GLM_FUNC_DECL bool epsilonEqual (genType const &x, genType const &y, genType const &epsilon)
 
template<typename genType >
GLM_FUNC_DECL genType::boolType epsilonNotEqual (genType const &x, genType const &y, typename genType::value_type const &epsilon)
 
template<typename genType >
GLM_FUNC_DECL bool epsilonNotEqual (genType const &x, genType const &y, genType const &epsilon)
 
+

Detailed Description

+

Comparison functions for a user defined epsilon values.

+

<glm/gtc/epsilon.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<bool, P> glm::epsilonEqual (vecType< T, P > const & x,
vecType< T, P > const & y,
T const & epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| < epsilon.

+

True if this expression is satisfied.

+
See also
GLM_GTC_epsilon
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::epsilonEqual (genType const & x,
genType const & y,
genType const & epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| < epsilon.

+

True if this expression is satisfied.

+
See also
GLM_GTC_epsilon
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType::boolType glm::epsilonNotEqual (genType const & x,
genType const & y,
typename genType::value_type const & epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| < epsilon.

+

True if this expression is not satisfied.

+
See also
GLM_GTC_epsilon
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::epsilonNotEqual (genType const & x,
genType const & y,
genType const & epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| >= epsilon.

+

True if this expression is not satisfied.

+
See also
GLM_GTC_epsilon
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00170.html b/external/glm/doc/api/a00170.html new file mode 100644 index 0000000..d24fc5e --- /dev/null +++ b/external/glm/doc/api/a00170.html @@ -0,0 +1,214 @@ + + + + + + +0.9.7: GLM_GTC_integer + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
+
+
+ + + + + + + + + + + + + + +

+Functions

template<typename genIUType >
GLM_FUNC_DECL genIUType log2 (genIUType x)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType mod (genIUType x, genIUType y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > mod (vecType< T, P > const &x, T y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > mod (vecType< T, P > const &x, vecType< T, P > const &y)
 
+

Detailed Description

+

Allow to perform bit operations on integer values.

+

<glm/gtc/integer.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genIUType glm::log2 (genIUType x)
+
+ +

Returns the log2 of x for integer values.

+

Can be reliably using to compute mipmap count from the texture size.

See also
GLM_GTC_integer
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genIUType glm::mod (genIUType x,
genIUType y 
)
+
+ +

Modulus.

+

Returns x % y for each component in x using the floating point value y.

+
Template Parameters
+ + +
genIUTypeInteger-point scalar or vector types.
+
+
+
See also
GLM_GTC_integer
+
+GLSL mod man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType< T, P > mod (vecType< T, P > const & x,
T y 
)
+
+ +

Modulus.

+

Returns x % y for each component in x using the floating point value y.

+
Template Parameters
+ + + +
TInteger scalar types.
vecTypevector types.
+
+
+
See also
GLM_GTC_integer
+
+GLSL mod man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType< T, P > mod (vecType< T, P > const & x,
vecType< T, P > const & y 
)
+
+ +

Modulus.

+

Returns x % y for each component in x using the floating point value y.

+
Template Parameters
+ + + +
TInteger scalar types.
vecTypevector types.
+
+
+
See also
GLM_GTC_integer
+
+GLSL mod man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00171.html b/external/glm/doc/api/a00171.html new file mode 100644 index 0000000..78433c8 --- /dev/null +++ b/external/glm/doc/api/a00171.html @@ -0,0 +1,201 @@ + + + + + + +0.9.7: GLM_GTC_matrix_access + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTC_matrix_access
+
+
+ + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType::col_type column (genType const &m, length_t index)
 
template<typename genType >
GLM_FUNC_DECL genType column (genType const &m, length_t index, typename genType::col_type const &x)
 
template<typename genType >
GLM_FUNC_DECL genType::row_type row (genType const &m, length_t index)
 
template<typename genType >
GLM_FUNC_DECL genType row (genType const &m, length_t index, typename genType::row_type const &x)
 
+

Detailed Description

+

Defines functions to access rows or columns of a matrix easily.

+

<glm/gtc/matrix_access.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType::col_type glm::column (genType const & m,
length_t index 
)
+
+ +

Get a specific column of a matrix.

+
See also
GLM_GTC_matrix_access
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::column (genType const & m,
length_t index,
typename genType::col_type const & x 
)
+
+ +

Set a specific column to a matrix.

+
See also
GLM_GTC_matrix_access
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType::row_type glm::row (genType const & m,
length_t index 
)
+
+ +

Get a specific row of a matrix.

+
See also
GLM_GTC_matrix_access
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::row (genType const & m,
length_t index,
typename genType::row_type const & x 
)
+
+ +

Set a specific row to a matrix.

+
See also
GLM_GTC_matrix_access
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00172.html b/external/glm/doc/api/a00172.html new file mode 100644 index 0000000..43816c7 --- /dev/null +++ b/external/glm/doc/api/a00172.html @@ -0,0 +1,1885 @@ + + + + + + +0.9.7: GLM_GTC_matrix_integer + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTC_matrix_integer
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef tmat2x2< int, highp > highp_imat2
 
typedef tmat2x2< int, highp > highp_imat2x2
 
typedef tmat2x3< int, highp > highp_imat2x3
 
typedef tmat2x4< int, highp > highp_imat2x4
 
typedef tmat3x3< int, highp > highp_imat3
 
typedef tmat3x2< int, highp > highp_imat3x2
 
typedef tmat3x3< int, highp > highp_imat3x3
 
typedef tmat3x4< int, highp > highp_imat3x4
 
typedef tmat4x4< int, highp > highp_imat4
 
typedef tmat4x2< int, highp > highp_imat4x2
 
typedef tmat4x3< int, highp > highp_imat4x3
 
typedef tmat4x4< int, highp > highp_imat4x4
 
typedef tmat2x2< uint, highp > highp_umat2
 
typedef tmat2x2< uint, highp > highp_umat2x2
 
typedef tmat2x3< uint, highp > highp_umat2x3
 
typedef tmat2x4< uint, highp > highp_umat2x4
 
typedef tmat3x3< uint, highp > highp_umat3
 
typedef tmat3x2< uint, highp > highp_umat3x2
 
typedef tmat3x3< uint, highp > highp_umat3x3
 
typedef tmat3x4< uint, highp > highp_umat3x4
 
typedef tmat4x4< uint, highp > highp_umat4
 
typedef tmat4x2< uint, highp > highp_umat4x2
 
typedef tmat4x3< uint, highp > highp_umat4x3
 
typedef tmat4x4< uint, highp > highp_umat4x4
 
typedef mediump_imat2 imat2
 
typedef mediump_imat2x2 imat2x2
 
typedef mediump_imat2x3 imat2x3
 
typedef mediump_imat2x4 imat2x4
 
typedef mediump_imat3 imat3
 
typedef mediump_imat3x2 imat3x2
 
typedef mediump_imat3x3 imat3x3
 
typedef mediump_imat3x4 imat3x4
 
typedef mediump_imat4 imat4
 
typedef mediump_imat4x2 imat4x2
 
typedef mediump_imat4x3 imat4x3
 
typedef mediump_imat4x4 imat4x4
 
typedef tmat2x2< int, lowp > lowp_imat2
 
typedef tmat2x2< int, lowp > lowp_imat2x2
 
typedef tmat2x3< int, lowp > lowp_imat2x3
 
typedef tmat2x4< int, lowp > lowp_imat2x4
 
typedef tmat3x3< int, lowp > lowp_imat3
 
typedef tmat3x2< int, lowp > lowp_imat3x2
 
typedef tmat3x3< int, lowp > lowp_imat3x3
 
typedef tmat3x4< int, lowp > lowp_imat3x4
 
typedef tmat4x4< int, lowp > lowp_imat4
 
typedef tmat4x2< int, lowp > lowp_imat4x2
 
typedef tmat4x3< int, lowp > lowp_imat4x3
 
typedef tmat4x4< int, lowp > lowp_imat4x4
 
typedef tmat2x2< uint, lowp > lowp_umat2
 
typedef tmat2x2< uint, lowp > lowp_umat2x2
 
typedef tmat2x3< uint, lowp > lowp_umat2x3
 
typedef tmat2x4< uint, lowp > lowp_umat2x4
 
typedef tmat3x3< uint, lowp > lowp_umat3
 
typedef tmat3x2< uint, lowp > lowp_umat3x2
 
typedef tmat3x3< uint, lowp > lowp_umat3x3
 
typedef tmat3x4< uint, lowp > lowp_umat3x4
 
typedef tmat4x4< uint, lowp > lowp_umat4
 
typedef tmat4x2< uint, lowp > lowp_umat4x2
 
typedef tmat4x3< uint, lowp > lowp_umat4x3
 
typedef tmat4x4< uint, lowp > lowp_umat4x4
 
typedef tmat2x2< int, mediump > mediump_imat2
 
typedef tmat2x2< int, mediump > mediump_imat2x2
 
typedef tmat2x3< int, mediump > mediump_imat2x3
 
typedef tmat2x4< int, mediump > mediump_imat2x4
 
typedef tmat3x3< int, mediump > mediump_imat3
 
typedef tmat3x2< int, mediump > mediump_imat3x2
 
typedef tmat3x3< int, mediump > mediump_imat3x3
 
typedef tmat3x4< int, mediump > mediump_imat3x4
 
typedef tmat4x4< int, mediump > mediump_imat4
 
typedef tmat4x2< int, mediump > mediump_imat4x2
 
typedef tmat4x3< int, mediump > mediump_imat4x3
 
typedef tmat4x4< int, mediump > mediump_imat4x4
 
typedef tmat2x2< uint, mediump > mediump_umat2
 
typedef tmat2x2< uint, mediump > mediump_umat2x2
 
typedef tmat2x3< uint, mediump > mediump_umat2x3
 
typedef tmat2x4< uint, mediump > mediump_umat2x4
 
typedef tmat3x3< uint, mediump > mediump_umat3
 
typedef tmat3x2< uint, mediump > mediump_umat3x2
 
typedef tmat3x3< uint, mediump > mediump_umat3x3
 
typedef tmat3x4< uint, mediump > mediump_umat3x4
 
typedef tmat4x4< uint, mediump > mediump_umat4
 
typedef tmat4x2< uint, mediump > mediump_umat4x2
 
typedef tmat4x3< uint, mediump > mediump_umat4x3
 
typedef tmat4x4< uint, mediump > mediump_umat4x4
 
typedef mediump_umat2 umat2
 
typedef mediump_umat2x2 umat2x2
 
typedef mediump_umat2x3 umat2x3
 
typedef mediump_umat2x4 umat2x4
 
typedef mediump_umat3 umat3
 
typedef mediump_umat3x2 umat3x2
 
typedef mediump_umat3x3 umat3x3
 
typedef mediump_umat3x4 umat3x4
 
typedef mediump_umat4 umat4
 
typedef mediump_umat4x2 umat4x2
 
typedef mediump_umat4x3 umat4x3
 
typedef mediump_umat4x4 umat4x4
 
+

Detailed Description

+

Defines a number of matrices with integer types.

+

<glm/gtc/matrix_integer.hpp> need to be included to use these functionalities.

+

Typedef Documentation

+ +
+
+ + + + +
typedef tmat2x2<int, highp> highp_imat2
+
+ +

High-precision signed integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 65 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2<int, highp> highp_imat2x2
+
+ +

High-precision signed integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 77 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x3<int, highp> highp_imat2x3
+
+ +

High-precision signed integer 2x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 81 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x4<int, highp> highp_imat2x4
+
+ +

High-precision signed integer 2x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 85 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<int, highp> highp_imat3
+
+ +

High-precision signed integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 69 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x2<int, highp> highp_imat3x2
+
+ +

High-precision signed integer 3x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 89 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<int, highp> highp_imat3x3
+
+ +

High-precision signed integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 93 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x4<int, highp> highp_imat3x4
+
+ +

High-precision signed integer 3x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 97 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<int, highp> highp_imat4
+
+ +

High-precision signed integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 73 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x2<int, highp> highp_imat4x2
+
+ +

High-precision signed integer 4x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 101 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x3<int, highp> highp_imat4x3
+
+ +

High-precision signed integer 4x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 105 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<int, highp> highp_imat4x4
+
+ +

High-precision signed integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 109 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2<uint, highp> highp_umat2
+
+ +

High-precision unsigned integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 214 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2<uint, highp> highp_umat2x2
+
+ +

High-precision unsigned integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 226 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x3<uint, highp> highp_umat2x3
+
+ +

High-precision unsigned integer 2x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 230 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x4<uint, highp> highp_umat2x4
+
+ +

High-precision unsigned integer 2x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 234 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<uint, highp> highp_umat3
+
+ +

High-precision unsigned integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 218 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x2<uint, highp> highp_umat3x2
+
+ +

High-precision unsigned integer 3x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 238 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<uint, highp> highp_umat3x3
+
+ +

High-precision unsigned integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 242 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x4<uint, highp> highp_umat3x4
+
+ +

High-precision unsigned integer 3x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 246 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<uint, highp> highp_umat4
+
+ +

High-precision unsigned integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 222 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x2<uint, highp> highp_umat4x2
+
+ +

High-precision unsigned integer 4x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 250 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x3<uint, highp> highp_umat4x3
+
+ +

High-precision unsigned integer 4x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 254 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<uint, highp> highp_umat4x4
+
+ +

High-precision unsigned integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 258 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_imat2 imat2
+
+ +

Signed integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 390 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_imat2x2 imat2x2
+
+ +

Signed integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 402 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_imat2x3 imat2x3
+
+ +

Signed integer 2x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 406 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_imat2x4 imat2x4
+
+ +

Signed integer 2x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 410 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_imat3 imat3
+
+ +

Signed integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 394 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_imat3x2 imat3x2
+
+ +

Signed integer 3x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 414 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_imat3x3 imat3x3
+
+ +

Signed integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 418 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_imat3x4 imat3x4
+
+ +

Signed integer 3x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 422 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_imat4 imat4
+
+ +

Signed integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 398 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_imat4x2 imat4x2
+
+ +

Signed integer 4x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 426 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_imat4x3 imat4x3
+
+ +

Signed integer 4x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 430 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_imat4x4 imat4x4
+
+ +

Signed integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 434 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2<int, lowp> lowp_imat2
+
+ +

Low-precision signed integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 164 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2<int, lowp> lowp_imat2x2
+
+ +

Low-precision signed integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 177 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x3<int, lowp> lowp_imat2x3
+
+ +

Low-precision signed integer 2x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 181 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x4<int, lowp> lowp_imat2x4
+
+ +

Low-precision signed integer 2x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 185 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<int, lowp> lowp_imat3
+
+ +

Low-precision signed integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 168 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x2<int, lowp> lowp_imat3x2
+
+ +

Low-precision signed integer 3x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 189 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<int, lowp> lowp_imat3x3
+
+ +

Low-precision signed integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 193 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x4<int, lowp> lowp_imat3x4
+
+ +

Low-precision signed integer 3x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 197 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<int, lowp> lowp_imat4
+
+ +

Low-precision signed integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 172 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x2<int, lowp> lowp_imat4x2
+
+ +

Low-precision signed integer 4x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 201 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x3<int, lowp> lowp_imat4x3
+
+ +

Low-precision signed integer 4x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 205 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<int, lowp> lowp_imat4x4
+
+ +

Low-precision signed integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 209 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2<uint, lowp> lowp_umat2
+
+ +

Low-precision unsigned integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 313 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2<uint, lowp> lowp_umat2x2
+
+ +

Low-precision unsigned integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 326 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x3<uint, lowp> lowp_umat2x3
+
+ +

Low-precision unsigned integer 2x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 330 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x4<uint, lowp> lowp_umat2x4
+
+ +

Low-precision unsigned integer 2x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 334 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<uint, lowp> lowp_umat3
+
+ +

Low-precision unsigned integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 317 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x2<uint, lowp> lowp_umat3x2
+
+ +

Low-precision unsigned integer 3x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 338 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<uint, lowp> lowp_umat3x3
+
+ +

Low-precision unsigned integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 342 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x4<uint, lowp> lowp_umat3x4
+
+ +

Low-precision unsigned integer 3x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 346 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<uint, lowp> lowp_umat4
+
+ +

Low-precision unsigned integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 321 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x2<uint, lowp> lowp_umat4x2
+
+ +

Low-precision unsigned integer 4x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 350 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x3<uint, lowp> lowp_umat4x3
+
+ +

Low-precision unsigned integer 4x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 354 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<uint, lowp> lowp_umat4x4
+
+ +

Low-precision unsigned integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 358 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2<int, mediump> mediump_imat2
+
+ +

Medium-precision signed integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 114 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2<int, mediump> mediump_imat2x2
+
+ +

Medium-precision signed integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 127 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x3<int, mediump> mediump_imat2x3
+
+ +

Medium-precision signed integer 2x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 131 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x4<int, mediump> mediump_imat2x4
+
+ +

Medium-precision signed integer 2x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 135 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<int, mediump> mediump_imat3
+
+ +

Medium-precision signed integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 118 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x2<int, mediump> mediump_imat3x2
+
+ +

Medium-precision signed integer 3x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 139 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<int, mediump> mediump_imat3x3
+
+ +

Medium-precision signed integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 143 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x4<int, mediump> mediump_imat3x4
+
+ +

Medium-precision signed integer 3x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 147 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<int, mediump> mediump_imat4
+
+ +

Medium-precision signed integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 122 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x2<int, mediump> mediump_imat4x2
+
+ +

Medium-precision signed integer 4x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 151 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x3<int, mediump> mediump_imat4x3
+
+ +

Medium-precision signed integer 4x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 155 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<int, mediump> mediump_imat4x4
+
+ +

Medium-precision signed integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 159 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2<uint, mediump> mediump_umat2
+
+ +

Medium-precision unsigned integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 263 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2<uint, mediump> mediump_umat2x2
+
+ +

Medium-precision unsigned integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 276 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x3<uint, mediump> mediump_umat2x3
+
+ +

Medium-precision unsigned integer 2x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 280 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x4<uint, mediump> mediump_umat2x4
+
+ +

Medium-precision unsigned integer 2x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 284 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<uint, mediump> mediump_umat3
+
+ +

Medium-precision unsigned integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 267 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x2<uint, mediump> mediump_umat3x2
+
+ +

Medium-precision unsigned integer 3x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 288 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3<uint, mediump> mediump_umat3x3
+
+ +

Medium-precision unsigned integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 292 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x4<uint, mediump> mediump_umat3x4
+
+ +

Medium-precision unsigned integer 3x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 296 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<uint, mediump> mediump_umat4
+
+ +

Medium-precision unsigned integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 271 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x2<uint, mediump> mediump_umat4x2
+
+ +

Medium-precision unsigned integer 4x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 300 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x3<uint, mediump> mediump_umat4x3
+
+ +

Medium-precision unsigned integer 4x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 304 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4<uint, mediump> mediump_umat4x4
+
+ +

Medium-precision unsigned integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 308 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_umat2 umat2
+
+ +

Unsigned integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 467 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_umat2x2 umat2x2
+
+ +

Unsigned integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 479 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_umat2x3 umat2x3
+
+ +

Unsigned integer 2x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 483 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_umat2x4 umat2x4
+
+ +

Unsigned integer 2x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 487 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_umat3 umat3
+
+ +

Unsigned integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 471 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_umat3x2 umat3x2
+
+ +

Unsigned integer 3x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 491 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_umat3x3 umat3x3
+
+ +

Unsigned integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 495 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_umat3x4 umat3x4
+
+ +

Unsigned integer 3x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 499 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_umat4 umat4
+
+ +

Unsigned integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 475 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_umat4x2 umat4x2
+
+ +

Unsigned integer 4x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 503 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_umat4x3 umat4x3
+
+ +

Unsigned integer 4x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 507 of file matrix_integer.hpp.

+ +
+
+ +
+
+ + + + +
typedef mediump_umat4x4 umat4x4
+
+ +

Unsigned integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 511 of file matrix_integer.hpp.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00173.html b/external/glm/doc/api/a00173.html new file mode 100644 index 0000000..04983e5 --- /dev/null +++ b/external/glm/doc/api/a00173.html @@ -0,0 +1,129 @@ + + + + + + +0.9.7: GLM_GTC_matrix_inverse + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTC_matrix_inverse
+
+
+ + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType affineInverse (genType const &m)
 
template<typename genType >
GLM_FUNC_DECL genType inverseTranspose (genType const &m)
 
+

Detailed Description

+

Defines additional matrix inverting functions.

+

<glm/gtc/matrix_inverse.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::affineInverse (genType const & m)
+
+ +

Fast matrix inverse for affine matrix.

+
Parameters
+ + +
mInput matrix to invert.
+
+
+
Template Parameters
+ + +
genTypeSquared floating-point matrix: half, float or double. Inverse of matrix based of half-precision floating point value is highly innacurate.
+
+
+
See also
GLM_GTC_matrix_inverse
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::inverseTranspose (genType const & m)
+
+ +

Compute the inverse transpose of a matrix.

+
Parameters
+ + +
mInput matrix to invert transpose.
+
+
+
Template Parameters
+ + +
genTypeSquared floating-point matrix: half, float or double. Inverse of matrix based of half-precision floating point value is highly innacurate.
+
+
+
See also
GLM_GTC_matrix_inverse
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00174.html b/external/glm/doc/api/a00174.html new file mode 100644 index 0000000..4aba0cc --- /dev/null +++ b/external/glm/doc/api/a00174.html @@ -0,0 +1,1290 @@ + + + + + + +0.9.7: GLM_GTC_matrix_transform + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTC_matrix_transform
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > frustum (T left, T right, T bottom, T top, T near, T far)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > infinitePerspective (T fovy, T aspect, T near)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > lookAt (tvec3< T, P > const &eye, tvec3< T, P > const &center, tvec3< T, P > const &up)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > lookAtLH (tvec3< T, P > const &eye, tvec3< T, P > const &center, tvec3< T, P > const &up)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > lookAtRH (tvec3< T, P > const &eye, tvec3< T, P > const &center, tvec3< T, P > const &up)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > ortho (T left, T right, T bottom, T top, T zNear, T zFar)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > ortho (T left, T right, T bottom, T top)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > perspective (T fovy, T aspect, T near, T far)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > perspectiveFov (T fov, T width, T height, T near, T far)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > perspectiveFovLH (T fov, T width, T height, T near, T far)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > perspectiveFovRH (T fov, T width, T height, T near, T far)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > perspectiveLH (T fovy, T aspect, T near, T far)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > perspectiveRH (T fovy, T aspect, T near, T far)
 
template<typename T , precision P, typename U >
GLM_FUNC_DECL tmat4x4< T, P > pickMatrix (tvec2< T, P > const &center, tvec2< T, P > const &delta, tvec4< U, P > const &viewport)
 
template<typename T , typename U , precision P>
GLM_FUNC_DECL tvec3< T, P > project (tvec3< T, P > const &obj, tmat4x4< T, P > const &model, tmat4x4< T, P > const &proj, tvec4< U, P > const &viewport)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > rotate (tmat4x4< T, P > const &m, T angle, tvec3< T, P > const &axis)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > scale (tmat4x4< T, P > const &m, tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > translate (tmat4x4< T, P > const &m, tvec3< T, P > const &v)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > tweakedInfinitePerspective (T fovy, T aspect, T near)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > tweakedInfinitePerspective (T fovy, T aspect, T near, T ep)
 
template<typename T , typename U , precision P>
GLM_FUNC_DECL tvec3< T, P > unProject (tvec3< T, P > const &win, tmat4x4< T, P > const &model, tmat4x4< T, P > const &proj, tvec4< U, P > const &viewport)
 
+

Detailed Description

+

Defines functions that generate common transformation matrices.

+

The matrices generated by this extension use standard OpenGL fixed-function conventions. For example, the lookAt function generates a transform from world space into the specific eye space that the projective matrix functions (perspective, ortho, etc) are designed to expect. The OpenGL compatibility specifications defines the particular layout of this eye space.

+

<glm/gtc/matrix_transform.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::frustum (T left,
T right,
T bottom,
T top,
T near,
T far 
)
+
+ +

Creates a frustum matrix.

+
Parameters
+ + + + + + + +
left
right
bottom
top
near
far
+
+
+
Template Parameters
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also
GLM_GTC_matrix_transform
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::infinitePerspective (T fovy,
T aspect,
T near 
)
+
+ +

Creates a matrix for a symmetric perspective-view frustum with far plane at infinite.

+
Parameters
+ + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also
GLM_GTC_matrix_transform
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::lookAt (tvec3< T, P > const & eye,
tvec3< T, P > const & center,
tvec3< T, P > const & up 
)
+
+ +

Build a look at view matrix based on the default handedness.

+
Parameters
+ + + + +
eyePosition of the camera
centerPosition where the camera is looking at
upNormalized up vector, how the camera is oriented. Typically (0, 0, 1)
+
+
+
See also
GLM_GTC_matrix_transform
+
+- frustum(T const & left, T const & right, T const & bottom, T const & top, T const & nearVal, T const & farVal) frustum(T const & left, T const & right, T const & bottom, T const & top, T const & nearVal, T const & farVal)
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::lookAtLH (tvec3< T, P > const & eye,
tvec3< T, P > const & center,
tvec3< T, P > const & up 
)
+
+ +

Build a left handed look at view matrix.

+
Parameters
+ + + + +
eyePosition of the camera
centerPosition where the camera is looking at
upNormalized up vector, how the camera is oriented. Typically (0, 0, 1)
+
+
+
See also
GLM_GTC_matrix_transform
+
+- frustum(T const & left, T const & right, T const & bottom, T const & top, T const & nearVal, T const & farVal) frustum(T const & left, T const & right, T const & bottom, T const & top, T const & nearVal, T const & farVal)
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::lookAtRH (tvec3< T, P > const & eye,
tvec3< T, P > const & center,
tvec3< T, P > const & up 
)
+
+ +

Build a right handed look at view matrix.

+
Parameters
+ + + + +
eyePosition of the camera
centerPosition where the camera is looking at
upNormalized up vector, how the camera is oriented. Typically (0, 0, 1)
+
+
+
See also
GLM_GTC_matrix_transform
+
+- frustum(T const & left, T const & right, T const & bottom, T const & top, T const & nearVal, T const & farVal) frustum(T const & left, T const & right, T const & bottom, T const & top, T const & nearVal, T const & farVal)
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::ortho (T left,
T right,
T bottom,
T top,
T zNear,
T zFar 
)
+
+ +

Creates a matrix for an orthographic parallel viewing volume.

+
Parameters
+ + + + + + + +
left
right
bottom
top
zNear
zFar
+
+
+
Template Parameters
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also
GLM_GTC_matrix_transform
+
+- glm::ortho(T const & left, T const & right, T const & bottom, T const & top)
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::ortho (T left,
T right,
T bottom,
T top 
)
+
+ +

Creates a matrix for projecting two-dimensional coordinates onto the screen.

+
Parameters
+ + + + + +
left
right
bottom
top
+
+
+
Template Parameters
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also
GLM_GTC_matrix_transform
+
+- glm::ortho(T const & left, T const & right, T const & bottom, T const & top, T const & zNear, T const & zFar)
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::perspective (T fovy,
T aspect,
T near,
T far 
)
+
+ +

Creates a matrix for a symetric perspective-view frustum based on the default handedness.

+
Parameters
+ + + + + +
fovySpecifies the field of view angle in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also
GLM_GTC_matrix_transform
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::perspectiveFov (T fov,
T width,
T height,
T near,
T far 
)
+
+ +

Builds a perspective projection matrix based on a field of view and the default handedness.

+
Parameters
+ + + + + + +
fovExpressed in radians.
width
height
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also
GLM_GTC_matrix_transform
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::perspectiveFovLH (T fov,
T width,
T height,
T near,
T far 
)
+
+ +

Builds a left handed perspective projection matrix based on a field of view.

+
Parameters
+ + + + + + +
fovExpressed in radians.
width
height
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also
GLM_GTC_matrix_transform
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::perspectiveFovRH (T fov,
T width,
T height,
T near,
T far 
)
+
+ +

Builds a right handed perspective projection matrix based on a field of view.

+
Parameters
+ + + + + + +
fovExpressed in radians.
width
height
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also
GLM_GTC_matrix_transform
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::perspectiveLH (T fovy,
T aspect,
T near,
T far 
)
+
+ +

Creates a matrix for a left handed, symetric perspective-view frustum.

+
Parameters
+ + + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also
GLM_GTC_matrix_transform
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::perspectiveRH (T fovy,
T aspect,
T near,
T far 
)
+
+ +

Creates a matrix for a right handed, symetric perspective-view frustum.

+
Parameters
+ + + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also
GLM_GTC_matrix_transform
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::pickMatrix (tvec2< T, P > const & center,
tvec2< T, P > const & delta,
tvec4< U, P > const & viewport 
)
+
+ +

Define a picking region.

+
Parameters
+ + + + +
center
delta
viewport
+
+
+
Template Parameters
+ + + +
TNative type used for the computation. Currently supported: half (not recommanded), float or double.
UCurrently supported: Floating-point types and integer types.
+
+
+
See also
GLM_GTC_matrix_transform
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::project (tvec3< T, P > const & obj,
tmat4x4< T, P > const & model,
tmat4x4< T, P > const & proj,
tvec4< U, P > const & viewport 
)
+
+ +

Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates.

+
Parameters
+ + + + + +
objSpecify the object coordinates.
modelSpecifies the current modelview matrix
projSpecifies the current projection matrix
viewportSpecifies the current viewport
+
+
+
Returns
Return the computed window coordinates.
+
Template Parameters
+ + + +
TNative type used for the computation. Currently supported: half (not recommanded), float or double.
UCurrently supported: Floating-point types and integer types.
+
+
+
See also
GLM_GTC_matrix_transform
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::rotate (tmat4x4< T, P > const & m,
T angle,
tvec3< T, P > const & axis 
)
+
+ +

Builds a rotation 4 * 4 matrix created from an axis vector and an angle.

+
Parameters
+ + + + +
mInput matrix multiplied by this rotation matrix.
angleRotation angle expressed in radians.
axisRotation axis, recommended to be normalized.
+
+
+
Template Parameters
+ + +
TValue type used to build the matrix. Supported: half, float or double.
+
+
+
See also
GLM_GTC_matrix_transform
+
+- rotate(tmat4x4<T, P> const & m, T angle, T x, T y, T z)
+
+- rotate(T angle, tvec3<T, P> const & v)
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::scale (tmat4x4< T, P > const & m,
tvec3< T, P > const & v 
)
+
+ +

Builds a scale 4 * 4 matrix created from 3 scalars.

+
Parameters
+ + + +
mInput matrix multiplied by this scale matrix.
vRatio of scaling for each axis.
+
+
+
Template Parameters
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also
GLM_GTC_matrix_transform
+
+- scale(tmat4x4<T, P> const & m, T x, T y, T z)
+
+- scale(tvec3<T, P> const & v)
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::translate (tmat4x4< T, P > const & m,
tvec3< T, P > const & v 
)
+
+ +

Builds a translation 4 * 4 matrix created from a vector of 3 components.

+
Parameters
+ + + +
mInput matrix multiplied by this translation matrix.
vCoordinates of a translation vector.
+
+
+
Template Parameters
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
#include <glm/glm.hpp>
+ +
...
+
glm::mat4 m = glm::translate(glm::mat4(1.0f), glm::vec3(1.0f));
+
// m[0][0] == 1.0f, m[0][1] == 0.0f, m[0][2] == 0.0f, m[0][3] == 0.0f
+
// m[1][0] == 0.0f, m[1][1] == 1.0f, m[1][2] == 0.0f, m[1][3] == 0.0f
+
// m[2][0] == 0.0f, m[2][1] == 0.0f, m[2][2] == 1.0f, m[2][3] == 0.0f
+
// m[3][0] == 1.0f, m[3][1] == 1.0f, m[3][2] == 1.0f, m[3][3] == 1.0f
+
+
+
+
See also
GLM_GTC_matrix_transform
+
+- translate(tmat4x4<T, P> const & m, T x, T y, T z)
+
+- translate(tvec3<T, P> const & v)
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::tweakedInfinitePerspective (T fovy,
T aspect,
T near 
)
+
+ +

Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics hardware that doesn't support depth clamping.

+
Parameters
+ + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also
GLM_GTC_matrix_transform
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::tweakedInfinitePerspective (T fovy,
T aspect,
T near,
T ep 
)
+
+ +

Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics hardware that doesn't support depth clamping.

+
Parameters
+ + + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
ep
+
+
+
Template Parameters
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also
GLM_GTC_matrix_transform
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::unProject (tvec3< T, P > const & win,
tmat4x4< T, P > const & model,
tmat4x4< T, P > const & proj,
tvec4< U, P > const & viewport 
)
+
+ +

Map the specified window coordinates (win.x, win.y, win.z) into object coordinates.

+
Parameters
+ + + + + +
winSpecify the window coordinates to be mapped.
modelSpecifies the modelview matrix
projSpecifies the projection matrix
viewportSpecifies the viewport
+
+
+
Returns
Returns the computed object coordinates.
+
Template Parameters
+ + + +
TNative type used for the computation. Currently supported: half (not recommanded), float or double.
UCurrently supported: Floating-point types and integer types.
+
+
+
See also
GLM_GTC_matrix_transform
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00175.html b/external/glm/doc/api/a00175.html new file mode 100644 index 0000000..7fd3caa --- /dev/null +++ b/external/glm/doc/api/a00175.html @@ -0,0 +1,136 @@ + + + + + + +0.9.7: GLM_GTC_noise + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
+
+
+ + + + + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T perlin (vecType< T, P > const &p)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T perlin (vecType< T, P > const &p, vecType< T, P > const &rep)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T simplex (vecType< T, P > const &p)
 
+

Detailed Description

+

Defines 2D, 3D and 4D procedural noise functions Based on the work of Stefan Gustavson and Ashima Arts on "webgl-noise": https://github.com/ashima/webgl-noise Following Stefan Gustavson's paper "Simplex noise demystified": http://www.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf <glm/gtc/noise.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::perlin (vecType< T, P > const & p)
+
+ +

Classic perlin noise.

+
See also
GLM_GTC_noise
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::perlin (vecType< T, P > const & p,
vecType< T, P > const & rep 
)
+
+ +

Periodic perlin noise.

+
See also
GLM_GTC_noise
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::simplex (vecType< T, P > const & p)
+
+ +

Simplex noise.

+
See also
GLM_GTC_noise
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00176.html b/external/glm/doc/api/a00176.html new file mode 100644 index 0000000..9e3287c --- /dev/null +++ b/external/glm/doc/api/a00176.html @@ -0,0 +1,976 @@ + + + + + + +0.9.7: GLM_GTC_packing + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GLM_FUNC_DECL uint32 packF2x11_1x10 (vec3 const &v)
 
GLM_FUNC_DECL uint16 packHalf1x16 (float v)
 
GLM_FUNC_DECL uint64 packHalf4x16 (vec4 const &v)
 
GLM_FUNC_DECL uint32 packI3x10_1x2 (ivec4 const &v)
 
GLM_FUNC_DECL uint16 packSnorm1x16 (float v)
 
GLM_FUNC_DECL uint8 packSnorm1x8 (float s)
 
GLM_FUNC_DECL uint16 packSnorm2x8 (vec2 const &v)
 
GLM_FUNC_DECL uint32 packSnorm3x10_1x2 (vec4 const &v)
 
GLM_FUNC_DECL uint64 packSnorm4x16 (vec4 const &v)
 
GLM_FUNC_DECL uint32 packU3x10_1x2 (uvec4 const &v)
 
GLM_FUNC_DECL uint16 packUnorm1x16 (float v)
 
GLM_FUNC_DECL uint8 packUnorm1x8 (float v)
 
GLM_FUNC_DECL uint16 packUnorm2x8 (vec2 const &v)
 
GLM_FUNC_DECL uint32 packUnorm3x10_1x2 (vec4 const &v)
 
GLM_FUNC_DECL uint64 packUnorm4x16 (vec4 const &v)
 
GLM_FUNC_DECL vec3 unpackF2x11_1x10 (uint32 p)
 
GLM_FUNC_DECL float unpackHalf1x16 (uint16 v)
 
GLM_FUNC_DECL vec4 unpackHalf4x16 (uint64 p)
 
GLM_FUNC_DECL ivec4 unpackI3x10_1x2 (uint32 p)
 
GLM_FUNC_DECL float unpackSnorm1x16 (uint16 p)
 
GLM_FUNC_DECL float unpackSnorm1x8 (uint8 p)
 
GLM_FUNC_DECL vec2 unpackSnorm2x8 (uint16 p)
 
GLM_FUNC_DECL vec4 unpackSnorm3x10_1x2 (uint32 p)
 
GLM_FUNC_DECL vec4 unpackSnorm4x16 (uint64 p)
 
GLM_FUNC_DECL uvec4 unpackU3x10_1x2 (uint32 p)
 
GLM_FUNC_DECL float unpackUnorm1x16 (uint16 p)
 
GLM_FUNC_DECL float unpackUnorm1x8 (uint8 p)
 
GLM_FUNC_DECL vec2 unpackUnorm2x8 (uint16 p)
 
GLM_FUNC_DECL vec4 unpackUnorm3x10_1x2 (uint32 p)
 
GLM_FUNC_DECL vec4 unpackUnorm4x16 (uint64 p)
 
+

Detailed Description

+

This extension provides a set of function to convert vertors to packed formats.

+

<glm/gtc/packing.hpp> need to be included to use these features.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint32 glm::packF2x11_1x10 (vec3 const & v)
+
+ +

First, converts the first two components of the normalized floating-point value v into 11-bit signless floating-point values.

+

Then, converts the third component of the normalized floating-point value v into a 10-bit signless floating-point value. Then, the results are packed into the returned 32-bit unsigned integer.

+

The first vector component specifies the 11 least-significant bits of the result; the last component specifies the 10 most-significant bits.

+
See also
GLM_GTC_packing
+
+vec3 unpackF2x11_1x10(uint32 const & p)
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint16 glm::packHalf1x16 (float v)
+
+ +

Returns an unsigned integer obtained by converting the components of a floating-point scalar to the 16-bit floating-point representation found in the OpenGL Specification, and then packing this 16-bit value into a 16-bit unsigned integer.

+
See also
GLM_GTC_packing
+
+uint32 packHalf2x16(vec2 const & v)
+
+uint64 packHalf4x16(vec4 const & v)
+
+GLSL packHalf2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint64 glm::packHalf4x16 (vec4 const & v)
+
+ +

Returns an unsigned integer obtained by converting the components of a four-component floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification, and then packing these four 16-bit values into a 64-bit unsigned integer.

+

The first vector component specifies the 16 least-significant bits of the result; the forth component specifies the 16 most-significant bits.

+
See also
GLM_GTC_packing
+
+uint16 packHalf1x16(float const & v)
+
+uint32 packHalf2x16(vec2 const & v)
+
+GLSL packHalf2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint32 glm::packI3x10_1x2 (ivec4 const & v)
+
+ +

Returns an unsigned integer obtained by converting the components of a four-component signed integer vector to the 10-10-10-2-bit signed integer representation found in the OpenGL Specification, and then packing these four values into a 32-bit unsigned integer.

+

The first vector component specifies the 10 least-significant bits of the result; the forth component specifies the 2 most-significant bits.

+
See also
GLM_GTC_packing
+
+uint32 packI3x10_1x2(uvec4 const & v)
+
+uint32 packSnorm3x10_1x2(vec4 const & v)
+
+uint32 packUnorm3x10_1x2(vec4 const & v)
+
+ivec4 unpackI3x10_1x2(uint32 const & p)
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint16 glm::packSnorm1x16 (float v)
+
+ +

First, converts the normalized floating-point value v into 16-bit integer value.

+

Then, the results are packed into the returned 16-bit unsigned integer.

+

The conversion to fixed point is done as follows: packSnorm1x8: round(clamp(s, -1, +1) * 32767.0)

+
See also
GLM_GTC_packing
+
+uint32 packSnorm2x16(vec2 const & v)
+
+uint64 packSnorm4x16(vec4 const & v)
+
+GLSL packSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint8 glm::packSnorm1x8 (float s)
+
+ +

First, converts the normalized floating-point value v into 8-bit integer value.

+

Then, the results are packed into the returned 8-bit unsigned integer.

+

The conversion to fixed point is done as follows: packSnorm1x8: round(clamp(s, -1, +1) * 127.0)

+
See also
GLM_GTC_packing
+
+uint16 packSnorm2x8(vec2 const & v)
+
+uint32 packSnorm4x8(vec4 const & v)
+
+GLSL packSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint16 glm::packSnorm2x8 (vec2 const & v)
+
+ +

First, converts each component of the normalized floating-point value v into 8-bit integer values.

+

Then, the results are packed into the returned 16-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packSnorm2x8: round(clamp(c, -1, +1) * 127.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also
GLM_GTC_packing
+
+uint8 packSnorm1x8(float const & v)
+
+uint32 packSnorm4x8(vec4 const & v)
+
+GLSL packSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint32 glm::packSnorm3x10_1x2 (vec4 const & v)
+
+ +

First, converts the first three components of the normalized floating-point value v into 10-bit signed integer values.

+

Then, converts the forth component of the normalized floating-point value v into 2-bit signed integer values. Then, the results are packed into the returned 32-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packSnorm3x10_1x2(xyz): round(clamp(c, -1, +1) * 511.0) packSnorm3x10_1x2(w): round(clamp(c, -1, +1) * 1.0)

+

The first vector component specifies the 10 least-significant bits of the result; the forth component specifies the 2 most-significant bits.

+
See also
GLM_GTC_packing
+
+vec4 unpackSnorm3x10_1x2(uint32 const & p)
+
+uint32 packUnorm3x10_1x2(vec4 const & v)
+
+uint32 packU3x10_1x2(uvec4 const & v)
+
+uint32 packI3x10_1x2(ivec4 const & v)
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint64 glm::packSnorm4x16 (vec4 const & v)
+
+ +

First, converts each component of the normalized floating-point value v into 16-bit integer values.

+

Then, the results are packed into the returned 64-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packSnorm2x8: round(clamp(c, -1, +1) * 32767.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also
GLM_GTC_packing
+
+uint16 packSnorm1x16(float const & v)
+
+uint32 packSnorm2x16(vec2 const & v)
+
+GLSL packSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint32 glm::packU3x10_1x2 (uvec4 const & v)
+
+ +

Returns an unsigned integer obtained by converting the components of a four-component unsigned integer vector to the 10-10-10-2-bit unsigned integer representation found in the OpenGL Specification, and then packing these four values into a 32-bit unsigned integer.

+

The first vector component specifies the 10 least-significant bits of the result; the forth component specifies the 2 most-significant bits.

+
See also
GLM_GTC_packing
+
+uint32 packI3x10_1x2(ivec4 const & v)
+
+uint32 packSnorm3x10_1x2(vec4 const & v)
+
+uint32 packUnorm3x10_1x2(vec4 const & v)
+
+ivec4 unpackU3x10_1x2(uint32 const & p)
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint16 glm::packUnorm1x16 (float v)
+
+ +

First, converts the normalized floating-point value v into a 16-bit integer value.

+

Then, the results are packed into the returned 16-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packUnorm1x16: round(clamp(c, 0, +1) * 65535.0)

+
See also
GLM_GTC_packing
+
+uint16 packSnorm1x16(float const & v)
+
+uint64 packSnorm4x16(vec4 const & v)
+
+GLSL packUnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint8 glm::packUnorm1x8 (float v)
+
+ +

First, converts the normalized floating-point value v into a 8-bit integer value.

+

Then, the results are packed into the returned 8-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packUnorm1x8: round(clamp(c, 0, +1) * 255.0)

+
See also
GLM_GTC_packing
+
+uint16 packUnorm2x8(vec2 const & v)
+
+uint32 packUnorm4x8(vec4 const & v)
+
+GLSL packUnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint16 glm::packUnorm2x8 (vec2 const & v)
+
+ +

First, converts each component of the normalized floating-point value v into 8-bit integer values.

+

Then, the results are packed into the returned 16-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packUnorm2x8: round(clamp(c, 0, +1) * 255.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also
GLM_GTC_packing
+
+uint8 packUnorm1x8(float const & v)
+
+uint32 packUnorm4x8(vec4 const & v)
+
+GLSL packUnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint32 glm::packUnorm3x10_1x2 (vec4 const & v)
+
+ +

First, converts the first three components of the normalized floating-point value v into 10-bit unsigned integer values.

+

Then, converts the forth component of the normalized floating-point value v into 2-bit signed uninteger values. Then, the results are packed into the returned 32-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packUnorm3x10_1x2(xyz): round(clamp(c, 0, +1) * 1023.0) packUnorm3x10_1x2(w): round(clamp(c, 0, +1) * 3.0)

+

The first vector component specifies the 10 least-significant bits of the result; the forth component specifies the 2 most-significant bits.

+
See also
GLM_GTC_packing
+
+vec4 unpackUnorm3x10_1x2(uint32 const & p)
+
+uint32 packUnorm3x10_1x2(vec4 const & v)
+
+uint32 packU3x10_1x2(uvec4 const & v)
+
+uint32 packI3x10_1x2(ivec4 const & v)
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint64 glm::packUnorm4x16 (vec4 const & v)
+
+ +

First, converts each component of the normalized floating-point value v into 16-bit integer values.

+

Then, the results are packed into the returned 64-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packUnorm4x16: round(clamp(c, 0, +1) * 65535.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also
GLM_GTC_packing
+
+uint16 packUnorm1x16(float const & v)
+
+uint32 packUnorm2x16(vec2 const & v)
+
+GLSL packUnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec3 glm::unpackF2x11_1x10 (uint32 p)
+
+ +

First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and one 10-bit signless floating-point value .

+

Then, each component is converted to a normalized floating-point value to generate the returned three-component vector.

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+uint32 packF2x11_1x10(vec3 const & v)
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL float glm::unpackHalf1x16 (uint16 v)
+
+ +

Returns a floating-point scalar with components obtained by unpacking a 16-bit unsigned integer into a 16-bit value, interpreted as a 16-bit floating-point number according to the OpenGL Specification, and converting it to 32-bit floating-point values.

+
See also
GLM_GTC_packing
+
+vec2 unpackHalf2x16(uint32 const & v)
+
+vec4 unpackHalf4x16(uint64 const & v)
+
+GLSL unpackHalf2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec4 glm::unpackHalf4x16 (uint64 p)
+
+ +

Returns a four-component floating-point vector with components obtained by unpacking a 64-bit unsigned integer into four 16-bit values, interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification, and converting them to 32-bit floating-point values.

+

The first component of the vector is obtained from the 16 least-significant bits of v; the forth component is obtained from the 16 most-significant bits of v.

+
See also
GLM_GTC_packing
+
+float unpackHalf1x16(uint16 const & v)
+
+vec2 unpackHalf2x16(uint32 const & v)
+
+GLSL unpackHalf2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL ivec4 glm::unpackI3x10_1x2 (uint32 p)
+
+ +

Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit signed integers.

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+uint32 packU3x10_1x2(uvec4 const & v)
+
+vec4 unpackSnorm3x10_1x2(uint32 const & p);
+
+uvec4 unpackI3x10_1x2(uint32 const & p);
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL float glm::unpackSnorm1x16 (uint16 p)
+
+ +

First, unpacks a single 16-bit unsigned integer p into a single 16-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned scalar.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm1x16: clamp(f / 32767.0, -1, +1)

+
See also
GLM_GTC_packing
+
+vec2 unpackSnorm2x16(uint32 p)
+
+vec4 unpackSnorm4x16(uint64 p)
+
+GLSL unpackSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL float glm::unpackSnorm1x8 (uint8 p)
+
+ +

First, unpacks a single 8-bit unsigned integer p into a single 8-bit signed integers.

+

Then, the value is converted to a normalized floating-point value to generate the returned scalar.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm1x8: clamp(f / 127.0, -1, +1)

+
See also
GLM_GTC_packing
+
+vec2 unpackSnorm2x8(uint16 p)
+
+vec4 unpackSnorm4x8(uint32 p)
+
+GLSL unpackSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec2 glm::unpackSnorm2x8 (uint16 p)
+
+ +

First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned two-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm2x8: clamp(f / 127.0, -1, +1)

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+float unpackSnorm1x8(uint8 p)
+
+vec4 unpackSnorm4x8(uint32 p)
+
+GLSL unpackSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec4 glm::unpackSnorm3x10_1x2 (uint32 p)
+
+ +

First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm3x10_1x2(xyz): clamp(f / 511.0, -1, +1) unpackSnorm3x10_1x2(w): clamp(f / 511.0, -1, +1)

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+uint32 packSnorm3x10_1x2(vec4 const & v)
+
+vec4 unpackUnorm3x10_1x2(uint32 const & p))
+
+uvec4 unpackI3x10_1x2(uint32 const & p)
+
+uvec4 unpackU3x10_1x2(uint32 const & p)
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec4 glm::unpackSnorm4x16 (uint64 p)
+
+ +

First, unpacks a single 64-bit unsigned integer p into four 16-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm4x16: clamp(f / 32767.0, -1, +1)

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+float unpackSnorm1x16(uint16 p)
+
+vec2 unpackSnorm2x16(uint32 p)
+
+GLSL unpackSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uvec4 glm::unpackU3x10_1x2 (uint32 p)
+
+ +

Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit unsigned integers.

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+uint32 packU3x10_1x2(uvec4 const & v)
+
+vec4 unpackSnorm3x10_1x2(uint32 const & p);
+
+uvec4 unpackI3x10_1x2(uint32 const & p);
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL float glm::unpackUnorm1x16 (uint16 p)
+
+ +

First, unpacks a single 16-bit unsigned integer p into a of 16-bit unsigned integers.

+

Then, the value is converted to a normalized floating-point value to generate the returned scalar.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm1x16: f / 65535.0

+
See also
GLM_GTC_packing
+
+vec2 unpackUnorm2x16(uint32 p)
+
+vec4 unpackUnorm4x16(uint64 p)
+
+GLSL unpackUnorm2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL float glm::unpackUnorm1x8 (uint8 p)
+
+ +

Convert a single 8-bit integer to a normalized floating-point value.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm4x8: f / 255.0

+
See also
GLM_GTC_packing
+
+vec2 unpackUnorm2x8(uint16 p)
+
+vec4 unpackUnorm4x8(uint32 p)
+
+GLSL unpackUnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec2 glm::unpackUnorm2x8 (uint16 p)
+
+ +

First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit unsigned integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned two-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm4x8: f / 255.0

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+float unpackUnorm1x8(uint8 v)
+
+vec4 unpackUnorm4x8(uint32 p)
+
+GLSL unpackUnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec4 glm::unpackUnorm3x10_1x2 (uint32 p)
+
+ +

First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm3x10_1x2(xyz): clamp(f / 1023.0, 0, +1) unpackSnorm3x10_1x2(w): clamp(f / 3.0, 0, +1)

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+uint32 packSnorm3x10_1x2(vec4 const & v)
+
+vec4 unpackInorm3x10_1x2(uint32 const & p))
+
+uvec4 unpackI3x10_1x2(uint32 const & p)
+
+uvec4 unpackU3x10_1x2(uint32 const & p)
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec4 glm::unpackUnorm4x16 (uint64 p)
+
+ +

First, unpacks a single 64-bit unsigned integer p into four 16-bit unsigned integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnormx4x16: f / 65535.0

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+float unpackUnorm1x16(uint16 p)
+
+vec2 unpackUnorm2x16(uint32 p)
+
+GLSL unpackUnorm2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00177.html b/external/glm/doc/api/a00177.html new file mode 100644 index 0000000..797dd88 --- /dev/null +++ b/external/glm/doc/api/a00177.html @@ -0,0 +1,882 @@ + + + + + + +0.9.7: GLM_GTC_quaternion + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTC_quaternion
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL T angle (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > angleAxis (T const &angle, tvec3< T, P > const &axis)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > axis (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > conjugate (tquat< T, P > const &q)
 
template<typename T , precision P, template< typename, precision > class quatType>
GLM_FUNC_DECL T dot (quatType< T, P > const &x, quatType< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< bool, P > equal (tquat< T, P > const &x, tquat< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > eulerAngles (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< bool, P > greaterThan (tquat< T, P > const &x, tquat< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< bool, P > greaterThanEqual (tquat< T, P > const &x, tquat< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > inverse (tquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL T length (tquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > lerp (tquat< T, P > const &x, tquat< T, P > const &y, T a)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< bool, P > lessThan (tquat< T, P > const &x, tquat< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< bool, P > lessThanEqual (tquat< T, P > const &x, tquat< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > mat3_cast (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > mat4_cast (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > mix (tquat< T, P > const &x, tquat< T, P > const &y, T a)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > normalize (tquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< bool, P > notEqual (tquat< T, P > const &x, tquat< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL T pitch (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > quat_cast (tmat3x3< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > quat_cast (tmat4x4< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL T roll (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > rotate (tquat< T, P > const &q, T const &angle, tvec3< T, P > const &axis)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > slerp (tquat< T, P > const &x, tquat< T, P > const &y, T a)
 
template<typename T , precision P>
GLM_FUNC_DECL T yaw (tquat< T, P > const &x)
 
+

Detailed Description

+

Defines a templated quaternion type and several quaternion operations.

+

<glm/gtc/quaternion.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::angle (tquat< T, P > const & x)
+
+ +

Returns the quaternion rotation angle.

+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::angleAxis (T const & angle,
tvec3< T, P > const & axis 
)
+
+ +

Build a quaternion from an angle and a normalized axis.

+
Parameters
+ + + +
angleAngle expressed in radians.
axisAxis of the quaternion, must be normalized.
+
+
+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::axis (tquat< T, P > const & x)
+
+ +

Returns the q rotation axis.

+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::conjugate (tquat< T, P > const & q)
+
+ +

Returns the q conjugate.

+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::dot (quatType< T, P > const & x,
quatType< T, P > const & y 
)
+
+ +

Returns dot product of q1 and q2, i.e., q1[0] * q2[0] + q1[1] * q2[1] + ...

+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec4<bool, P> glm::equal (tquat< T, P > const & x,
tquat< T, P > const & y 
)
+
+ +

Returns the component-wise comparison of result x == y.

+
Template Parameters
+ + +
quatTypeFloating-point quaternion types.
+
+
+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::eulerAngles (tquat< T, P > const & x)
+
+ +

Returns euler angles, yitch as x, yaw as y, roll as z.

+

The result is expressed in radians if GLM_FORCE_RADIANS is defined or degrees otherwise.

+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec4<bool, P> glm::greaterThan (tquat< T, P > const & x,
tquat< T, P > const & y 
)
+
+ +

Returns the component-wise comparison of result x > y.

+
Template Parameters
+ + +
quatTypeFloating-point quaternion types.
+
+
+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec4<bool, P> glm::greaterThanEqual (tquat< T, P > const & x,
tquat< T, P > const & y 
)
+
+ +

Returns the component-wise comparison of result x >= y.

+
Template Parameters
+ + +
quatTypeFloating-point quaternion types.
+
+
+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::inverse (tquat< T, P > const & q)
+
+ +

Returns the q inverse.

+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::length (tquat< T, P > const & q)
+
+ +

Returns the length of the quaternion.

+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::lerp (tquat< T, P > const & x,
tquat< T, P > const & y,
T a 
)
+
+ +

Linear interpolation of two quaternions.

+

The interpolation is oriented.

+
Parameters
+ + + + +
xA quaternion
yA quaternion
aInterpolation factor. The interpolation is defined in the range [0, 1].
+
+
+
Template Parameters
+ + +
TValue type used to build the quaternion. Supported: half, float or double.
+
+
+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec4<bool, P> glm::lessThan (tquat< T, P > const & x,
tquat< T, P > const & y 
)
+
+ +

Returns the component-wise comparison result of x < y.

+
Template Parameters
+ + +
quatTypeFloating-point quaternion types.
+
+
+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec4<bool, P> glm::lessThanEqual (tquat< T, P > const & x,
tquat< T, P > const & y 
)
+
+ +

Returns the component-wise comparison of result x <= y.

+
Template Parameters
+ + +
quatTypeFloating-point quaternion types.
+
+
+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat3x3<T, P> glm::mat3_cast (tquat< T, P > const & x)
+
+ +

Converts a quaternion to a 3 * 3 matrix.

+
See also
GLM_GTC_quaternion
+ +

Referenced by glm::toMat3().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::mat4_cast (tquat< T, P > const & x)
+
+ +

Converts a quaternion to a 4 * 4 matrix.

+
See also
GLM_GTC_quaternion
+ +

Referenced by glm::toMat4().

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::mix (tquat< T, P > const & x,
tquat< T, P > const & y,
T a 
)
+
+ +

Spherical linear interpolation of two quaternions.

+

The interpolation is oriented and the rotation is performed at constant speed. For short path spherical linear interpolation, use the slerp function.

+
Parameters
+ + + + +
xA quaternion
yA quaternion
aInterpolation factor. The interpolation is defined beyond the range [0, 1].
+
+
+
Template Parameters
+ + +
TValue type used to build the quaternion. Supported: half, float or double.
+
+
+
See also
GLM_GTC_quaternion
+
+- slerp(tquat<T, P> const & x, tquat<T, P> const & y, T const & a)
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::normalize (tquat< T, P > const & q)
+
+ +

Returns the normalized quaternion.

+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec4<bool, P> glm::notEqual (tquat< T, P > const & x,
tquat< T, P > const & y 
)
+
+ +

Returns the component-wise comparison of result x != y.

+
Template Parameters
+ + +
quatTypeFloating-point quaternion types.
+
+
+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::pitch (tquat< T, P > const & x)
+
+ +

Returns pitch value of euler angles expressed in radians.

+
See also
GLM_GTX_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::quat_cast (tmat3x3< T, P > const & x)
+
+ +

Converts a 3 * 3 matrix to a quaternion.

+
See also
GLM_GTC_quaternion
+ +

Referenced by glm::toQuat().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::quat_cast (tmat4x4< T, P > const & x)
+
+ +

Converts a 4 * 4 matrix to a quaternion.

+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::roll (tquat< T, P > const & x)
+
+ +

Returns roll value of euler angles expressed in radians.

+
See also
GLM_GTX_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::rotate (tquat< T, P > const & q,
T const & angle,
tvec3< T, P > const & axis 
)
+
+ +

Rotates a quaternion from a vector of 3 components axis and an angle.

+
Parameters
+ + + + +
qSource orientation
angleAngle expressed in radians.
axisAxis of the rotation
+
+
+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::slerp (tquat< T, P > const & x,
tquat< T, P > const & y,
T a 
)
+
+ +

Spherical linear interpolation of two quaternions.

+

The interpolation always take the short path and the rotation is performed at constant speed.

+
Parameters
+ + + + +
xA quaternion
yA quaternion
aInterpolation factor. The interpolation is defined beyond the range [0, 1].
+
+
+
Template Parameters
+ + +
TValue type used to build the quaternion. Supported: half, float or double.
+
+
+
See also
GLM_GTC_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::yaw (tquat< T, P > const & x)
+
+ +

Returns yaw value of euler angles expressed in radians.

+
See also
GLM_GTX_quaternion
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00178.html b/external/glm/doc/api/a00178.html new file mode 100644 index 0000000..353671b --- /dev/null +++ b/external/glm/doc/api/a00178.html @@ -0,0 +1,257 @@ + + + + + + +0.9.7: GLM_GTC_random + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL tvec3< T, defaultp > ballRand (T Radius)
 
template<typename T >
GLM_FUNC_DECL tvec2< T, defaultp > circularRand (T Radius)
 
template<typename T >
GLM_FUNC_DECL tvec2< T, defaultp > diskRand (T Radius)
 
template<typename genType >
GLM_FUNC_DECL genType gaussRand (genType Mean, genType Deviation)
 
template<typename genTYpe >
GLM_FUNC_DECL genTYpe linearRand (genTYpe Min, genTYpe Max)
 
template<typename T >
GLM_FUNC_DECL tvec3< T, defaultp > sphericalRand (T Radius)
 
+

Detailed Description

+

Generate random number from various distribution methods.

+

<glm/gtc/random.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec3<T, defaultp> glm::ballRand (T Radius)
+
+ +

Generate a random 3D vector which coordinates are regulary distributed within the volume of a ball of a given radius.

+
Parameters
+ + +
Radius
+
+
+
See also
GLM_GTC_random
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec2<T, defaultp> glm::circularRand (T Radius)
+
+ +

Generate a random 2D vector which coordinates are regulary distributed on a circle of a given radius.

+
Parameters
+ + +
Radius
+
+
+
See also
GLM_GTC_random
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec2<T, defaultp> glm::diskRand (T Radius)
+
+ +

Generate a random 2D vector which coordinates are regulary distributed within the area of a disk of a given radius.

+
Parameters
+ + +
Radius
+
+
+
See also
GLM_GTC_random
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::gaussRand (genType Mean,
genType Deviation 
)
+
+ +

Generate random numbers in the interval [Min, Max], according a gaussian distribution.

+
Parameters
+ + + +
Mean
Deviation
+
+
+
See also
GLM_GTC_random
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genTYpe glm::linearRand (genTYpe Min,
genTYpe Max 
)
+
+ +

Generate random numbers in the interval [Min, Max], according a linear distribution.

+
Parameters
+ + + +
Min
Max
+
+
+
Template Parameters
+ + +
genTypeValue type. Currently supported: half (not recommanded), float or double scalars and vectors.
+
+
+
See also
GLM_GTC_random
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec3<T, defaultp> glm::sphericalRand (T Radius)
+
+ +

Generate a random 3D vector which coordinates are regulary distributed on a sphere of a given radius.

+
Parameters
+ + +
Radius
+
+
+
See also
GLM_GTC_random
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00179.html b/external/glm/doc/api/a00179.html new file mode 100644 index 0000000..05351a4 --- /dev/null +++ b/external/glm/doc/api/a00179.html @@ -0,0 +1,328 @@ + + + + + + +0.9.7: GLM_GTC_reciprocal + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTC_reciprocal
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType acot (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType acoth (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType acsc (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType acsch (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType asec (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType asech (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType cot (genType const &angle)
 
template<typename genType >
GLM_FUNC_DECL genType coth (genType const &angle)
 
template<typename genType >
GLM_FUNC_DECL genType csc (genType const &angle)
 
template<typename genType >
GLM_FUNC_DECL genType csch (genType const &angle)
 
template<typename genType >
GLM_FUNC_DECL genType sec (genType const &angle)
 
template<typename genType >
GLM_FUNC_DECL genType sech (genType const &angle)
 
+

Detailed Description

+

Define secant, cosecant and cotangent functions.

+

<glm/gtc/reciprocal.hpp> need to be included to use these features.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::acot (genType const & x)
+
+ +

Inverse cotangent function.

+
See also
GLM_GTC_reciprocal
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::acoth (genType const & x)
+
+ +

Inverse cotangent hyperbolic function.

+
See also
GLM_GTC_reciprocal
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::acsc (genType const & x)
+
+ +

Inverse cosecant function.

+
See also
GLM_GTC_reciprocal
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::acsch (genType const & x)
+
+ +

Inverse cosecant hyperbolic function.

+
See also
GLM_GTC_reciprocal
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::asec (genType const & x)
+
+ +

Inverse secant function.

+
See also
GLM_GTC_reciprocal
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::asech (genType const & x)
+
+ +

Inverse secant hyperbolic function.

+
See also
GLM_GTC_reciprocal
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::cot (genType const & angle)
+
+ +

Cotangent function.

+

adjacent / opposite or 1 / tan(x)

+
See also
GLM_GTC_reciprocal
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::coth (genType const & angle)
+
+ +

Cotangent hyperbolic function.

+
See also
GLM_GTC_reciprocal
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::csc (genType const & angle)
+
+ +

Cosecant function.

+

hypotenuse / opposite or 1 / sin(x)

+
See also
GLM_GTC_reciprocal
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::csch (genType const & angle)
+
+ +

Cosecant hyperbolic function.

+
See also
GLM_GTC_reciprocal
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::sec (genType const & angle)
+
+ +

Secant function.

+

hypotenuse / adjacent or 1 / cos(x)

+
See also
GLM_GTC_reciprocal
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::sech (genType const & angle)
+
+ +

Secant hyperbolic function.

+
See also
GLM_GTC_reciprocal
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00180.html b/external/glm/doc/api/a00180.html new file mode 100644 index 0000000..80c4bb9 --- /dev/null +++ b/external/glm/doc/api/a00180.html @@ -0,0 +1,603 @@ + + + + + + +0.9.7: GLM_GTC_round + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType ceilMultiple (genType Source, genType Multiple)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > ceilMultiple (vecType< T, P > const &Source, vecType< T, P > const &Multiple)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType ceilPowerOfTwo (genIUType Value)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > ceilPowerOfTwo (vecType< T, P > const &value)
 
template<typename genType >
GLM_FUNC_DECL genType floorMultiple (genType Source, genType Multiple)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > floorMultiple (vecType< T, P > const &Source, vecType< T, P > const &Multiple)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType floorPowerOfTwo (genIUType Value)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > floorPowerOfTwo (vecType< T, P > const &value)
 
template<typename genIUType >
GLM_FUNC_DECL bool isMultiple (genIUType Value, genIUType Multiple)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > isMultiple (vecType< T, P > const &Value, T Multiple)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > isMultiple (vecType< T, P > const &Value, vecType< T, P > const &Multiple)
 
template<typename genIUType >
GLM_FUNC_DECL bool isPowerOfTwo (genIUType Value)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > isPowerOfTwo (vecType< T, P > const &value)
 
template<typename genType >
GLM_FUNC_DECL genType roundMultiple (genType Source, genType Multiple)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > roundMultiple (vecType< T, P > const &Source, vecType< T, P > const &Multiple)
 
template<typename genIUType >
GLM_FUNC_DECL genIUType roundPowerOfTwo (genIUType Value)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > roundPowerOfTwo (vecType< T, P > const &value)
 
+

Detailed Description

+

rounding value to specific boundings

+

<glm/gtc/round.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::ceilMultiple (genType Source,
genType Multiple 
)
+
+ +

Higher multiple number of Source.

+
Template Parameters
+ + +
genTypeFloating-point or integer scalar or vector types.
+
+
+
Parameters
+ + + +
Source
MultipleMust be a null or positive value
+
+
+
See also
GLM_GTC_round
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::ceilMultiple (vecType< T, P > const & Source,
vecType< T, P > const & Multiple 
)
+
+ +

Higher multiple number of Source.

+
Template Parameters
+ + +
genTypeFloating-point or integer scalar or vector types.
+
+
+
Parameters
+ + + +
Source
MultipleMust be a null or positive value
+
+
+
See also
GLM_GTC_round
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genIUType glm::ceilPowerOfTwo (genIUType Value)
+
+ +

Return the power of two number which value is just higher the input value, round up to a power of two.

+
See also
GLM_GTC_round
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::ceilPowerOfTwo (vecType< T, P > const & value)
+
+ +

Return the power of two number which value is just higher the input value, round up to a power of two.

+
See also
GLM_GTC_round
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::floorMultiple (genType Source,
genType Multiple 
)
+
+ +

Lower multiple number of Source.

+
Template Parameters
+ + +
genTypeFloating-point or integer scalar or vector types.
+
+
+
Parameters
+ + + +
Source
MultipleMust be a null or positive value
+
+
+
See also
GLM_GTC_round
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::floorMultiple (vecType< T, P > const & Source,
vecType< T, P > const & Multiple 
)
+
+ +

Lower multiple number of Source.

+
Template Parameters
+ + +
genTypeFloating-point or integer scalar or vector types.
+
+
+
Parameters
+ + + +
Source
MultipleMust be a null or positive value
+
+
+
See also
GLM_GTC_round
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genIUType glm::floorPowerOfTwo (genIUType Value)
+
+ +

Return the power of two number which value is just lower the input value, round down to a power of two.

+
See also
GLM_GTC_round
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::floorPowerOfTwo (vecType< T, P > const & value)
+
+ +

Return the power of two number which value is just lower the input value, round down to a power of two.

+
See also
GLM_GTC_round
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isMultiple (genIUType Value,
genIUType Multiple 
)
+
+ +

Return true if the 'Value' is a multiple of 'Multiple'.

+
See also
GLM_GTC_round
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<bool, P> glm::isMultiple (vecType< T, P > const & Value,
T Multiple 
)
+
+ +

Return true if the 'Value' is a multiple of 'Multiple'.

+
See also
GLM_GTC_round
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<bool, P> glm::isMultiple (vecType< T, P > const & Value,
vecType< T, P > const & Multiple 
)
+
+ +

Return true if the 'Value' is a multiple of 'Multiple'.

+
See also
GLM_GTC_round
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL bool glm::isPowerOfTwo (genIUType Value)
+
+ +

Return true if the value is a power of two number.

+
See also
GLM_GTC_round
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<bool, P> glm::isPowerOfTwo (vecType< T, P > const & value)
+
+ +

Return true if the value is a power of two number.

+
See also
GLM_GTC_round
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::roundMultiple (genType Source,
genType Multiple 
)
+
+ +

Lower multiple number of Source.

+
Template Parameters
+ + +
genTypeFloating-point or integer scalar or vector types.
+
+
+
Parameters
+ + + +
Source
MultipleMust be a null or positive value
+
+
+
See also
GLM_GTC_round
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::roundMultiple (vecType< T, P > const & Source,
vecType< T, P > const & Multiple 
)
+
+ +

Lower multiple number of Source.

+
Template Parameters
+ + +
genTypeFloating-point or integer scalar or vector types.
+
+
+
Parameters
+ + + +
Source
MultipleMust be a null or positive value
+
+
+
See also
GLM_GTC_round
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genIUType glm::roundPowerOfTwo (genIUType Value)
+
+ +

Return the power of two number which value is the closet to the input value.

+
See also
GLM_GTC_round
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::roundPowerOfTwo (vecType< T, P > const & value)
+
+ +

Return the power of two number which value is the closet to the input value.

+
See also
GLM_GTC_round
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00181.html b/external/glm/doc/api/a00181.html new file mode 100644 index 0000000..acf16f8 --- /dev/null +++ b/external/glm/doc/api/a00181.html @@ -0,0 +1,3678 @@ + + + + + + +0.9.7: GLM_GTC_type_precision + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTC_type_precision
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef highp_float32_t f32
 
typedef f32mat2x2 f32mat2
 
typedef highp_f32mat2x2 f32mat2x2
 
typedef highp_f32mat2x3 f32mat2x3
 
typedef highp_f32mat2x4 f32mat2x4
 
typedef f32mat3x3 f32mat3
 
typedef highp_f32mat3x2 f32mat3x2
 
typedef highp_f32mat3x3 f32mat3x3
 
typedef highp_f32mat3x4 f32mat3x4
 
typedef f32mat4x4 f32mat4
 
typedef highp_f32mat4x2 f32mat4x2
 
typedef highp_f32mat4x3 f32mat4x3
 
typedef highp_f32mat4x4 f32mat4x4
 
typedef highp_f32quat f32quat
 
typedef highp_f32vec1 f32vec1
 
typedef highp_f32vec2 f32vec2
 
typedef highp_f32vec3 f32vec3
 
typedef highp_f32vec4 f32vec4
 
typedef highp_float64_t f64
 
typedef f64mat2x2 f64mat2
 
typedef highp_f64mat2x2 f64mat2x2
 
typedef highp_f64mat2x3 f64mat2x3
 
typedef highp_f64mat2x4 f64mat2x4
 
typedef f64mat3x3 f64mat3
 
typedef highp_f64mat3x2 f64mat3x2
 
typedef highp_f64mat3x3 f64mat3x3
 
typedef highp_f64mat3x4 f64mat3x4
 
typedef f64mat4x4 f64mat4
 
typedef highp_f64mat4x2 f64mat4x2
 
typedef highp_f64mat4x3 f64mat4x3
 
typedef highp_f64mat4x4 f64mat4x4
 
typedef highp_f64quat f64quat
 
typedef highp_f64vec1 f64vec1
 
typedef highp_f64vec2 f64vec2
 
typedef highp_f64vec3 f64vec3
 
typedef highp_f64vec4 f64vec4
 
typedef float float32
 
typedef highp_float32_t float32_t
 
typedef double float64
 
typedef highp_float64_t float64_t
 
typedef fmat2x2 fmat2
 
typedef highp_f32mat2x2 fmat2x2
 
typedef highp_f32mat2x3 fmat2x3
 
typedef highp_f32mat2x4 fmat2x4
 
typedef fmat3x3 fmat3
 
typedef highp_f32mat3x2 fmat3x2
 
typedef highp_f32mat3x3 fmat3x3
 
typedef highp_f32mat3x4 fmat3x4
 
typedef fmat4x4 fmat4
 
typedef highp_f32mat4x2 fmat4x2
 
typedef highp_f32mat4x3 fmat4x3
 
typedef highp_f32mat4x4 fmat4x4
 
typedef highp_f32vec1 fvec1
 
typedef highp_f32vec2 fvec2
 
typedef highp_f32vec3 fvec3
 
typedef highp_f32vec4 fvec4
 
typedef detail::int16 highp_i16
 
typedef detail::int32 highp_i32
 
typedef detail::int64 highp_i64
 
typedef detail::int8 highp_i8
 
typedef detail::int16 highp_int16
 
typedef detail::int16 highp_int16_t
 
typedef detail::int32 highp_int32
 
typedef detail::int32 highp_int32_t
 
typedef detail::int64 highp_int64
 
typedef detail::int64 highp_int64_t
 
typedef detail::int8 highp_int8
 
typedef detail::int8 highp_int8_t
 
typedef detail::uint16 highp_u16
 
typedef detail::uint32 highp_u32
 
typedef detail::uint64 highp_u64
 
typedef detail::uint8 highp_u8
 
typedef detail::uint16 highp_uint16
 
typedef detail::uint16 highp_uint16_t
 
typedef detail::uint32 highp_uint32
 
typedef detail::uint32 highp_uint32_t
 
typedef detail::uint64 highp_uint64
 
typedef detail::uint64 highp_uint64_t
 
typedef detail::uint8 highp_uint8
 
typedef detail::uint8 highp_uint8_t
 
typedef detail::int16 i16
 
typedef highp_i16vec1 i16vec1
 
typedef highp_i16vec2 i16vec2
 
typedef highp_i16vec3 i16vec3
 
typedef highp_i16vec4 i16vec4
 
typedef detail::int32 i32
 
typedef highp_i32vec1 i32vec1
 
typedef highp_i32vec2 i32vec2
 
typedef highp_i32vec3 i32vec3
 
typedef highp_i32vec4 i32vec4
 
typedef detail::int64 i64
 
typedef highp_i64vec1 i64vec1
 
typedef highp_i64vec2 i64vec2
 
typedef highp_i64vec3 i64vec3
 
typedef highp_i64vec4 i64vec4
 
typedef detail::int8 i8
 
typedef highp_i8vec1 i8vec1
 
typedef highp_i8vec2 i8vec2
 
typedef highp_i8vec3 i8vec3
 
typedef highp_i8vec4 i8vec4
 
typedef detail::int16 int16
 
typedef detail::int16 int16_t
 
typedef detail::int32 int32
 
typedef detail::int32 int32_t
 
typedef detail::int64 int64
 
typedef detail::int64 int64_t
 
typedef detail::int8 int8
 
typedef detail::int8 int8_t
 
typedef detail::int16 lowp_i16
 
typedef detail::int32 lowp_i32
 
typedef detail::int64 lowp_i64
 
typedef detail::int8 lowp_i8
 
typedef detail::int16 lowp_int16
 
typedef detail::int16 lowp_int16_t
 
typedef detail::int32 lowp_int32
 
typedef detail::int32 lowp_int32_t
 
typedef detail::int64 lowp_int64
 
typedef detail::int64 lowp_int64_t
 
typedef detail::int8 lowp_int8
 
typedef detail::int8 lowp_int8_t
 
typedef detail::uint16 lowp_u16
 
typedef detail::uint32 lowp_u32
 
typedef detail::uint64 lowp_u64
 
typedef detail::uint8 lowp_u8
 
typedef detail::uint16 lowp_uint16
 
typedef detail::uint16 lowp_uint16_t
 
typedef detail::uint32 lowp_uint32
 
typedef detail::uint32 lowp_uint32_t
 
typedef detail::uint64 lowp_uint64
 
typedef detail::uint64 lowp_uint64_t
 
typedef detail::uint8 lowp_uint8
 
typedef detail::uint8 lowp_uint8_t
 
typedef detail::int16 mediump_i16
 
typedef detail::int32 mediump_i32
 
typedef detail::int64 mediump_i64
 
typedef detail::int8 mediump_i8
 
typedef detail::int16 mediump_int16
 
typedef detail::int16 mediump_int16_t
 
typedef detail::int32 mediump_int32
 
typedef detail::int32 mediump_int32_t
 
typedef detail::int64 mediump_int64
 
typedef detail::int64 mediump_int64_t
 
typedef detail::int8 mediump_int8
 
typedef detail::int8 mediump_int8_t
 
typedef detail::uint16 mediump_u16
 
typedef detail::uint32 mediump_u32
 
typedef detail::uint64 mediump_u64
 
typedef detail::uint8 mediump_u8
 
typedef detail::uint16 mediump_uint16
 
typedef detail::uint16 mediump_uint16_t
 
typedef detail::uint32 mediump_uint32
 
typedef detail::uint32 mediump_uint32_t
 
typedef detail::uint64 mediump_uint64
 
typedef detail::uint64 mediump_uint64_t
 
typedef detail::uint8 mediump_uint8
 
typedef detail::uint8 mediump_uint8_t
 
typedef detail::uint16 u16
 
typedef highp_u16vec1 u16vec1
 
typedef highp_u16vec2 u16vec2
 
typedef highp_u16vec3 u16vec3
 
typedef highp_u16vec4 u16vec4
 
typedef detail::uint32 u32
 
typedef highp_u32vec1 u32vec1
 
typedef highp_u32vec2 u32vec2
 
typedef highp_u32vec3 u32vec3
 
typedef highp_u32vec4 u32vec4
 
typedef detail::uint64 u64
 
typedef highp_u64vec1 u64vec1
 
typedef highp_u64vec2 u64vec2
 
typedef highp_u64vec3 u64vec3
 
typedef highp_u64vec4 u64vec4
 
typedef detail::uint8 u8
 
typedef highp_u8vec1 u8vec1
 
typedef highp_u8vec2 u8vec2
 
typedef highp_u8vec3 u8vec3
 
typedef highp_u8vec4 u8vec4
 
typedef detail::uint16 uint16
 
typedef detail::uint16 uint16_t
 
typedef detail::uint32 uint32
 
typedef detail::uint32 uint32_t
 
typedef detail::uint64 uint64
 
typedef detail::uint64 uint64_t
 
typedef detail::uint8 uint8
 
typedef detail::uint8 uint8_t
 
+

Detailed Description

+

Defines specific C++-based precision types.

+

Precision types defines types based on GLSL's precision qualifiers. This extension defines types based on explicitly-sized C++ data types.

+

<glm/gtc/type_precision.hpp> need to be included to use these functionalities.

+

Typedef Documentation

+ +
+
+ + + + +
typedef float32 f32
+
+ +

Default 32 bit single-precision floating-point scalar.

+

32 bit single-precision floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1534 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2< f32, defaultp > f32mat2
+
+ +

Default single-precision floating-point 2x2 matrix.

+

Single-precision floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision
+
+GLM_GTC_type_precision Single-precision floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 2478 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2< f32, defaultp > f32mat2x2
+
+ +

Default single-precision floating-point 2x2 matrix.

+

Single-precision floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision
+
+GLM_GTC_type_precision Single-precision floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 2442 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x3< f32, defaultp > f32mat2x3
+
+ +

Default single-precision floating-point 2x3 matrix.

+

Single-precision floating-point 2x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2446 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x4< f32, defaultp > f32mat2x4
+
+ +

Default single-precision floating-point 2x4 matrix.

+

Single-precision floating-point 2x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2450 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3< f32, defaultp > f32mat3
+
+ +

Default single-precision floating-point 3x3 matrix.

+

Single-precision floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2482 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x2< f32, defaultp > f32mat3x2
+
+ +

Default single-precision floating-point 3x2 matrix.

+

Single-precision floating-point 3x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2454 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3< f32, defaultp > f32mat3x3
+
+ +

Default single-precision floating-point 3x3 matrix.

+

Single-precision floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2458 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x4< f32, defaultp > f32mat3x4
+
+ +

Default single-precision floating-point 3x4 matrix.

+

Single-precision floating-point 3x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2462 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4< f32, defaultp > f32mat4
+
+ +

Default single-precision floating-point 4x4 matrix.

+

Single-precision floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2486 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x2< f32, defaultp > f32mat4x2
+
+ +

Default single-precision floating-point 4x2 matrix.

+

Single-precision floating-point 4x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2466 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x3< f32, defaultp > f32mat4x3
+
+ +

Default single-precision floating-point 4x3 matrix.

+

Single-precision floating-point 4x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2470 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4< f32, defaultp > f32mat4x4
+
+ +

Default single-precision floating-point 4x4 matrix.

+

Single-precision floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2474 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tquat< f32, defaultp > f32quat
+
+ +

Default single-precision floating-point quaternion.

+

Single-precision floating-point quaternion.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2490 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec1< f32, defaultp > f32vec1
+
+ +

Default single-precision floating-point vector of 1 components.

+

Single-precision floating-point vector of 1 component.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2426 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2< f32, defaultp > f32vec2
+
+ +

Default single-precision floating-point vector of 2 components.

+

Single-precision floating-point vector of 2 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2430 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3< f32, defaultp > f32vec3
+
+ +

Default single-precision floating-point vector of 3 components.

+

Single-precision floating-point vector of 3 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2434 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4< f32, defaultp > f32vec4
+
+ +

Default single-precision floating-point vector of 4 components.

+

Single-precision floating-point vector of 4 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2438 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef float64 f64
+
+ +

Default 64 bit double-precision floating-point scalar.

+

64 bit double-precision floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1538 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2< f64, defaultp > f64mat2
+
+ +

Default double-precision floating-point 2x2 matrix.

+

Double-precision floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision
+
+GLM_GTC_type_precision Double-precision floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 2584 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2< f64, defaultp > f64mat2x2
+
+ +

Default double-precision floating-point 2x2 matrix.

+

Double-precision floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision
+
+GLM_GTC_type_precision Double-precision floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 2548 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x3< f64, defaultp > f64mat2x3
+
+ +

Default double-precision floating-point 2x3 matrix.

+

Double-precision floating-point 2x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2552 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x4< f64, defaultp > f64mat2x4
+
+ +

Default double-precision floating-point 2x4 matrix.

+

Double-precision floating-point 2x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2556 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3< f64, defaultp > f64mat3
+
+ +

Default double-precision floating-point 3x3 matrix.

+

Double-precision floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2588 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x2< f64, defaultp > f64mat3x2
+
+ +

Default double-precision floating-point 3x2 matrix.

+

Double-precision floating-point 3x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2560 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3< f64, defaultp > f64mat3x3
+
+ +

Default double-precision floating-point 3x3 matrix.

+

Double-precision floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2564 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x4< f64, defaultp > f64mat3x4
+
+ +

Default double-precision floating-point 3x4 matrix.

+

Double-precision floating-point 3x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2568 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4< f64, defaultp > f64mat4
+
+ +

Default double-precision floating-point 4x4 matrix.

+

Double-precision floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2592 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x2< f64, defaultp > f64mat4x2
+
+ +

Default double-precision floating-point 4x2 matrix.

+

Double-precision floating-point 4x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2572 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x3< f64, defaultp > f64mat4x3
+
+ +

Default double-precision floating-point 4x3 matrix.

+

Double-precision floating-point 4x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2576 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4< f64, defaultp > f64mat4x4
+
+ +

Default double-precision floating-point 4x4 matrix.

+

Double-precision floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2580 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tquat< f64, defaultp > f64quat
+
+ +

Default double-precision floating-point quaternion.

+

Double-precision floating-point quaternion.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2596 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec1< f64, defaultp > f64vec1
+
+ +

Default double-precision floating-point vector of 1 components.

+

Double-precision floating-point vector of 1 component.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2532 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2< f64, defaultp > f64vec2
+
+ +

Default double-precision floating-point vector of 2 components.

+

Double-precision floating-point vector of 2 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2536 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3< f64, defaultp > f64vec3
+
+ +

Default double-precision floating-point vector of 3 components.

+

Double-precision floating-point vector of 3 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2540 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4< f64, defaultp > f64vec4
+
+ +

Default double-precision floating-point vector of 4 components.

+

Double-precision floating-point vector of 4 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2544 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::float32 float32
+
+ +

Default 32 bit single-precision floating-point scalar.

+

32 bit single-precision floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 84 of file type_float.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::float32 float32_t
+
+ +

Default 32 bit single-precision floating-point scalar.

+

32 bit single-precision floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1526 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::float64 float64
+
+ +

Default 64 bit double-precision floating-point scalar.

+

64 bit double-precision floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 85 of file type_float.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::float64 float64_t
+
+ +

Default 64 bit double-precision floating-point scalar.

+

64 bit double-precision floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1530 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2< f32, defaultp > fmat2
+
+ +

Default single-precision floating-point 2x2 matrix.

+

Single-precision floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision
+
+GLM_GTC_type_precision Single-precision floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 2408 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x2< f32, defaultp > fmat2x2
+
+ +

Default single-precision floating-point 2x2 matrix.

+

Single-precision floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision
+
+GLM_GTC_type_precision Single-precision floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 2372 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x3< f32, defaultp > fmat2x3
+
+ +

Default single-precision floating-point 2x3 matrix.

+

Single-precision floating-point 2x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2376 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat2x4< f32, defaultp > fmat2x4
+
+ +

Default single-precision floating-point 2x4 matrix.

+

Single-precision floating-point 2x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2380 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3< f32, defaultp > fmat3
+
+ +

Default single-precision floating-point 3x3 matrix.

+

Single-precision floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2412 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x2< f32, defaultp > fmat3x2
+
+ +

Default single-precision floating-point 3x2 matrix.

+

Single-precision floating-point 3x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2384 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x3< f32, defaultp > fmat3x3
+
+ +

Default single-precision floating-point 3x3 matrix.

+

Single-precision floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2388 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat3x4< f32, defaultp > fmat3x4
+
+ +

Default single-precision floating-point 3x4 matrix.

+

Single-precision floating-point 3x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2392 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4< f32, defaultp > fmat4
+
+ +

Default single-precision floating-point 4x4 matrix.

+

Single-precision floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2416 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x2< f32, defaultp > fmat4x2
+
+ +

Default single-precision floating-point 4x2 matrix.

+

Single-precision floating-point 4x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2396 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x3< f32, defaultp > fmat4x3
+
+ +

Default single-precision floating-point 4x3 matrix.

+

Single-precision floating-point 4x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2400 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tmat4x4< f32, defaultp > fmat4x4
+
+ +

Default single-precision floating-point 4x4 matrix.

+

Single-precision floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2404 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec1< float, defaultp > fvec1
+
+ +

Default single-precision floating-point vector of 1 components.

+

Single-precision floating-point vector of 1 component.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2356 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2< float, defaultp > fvec2
+
+ +

Default single-precision floating-point vector of 2 components.

+

Single-precision floating-point vector of 2 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2360 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3< float, defaultp > fvec3
+
+ +

Default single-precision floating-point vector of 3 components.

+

Single-precision floating-point vector of 3 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2364 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4< float, defaultp > fvec4
+
+ +

Default single-precision floating-point vector of 4 components.

+

Single-precision floating-point vector of 4 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 2368 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int16 highp_i16
+
+ +

High precision 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 261 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int32 highp_i32
+
+ +

High precision 32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 265 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int64 highp_i64
+
+ +

High precision 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 269 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int8 highp_i8
+
+ +

High precision 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 257 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int16 highp_int16
+
+ +

High precision 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 229 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int16 highp_int16_t
+
+ +

High precision 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 245 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int32 highp_int32
+
+ +

High precision 32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 233 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int32 highp_int32_t
+
+ +

32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 249 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int64 highp_int64
+
+ +

High precision 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 237 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int64 highp_int64_t
+
+ +

High precision 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 253 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int8 highp_int8
+
+ +

High precision 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 225 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int8 highp_int8_t
+
+ +

High precision 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 241 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint16 highp_u16
+
+ +

Medium precision 16 bit unsigned integer type.

+

High precision 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 870 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint32 highp_u32
+
+ +

Medium precision 32 bit unsigned integer type.

+

High precision 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 874 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint64 highp_u64
+
+ +

Medium precision 64 bit unsigned integer type.

+

High precision 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 878 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint8 highp_u8
+
+ +

Medium precision 8 bit unsigned integer type.

+

High precision 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 866 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint16 highp_uint16
+
+ +

Medium precision 16 bit unsigned integer type.

+

High precision 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 838 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint16 highp_uint16_t
+
+ +

Medium precision 16 bit unsigned integer type.

+

High precision 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 854 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint32 highp_uint32
+
+ +

Medium precision 32 bit unsigned integer type.

+

High precision 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 842 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint32 highp_uint32_t
+
+ +

Medium precision 32 bit unsigned integer type.

+

High precision 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 858 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint64 highp_uint64
+
+ +

Medium precision 64 bit unsigned integer type.

+

High precision 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 846 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint64 highp_uint64_t
+
+ +

Medium precision 64 bit unsigned integer type.

+

High precision 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 862 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint8 highp_uint8
+
+ +

Medium precision 8 bit unsigned integer type.

+

High precision 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 834 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint8 highp_uint8_t
+
+ +

Medium precision 8 bit unsigned integer type.

+

High precision 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 850 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int16 i16
+
+ +

16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 318 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec1< i16, defaultp > i16vec1
+
+ +

Default precision 16 bit signed integer scalar type.

+

16 bit signed integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 473 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2< i16, defaultp > i16vec2
+
+ +

Default precision 16 bit signed integer vector of 2 components type.

+

16 bit signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 477 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3< i16, defaultp > i16vec3
+
+ +

Default precision 16 bit signed integer vector of 3 components type.

+

16 bit signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 481 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4< i16, defaultp > i16vec4
+
+ +

Default precision 16 bit signed integer vector of 4 components type.

+

16 bit signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 485 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int32 i32
+
+ +

32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 322 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec1< i32, defaultp > i32vec1
+
+ +

Default precision 32 bit signed integer scalar type.

+

32 bit signed integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 552 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2< i32, defaultp > i32vec2
+
+ +

Default precision 32 bit signed integer vector of 2 components type.

+

32 bit signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 556 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3< i32, defaultp > i32vec3
+
+ +

Default precision 32 bit signed integer vector of 3 components type.

+

32 bit signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 560 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4< i32, defaultp > i32vec4
+
+ +

Default precision 32 bit signed integer vector of 4 components type.

+

32 bit signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 564 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int64 i64
+
+ +

64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 326 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec1< i64, defaultp > i64vec1
+
+ +

Default precision 64 bit signed integer scalar type.

+

64 bit signed integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 711 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2< i64, defaultp > i64vec2
+
+ +

Default precision 64 bit signed integer vector of 2 components type.

+

64 bit signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 715 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3< i64, defaultp > i64vec3
+
+ +

Default precision 64 bit signed integer vector of 3 components type.

+

64 bit signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 719 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4< i64, defaultp > i64vec4
+
+ +

Default precision 64 bit signed integer vector of 4 components type.

+

64 bit signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 723 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int8 i8
+
+ +

8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 314 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec1< i8, defaultp > i8vec1
+
+ +

Default precision 8 bit signed integer scalar type.

+

8 bit signed integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 393 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2< i8, defaultp > i8vec2
+
+ +

Default precision 8 bit signed integer vector of 2 components type.

+

8 bit signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 397 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3< i8, defaultp > i8vec3
+
+ +

Default precision 8 bit signed integer vector of 3 components type.

+

8 bit signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 401 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4< i8, defaultp > i8vec4
+
+ +

Default precision 8 bit signed integer vector of 4 components type.

+

8 bit signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 405 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int16 int16
+
+ +

16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 227 of file type_int.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int16 int16_t
+
+ +

16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 301 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int32 int32
+
+ +

32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 228 of file type_int.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int32 int32_t
+
+ +

32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 305 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int64 int64
+
+ +

64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 229 of file type_int.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int64 int64_t
+
+ +

64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 309 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int8 int8
+
+ +

8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 226 of file type_int.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int8 int8_t
+
+ +

8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 297 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int16 lowp_i16
+
+ +

Low precision 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 165 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int32 lowp_i32
+
+ +

Low precision 32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 169 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int64 lowp_i64
+
+ +

Low precision 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 173 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int8 lowp_i8
+
+ +

Low precision 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 161 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int16 lowp_int16
+
+ +

Low precision 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 133 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int16 lowp_int16_t
+
+ +

Low precision 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 149 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int32 lowp_int32
+
+ +

Low precision 32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 137 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int32 lowp_int32_t
+
+ +

Low precision 32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 153 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int64 lowp_int64
+
+ +

Low precision 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 141 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int64 lowp_int64_t
+
+ +

Low precision 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 157 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int8 lowp_int8
+
+ +

Low precision 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 129 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int8 lowp_int8_t
+
+ +

Low precision 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 145 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint16 lowp_u16
+
+ +

Low precision 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 770 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint32 lowp_u32
+
+ +

Low precision 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 774 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint64 lowp_u64
+
+ +

Low precision 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 778 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint8 lowp_u8
+
+ +

Low precision 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 766 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint16 lowp_uint16
+
+ +

Low precision 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 736 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint16 lowp_uint16_t
+
+ +

Low precision 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 753 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint32 lowp_uint32
+
+ +

Low precision 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 740 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint32 lowp_uint32_t
+
+ +

Low precision 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 757 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint64 lowp_uint64
+
+ +

Low precision 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 744 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint64 lowp_uint64_t
+
+ +

Low precision 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 761 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint8 lowp_uint8
+
+ +

Low precision 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 732 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint8 lowp_uint8_t
+
+ +

Low precision 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 749 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int16 mediump_i16
+
+ +

Medium precision 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 213 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int32 mediump_i32
+
+ +

Medium precision 32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 217 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int64 mediump_i64
+
+ +

Medium precision 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 221 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int8 mediump_i8
+
+ +

Medium precision 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 209 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int16 mediump_int16
+
+ +

Medium precision 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 181 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int16 mediump_int16_t
+
+ +

Medium precision 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 197 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int32 mediump_int32
+
+ +

Medium precision 32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 185 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int32 mediump_int32_t
+
+ +

Medium precision 32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 201 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int64 mediump_int64
+
+ +

Medium precision 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 189 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int64 mediump_int64_t
+
+ +

Medium precision 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 205 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int8 mediump_int8
+
+ +

Medium precision 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 177 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::int8 mediump_int8_t
+
+ +

Medium precision 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 193 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint16 mediump_u16
+
+ +

Medium precision 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 820 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint32 mediump_u32
+
+ +

Medium precision 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 824 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint64 mediump_u64
+
+ +

Medium precision 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 828 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint8 mediump_u8
+
+ +

Medium precision 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 816 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint16 mediump_uint16
+
+ +

Medium precision 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 788 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint16 mediump_uint16_t
+
+ +

Medium precision 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 804 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint32 mediump_uint32
+
+ +

Medium precision 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 792 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint32 mediump_uint32_t
+
+ +

Medium precision 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 808 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint64 mediump_uint64
+
+ +

Medium precision 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 796 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint64 mediump_uint64_t
+
+ +

Medium precision 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 812 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint8 mediump_uint8
+
+ +

Medium precision 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 784 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint8 mediump_uint8_t
+
+ +

Medium precision 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 800 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint16 u16
+
+ +

16 bit unsigned integer type.

+

Default precision 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 927 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec1< u16, defaultp > u16vec1
+
+ +

Default precision 16 bit unsigned integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1082 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2< u16, defaultp > u16vec2
+
+ +

Default precision 16 bit unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1086 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3< u16, defaultp > u16vec3
+
+ +

Default precision 16 bit unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1090 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4< u16, defaultp > u16vec4
+
+ +

Default precision 16 bit unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1094 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint32 u32
+
+ +

32 bit unsigned integer type.

+

Default precision 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 931 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec1< u32, defaultp > u32vec1
+
+ +

Default precision 32 bit unsigned integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1161 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2< u32, defaultp > u32vec2
+
+ +

Default precision 32 bit unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1165 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3< u32, defaultp > u32vec3
+
+ +

Default precision 32 bit unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1169 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4< u32, defaultp > u32vec4
+
+ +

Default precision 32 bit unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1173 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint64 u64
+
+ +

64 bit unsigned integer type.

+

Default precision 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 935 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec1< u64, defaultp > u64vec1
+
+ +

Default precision 64 bit unsigned integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1320 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2< u64, defaultp > u64vec2
+
+ +

Default precision 64 bit unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1324 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3< u64, defaultp > u64vec3
+
+ +

Default precision 64 bit unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1328 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4< u64, defaultp > u64vec4
+
+ +

Default precision 64 bit unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1332 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint8 u8
+
+ +

8 bit unsigned integer type.

+

Default precision 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 923 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec1< u8, defaultp > u8vec1
+
+ +

Default precision 8 bit unsigned integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1002 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2< u8, defaultp > u8vec2
+
+ +

Default precision 8 bit unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1006 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3< u8, defaultp > u8vec3
+
+ +

Default precision 8 bit unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1010 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4< u8, defaultp > u8vec4
+
+ +

Default precision 8 bit unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1014 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint16 uint16
+
+ +

16 bit unsigned integer type.

+

Default precision 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 232 of file type_int.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint16 uint16_t
+
+ +

16 bit unsigned integer type.

+

Default precision 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 910 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint32 uint32
+
+ +

32 bit unsigned integer type.

+

Default precision 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 233 of file type_int.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint32 uint32_t
+
+ +

32 bit unsigned integer type.

+

Default precision 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 914 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint64 uint64
+
+ +

64 bit unsigned integer type.

+

Default precision 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 234 of file type_int.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint64 uint64_t
+
+ +

64 bit unsigned integer type.

+

Default precision 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 918 of file fwd.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint8 uint8
+
+ +

8 bit unsigned integer type.

+

Default precision 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 231 of file type_int.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint8 uint8_t
+
+ +

8 bit unsigned integer type.

+

Default precision 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 906 of file fwd.hpp.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00182.html b/external/glm/doc/api/a00182.html new file mode 100644 index 0000000..93bc49c --- /dev/null +++ b/external/glm/doc/api/a00182.html @@ -0,0 +1,445 @@ + + + + + + +0.9.7: GLM_GTC_type_ptr + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTC_type_ptr
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL tmat2x2< T, defaultp > make_mat2 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat2x2< T, defaultp > make_mat2x2 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat2x3< T, defaultp > make_mat2x3 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat2x4< T, defaultp > make_mat2x4 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat3x3< T, defaultp > make_mat3 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat3x2< T, defaultp > make_mat3x2 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat3x3< T, defaultp > make_mat3x3 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat3x4< T, defaultp > make_mat3x4 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > make_mat4 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat4x2< T, defaultp > make_mat4x2 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat4x3< T, defaultp > make_mat4x3 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > make_mat4x4 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tquat< T, defaultp > make_quat (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tvec2< T, defaultp > make_vec2 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tvec3< T, defaultp > make_vec3 (T const *const ptr)
 
template<typename T >
GLM_FUNC_DECL tvec4< T, defaultp > make_vec4 (T const *const ptr)
 
template<typename genType >
GLM_FUNC_DECL genType::value_type const * value_ptr (genType const &vec)
 
+

Detailed Description

+

Handles the interaction between pointers and vector, matrix types.

+

This extension defines an overloaded function, glm::value_ptr, which takes any of the core template types. It returns a pointer to the memory layout of the object. Matrix types store their values in column-major order.

+

This is useful for uploading data to matrices or copying data to buffer objects.

+

Example:

#include <glm/glm.hpp>
+ +
+
glm::vec3 aVector(3);
+
glm::mat4 someMatrix(1.0);
+
+
glUniform3fv(uniformLoc, 1, glm::value_ptr(aVector));
+
glUniformMatrix4fv(uniformMatrixLoc, 1, GL_FALSE, glm::value_ptr(someMatrix));
+

<glm/gtc/type_ptr.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat2x2<T, defaultp> glm::make_mat2 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat2x2<T, defaultp> glm::make_mat2x2 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat2x3<T, defaultp> glm::make_mat2x3 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat2x4<T, defaultp> glm::make_mat2x4 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat3x3<T, defaultp> glm::make_mat3 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat3x2<T, defaultp> glm::make_mat3x2 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat3x3<T, defaultp> glm::make_mat3x3 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat3x4<T, defaultp> glm::make_mat3x4 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::make_mat4 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x2<T, defaultp> glm::make_mat4x2 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x3<T, defaultp> glm::make_mat4x3 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::make_mat4x4 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tquat<T, defaultp> glm::make_quat (T const *const ptr)
+
+ +

Build a quaternion from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec2<T, defaultp> glm::make_vec2 (T const *const ptr)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec3<T, defaultp> glm::make_vec3 (T const *const ptr)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec4<T, defaultp> glm::make_vec4 (T const *const ptr)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType::value_type const* glm::value_ptr (genType const & vec)
+
+ +

Return the constant address to the data of the input parameter.

+
See also
GLM_GTC_type_ptr
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00183.html b/external/glm/doc/api/a00183.html new file mode 100644 index 0000000..20f343b --- /dev/null +++ b/external/glm/doc/api/a00183.html @@ -0,0 +1,233 @@ + + + + + + +0.9.7: GLM_GTC_ulp + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL uint float_distance (T const &x, T const &y)
 
template<typename T , template< typename > class vecType>
GLM_FUNC_DECL vecType< uint > float_distance (vecType< T > const &x, vecType< T > const &y)
 
template<typename genType >
GLM_FUNC_DECL genType next_float (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType next_float (genType const &x, uint const &Distance)
 
template<typename genType >
GLM_FUNC_DECL genType prev_float (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType prev_float (genType const &x, uint const &Distance)
 
+

Detailed Description

+

Allow the measurement of the accuracy of a function against a reference implementation.

+

This extension works on floating-point data and provide results in ULP. <glm/gtc/ulp.hpp> need to be included to use these features.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint glm::float_distance (T const & x,
T const & y 
)
+
+ +

Return the distance in the number of ULP between 2 scalars.

+
See also
GLM_GTC_ulp
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<uint> glm::float_distance (vecType< T > const & x,
vecType< T > const & y 
)
+
+ +

Return the distance in the number of ULP between 2 vectors.

+
See also
GLM_GTC_ulp
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::next_float (genType const & x)
+
+ +

Return the next ULP value(s) after the input value(s).

+
See also
GLM_GTC_ulp
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::next_float (genType const & x,
uint const & Distance 
)
+
+ +

Return the value(s) ULP distance after the input value(s).

+
See also
GLM_GTC_ulp
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::prev_float (genType const & x)
+
+ +

Return the previous ULP value(s) before the input value(s).

+
See also
GLM_GTC_ulp
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::prev_float (genType const & x,
uint const & Distance 
)
+
+ +

Return the value(s) ULP distance before the input value(s).

+
See also
GLM_GTC_ulp
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00184.html b/external/glm/doc/api/a00184.html new file mode 100644 index 0000000..ebb626e --- /dev/null +++ b/external/glm/doc/api/a00184.html @@ -0,0 +1,53 @@ + + + + + + +0.9.7: GLM_GTC_vec1 + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
+

Add vec1, ivec1, uvec1 and bvec1 types.

+

<glm/gtc/vec1.hpp> need to be included to use these functionalities.

+
+ + + + diff --git a/external/glm/doc/api/a00185.html b/external/glm/doc/api/a00185.html new file mode 100644 index 0000000..e5752d1 --- /dev/null +++ b/external/glm/doc/api/a00185.html @@ -0,0 +1,1293 @@ + + + + + + +0.9.7: GLM_GTX_associated_min_max + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_associated_min_max
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , typename U >
GLM_FUNC_DECL U associatedMax (T x, U a, T y, U b)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL tvec2< U, P > associatedMax (vecType< T, P > const &x, vecType< U, P > const &a, vecType< T, P > const &y, vecType< U, P > const &b)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > associatedMax (T x, vecType< U, P > const &a, T y, vecType< U, P > const &b)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMax (vecType< T, P > const &x, U a, vecType< T, P > const &y, U b)
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMax (T x, U a, T y, U b, T z, U c)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMax (vecType< T, P > const &x, vecType< U, P > const &a, vecType< T, P > const &y, vecType< U, P > const &b, vecType< T, P > const &z, vecType< U, P > const &c)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > associatedMax (T x, vecType< U, P > const &a, T y, vecType< U, P > const &b, T z, vecType< U, P > const &c)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMax (vecType< T, P > const &x, U a, vecType< T, P > const &y, U b, vecType< T, P > const &z, U c)
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMax (T x, U a, T y, U b, T z, U c, T w, U d)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMax (vecType< T, P > const &x, vecType< U, P > const &a, vecType< T, P > const &y, vecType< U, P > const &b, vecType< T, P > const &z, vecType< U, P > const &c, vecType< T, P > const &w, vecType< U, P > const &d)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMax (T x, vecType< U, P > const &a, T y, vecType< U, P > const &b, T z, vecType< U, P > const &c, T w, vecType< U, P > const &d)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMax (vecType< T, P > const &x, U a, vecType< T, P > const &y, U b, vecType< T, P > const &z, U c, vecType< T, P > const &w, U d)
 
template<typename T , typename U , precision P>
GLM_FUNC_DECL U associatedMin (T x, U a, T y, U b)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL tvec2< U, P > associatedMin (vecType< T, P > const &x, vecType< U, P > const &a, vecType< T, P > const &y, vecType< U, P > const &b)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMin (T x, const vecType< U, P > &a, T y, const vecType< U, P > &b)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMin (vecType< T, P > const &x, U a, vecType< T, P > const &y, U b)
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMin (T x, U a, T y, U b, T z, U c)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMin (vecType< T, P > const &x, vecType< U, P > const &a, vecType< T, P > const &y, vecType< U, P > const &b, vecType< T, P > const &z, vecType< U, P > const &c)
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMin (T x, U a, T y, U b, T z, U c, T w, U d)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMin (vecType< T, P > const &x, vecType< U, P > const &a, vecType< T, P > const &y, vecType< U, P > const &b, vecType< T, P > const &z, vecType< U, P > const &c, vecType< T, P > const &w, vecType< U, P > const &d)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMin (T x, vecType< U, P > const &a, T y, vecType< U, P > const &b, T z, vecType< U, P > const &c, T w, vecType< U, P > const &d)
 
template<typename T , typename U , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< U, P > associatedMin (vecType< T, P > const &x, U a, vecType< T, P > const &y, U b, vecType< T, P > const &z, U c, vecType< T, P > const &w, U d)
 
+

Detailed Description

+

Min and max functions that return associated values not the compared onces.

+

<glm/gtx/associated_min_max.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL U glm::associatedMax (T x,
U a,
T y,
U b 
)
+
+ +

Maximum comparison between 2 variables and returns 2 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec2<U, P> glm::associatedMax (vecType< T, P > const & x,
vecType< U, P > const & a,
vecType< T, P > const & y,
vecType< U, P > const & b 
)
+
+ +

Maximum comparison between 2 variables and returns 2 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::associatedMax (T x,
vecType< U, P > const & a,
T y,
vecType< U, P > const & b 
)
+
+ +

Maximum comparison between 2 variables and returns 2 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<U, P> glm::associatedMax (vecType< T, P > const & x,
U a,
vecType< T, P > const & y,
U b 
)
+
+ +

Maximum comparison between 2 variables and returns 2 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL U glm::associatedMax (T x,
U a,
T y,
U b,
T z,
U c 
)
+
+ +

Maximum comparison between 3 variables and returns 3 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<U, P> glm::associatedMax (vecType< T, P > const & x,
vecType< U, P > const & a,
vecType< T, P > const & y,
vecType< U, P > const & b,
vecType< T, P > const & z,
vecType< U, P > const & c 
)
+
+ +

Maximum comparison between 3 variables and returns 3 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::associatedMax (T x,
vecType< U, P > const & a,
T y,
vecType< U, P > const & b,
T z,
vecType< U, P > const & c 
)
+
+ +

Maximum comparison between 3 variables and returns 3 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<U, P> glm::associatedMax (vecType< T, P > const & x,
U a,
vecType< T, P > const & y,
U b,
vecType< T, P > const & z,
U c 
)
+
+ +

Maximum comparison between 3 variables and returns 3 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL U glm::associatedMax (T x,
U a,
T y,
U b,
T z,
U c,
T w,
U d 
)
+
+ +

Maximum comparison between 4 variables and returns 4 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<U, P> glm::associatedMax (vecType< T, P > const & x,
vecType< U, P > const & a,
vecType< T, P > const & y,
vecType< U, P > const & b,
vecType< T, P > const & z,
vecType< U, P > const & c,
vecType< T, P > const & w,
vecType< U, P > const & d 
)
+
+ +

Maximum comparison between 4 variables and returns 4 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<U, P> glm::associatedMax (T x,
vecType< U, P > const & a,
T y,
vecType< U, P > const & b,
T z,
vecType< U, P > const & c,
T w,
vecType< U, P > const & d 
)
+
+ +

Maximum comparison between 4 variables and returns 4 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<U, P> glm::associatedMax (vecType< T, P > const & x,
U a,
vecType< T, P > const & y,
U b,
vecType< T, P > const & z,
U c,
vecType< T, P > const & w,
U d 
)
+
+ +

Maximum comparison between 4 variables and returns 4 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL U glm::associatedMin (T x,
U a,
T y,
U b 
)
+
+ +

Minimum comparison between 2 variables and returns 2 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec2<U, P> glm::associatedMin (vecType< T, P > const & x,
vecType< U, P > const & a,
vecType< T, P > const & y,
vecType< U, P > const & b 
)
+
+ +

Minimum comparison between 2 variables and returns 2 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<U, P> glm::associatedMin (T x,
const vecType< U, P > & a,
T y,
const vecType< U, P > & b 
)
+
+ +

Minimum comparison between 2 variables and returns 2 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<U, P> glm::associatedMin (vecType< T, P > const & x,
U a,
vecType< T, P > const & y,
U b 
)
+
+ +

Minimum comparison between 2 variables and returns 2 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL U glm::associatedMin (T x,
U a,
T y,
U b,
T z,
U c 
)
+
+ +

Minimum comparison between 3 variables and returns 3 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<U, P> glm::associatedMin (vecType< T, P > const & x,
vecType< U, P > const & a,
vecType< T, P > const & y,
vecType< U, P > const & b,
vecType< T, P > const & z,
vecType< U, P > const & c 
)
+
+ +

Minimum comparison between 3 variables and returns 3 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL U glm::associatedMin (T x,
U a,
T y,
U b,
T z,
U c,
T w,
U d 
)
+
+ +

Minimum comparison between 4 variables and returns 4 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<U, P> glm::associatedMin (vecType< T, P > const & x,
vecType< U, P > const & a,
vecType< T, P > const & y,
vecType< U, P > const & b,
vecType< T, P > const & z,
vecType< U, P > const & c,
vecType< T, P > const & w,
vecType< U, P > const & d 
)
+
+ +

Minimum comparison between 4 variables and returns 4 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<U, P> glm::associatedMin (T x,
vecType< U, P > const & a,
T y,
vecType< U, P > const & b,
T z,
vecType< U, P > const & c,
T w,
vecType< U, P > const & d 
)
+
+ +

Minimum comparison between 4 variables and returns 4 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<U, P> glm::associatedMin (vecType< T, P > const & x,
U a,
vecType< T, P > const & y,
U b,
vecType< T, P > const & z,
U c,
vecType< T, P > const & w,
U d 
)
+
+ +

Minimum comparison between 4 variables and returns 4 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00186.html b/external/glm/doc/api/a00186.html new file mode 100644 index 0000000..8ea8b72 --- /dev/null +++ b/external/glm/doc/api/a00186.html @@ -0,0 +1,253 @@ + + + + + + +0.9.7: GLM_GTX_bit + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genIUType >
GLM_FUNC_DECL genIUType highestBitValue (genIUType Value)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > highestBitValue (vecType< T, P > const &value)
 
template<typename genIUType >
GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoAbove (genIUType Value)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_DEPRECATED GLM_FUNC_DECL vecType< T, P > powerOfTwoAbove (vecType< T, P > const &value)
 
template<typename genIUType >
GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoBelow (genIUType Value)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_DEPRECATED GLM_FUNC_DECL vecType< T, P > powerOfTwoBelow (vecType< T, P > const &value)
 
template<typename genIUType >
GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoNearest (genIUType Value)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_DEPRECATED GLM_FUNC_DECL vecType< T, P > powerOfTwoNearest (vecType< T, P > const &value)
 
+

Detailed Description

+

Allow to perform bit operations on integer values.

+

<glm/gtx/bit.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genIUType glm::highestBitValue (genIUType Value)
+
+
See also
GLM_GTX_bit
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::highestBitValue (vecType< T, P > const & value)
+
+ +

Find the highest bit set to 1 in a integer variable and return its value.

+
See also
GLM_GTX_bit
+ +
+
+ +
+
+ + + + + + + + +
GLM_DEPRECATED GLM_FUNC_DECL genIUType glm::powerOfTwoAbove (genIUType Value)
+
+ +

Return the power of two number which value is just higher the input value.

+

Deprecated, use ceilPowerOfTwo from GTC_round instead

+
See also
GLM_GTC_round
+
+GLM_GTX_bit
+ +
+
+ +
+
+ + + + + + + + +
GLM_DEPRECATED GLM_FUNC_DECL vecType<T, P> glm::powerOfTwoAbove (vecType< T, P > const & value)
+
+ +

Return the power of two number which value is just higher the input value.

+

Deprecated, use ceilPowerOfTwo from GTC_round instead

+
See also
GLM_GTC_round
+
+GLM_GTX_bit
+ +
+
+ +
+
+ + + + + + + + +
GLM_DEPRECATED GLM_FUNC_DECL genIUType glm::powerOfTwoBelow (genIUType Value)
+
+ +

Return the power of two number which value is just lower the input value.

+

Deprecated, use floorPowerOfTwo from GTC_round instead

+
See also
GLM_GTC_round
+
+GLM_GTX_bit
+ +
+
+ +
+
+ + + + + + + + +
GLM_DEPRECATED GLM_FUNC_DECL vecType<T, P> glm::powerOfTwoBelow (vecType< T, P > const & value)
+
+ +

Return the power of two number which value is just lower the input value.

+

Deprecated, use floorPowerOfTwo from GTC_round instead

+
See also
GLM_GTC_round
+
+GLM_GTX_bit
+ +
+
+ +
+
+ + + + + + + + +
GLM_DEPRECATED GLM_FUNC_DECL genIUType glm::powerOfTwoNearest (genIUType Value)
+
+ +

Return the power of two number which value is the closet to the input value.

+

Deprecated, use roundPowerOfTwo from GTC_round instead

+
See also
GLM_GTC_round
+
+GLM_GTX_bit
+ +
+
+ +
+
+ + + + + + + + +
GLM_DEPRECATED GLM_FUNC_DECL vecType<T, P> glm::powerOfTwoNearest (vecType< T, P > const & value)
+
+ +

Return the power of two number which value is the closet to the input value.

+

Deprecated, use roundPowerOfTwo from GTC_round instead

+
See also
GLM_GTC_round
+
+GLM_GTX_bit
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00187.html b/external/glm/doc/api/a00187.html new file mode 100644 index 0000000..10b9ff2 --- /dev/null +++ b/external/glm/doc/api/a00187.html @@ -0,0 +1,103 @@ + + + + + + +0.9.7: GLM_GTX_closest_point + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_closest_point
+
+
+ + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > closestPointOnLine (tvec3< T, P > const &point, tvec3< T, P > const &a, tvec3< T, P > const &b)
 
+template<typename T , precision P>
GLM_FUNC_DECL tvec2< T, P > closestPointOnLine (tvec2< T, P > const &point, tvec2< T, P > const &a, tvec2< T, P > const &b)
 
+

Detailed Description

+

Find the point on a straight line which is the closet of a point.

+

<glm/gtx/closest_point.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::closestPointOnLine (tvec3< T, P > const & point,
tvec3< T, P > const & a,
tvec3< T, P > const & b 
)
+
+ +

Find the point on a straight line which is the closet of a point.

+
See also
GLM_GTX_closest_point
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00188.html b/external/glm/doc/api/a00188.html new file mode 100644 index 0000000..3f8ae78 --- /dev/null +++ b/external/glm/doc/api/a00188.html @@ -0,0 +1,213 @@ + + + + + + +0.9.7: GLM_GTX_color_space + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > hsvColor (tvec3< T, P > const &rgbValue)
 
template<typename T , precision P>
GLM_FUNC_DECL T luminosity (tvec3< T, P > const &color)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > rgbColor (tvec3< T, P > const &hsvValue)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > saturation (T const s)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > saturation (T const s, tvec3< T, P > const &color)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< T, P > saturation (T const s, tvec4< T, P > const &color)
 
+

Detailed Description

+

Related to RGB to HSV conversions and operations.

+

<glm/gtx/color_space.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::hsvColor (tvec3< T, P > const & rgbValue)
+
+ +

Converts a color from RGB color space to its color in HSV color space.

+
See also
GLM_GTX_color_space
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::luminosity (tvec3< T, P > const & color)
+
+ +

Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals.

+
See also
GLM_GTX_color_space
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::rgbColor (tvec3< T, P > const & hsvValue)
+
+ +

Converts a color from HSV color space to its color in RGB color space.

+
See also
GLM_GTX_color_space
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::saturation (T const s)
+
+ +

Build a saturation matrix.

+
See also
GLM_GTX_color_space
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::saturation (T const s,
tvec3< T, P > const & color 
)
+
+ +

Modify the saturation of a color.

+
See also
GLM_GTX_color_space
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec4<T, P> glm::saturation (T const s,
tvec4< T, P > const & color 
)
+
+ +

Modify the saturation of a color.

+
See also
GLM_GTX_color_space
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00189.html b/external/glm/doc/api/a00189.html new file mode 100644 index 0000000..f272d45 --- /dev/null +++ b/external/glm/doc/api/a00189.html @@ -0,0 +1,153 @@ + + + + + + +0.9.7: GLM_GTX_color_space_YCoCg + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_color_space_YCoCg
+
+
+ + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > rgb2YCoCg (tvec3< T, P > const &rgbColor)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > rgb2YCoCgR (tvec3< T, P > const &rgbColor)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > YCoCg2rgb (tvec3< T, P > const &YCoCgColor)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > YCoCgR2rgb (tvec3< T, P > const &YCoCgColor)
 
+

Detailed Description

+

RGB to YCoCg conversions and operations.

+

<glm/gtx/color_space_YCoCg.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::rgb2YCoCg (tvec3< T, P > const & rgbColor)
+
+ +

Convert a color from RGB color space to YCoCg color space.

+
See also
GLM_GTX_color_space_YCoCg
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::rgb2YCoCgR (tvec3< T, P > const & rgbColor)
+
+ +

Convert a color from RGB color space to YCoCgR color space.

+
See also
"YCoCg-R: A Color Space with RGB Reversibility and Low Dynamic Range"
+
+GLM_GTX_color_space_YCoCg
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::YCoCg2rgb (tvec3< T, P > const & YCoCgColor)
+
+ +

Convert a color from YCoCg color space to RGB color space.

+
See also
GLM_GTX_color_space_YCoCg
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::YCoCgR2rgb (tvec3< T, P > const & YCoCgColor)
+
+ +

Convert a color from YCoCgR color space to RGB color space.

+
See also
"YCoCg-R: A Color Space with RGB Reversibility and Low Dynamic Range"
+
+GLM_GTX_color_space_YCoCg
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00190.html b/external/glm/doc/api/a00190.html new file mode 100644 index 0000000..f107b3d --- /dev/null +++ b/external/glm/doc/api/a00190.html @@ -0,0 +1,117 @@ + + + + + + +0.9.7: GLM_GTX_common + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+ +
+ + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fmod (vecType< T, P > const &v)
 
template<typename genType >
GLM_FUNC_DECL genType::bool_type isdenormal (genType const &x)
 
+

Detailed Description

+

Provide functions to increase the compatibility with Cg and HLSL languages.

+

<glm/gtx/common.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::fmod (vecType< T, P > const & v)
+
+ +

Similiar to 'mod' but with a different rounding and integer support.

+

Returns 'x - y * trunc(x/y)' instead of 'x - y * floor(x/y)'

+
See also
GLSL mod vs HLSL fmod
+
+GLSL mod man page
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType::bool_type glm::isdenormal (genType const & x)
+
+ +

Returns true if x is a denormalized number Numbers whose absolute value is too small to be represented in the normal format are represented in an alternate, denormalized format.

+

This format is less precise but can represent values closer to zero.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL isnan man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00191.html b/external/glm/doc/api/a00191.html new file mode 100644 index 0000000..488533b --- /dev/null +++ b/external/glm/doc/api/a00191.html @@ -0,0 +1,312 @@ + + + + + + +0.9.7: GLM_GTX_compatibility + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_compatibility
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

+typedef bool bool1
 
+typedef bool bool1x1
 
+typedef tvec2< bool, highp > bool2
 
+typedef tmat2x2< bool, highp > bool2x2
 
+typedef tmat2x3< bool, highp > bool2x3
 
+typedef tmat2x4< bool, highp > bool2x4
 
+typedef tvec3< bool, highp > bool3
 
+typedef tmat3x2< bool, highp > bool3x2
 
+typedef tmat3x3< bool, highp > bool3x3
 
+typedef tmat3x4< bool, highp > bool3x4
 
+typedef tvec4< bool, highp > bool4
 
+typedef tmat4x2< bool, highp > bool4x2
 
+typedef tmat4x3< bool, highp > bool4x3
 
+typedef tmat4x4< bool, highp > bool4x4
 
+typedef double double1
 
+typedef double double1x1
 
+typedef tvec2< double, highp > double2
 
+typedef tmat2x2< double, highp > double2x2
 
+typedef tmat2x3< double, highp > double2x3
 
+typedef tmat2x4< double, highp > double2x4
 
+typedef tvec3< double, highp > double3
 
+typedef tmat3x2< double, highp > double3x2
 
+typedef tmat3x3< double, highp > double3x3
 
+typedef tmat3x4< double, highp > double3x4
 
+typedef tvec4< double, highp > double4
 
+typedef tmat4x2< double, highp > double4x2
 
+typedef tmat4x3< double, highp > double4x3
 
+typedef tmat4x4< double, highp > double4x4
 
+typedef float float1
 
+typedef float float1x1
 
+typedef tvec2< float, highp > float2
 
+typedef tmat2x2< float, highp > float2x2
 
+typedef tmat2x3< float, highp > float2x3
 
+typedef tmat2x4< float, highp > float2x4
 
+typedef tvec3< float, highp > float3
 
+typedef tmat3x2< float, highp > float3x2
 
+typedef tmat3x3< float, highp > float3x3
 
+typedef tmat3x4< float, highp > float3x4
 
+typedef tvec4< float, highp > float4
 
+typedef tmat4x2< float, highp > float4x2
 
+typedef tmat4x3< float, highp > float4x3
 
+typedef tmat4x4< float, highp > float4x4
 
+typedef int int1
 
+typedef int int1x1
 
+typedef tvec2< int, highp > int2
 
+typedef tmat2x2< int, highp > int2x2
 
+typedef tmat2x3< int, highp > int2x3
 
+typedef tmat2x4< int, highp > int2x4
 
+typedef tvec3< int, highp > int3
 
+typedef tmat3x2< int, highp > int3x2
 
+typedef tmat3x3< int, highp > int3x3
 
+typedef tmat3x4< int, highp > int3x4
 
+typedef tvec4< int, highp > int4
 
+typedef tmat4x2< int, highp > int4x2
 
+typedef tmat4x3< int, highp > int4x3
 
+typedef tmat4x4< int, highp > int4x4
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+template<typename T , precision P>
GLM_FUNC_QUALIFIER T atan2 (T x, T y)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec2< T, P > atan2 (const tvec2< T, P > &x, const tvec2< T, P > &y)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec3< T, P > atan2 (const tvec3< T, P > &x, const tvec3< T, P > &y)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec4< T, P > atan2 (const tvec4< T, P > &x, const tvec4< T, P > &y)
 
+template<typename genType >
GLM_FUNC_DECL bool isfinite (genType const &x)
 
+template<typename T , precision P>
GLM_FUNC_DECL tvec1< bool, P > isfinite (const tvec1< T, P > &x)
 
+template<typename T , precision P>
GLM_FUNC_DECL tvec2< bool, P > isfinite (const tvec2< T, P > &x)
 
+template<typename T , precision P>
GLM_FUNC_DECL tvec3< bool, P > isfinite (const tvec3< T, P > &x)
 
+template<typename T , precision P>
GLM_FUNC_DECL tvec4< bool, P > isfinite (const tvec4< T, P > &x)
 
+template<typename T >
GLM_FUNC_QUALIFIER T lerp (T x, T y, T a)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec2< T, P > lerp (const tvec2< T, P > &x, const tvec2< T, P > &y, T a)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec3< T, P > lerp (const tvec3< T, P > &x, const tvec3< T, P > &y, T a)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec4< T, P > lerp (const tvec4< T, P > &x, const tvec4< T, P > &y, T a)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec2< T, P > lerp (const tvec2< T, P > &x, const tvec2< T, P > &y, const tvec2< T, P > &a)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec3< T, P > lerp (const tvec3< T, P > &x, const tvec3< T, P > &y, const tvec3< T, P > &a)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec4< T, P > lerp (const tvec4< T, P > &x, const tvec4< T, P > &y, const tvec4< T, P > &a)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER T saturate (T x)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec2< T, P > saturate (const tvec2< T, P > &x)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec3< T, P > saturate (const tvec3< T, P > &x)
 
+template<typename T , precision P>
GLM_FUNC_QUALIFIER tvec4< T, P > saturate (const tvec4< T, P > &x)
 
+

Detailed Description

+

Provide functions to increase the compatibility with Cg and HLSL languages.

+

<glm/gtx/compatibility.hpp> need to be included to use these functionalities.

+
+ + + + diff --git a/external/glm/doc/api/a00192.html b/external/glm/doc/api/a00192.html new file mode 100644 index 0000000..df58531 --- /dev/null +++ b/external/glm/doc/api/a00192.html @@ -0,0 +1,149 @@ + + + + + + +0.9.7: GLM_GTX_component_wise + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_component_wise
+
+
+ + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType::value_type compAdd (genType const &v)
 
template<typename genType >
GLM_FUNC_DECL genType::value_type compMax (genType const &v)
 
template<typename genType >
GLM_FUNC_DECL genType::value_type compMin (genType const &v)
 
template<typename genType >
GLM_FUNC_DECL genType::value_type compMul (genType const &v)
 
+

Detailed Description

+

Operations between components of a type.

+

<glm/gtx/component_wise.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType::value_type glm::compAdd (genType const & v)
+
+ +

Add all vector components together.

+
See also
GLM_GTX_component_wise
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType::value_type glm::compMax (genType const & v)
+
+ +

Find the maximum value between single vector components.

+
See also
GLM_GTX_component_wise
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType::value_type glm::compMin (genType const & v)
+
+ +

Find the minimum value between single vector components.

+
See also
GLM_GTX_component_wise
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType::value_type glm::compMul (genType const & v)
+
+ +

Multiply all vector components together.

+
See also
GLM_GTX_component_wise
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00193.html b/external/glm/doc/api/a00193.html new file mode 100644 index 0000000..7eb5dc7 --- /dev/null +++ b/external/glm/doc/api/a00193.html @@ -0,0 +1,464 @@ + + + + + + +0.9.7: GLM_GTX_dual_quaternion + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_dual_quaternion
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef highp_ddualquat ddualquat
 
typedef highp_fdualquat dualquat
 
typedef highp_fdualquat fdualquat
 
typedef tdualquat< double, highp > highp_ddualquat
 
typedef tdualquat< float, highp > highp_dualquat
 
typedef tdualquat< float, highp > highp_fdualquat
 
typedef tdualquat< double, lowp > lowp_ddualquat
 
typedef tdualquat< float, lowp > lowp_dualquat
 
typedef tdualquat< float, lowp > lowp_fdualquat
 
typedef tdualquat< double, mediump > mediump_ddualquat
 
typedef tdualquat< float, mediump > mediump_dualquat
 
typedef tdualquat< float, mediump > mediump_fdualquat
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tdualquat< T, P > dualquat_cast (tmat2x4< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tdualquat< T, P > dualquat_cast (tmat3x4< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tdualquat< T, P > inverse (tdualquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL tdualquat< T, P > lerp (tdualquat< T, P > const &x, tdualquat< T, P > const &y, T const &a)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat2x4< T, P > mat2x4_cast (tdualquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x4< T, P > mat3x4_cast (tdualquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tdualquat< T, P > normalize (tdualquat< T, P > const &q)
 
+

Detailed Description

+

Defines a templated dual-quaternion type and several dual-quaternion operations.

+

<glm/gtx/dual_quaternion.hpp> need to be included to use these functionalities.

+

Typedef Documentation

+ +
+
+ + + + +
typedef highp_ddualquat ddualquat
+
+ +

Dual-quaternion of default double-precision floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 283 of file dual_quaternion.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_fdualquat dualquat
+
+ +

Dual-quaternion of floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 259 of file dual_quaternion.hpp.

+ +
+
+ +
+
+ + + + +
typedef highp_fdualquat fdualquat
+
+ +

Dual-quaternion of single-precision floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 264 of file dual_quaternion.hpp.

+ +
+
+ +
+
+ + + + +
typedef tdualquat<double, highp> highp_ddualquat
+
+ +

Dual-quaternion of high double-precision floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 252 of file dual_quaternion.hpp.

+ +
+
+ +
+
+ + + + +
typedef tdualquat<float, highp> highp_dualquat
+
+ +

Dual-quaternion of high single-precision floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 220 of file dual_quaternion.hpp.

+ +
+
+ +
+
+ + + + +
typedef tdualquat<float, highp> highp_fdualquat
+
+ +

Dual-quaternion of high single-precision floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 236 of file dual_quaternion.hpp.

+ +
+
+ +
+
+ + + + +
typedef tdualquat<double, lowp> lowp_ddualquat
+
+ +

Dual-quaternion of low double-precision floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 242 of file dual_quaternion.hpp.

+ +
+
+ +
+
+ + + + +
typedef tdualquat<float, lowp> lowp_dualquat
+
+ +

Dual-quaternion of low single-precision floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 210 of file dual_quaternion.hpp.

+ +
+
+ +
+
+ + + + +
typedef tdualquat<float, lowp> lowp_fdualquat
+
+ +

Dual-quaternion of low single-precision floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 226 of file dual_quaternion.hpp.

+ +
+
+ +
+
+ + + + +
typedef tdualquat<double, mediump> mediump_ddualquat
+
+ +

Dual-quaternion of medium double-precision floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 247 of file dual_quaternion.hpp.

+ +
+
+ +
+
+ + + + +
typedef tdualquat<float, mediump> mediump_dualquat
+
+ +

Dual-quaternion of medium single-precision floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 215 of file dual_quaternion.hpp.

+ +
+
+ +
+
+ + + + +
typedef tdualquat<float, mediump> mediump_fdualquat
+
+ +

Dual-quaternion of medium single-precision floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 231 of file dual_quaternion.hpp.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tdualquat<T, P> glm::dualquat_cast (tmat2x4< T, P > const & x)
+
+ +

Converts a 2 * 4 matrix (matrix which holds real and dual parts) to a quaternion.

+
See also
GLM_GTX_dual_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tdualquat<T, P> glm::dualquat_cast (tmat3x4< T, P > const & x)
+
+ +

Converts a 3 * 4 matrix (augmented matrix rotation + translation) to a quaternion.

+
See also
GLM_GTX_dual_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tdualquat<T, P> glm::inverse (tdualquat< T, P > const & q)
+
+ +

Returns the q inverse.

+
See also
GLM_GTX_dual_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tdualquat<T, P> glm::lerp (tdualquat< T, P > const & x,
tdualquat< T, P > const & y,
T const & a 
)
+
+ +

Returns the linear interpolation of two dual quaternion.

+
See also
gtc_dual_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat2x4<T, P> glm::mat2x4_cast (tdualquat< T, P > const & x)
+
+ +

Converts a quaternion to a 2 * 4 matrix.

+
See also
GLM_GTX_dual_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat3x4<T, P> glm::mat3x4_cast (tdualquat< T, P > const & x)
+
+ +

Converts a quaternion to a 3 * 4 matrix.

+
See also
GLM_GTX_dual_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tdualquat<T, P> glm::normalize (tdualquat< T, P > const & q)
+
+ +

Returns the normalized quaternion.

+
See also
GLM_GTX_dual_quaternion
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00194.html b/external/glm/doc/api/a00194.html new file mode 100644 index 0000000..d81dba1 --- /dev/null +++ b/external/glm/doc/api/a00194.html @@ -0,0 +1,565 @@ + + + + + + +0.9.7: GLM_GTX_euler_angles + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_euler_angles
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleX (T const &angleX)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleXY (T const &angleX, T const &angleY)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleXYZ (T const &t1, T const &t2, T const &t3)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleXZ (T const &angleX, T const &angleZ)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleY (T const &angleY)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleYX (T const &angleY, T const &angleX)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleYXZ (T const &yaw, T const &pitch, T const &roll)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleYZ (T const &angleY, T const &angleZ)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleZ (T const &angleZ)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleZX (T const &angle, T const &angleX)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > eulerAngleZY (T const &angleZ, T const &angleY)
 
template<typename T >
GLM_FUNC_DECL void extractEulerAngleXYZ (tmat4x4< T, defaultp > &M, T &t1, T &t2, T &t3)
 
template<typename T >
GLM_FUNC_DECL tmat2x2< T, defaultp > orientate2 (T const &angle)
 
template<typename T >
GLM_FUNC_DECL tmat3x3< T, defaultp > orientate3 (T const &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > orientate3 (tvec3< T, P > const &angles)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > orientate4 (tvec3< T, P > const &angles)
 
template<typename T >
GLM_FUNC_DECL tmat4x4< T, defaultp > yawPitchRoll (T const &yaw, T const &pitch, T const &roll)
 
+

Detailed Description

+

Build matrices from Euler angles.

+

<glm/gtx/euler_angles.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::eulerAngleX (T const & angleX)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle X.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::eulerAngleXY (T const & angleX,
T const & angleY 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::eulerAngleXYZ (T const & t1,
T const & t2,
T const & t3 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * Z).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::eulerAngleXZ (T const & angleX,
T const & angleZ 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::eulerAngleY (T const & angleY)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Y.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::eulerAngleYX (T const & angleY,
T const & angleX 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::eulerAngleYXZ (T const & yaw,
T const & pitch,
T const & roll 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::eulerAngleYZ (T const & angleY,
T const & angleZ 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::eulerAngleZ (T const & angleZ)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Z.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::eulerAngleZX (T const & angle,
T const & angleX 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::eulerAngleZY (T const & angleZ,
T const & angleY 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL void glm::extractEulerAngleXYZ (tmat4x4< T, defaultp > & M,
T & t1,
T & t2,
T & t3 
)
+
+ +

Extracts the (X * Y * Z) Euler angles from the rotation matrix M.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat2x2<T, defaultp> glm::orientate2 (T const & angle)
+
+ +

Creates a 2D 2 * 2 rotation matrix from an euler angle.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat3x3<T, defaultp> glm::orientate3 (T const & angle)
+
+ +

Creates a 2D 4 * 4 homogeneous rotation matrix from an euler angle.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat3x3<T, P> glm::orientate3 (tvec3< T, P > const & angles)
+
+ +

Creates a 3D 3 * 3 rotation matrix from euler angles (Y * X * Z).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::orientate4 (tvec3< T, P > const & angles)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, defaultp> glm::yawPitchRoll (T const & yaw,
T const & pitch,
T const & roll 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).

+
See also
GLM_GTX_euler_angles
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00195.html b/external/glm/doc/api/a00195.html new file mode 100644 index 0000000..ab1b21c --- /dev/null +++ b/external/glm/doc/api/a00195.html @@ -0,0 +1,99 @@ + + + + + + +0.9.7: GLM_GTX_extend + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+ +
+ + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType extend (genType const &Origin, genType const &Source, typename genType::value_type const Length)
 
+

Detailed Description

+

Extend a position from a source to a position at a defined length.

+

<glm/gtx/extend.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::extend (genType const & Origin,
genType const & Source,
typename genType::value_type const Length 
)
+
+ +

Extends of Length the Origin position using the (Source - Origin) direction.

+
See also
GLM_GTX_extend
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00196.html b/external/glm/doc/api/a00196.html new file mode 100644 index 0000000..4ed6445 --- /dev/null +++ b/external/glm/doc/api/a00196.html @@ -0,0 +1,553 @@ + + + + + + +0.9.7: GLM_GTX_extented_min_max + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_extented_min_max
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL T max (T const &x, T const &y, T const &z)
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, C< T > const &y, C< T > const &z)
 
template<typename T >
GLM_FUNC_DECL T max (T const &x, T const &y, T const &z, T const &w)
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
 
template<typename T >
GLM_FUNC_DECL T min (T const &x, T const &y, T const &z)
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, C< T > const &y, C< T > const &z)
 
template<typename T >
GLM_FUNC_DECL T min (T const &x, T const &y, T const &z, T const &w)
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
 
+

Detailed Description

+

Min and max functions for 3 to 4 parameters.

+

<glm/gtx/extented_min_max.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::max (T const & x,
T const & y,
T const & z 
)
+
+ +

Return the maximum component-wise values of 3 inputs.

+
See also
GLM_GTX_extented_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL C<T> glm::max (C< T > const & x,
typename C< T >::T const & y,
typename C< T >::T const & z 
)
+
+ +

Return the maximum component-wise values of 3 inputs.

+
See also
GLM_GTX_extented_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL C<T> glm::max (C< T > const & x,
C< T > const & y,
C< T > const & z 
)
+
+ +

Return the maximum component-wise values of 3 inputs.

+
See also
GLM_GTX_extented_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::max (T const & x,
T const & y,
T const & z,
T const & w 
)
+
+ +

Return the maximum component-wise values of 4 inputs.

+
See also
GLM_GTX_extented_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL C<T> glm::max (C< T > const & x,
typename C< T >::T const & y,
typename C< T >::T const & z,
typename C< T >::T const & w 
)
+
+ +

Return the maximum component-wise values of 4 inputs.

+
See also
GLM_GTX_extented_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL C<T> glm::max (C< T > const & x,
C< T > const & y,
C< T > const & z,
C< T > const & w 
)
+
+ +

Return the maximum component-wise values of 4 inputs.

+
See also
GLM_GTX_extented_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::min (T const & x,
T const & y,
T const & z 
)
+
+ +

Return the minimum component-wise values of 3 inputs.

+
See also
GLM_GTX_extented_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL C<T> glm::min (C< T > const & x,
typename C< T >::T const & y,
typename C< T >::T const & z 
)
+
+ +

Return the minimum component-wise values of 3 inputs.

+
See also
GLM_GTX_extented_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL C<T> glm::min (C< T > const & x,
C< T > const & y,
C< T > const & z 
)
+
+ +

Return the minimum component-wise values of 3 inputs.

+
See also
GLM_GTX_extented_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::min (T const & x,
T const & y,
T const & z,
T const & w 
)
+
+ +

Return the minimum component-wise values of 4 inputs.

+
See also
GLM_GTX_extented_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL C<T> glm::min (C< T > const & x,
typename C< T >::T const & y,
typename C< T >::T const & z,
typename C< T >::T const & w 
)
+
+ +

Return the minimum component-wise values of 4 inputs.

+
See also
GLM_GTX_extented_min_max
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL C<T> glm::min (C< T > const & x,
C< T > const & y,
C< T > const & z,
C< T > const & w 
)
+
+ +

Return the minimum component-wise values of 4 inputs.

+
See also
GLM_GTX_extented_min_max
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00197.html b/external/glm/doc/api/a00197.html new file mode 100644 index 0000000..3dd169f --- /dev/null +++ b/external/glm/doc/api/a00197.html @@ -0,0 +1,355 @@ + + + + + + +0.9.7: GLM_GTX_fast_exponential + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_fast_exponential
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL T fastExp (T x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fastExp (vecType< T, P > const &x)
 
template<typename T >
GLM_FUNC_DECL T fastExp2 (T x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fastExp2 (vecType< T, P > const &x)
 
template<typename T >
GLM_FUNC_DECL T fastLog (T x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fastLog (vecType< T, P > const &x)
 
template<typename T >
GLM_FUNC_DECL T fastLog2 (T x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fastLog2 (vecType< T, P > const &x)
 
template<typename genType >
GLM_FUNC_DECL genType fastPow (genType x, genType y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fastPow (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<typename genTypeT , typename genTypeU >
GLM_FUNC_DECL genTypeT fastPow (genTypeT x, genTypeU y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fastPow (vecType< T, P > const &x)
 
+

Detailed Description

+

Fast but less accurate implementations of exponential based functions.

+

<glm/gtx/fast_exponential.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastExp (T x)
+
+ +

Faster than the common exp function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::fastExp (vecType< T, P > const & x)
+
+ +

Faster than the common exp function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastExp2 (T x)
+
+ +

Faster than the common exp2 function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::fastExp2 (vecType< T, P > const & x)
+
+ +

Faster than the common exp2 function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastLog (T x)
+
+ +

Faster than the common log function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::fastLog (vecType< T, P > const & x)
+
+ +

Faster than the common exp2 function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastLog2 (T x)
+
+ +

Faster than the common log2 function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::fastLog2 (vecType< T, P > const & x)
+
+ +

Faster than the common log2 function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::fastPow (genType x,
genType y 
)
+
+ +

Faster than the common pow function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::fastPow (vecType< T, P > const & x,
vecType< T, P > const & y 
)
+
+ +

Faster than the common pow function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genTypeT glm::fastPow (genTypeT x,
genTypeU y 
)
+
+ +

Faster than the common pow function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::fastPow (vecType< T, P > const & x)
+
+ +

Faster than the common pow function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00198.html b/external/glm/doc/api/a00198.html new file mode 100644 index 0000000..6a3f29e --- /dev/null +++ b/external/glm/doc/api/a00198.html @@ -0,0 +1,282 @@ + + + + + + +0.9.7: GLM_GTX_fast_square_root + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_fast_square_root
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType fastDistance (genType x, genType y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T fastDistance (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<typename genType >
GLM_FUNC_DECL genType fastInverseSqrt (genType x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fastInverseSqrt (vecType< T, P > const &x)
 
template<typename genType >
GLM_FUNC_DECL genType fastLength (genType x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T fastLength (vecType< T, P > const &x)
 
template<typename genType >
GLM_FUNC_DECL genType fastNormalize (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType fastSqrt (genType x)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > fastSqrt (vecType< T, P > const &x)
 
+

Detailed Description

+

Fast but less accurate implementations of square root based functions.

+
    +
  • Sqrt optimisation based on Newton's method, www.gamedev.net/community/forums/topic.asp?topic id=139956
  • +
+

<glm/gtx/fast_square_root.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::fastDistance (genType x,
genType y 
)
+
+ +

Faster than the common distance function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::fastDistance (vecType< T, P > const & x,
vecType< T, P > const & y 
)
+
+ +

Faster than the common distance function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::fastInverseSqrt (genType x)
+
+ +

Faster than the common inversesqrt function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::fastInverseSqrt (vecType< T, P > const & x)
+
+ +

Faster than the common inversesqrt function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::fastLength (genType x)
+
+ +

Faster than the common length function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastLength (vecType< T, P > const & x)
+
+ +

Faster than the common length function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::fastNormalize (genType const & x)
+
+ +

Faster than the common normalize function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::fastSqrt (genType x)
+
+ +

Faster than the common sqrt function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::fastSqrt (vecType< T, P > const & x)
+
+ +

Faster than the common sqrt function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00199.html b/external/glm/doc/api/a00199.html new file mode 100644 index 0000000..198a85d --- /dev/null +++ b/external/glm/doc/api/a00199.html @@ -0,0 +1,246 @@ + + + + + + +0.9.7: GLM_GTX_fast_trigonometry + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_fast_trigonometry
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL T fastAcos (T angle)
 
template<typename T >
GLM_FUNC_DECL T fastAsin (T angle)
 
template<typename T >
GLM_FUNC_DECL T fastAtan (T y, T x)
 
template<typename T >
GLM_FUNC_DECL T fastAtan (T angle)
 
template<typename T >
GLM_FUNC_DECL T fastCos (T angle)
 
template<typename T >
GLM_FUNC_DECL T fastSin (T angle)
 
template<typename T >
GLM_FUNC_DECL T fastTan (T angle)
 
template<typename T >
GLM_FUNC_DECL T wrapAngle (T angle)
 
+

Detailed Description

+

Fast but less accurate implementations of trigonometric functions.

+

<glm/gtx/fast_trigonometry.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastAcos (T angle)
+
+ +

Faster than the common acos function but less accurate.

+

Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastAsin (T angle)
+
+ +

Faster than the common asin function but less accurate.

+

Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::fastAtan (T y,
T x 
)
+
+ +

Faster than the common atan function but less accurate.

+

Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastAtan (T angle)
+
+ +

Faster than the common atan function but less accurate.

+

Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastCos (T angle)
+
+ +

Faster than the common cos function but less accurate.

+

From GLM_GTX_fast_trigonometry extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastSin (T angle)
+
+ +

Faster than the common sin function but less accurate.

+

From GLM_GTX_fast_trigonometry extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastTan (T angle)
+
+ +

Faster than the common tan function but less accurate.

+

Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::wrapAngle (T angle)
+
+ +

Wrap an angle to [0 2pi[ From GLM_GTX_fast_trigonometry extension.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00200.html b/external/glm/doc/api/a00200.html new file mode 100644 index 0000000..eaecfa6 --- /dev/null +++ b/external/glm/doc/api/a00200.html @@ -0,0 +1,143 @@ + + + + + + +0.9.7: GLM_GTX_gradient_paint + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_gradient_paint
+
+
+ + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL T linearGradient (tvec2< T, P > const &Point0, tvec2< T, P > const &Point1, tvec2< T, P > const &Position)
 
template<typename T , precision P>
GLM_FUNC_DECL T radialGradient (tvec2< T, P > const &Center, T const &Radius, tvec2< T, P > const &Focal, tvec2< T, P > const &Position)
 
+

Detailed Description

+

Functions that return the color of procedural gradient for specific coordinates.

+

<glm/gtx/gradient_paint.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::linearGradient (tvec2< T, P > const & Point0,
tvec2< T, P > const & Point1,
tvec2< T, P > const & Position 
)
+
+ +

Return a color from a linear gradient.

+
See also
- GLM_GTX_gradient_paint
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::radialGradient (tvec2< T, P > const & Center,
T const & Radius,
tvec2< T, P > const & Focal,
tvec2< T, P > const & Position 
)
+
+ +

Return a color from a radial gradient.

+
See also
- GLM_GTX_gradient_paint
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00201.html b/external/glm/doc/api/a00201.html new file mode 100644 index 0000000..eaf37d3 --- /dev/null +++ b/external/glm/doc/api/a00201.html @@ -0,0 +1,137 @@ + + + + + + +0.9.7: GLM_GTX_handed_coordinate_space + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_handed_coordinate_space
+
+
+ + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL bool leftHanded (tvec3< T, P > const &tangent, tvec3< T, P > const &binormal, tvec3< T, P > const &normal)
 
template<typename T , precision P>
GLM_FUNC_DECL bool rightHanded (tvec3< T, P > const &tangent, tvec3< T, P > const &binormal, tvec3< T, P > const &normal)
 
+

Detailed Description

+

To know if a set of three basis vectors defines a right or left-handed coordinate system.

+

<glm/gtx/handed_coordinate_system.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::leftHanded (tvec3< T, P > const & tangent,
tvec3< T, P > const & binormal,
tvec3< T, P > const & normal 
)
+
+ +

Return if a trihedron left handed or not.

+

From GLM_GTX_handed_coordinate_space extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::rightHanded (tvec3< T, P > const & tangent,
tvec3< T, P > const & binormal,
tvec3< T, P > const & normal 
)
+
+ +

Return if a trihedron right handed or not.

+

From GLM_GTX_handed_coordinate_space extension.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00202.html b/external/glm/doc/api/a00202.html new file mode 100644 index 0000000..5ebc44a --- /dev/null +++ b/external/glm/doc/api/a00202.html @@ -0,0 +1,53 @@ + + + + + + +0.9.7: GLM_GTX_hash + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+ +
+

Add std::hash support for glm types.

+

<glm/gtx/hash.hpp> need to be included to use these functionalities.

+
+ + + + diff --git a/external/glm/doc/api/a00203.html b/external/glm/doc/api/a00203.html new file mode 100644 index 0000000..fae319a --- /dev/null +++ b/external/glm/doc/api/a00203.html @@ -0,0 +1,314 @@ + + + + + + +0.9.7: GLM_GTX_integer + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+ +
+ + + + +

+Typedefs

typedef signed int sint
 
+ + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType factorial (genType const &x)
 
GLM_FUNC_DECL unsigned int floor_log2 (unsigned int x)
 
GLM_FUNC_DECL int mod (int x, int y)
 
GLM_FUNC_DECL uint mod (uint x, uint y)
 
GLM_FUNC_DECL uint nlz (uint x)
 
GLM_FUNC_DECL int pow (int x, int y)
 
GLM_FUNC_DECL uint pow (uint x, uint y)
 
GLM_FUNC_DECL int sqrt (int x)
 
GLM_FUNC_DECL uint sqrt (uint x)
 
+

Detailed Description

+

Add support for integer for core functions.

+

<glm/gtx/integer.hpp> need to be included to use these functionalities.

+

Typedef Documentation

+ +
+
+ + + + +
typedef signed int sint
+
+ +

32bit signed integer.

+

From GLM_GTX_integer extension.

+ +

Definition at line 80 of file gtx/integer.hpp.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::factorial (genType const & x)
+
+ +

Return the factorial value of a number (!12 max, integer only) From GLM_GTX_integer extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL unsigned int glm::floor_log2 (unsigned int x)
+
+ +

Returns the floor log2 of x.

+

From GLM_GTX_integer extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int glm::mod (int x,
int y 
)
+
+ +

Modulus.

+

Returns x - y * floor(x / y) for each component in x using the floating point value y. From GLM_GTX_integer extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint glm::mod (uint x,
uint y 
)
+
+ +

Modulus.

+

Returns x - y * floor(x / y) for each component in x using the floating point value y. From GLM_GTX_integer extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::nlz (uint x)
+
+ +

Returns the number of leading zeros.

+

From GLM_GTX_integer extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int glm::pow (int x,
int y 
)
+
+ +

Returns x raised to the y power.

+

From GLM_GTX_integer extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint glm::pow (uint x,
uint y 
)
+
+ +

Returns x raised to the y power.

+

From GLM_GTX_integer extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL int glm::sqrt (int x)
+
+ +

Returns the positive square root of x.

+

From GLM_GTX_integer extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::sqrt (uint x)
+
+ +

Returns the positive square root of x.

+

From GLM_GTX_integer extension.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00204.html b/external/glm/doc/api/a00204.html new file mode 100644 index 0000000..74f221f --- /dev/null +++ b/external/glm/doc/api/a00204.html @@ -0,0 +1,397 @@ + + + + + + +0.9.7: GLM_GTX_intersect + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL bool intersectLineSphere (genType const &point0, genType const &point1, genType const &sphereCenter, typename genType::value_type sphereRadius, genType &intersectionPosition1, genType &intersectionNormal1, genType &intersectionPosition2=genType(), genType &intersectionNormal2=genType())
 
template<typename genType >
GLM_FUNC_DECL bool intersectLineTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &position)
 
template<typename genType >
GLM_FUNC_DECL bool intersectRayPlane (genType const &orig, genType const &dir, genType const &planeOrig, genType const &planeNormal, typename genType::value_type &intersectionDistance)
 
template<typename genType >
GLM_FUNC_DECL bool intersectRaySphere (genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, typename genType::value_type const sphereRadiusSquered, typename genType::value_type &intersectionDistance)
 
template<typename genType >
GLM_FUNC_DECL bool intersectRaySphere (genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, const typename genType::value_type sphereRadius, genType &intersectionPosition, genType &intersectionNormal)
 
template<typename genType >
GLM_FUNC_DECL bool intersectRayTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &baryPosition)
 
+

Detailed Description

+

Add intersection functions.

+

<glm/gtx/intersect.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::intersectLineSphere (genType const & point0,
genType const & point1,
genType const & sphereCenter,
typename genType::value_type sphereRadius,
genType & intersectionPosition1,
genType & intersectionNormal1,
genType & intersectionPosition2 = genType(),
genType & intersectionNormal2 = genType() 
)
+
+ +

Compute the intersection of a line and a sphere.

+

From GLM_GTX_intersect extension

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::intersectLineTriangle (genType const & orig,
genType const & dir,
genType const & vert0,
genType const & vert1,
genType const & vert2,
genType & position 
)
+
+ +

Compute the intersection of a line and a triangle.

+

From GLM_GTX_intersect extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::intersectRayPlane (genType const & orig,
genType const & dir,
genType const & planeOrig,
genType const & planeNormal,
typename genType::value_type & intersectionDistance 
)
+
+ +

Compute the intersection of a ray and a plane.

+

Ray direction and plane normal must be unit length. From GLM_GTX_intersect extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::intersectRaySphere (genType const & rayStarting,
genType const & rayNormalizedDirection,
genType const & sphereCenter,
typename genType::value_type const sphereRadiusSquered,
typename genType::value_type & intersectionDistance 
)
+
+ +

Compute the intersection distance of a ray and a sphere.

+

The ray direction vector is unit length. From GLM_GTX_intersect extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::intersectRaySphere (genType const & rayStarting,
genType const & rayNormalizedDirection,
genType const & sphereCenter,
const typename genType::value_type sphereRadius,
genType & intersectionPosition,
genType & intersectionNormal 
)
+
+ +

Compute the intersection of a ray and a sphere.

+

From GLM_GTX_intersect extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::intersectRayTriangle (genType const & orig,
genType const & dir,
genType const & vert0,
genType const & vert1,
genType const & vert2,
genType & baryPosition 
)
+
+ +

Compute the intersection of a ray and a triangle.

+

From GLM_GTX_intersect extension.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00205.html b/external/glm/doc/api/a00205.html new file mode 100644 index 0000000..65d7f92 --- /dev/null +++ b/external/glm/doc/api/a00205.html @@ -0,0 +1,55 @@ + + + + + + +0.9.7: GLM_GTX_io + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+ +
+

Detailed Description

+

std::[w]ostream support for glm types

+

std::[w]ostream support for glm types + precision/width/etc. manipulators based on howard hinnant's std::chrono io proposal [http://home.roadrunner.com/~hinnant/bloomington/chrono_io.html]

+

<glm/gtx/io.hpp> needs to be included to use these functionalities.

+
+ + + + diff --git a/external/glm/doc/api/a00206.html b/external/glm/doc/api/a00206.html new file mode 100644 index 0000000..e7500b0 --- /dev/null +++ b/external/glm/doc/api/a00206.html @@ -0,0 +1,126 @@ + + + + + + +0.9.7: GLM_GTX_log_base + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ + +
+
+ + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType log (genType x, genType base)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< T, P > sign (vecType< T, P > const &x, vecType< T, P > const &base)
 
+

Detailed Description

+

Logarithm for any base.

+

base can be a vector or a scalar.

+

<glm/gtx/log_base.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::log (genType x,
genType base 
)
+
+ +

Logarithm for any base.

+

From GLM_GTX_log_base.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<T, P> glm::sign (vecType< T, P > const & x,
vecType< T, P > const & base 
)
+
+ +

Logarithm for any base.

+

From GLM_GTX_log_base.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00207.html b/external/glm/doc/api/a00207.html new file mode 100644 index 0000000..15d1490 --- /dev/null +++ b/external/glm/doc/api/a00207.html @@ -0,0 +1,105 @@ + + + + + + +0.9.7: GLM_GTX_matrix_cross_product + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_matrix_cross_product
+
+
+ + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > matrixCross3 (tvec3< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > matrixCross4 (tvec3< T, P > const &x)
 
+

Detailed Description

+

Build cross product matrices.

+

<glm/gtx/matrix_cross_product.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat3x3<T, P> glm::matrixCross3 (tvec3< T, P > const & x)
+
+ +

Build a cross product matrix.

+

From GLM_GTX_matrix_cross_product extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::matrixCross4 (tvec3< T, P > const & x)
+
+ +

Build a cross product matrix.

+

From GLM_GTX_matrix_cross_product extension.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00208.html b/external/glm/doc/api/a00208.html new file mode 100644 index 0000000..4f98f31 --- /dev/null +++ b/external/glm/doc/api/a00208.html @@ -0,0 +1,117 @@ + + + + + + +0.9.7: GLM_GTX_matrix_decompose + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_matrix_decompose
+
+
+ + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL bool decompose (tmat4x4< T, P > const &modelMatrix, tvec3< T, P > &scale, tquat< T, P > &orientation, tvec3< T, P > &translation, tvec3< T, P > &skew, tvec4< T, P > &perspective)
 
+

Detailed Description

+

Decomposes a model matrix to translations, rotation and scale components.

+

<glm/gtx/decomposition.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::decompose (tmat4x4< T, P > const & modelMatrix,
tvec3< T, P > & scale,
tquat< T, P > & orientation,
tvec3< T, P > & translation,
tvec3< T, P > & skew,
tvec4< T, P > & perspective 
)
+
+ +

Decomposes a model matrix to translations, rotation and scale components.

+
See also
GLM_GTX_matrix_decompose
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00209.html b/external/glm/doc/api/a00209.html new file mode 100644 index 0000000..ff3c64a --- /dev/null +++ b/external/glm/doc/api/a00209.html @@ -0,0 +1,191 @@ + + + + + + +0.9.7: GLM_GTX_matrix_interpolation + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_matrix_interpolation
+
+
+ + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL void axisAngle (tmat4x4< T, P > const &mat, tvec3< T, P > &axis, T &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > axisAngleMatrix (tvec3< T, P > const &axis, T const angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > extractMatrixRotation (tmat4x4< T, P > const &mat)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > interpolate (tmat4x4< T, P > const &m1, tmat4x4< T, P > const &m2, T const delta)
 
+

Detailed Description

+

Allows to directly interpolate two exiciting matrices.

+

<glm/gtx/matrix_interpolation.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL void glm::axisAngle (tmat4x4< T, P > const & mat,
tvec3< T, P > & axis,
T & angle 
)
+
+ +

Get the axis and angle of the rotation from a matrix.

+

From GLM_GTX_matrix_interpolation extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::axisAngleMatrix (tvec3< T, P > const & axis,
T const angle 
)
+
+ +

Build a matrix from axis and angle.

+

From GLM_GTX_matrix_interpolation extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::extractMatrixRotation (tmat4x4< T, P > const & mat)
+
+ +

Extracts the rotation part of a matrix.

+

From GLM_GTX_matrix_interpolation extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::interpolate (tmat4x4< T, P > const & m1,
tmat4x4< T, P > const & m2,
T const delta 
)
+
+ +

Build a interpolation of 4 * 4 matrixes.

+

From GLM_GTX_matrix_interpolation extension. Warning! works only with rotation and/or translation matrixes, scale will generate unexpected results.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00210.html b/external/glm/doc/api/a00210.html new file mode 100644 index 0000000..7400286 --- /dev/null +++ b/external/glm/doc/api/a00210.html @@ -0,0 +1,421 @@ + + + + + + +0.9.7: GLM_GTX_matrix_major_storage + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_matrix_major_storage
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tmat2x2< T, P > colMajor2 (tvec2< T, P > const &v1, tvec2< T, P > const &v2)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat2x2< T, P > colMajor2 (tmat2x2< T, P > const &m)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > colMajor3 (tvec3< T, P > const &v1, tvec3< T, P > const &v2, tvec3< T, P > const &v3)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > colMajor3 (tmat3x3< T, P > const &m)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > colMajor4 (tvec4< T, P > const &v1, tvec4< T, P > const &v2, tvec4< T, P > const &v3, tvec4< T, P > const &v4)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > colMajor4 (tmat4x4< T, P > const &m)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat2x2< T, P > rowMajor2 (tvec2< T, P > const &v1, tvec2< T, P > const &v2)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat2x2< T, P > rowMajor2 (tmat2x2< T, P > const &m)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > rowMajor3 (tvec3< T, P > const &v1, tvec3< T, P > const &v2, tvec3< T, P > const &v3)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > rowMajor3 (tmat3x3< T, P > const &m)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > rowMajor4 (tvec4< T, P > const &v1, tvec4< T, P > const &v2, tvec4< T, P > const &v3, tvec4< T, P > const &v4)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > rowMajor4 (tmat4x4< T, P > const &m)
 
+

Detailed Description

+

Build matrices with specific matrix order, row or column.

+

<glm/gtx/matrix_major_storage.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat2x2<T, P> glm::colMajor2 (tvec2< T, P > const & v1,
tvec2< T, P > const & v2 
)
+
+ +

Build a column major matrix from column vectors.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat2x2<T, P> glm::colMajor2 (tmat2x2< T, P > const & m)
+
+ +

Build a column major matrix from other matrix.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat3x3<T, P> glm::colMajor3 (tvec3< T, P > const & v1,
tvec3< T, P > const & v2,
tvec3< T, P > const & v3 
)
+
+ +

Build a column major matrix from column vectors.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat3x3<T, P> glm::colMajor3 (tmat3x3< T, P > const & m)
+
+ +

Build a column major matrix from other matrix.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::colMajor4 (tvec4< T, P > const & v1,
tvec4< T, P > const & v2,
tvec4< T, P > const & v3,
tvec4< T, P > const & v4 
)
+
+ +

Build a column major matrix from column vectors.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::colMajor4 (tmat4x4< T, P > const & m)
+
+ +

Build a column major matrix from other matrix.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat2x2<T, P> glm::rowMajor2 (tvec2< T, P > const & v1,
tvec2< T, P > const & v2 
)
+
+ +

Build a row major matrix from row vectors.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat2x2<T, P> glm::rowMajor2 (tmat2x2< T, P > const & m)
+
+ +

Build a row major matrix from other matrix.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat3x3<T, P> glm::rowMajor3 (tvec3< T, P > const & v1,
tvec3< T, P > const & v2,
tvec3< T, P > const & v3 
)
+
+ +

Build a row major matrix from row vectors.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat3x3<T, P> glm::rowMajor3 (tmat3x3< T, P > const & m)
+
+ +

Build a row major matrix from other matrix.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::rowMajor4 (tvec4< T, P > const & v1,
tvec4< T, P > const & v2,
tvec4< T, P > const & v3,
tvec4< T, P > const & v4 
)
+
+ +

Build a row major matrix from row vectors.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::rowMajor4 (tmat4x4< T, P > const & m)
+
+ +

Build a row major matrix from other matrix.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00211.html b/external/glm/doc/api/a00211.html new file mode 100644 index 0000000..c7a6665 --- /dev/null +++ b/external/glm/doc/api/a00211.html @@ -0,0 +1,259 @@ + + + + + + +0.9.7: GLM_GTX_matrix_operation + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_matrix_operation
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tmat2x2< T, P > diagonal2x2 (tvec2< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat2x3< T, P > diagonal2x3 (tvec2< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat2x4< T, P > diagonal2x4 (tvec2< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x2< T, P > diagonal3x2 (tvec2< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > diagonal3x3 (tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x4< T, P > diagonal3x4 (tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x2< T, P > diagonal4x2 (tvec2< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x3< T, P > diagonal4x3 (tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > diagonal4x4 (tvec4< T, P > const &v)
 
+

Detailed Description

+

Build diagonal matrices from vectors.

+

<glm/gtx/matrix_operation.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat2x2<T, P> glm::diagonal2x2 (tvec2< T, P > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat2x3<T, P> glm::diagonal2x3 (tvec2< T, P > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat2x4<T, P> glm::diagonal2x4 (tvec2< T, P > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat3x2<T, P> glm::diagonal3x2 (tvec2< T, P > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat3x3<T, P> glm::diagonal3x3 (tvec3< T, P > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat3x4<T, P> glm::diagonal3x4 (tvec3< T, P > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x2<T, P> glm::diagonal4x2 (tvec2< T, P > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x3<T, P> glm::diagonal4x3 (tvec3< T, P > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::diagonal4x4 (tvec4< T, P > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00212.html b/external/glm/doc/api/a00212.html new file mode 100644 index 0000000..c9455a2 --- /dev/null +++ b/external/glm/doc/api/a00212.html @@ -0,0 +1,317 @@ + + + + + + +0.9.7: GLM_GTX_matrix_query + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_matrix_query
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class matType>
GLM_FUNC_DECL bool isIdentity (matType< T, P > const &m, T const &epsilon)
 
template<typename T , precision P>
GLM_FUNC_DECL bool isNormalized (tmat2x2< T, P > const &m, T const &epsilon)
 
template<typename T , precision P>
GLM_FUNC_DECL bool isNormalized (tmat3x3< T, P > const &m, T const &epsilon)
 
template<typename T , precision P>
GLM_FUNC_DECL bool isNormalized (tmat4x4< T, P > const &m, T const &epsilon)
 
template<typename T , precision P>
GLM_FUNC_DECL bool isNull (tmat2x2< T, P > const &m, T const &epsilon)
 
template<typename T , precision P>
GLM_FUNC_DECL bool isNull (tmat3x3< T, P > const &m, T const &epsilon)
 
template<typename T , precision P>
GLM_FUNC_DECL bool isNull (tmat4x4< T, P > const &m, T const &epsilon)
 
template<typename T , precision P, template< typename, precision > class matType>
GLM_FUNC_DECL bool isOrthogonal (matType< T, P > const &m, T const &epsilon)
 
+

Detailed Description

+

Query to evaluate matrix properties.

+

<glm/gtx/matrix_query.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isIdentity (matType< T, P > const & m,
T const & epsilon 
)
+
+ +

Return whether a matrix is an identity matrix.

+

From GLM_GTX_matrix_query extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isNormalized (tmat2x2< T, P > const & m,
T const & epsilon 
)
+
+ +

Return whether a matrix is a normalized matrix.

+

From GLM_GTX_matrix_query extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isNormalized (tmat3x3< T, P > const & m,
T const & epsilon 
)
+
+ +

Return whether a matrix is a normalized matrix.

+

From GLM_GTX_matrix_query extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isNormalized (tmat4x4< T, P > const & m,
T const & epsilon 
)
+
+ +

Return whether a matrix is a normalized matrix.

+

From GLM_GTX_matrix_query extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isNull (tmat2x2< T, P > const & m,
T const & epsilon 
)
+
+ +

Return whether a matrix a null matrix.

+

From GLM_GTX_matrix_query extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isNull (tmat3x3< T, P > const & m,
T const & epsilon 
)
+
+ +

Return whether a matrix a null matrix.

+

From GLM_GTX_matrix_query extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isNull (tmat4x4< T, P > const & m,
T const & epsilon 
)
+
+ +

Return whether a matrix is a null matrix.

+

From GLM_GTX_matrix_query extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isOrthogonal (matType< T, P > const & m,
T const & epsilon 
)
+
+ +

Return whether a matrix is an orthonormalized matrix.

+

From GLM_GTX_matrix_query extension.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00213.html b/external/glm/doc/api/a00213.html new file mode 100644 index 0000000..730d51f --- /dev/null +++ b/external/glm/doc/api/a00213.html @@ -0,0 +1,251 @@ + + + + + + +0.9.7: GLM_GTX_matrix_transform_2d + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_matrix_transform_2d
+
+
+ + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_QUALIFIER tmat3x3< T, P > rotate (tmat3x3< T, P > const &m, T angle)
 
template<typename T , precision P>
GLM_FUNC_QUALIFIER tmat3x3< T, P > scale (tmat3x3< T, P > const &m, tvec2< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_QUALIFIER tmat3x3< T, P > shearX (tmat3x3< T, P > const &m, T y)
 
template<typename T , precision P>
GLM_FUNC_QUALIFIER tmat3x3< T, P > shearY (tmat3x3< T, P > const &m, T x)
 
template<typename T , precision P>
GLM_FUNC_QUALIFIER tmat3x3< T, P > translate (tmat3x3< T, P > const &m, tvec2< T, P > const &v)
 
+

Detailed Description

+

Defines functions that generate common 2d transformation matrices.

+

<glm/gtx/matrix_transform_2d.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_QUALIFIER tmat3x3<T, P> glm::rotate (tmat3x3< T, P > const & m,
T angle 
)
+
+ +

Builds a rotation 3 * 3 matrix created from an angle.

+
Parameters
+ + + +
mInput matrix multiplied by this translation matrix.
angleRotation angle expressed in radians if GLM_FORCE_RADIANS is defined or degrees otherwise.
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_QUALIFIER tmat3x3<T, P> glm::scale (tmat3x3< T, P > const & m,
tvec2< T, P > const & v 
)
+
+ +

Builds a scale 3 * 3 matrix created from a vector of 2 components.

+
Parameters
+ + + +
mInput matrix multiplied by this translation matrix.
vCoordinates of a scale vector.
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_QUALIFIER tmat3x3<T, P> glm::shearX (tmat3x3< T, P > const & m,
T y 
)
+
+ +

Builds an horizontal (parallel to the x axis) shear 3 * 3 matrix.

+
Parameters
+ + + +
mInput matrix multiplied by this translation matrix.
yShear factor.
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_QUALIFIER tmat3x3<T, P> glm::shearY (tmat3x3< T, P > const & m,
T x 
)
+
+ +

Builds a vertical (parallel to the y axis) shear 3 * 3 matrix.

+
Parameters
+ + + +
mInput matrix multiplied by this translation matrix.
xShear factor.
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_QUALIFIER tmat3x3<T, P> glm::translate (tmat3x3< T, P > const & m,
tvec2< T, P > const & v 
)
+
+ +

Builds a translation 3 * 3 matrix created from a vector of 2 components.

+
Parameters
+ + + +
mInput matrix multiplied by this translation matrix.
vCoordinates of a translation vector.
+
+
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00214.html b/external/glm/doc/api/a00214.html new file mode 100644 index 0000000..79c2e31 --- /dev/null +++ b/external/glm/doc/api/a00214.html @@ -0,0 +1,64 @@ + + + + + + +0.9.7: GLM_GTX_mixed_producte + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_mixed_producte
+
+
+ + + + + +

+Functions

+template<typename T , precision P>
GLM_FUNC_DECL T mixedProduct (tvec3< T, P > const &v1, tvec3< T, P > const &v2, tvec3< T, P > const &v3)
 
+

Detailed Description

+

Mixed product of 3 vectors.

+

<glm/gtx/mixed_product.hpp> need to be included to use these functionalities.

+
+ + + + diff --git a/external/glm/doc/api/a00215.html b/external/glm/doc/api/a00215.html new file mode 100644 index 0000000..a591df9 --- /dev/null +++ b/external/glm/doc/api/a00215.html @@ -0,0 +1,347 @@ + + + + + + +0.9.7: GLM_GTX_norm + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL T distance2 (T const &p0, T const &p1)
 
template<typename genType >
GLM_FUNC_DECL genType::value_type distance2 (genType const &p0, genType const &p1)
 
template<typename T , precision P>
GLM_FUNC_DECL T l1Norm (tvec3< T, P > const &x, tvec3< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL T l1Norm (tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL T l2Norm (tvec3< T, P > const &x, tvec3< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL T l2Norm (tvec3< T, P > const &x)
 
template<typename T >
GLM_FUNC_DECL T length2 (T const &x)
 
template<typename genType >
GLM_FUNC_DECL genType::value_type length2 (genType const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL T lxNorm (tvec3< T, P > const &x, tvec3< T, P > const &y, unsigned int Depth)
 
template<typename T , precision P>
GLM_FUNC_DECL T lxNorm (tvec3< T, P > const &x, unsigned int Depth)
 
+

Detailed Description

+

Various ways to compute vector norms.

+

<glm/gtx/norm.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::distance2 (T const & p0,
T const & p1 
)
+
+ +

Returns the squared distance between p0 and p1, i.e., length2(p0 - p1).

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType::value_type glm::distance2 (genType const & p0,
genType const & p1 
)
+
+ +

Returns the squared distance between p0 and p1, i.e., length2(p0 - p1).

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::l1Norm (tvec3< T, P > const & x,
tvec3< T, P > const & y 
)
+
+ +

Returns the L1 norm between x and y.

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::l1Norm (tvec3< T, P > const & v)
+
+ +

Returns the L1 norm of v.

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::l2Norm (tvec3< T, P > const & x,
tvec3< T, P > const & y 
)
+
+ +

Returns the L2 norm between x and y.

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::l2Norm (tvec3< T, P > const & x)
+
+ +

Returns the L2 norm of v.

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::length2 (T const & x)
+
+ +

Returns the squared length of x.

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType::value_type glm::length2 (genType const & x)
+
+ +

Returns the squared length of x.

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::lxNorm (tvec3< T, P > const & x,
tvec3< T, P > const & y,
unsigned int Depth 
)
+
+ +

Returns the L norm between x and y.

+

From GLM_GTX_norm extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::lxNorm (tvec3< T, P > const & x,
unsigned int Depth 
)
+
+ +

Returns the L norm of v.

+

From GLM_GTX_norm extension.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00216.html b/external/glm/doc/api/a00216.html new file mode 100644 index 0000000..258018e --- /dev/null +++ b/external/glm/doc/api/a00216.html @@ -0,0 +1,99 @@ + + + + + + +0.9.7: GLM_GTX_normal + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+ +
+ + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > triangleNormal (tvec3< T, P > const &p1, tvec3< T, P > const &p2, tvec3< T, P > const &p3)
 
+

Detailed Description

+

Compute the normal of a triangle.

+

<glm/gtx/normal.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::triangleNormal (tvec3< T, P > const & p1,
tvec3< T, P > const & p2,
tvec3< T, P > const & p3 
)
+
+ +

Computes triangle normal from triangle points.

+

From GLM_GTX_normal extension.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00217.html b/external/glm/doc/api/a00217.html new file mode 100644 index 0000000..b1f2ab1 --- /dev/null +++ b/external/glm/doc/api/a00217.html @@ -0,0 +1,127 @@ + + + + + + +0.9.7: GLM_GTX_normalize_dot + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_normalize_dot
+
+
+ + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T fastNormalizeDot (vecType< T, P > const &x, vecType< T, P > const &y)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL T normalizeDot (vecType< T, P > const &x, vecType< T, P > const &y)
 
+

Detailed Description

+

Dot product of vectors that need to be normalize with a single square root.

+

<glm/gtx/normalized_dot.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::fastNormalizeDot (vecType< T, P > const & x,
vecType< T, P > const & y 
)
+
+ +

Normalize parameters and returns the dot product of x and y.

+

Faster that dot(fastNormalize(x), fastNormalize(y)).

+
See also
GLM_GTX_normalize_dot extension.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::normalizeDot (vecType< T, P > const & x,
vecType< T, P > const & y 
)
+
+ +

Normalize parameters and returns the dot product of x and y.

+

It's faster that dot(normalize(x), normalize(y)).

+
See also
GLM_GTX_normalize_dot extension.
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00218.html b/external/glm/doc/api/a00218.html new file mode 100644 index 0000000..9988de4 --- /dev/null +++ b/external/glm/doc/api/a00218.html @@ -0,0 +1,90 @@ + + + + + + +0.9.7: GLM_GTX_number_precision + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_number_precision
+
+
+ + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

+typedef f32 f32mat1
 
+typedef f32 f32mat1x1
 
+typedef f32 f32vec1
 
+typedef f64 f64mat1
 
+typedef f64 f64mat1x1
 
+typedef f64 f64vec1
 
+typedef u16 u16vec1
 
+typedef u32 u32vec1
 
+typedef u64 u64vec1
 
+typedef u8 u8vec1
 
+

Detailed Description

+

Defined size types.

+

<glm/gtx/number_precision.hpp> need to be included to use these functionalities.

+
+ + + + diff --git a/external/glm/doc/api/a00219.html b/external/glm/doc/api/a00219.html new file mode 100644 index 0000000..9ba0816 --- /dev/null +++ b/external/glm/doc/api/a00219.html @@ -0,0 +1,127 @@ + + + + + + +0.9.7: GLM_GTX_optimum_pow + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
+
+
+ + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType pow2 (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType pow3 (genType const &x)
 
template<typename genType >
GLM_FUNC_DECL genType pow4 (genType const &x)
 
+

Detailed Description

+

Integer exponentiation of power functions.

+

<glm/gtx/optimum_pow.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::gtx::pow2 (genType const & x)
+
+ +

Returns x raised to the power of 2.

+
See also
GLM_GTX_optimum_pow
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::gtx::pow3 (genType const & x)
+
+ +

Returns x raised to the power of 3.

+
See also
GLM_GTX_optimum_pow
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::gtx::pow4 (genType const & x)
+
+ +

Returns x raised to the power of 4.

+
See also
GLM_GTX_optimum_pow
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00220.html b/external/glm/doc/api/a00220.html new file mode 100644 index 0000000..d863024 --- /dev/null +++ b/external/glm/doc/api/a00220.html @@ -0,0 +1,115 @@ + + + + + + +0.9.7: GLM_GTX_orthonormalize + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_orthonormalize
+
+
+ + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > orthonormalize (tmat3x3< T, P > const &m)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > orthonormalize (tvec3< T, P > const &x, tvec3< T, P > const &y)
 
+

Detailed Description

+

Orthonormalize matrices.

+

<glm/gtx/orthonormalize.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat3x3<T, P> glm::orthonormalize (tmat3x3< T, P > const & m)
+
+ +

Returns the orthonormalized matrix of m.

+
See also
GLM_GTX_orthonormalize
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::orthonormalize (tvec3< T, P > const & x,
tvec3< T, P > const & y 
)
+
+ +

Orthonormalizes x according y.

+
See also
GLM_GTX_orthonormalize
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00221.html b/external/glm/doc/api/a00221.html new file mode 100644 index 0000000..37235d0 --- /dev/null +++ b/external/glm/doc/api/a00221.html @@ -0,0 +1,93 @@ + + + + + + +0.9.7: GLM_GTX_perpendicular + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_perpendicular
+
+
+ + + + + +

+Functions

template<typename vecType >
GLM_FUNC_DECL vecType perp (vecType const &x, vecType const &Normal)
 
+

Detailed Description

+

Perpendicular of a vector from other one.

+

<glm/gtx/perpendicular.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType glm::perp (vecType const & x,
vecType const & Normal 
)
+
+ +

Projects x a perpendicular axis of Normal.

+

From GLM_GTX_perpendicular extension.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00222.html b/external/glm/doc/api/a00222.html new file mode 100644 index 0000000..0f9bbf4 --- /dev/null +++ b/external/glm/doc/api/a00222.html @@ -0,0 +1,105 @@ + + + + + + +0.9.7: GLM_GTX_polar_coordinates + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_polar_coordinates
+
+
+ + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > euclidean (tvec2< T, P > const &polar)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > polar (tvec3< T, P > const &euclidean)
 
+

Detailed Description

+

Conversion from Euclidean space to polar space and revert.

+

<glm/gtx/polar_coordinates.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::euclidean (tvec2< T, P > const & polar)
+
+ +

Convert Polar to Euclidean coordinates.

+
See also
GLM_GTX_polar_coordinates
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::polar (tvec3< T, P > const & euclidean)
+
+ +

Convert Euclidean to Polar coordinates, x is the xz distance, y, the latitude and z the longitude.

+
See also
GLM_GTX_polar_coordinates
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00223.html b/external/glm/doc/api/a00223.html new file mode 100644 index 0000000..7fff347 --- /dev/null +++ b/external/glm/doc/api/a00223.html @@ -0,0 +1,93 @@ + + + + + + +0.9.7: GLM_GTX_projection + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
+
+
+ + + + + +

+Functions

template<typename vecType >
GLM_FUNC_DECL vecType proj (vecType const &x, vecType const &Normal)
 
+

Detailed Description

+

Projection of a vector to other one.

+

<glm/gtx/projection.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType glm::proj (vecType const & x,
vecType const & Normal 
)
+
+ +

Projects x on Normal.

+
See also
GLM_GTX_projection
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00224.html b/external/glm/doc/api/a00224.html new file mode 100644 index 0000000..f68ffa1 --- /dev/null +++ b/external/glm/doc/api/a00224.html @@ -0,0 +1,613 @@ + + + + + + +0.9.7: GLM_GTX_quaternion + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > cross (tquat< T, P > const &q, tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > cross (tvec3< T, P > const &v, tquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > exp (tquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL T extractRealComponent (tquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > fastMix (tquat< T, P > const &x, tquat< T, P > const &y, T const &a)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > intermediate (tquat< T, P > const &prev, tquat< T, P > const &curr, tquat< T, P > const &next)
 
template<typename T , precision P>
GLM_FUNC_DECL T length2 (tquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > log (tquat< T, P > const &q)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > pow (tquat< T, P > const &x, T const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > rotate (tquat< T, P > const &q, tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< T, P > rotate (tquat< T, P > const &q, tvec4< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > rotation (tvec3< T, P > const &orig, tvec3< T, P > const &dest)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > shortMix (tquat< T, P > const &x, tquat< T, P > const &y, T const &a)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > squad (tquat< T, P > const &q1, tquat< T, P > const &q2, tquat< T, P > const &s1, tquat< T, P > const &s2, T const &h)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > toMat3 (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > toMat4 (tquat< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > toQuat (tmat3x3< T, P > const &x)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > toQuat (tmat4x4< T, P > const &x)
 
+

Detailed Description

+

Extented quaternion types and functions.

+

<glm/gtx/quaternion.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::cross (tquat< T, P > const & q,
tvec3< T, P > const & v 
)
+
+ +

Compute a cross product between a quaternion and a vector.

+
See also
GLM_GTX_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::cross (tvec3< T, P > const & v,
tquat< T, P > const & q 
)
+
+ +

Compute a cross product between a vector and a quaternion.

+
See also
GLM_GTX_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::exp (tquat< T, P > const & q)
+
+ +

Returns a exp of a quaternion.

+
See also
GLM_GTX_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::extractRealComponent (tquat< T, P > const & q)
+
+ +

Extract the real component of a quaternion.

+
See also
GLM_GTX_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::fastMix (tquat< T, P > const & x,
tquat< T, P > const & y,
T const & a 
)
+
+ +

Quaternion normalized linear interpolation.

+
See also
GLM_GTX_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::intermediate (tquat< T, P > const & prev,
tquat< T, P > const & curr,
tquat< T, P > const & next 
)
+
+ +

Returns an intermediate control point for squad interpolation.

+
See also
GLM_GTX_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::length2 (tquat< T, P > const & q)
+
+ +

Returns the squared length of x.

+
See also
GLM_GTX_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::log (tquat< T, P > const & q)
+
+ +

Returns a log of a quaternion.

+
See also
GLM_GTX_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::pow (tquat< T, P > const & x,
T const & y 
)
+
+ +

Returns x raised to the y power.

+
See also
GLM_GTX_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::rotate (tquat< T, P > const & q,
tvec3< T, P > const & v 
)
+
+ +

Returns quarternion square root.

+
See also
GLM_GTX_quaternion Rotates a 3 components vector by a quaternion.
+
+GLM_GTX_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec4<T, P> glm::rotate (tquat< T, P > const & q,
tvec4< T, P > const & v 
)
+
+ +

Rotates a 4 components vector by a quaternion.

+
See also
GLM_GTX_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::rotation (tvec3< T, P > const & orig,
tvec3< T, P > const & dest 
)
+
+ +

Compute the rotation between two vectors.

+

param orig vector, needs to be normalized param dest vector, needs to be normalized

+
See also
GLM_GTX_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::shortMix (tquat< T, P > const & x,
tquat< T, P > const & y,
T const & a 
)
+
+ +

Quaternion interpolation using the rotation short path.

+
See also
GLM_GTX_quaternion
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::squad (tquat< T, P > const & q1,
tquat< T, P > const & q2,
tquat< T, P > const & s1,
tquat< T, P > const & s2,
T const & h 
)
+
+ +

Compute a point on a path according squad equation.

+

q1 and q2 are control points; s1 and s2 are intermediate control points.

+
See also
GLM_GTX_quaternion
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat3x3<T, P> glm::toMat3 (tquat< T, P > const & x)
+
+ +

Converts a quaternion to a 3 * 3 matrix.

+
See also
GLM_GTX_quaternion
+ +

Definition at line 153 of file gtx/quaternion.hpp.

+ +

References glm::mat3_cast().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::toMat4 (tquat< T, P > const & x)
+
+ +

Converts a quaternion to a 4 * 4 matrix.

+
See also
GLM_GTX_quaternion
+ +

Definition at line 160 of file gtx/quaternion.hpp.

+ +

References glm::mat4_cast().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::toQuat (tmat3x3< T, P > const & x)
+
+ +

Converts a 3 * 3 matrix to a quaternion.

+
See also
GLM_GTX_quaternion
+ +

Definition at line 167 of file gtx/quaternion.hpp.

+ +

References glm::quat_cast().

+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::toQuat (tmat4x4< T, P > const & x)
+
+ +

Converts a 4 * 4 matrix to a quaternion.

+
See also
GLM_GTX_quaternion
+ +

Definition at line 174 of file gtx/quaternion.hpp.

+ +

References glm::quat_cast().

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00225.html b/external/glm/doc/api/a00225.html new file mode 100644 index 0000000..04ef36c --- /dev/null +++ b/external/glm/doc/api/a00225.html @@ -0,0 +1,55 @@ + + + + + + +0.9.7: GLM_GTX_range + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+ +
+

Detailed Description

+

Defines begin and end for vectors and matrices.

+

Useful for range-based for loop. The range is defined over the elements, not over columns or rows (e.g. mat4 has 16 elements).

+

<glm/gtx/range.hpp> need to be included to use these functionalities.

+
+ + + + diff --git a/external/glm/doc/api/a00226.html b/external/glm/doc/api/a00226.html new file mode 100644 index 0000000..f2884c9 --- /dev/null +++ b/external/glm/doc/api/a00226.html @@ -0,0 +1,137 @@ + + + + + + +0.9.7: GLM_GTX_raw_data + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ + +
+
+ + + + + + + + + + +

+Typedefs

typedef detail::uint8 byte
 
typedef detail::uint32 dword
 
typedef detail::uint64 qword
 
typedef detail::uint16 word
 
+

Detailed Description

+

Projection of a vector to other one.

+

<glm/gtx/raw_data.hpp> need to be included to use these functionalities.

+

Typedef Documentation

+ +
+
+ + + + +
typedef detail::uint8 byte
+
+ +

Type for byte numbers.

+

From GLM_GTX_raw_data extension.

+ +

Definition at line 59 of file raw_data.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint32 dword
+
+ +

Type for dword numbers.

+

From GLM_GTX_raw_data extension.

+ +

Definition at line 67 of file raw_data.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint64 qword
+
+ +

Type for qword numbers.

+

From GLM_GTX_raw_data extension.

+ +

Definition at line 71 of file raw_data.hpp.

+ +
+
+ +
+
+ + + + +
typedef detail::uint16 word
+
+ +

Type for word numbers.

+

From GLM_GTX_raw_data extension.

+ +

Definition at line 63 of file raw_data.hpp.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00227.html b/external/glm/doc/api/a00227.html new file mode 100644 index 0000000..d7b7a89 --- /dev/null +++ b/external/glm/doc/api/a00227.html @@ -0,0 +1,165 @@ + + + + + + +0.9.7: GLM_GTX_rotate_normalized_axis + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_rotate_normalized_axis
+
+
+ + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > rotateNormalizedAxis (tmat4x4< T, P > const &m, T const &angle, tvec3< T, P > const &axis)
 
template<typename T , precision P>
GLM_FUNC_DECL tquat< T, P > rotateNormalizedAxis (tquat< T, P > const &q, T const &angle, tvec3< T, P > const &axis)
 
+

Detailed Description

+

Quaternions and matrices rotations around normalized axis.

+

<glm/gtx/rotate_normalized_axis.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::rotateNormalizedAxis (tmat4x4< T, P > const & m,
T const & angle,
tvec3< T, P > const & axis 
)
+
+ +

Builds a rotation 4 * 4 matrix created from a normalized axis and an angle.

+
Parameters
+ + + + +
mInput matrix multiplied by this rotation matrix.
angleRotation angle expressed in radians if GLM_FORCE_RADIANS is define or degrees otherwise.
axisRotation axis, must be normalized.
+
+
+
Template Parameters
+ + +
TValue type used to build the matrix. Currently supported: half (not recommanded), float or double.
+
+
+
See also
GLM_GTX_rotate_normalized_axis
+
+- rotate(T angle, T x, T y, T z)
+
+- rotate(tmat4x4<T, P> const & m, T angle, T x, T y, T z)
+
+- rotate(T angle, tvec3<T, P> const & v)
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tquat<T, P> glm::rotateNormalizedAxis (tquat< T, P > const & q,
T const & angle,
tvec3< T, P > const & axis 
)
+
+ +

Rotates a quaternion from a vector of 3 components normalized axis and an angle.

+
Parameters
+ + + + +
qSource orientation
angleAngle expressed in radians if GLM_FORCE_RADIANS is define or degrees otherwise.
axisNormalized axis of the rotation, must be normalized.
+
+
+
See also
GLM_GTX_rotate_normalized_axis
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00228.html b/external/glm/doc/api/a00228.html new file mode 100644 index 0000000..97bf2cf --- /dev/null +++ b/external/glm/doc/api/a00228.html @@ -0,0 +1,439 @@ + + + + + + +0.9.7: GLM_GTX_rotate_vector + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_rotate_vector
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > orientation (tvec3< T, P > const &Normal, tvec3< T, P > const &Up)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec2< T, P > rotate (tvec2< T, P > const &v, T const &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > rotate (tvec3< T, P > const &v, T const &angle, tvec3< T, P > const &normal)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< T, P > rotate (tvec4< T, P > const &v, T const &angle, tvec3< T, P > const &normal)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > rotateX (tvec3< T, P > const &v, T const &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< T, P > rotateX (tvec4< T, P > const &v, T const &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > rotateY (tvec3< T, P > const &v, T const &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< T, P > rotateY (tvec4< T, P > const &v, T const &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > rotateZ (tvec3< T, P > const &v, T const &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec4< T, P > rotateZ (tvec4< T, P > const &v, T const &angle)
 
template<typename T , precision P>
GLM_FUNC_DECL tvec3< T, P > slerp (tvec3< T, P > const &x, tvec3< T, P > const &y, T const &a)
 
+

Detailed Description

+

Function to directly rotate a vector.

+

<glm/gtx/rotate_vector.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::orientation (tvec3< T, P > const & Normal,
tvec3< T, P > const & Up 
)
+
+ +

Build a rotation matrix from a normal and a up vector.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec2<T, P> glm::rotate (tvec2< T, P > const & v,
T const & angle 
)
+
+ +

Rotate a two dimensional vector.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::rotate (tvec3< T, P > const & v,
T const & angle,
tvec3< T, P > const & normal 
)
+
+ +

Rotate a three dimensional vector around an axis.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec4<T, P> glm::rotate (tvec4< T, P > const & v,
T const & angle,
tvec3< T, P > const & normal 
)
+
+ +

Rotate a four dimensional vector around an axis.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::rotateX (tvec3< T, P > const & v,
T const & angle 
)
+
+ +

Rotate a three dimensional vector around the X axis.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec4<T, P> glm::rotateX (tvec4< T, P > const & v,
T const & angle 
)
+
+ +

Rotate a four dimentionnals vector around the X axis.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::rotateY (tvec3< T, P > const & v,
T const & angle 
)
+
+ +

Rotate a three dimensional vector around the Y axis.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec4<T, P> glm::rotateY (tvec4< T, P > const & v,
T const & angle 
)
+
+ +

Rotate a four dimensional vector around the X axis.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::rotateZ (tvec3< T, P > const & v,
T const & angle 
)
+
+ +

Rotate a three dimensional vector around the Z axis.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec4<T, P> glm::rotateZ (tvec4< T, P > const & v,
T const & angle 
)
+
+ +

Rotate a four dimensional vector around the X axis.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tvec3<T, P> glm::slerp (tvec3< T, P > const & x,
tvec3< T, P > const & y,
T const & a 
)
+
+ +

Returns Spherical interpolation between two vectors.

+
Parameters
+ + + + +
xA first vector
yA second vector
aInterpolation factor. The interpolation is defined beyond the range [0, 1].
+
+
+
See also
GLM_GTX_rotate_vector
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00229.html b/external/glm/doc/api/a00229.html new file mode 100644 index 0000000..baa36b8 --- /dev/null +++ b/external/glm/doc/api/a00229.html @@ -0,0 +1,53 @@ + + + + + + +0.9.7: GLM_GTX_scalar_relational + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+
+
GLM_GTX_scalar_relational
+
+
+

Extend a position from a source to a position at a defined length.

+

<glm/gtx/scalar_relational.hpp> need to be included to use these functionalities.

+
+ + + + diff --git a/external/glm/doc/api/a00230.html b/external/glm/doc/api/a00230.html new file mode 100644 index 0000000..7090b44 --- /dev/null +++ b/external/glm/doc/api/a00230.html @@ -0,0 +1,53 @@ + + + + + + +0.9.7: GLM_GTX_simd_mat4 + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+
+
+
+
+

SIMD implementation of mat4 type.

+

<glm/gtx/simd_mat4.hpp> need to be included to use these functionalities.

+
+ + + + diff --git a/external/glm/doc/api/a00231.html b/external/glm/doc/api/a00231.html new file mode 100644 index 0000000..d8ddd1c --- /dev/null +++ b/external/glm/doc/api/a00231.html @@ -0,0 +1,53 @@ + + + + + + +0.9.7: GLM_GTX_simd_quat + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+
+
+
+
+

SIMD implementation of quat type.

+

<glm/gtx/simd_quat.hpp> need to be included to use these functionalities.

+
+ + + + diff --git a/external/glm/doc/api/a00232.html b/external/glm/doc/api/a00232.html new file mode 100644 index 0000000..ef0b016 --- /dev/null +++ b/external/glm/doc/api/a00232.html @@ -0,0 +1,53 @@ + + + + + + +0.9.7: GLM_GTX_simd_vec4 + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+
+
+
+
+

SIMD implementation of vec4 type.

+

<glm/gtx/simd_vec4.hpp> need to be included to use these functionalities.

+
+ + + + diff --git a/external/glm/doc/api/a00233.html b/external/glm/doc/api/a00233.html new file mode 100644 index 0000000..21edfef --- /dev/null +++ b/external/glm/doc/api/a00233.html @@ -0,0 +1,211 @@ + + + + + + +0.9.7: GLM_GTX_spline + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+ +
+ + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType catmullRom (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
 
template<typename genType >
GLM_FUNC_DECL genType cubic (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
 
template<typename genType >
GLM_FUNC_DECL genType hermite (genType const &v1, genType const &t1, genType const &v2, genType const &t2, typename genType::value_type const &s)
 
+

Detailed Description

+

Spline functions.

+

<glm/gtx/spline.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::catmullRom (genType const & v1,
genType const & v2,
genType const & v3,
genType const & v4,
typename genType::value_type const & s 
)
+
+ +

Return a point from a catmull rom curve.

+
See also
GLM_GTX_spline extension.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::cubic (genType const & v1,
genType const & v2,
genType const & v3,
genType const & v4,
typename genType::value_type const & s 
)
+
+ +

Return a point from a cubic curve.

+
See also
GLM_GTX_spline extension.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::hermite (genType const & v1,
genType const & t1,
genType const & v2,
genType const & t2,
typename genType::value_type const & s 
)
+
+ +

Return a point from a hermite curve.

+
See also
GLM_GTX_spline extension.
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00234.html b/external/glm/doc/api/a00234.html new file mode 100644 index 0000000..d6ab12e --- /dev/null +++ b/external/glm/doc/api/a00234.html @@ -0,0 +1,213 @@ + + + + + + +0.9.7: GLM_GTX_std_based_type + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_std_based_type
+
+
+ + + + + + + + + + + + + + + + + + +

+Typedefs

typedef tvec1< std::size_t, defaultp > size1
 
typedef tvec1< std::size_t, defaultp > size1_t
 
typedef tvec2< std::size_t, defaultp > size2
 
typedef tvec2< std::size_t, defaultp > size2_t
 
typedef tvec3< std::size_t, defaultp > size3
 
typedef tvec3< std::size_t, defaultp > size3_t
 
typedef tvec4< std::size_t, defaultp > size4
 
typedef tvec4< std::size_t, defaultp > size4_t
 
+

Detailed Description

+

Adds vector types based on STL value types.

+

<glm/gtx/std_based_type.hpp> need to be included to use these functionalities.

+

Typedef Documentation

+ +
+
+ + + + +
typedef tvec1<std::size_t, defaultp> size1
+
+ +

Vector type based of one std::size_t component.

+
See also
GLM_GTX_std_based_type
+ +

Definition at line 59 of file std_based_type.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec1<std::size_t, defaultp> size1_t
+
+ +

Vector type based of one std::size_t component.

+
See also
GLM_GTX_std_based_type
+ +

Definition at line 75 of file std_based_type.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2<std::size_t, defaultp> size2
+
+ +

Vector type based of two std::size_t components.

+
See also
GLM_GTX_std_based_type
+ +

Definition at line 63 of file std_based_type.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec2<std::size_t, defaultp> size2_t
+
+ +

Vector type based of two std::size_t components.

+
See also
GLM_GTX_std_based_type
+ +

Definition at line 79 of file std_based_type.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3<std::size_t, defaultp> size3
+
+ +

Vector type based of three std::size_t components.

+
See also
GLM_GTX_std_based_type
+ +

Definition at line 67 of file std_based_type.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec3<std::size_t, defaultp> size3_t
+
+ +

Vector type based of three std::size_t components.

+
See also
GLM_GTX_std_based_type
+ +

Definition at line 83 of file std_based_type.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4<std::size_t, defaultp> size4
+
+ +

Vector type based of four std::size_t components.

+
See also
GLM_GTX_std_based_type
+ +

Definition at line 71 of file std_based_type.hpp.

+ +
+
+ +
+
+ + + + +
typedef tvec4<std::size_t, defaultp> size4_t
+
+ +

Vector type based of four std::size_t components.

+
See also
GLM_GTX_std_based_type
+ +

Definition at line 87 of file std_based_type.hpp.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00235.html b/external/glm/doc/api/a00235.html new file mode 100644 index 0000000..3c2134d --- /dev/null +++ b/external/glm/doc/api/a00235.html @@ -0,0 +1,83 @@ + + + + + + +0.9.7: GLM_GTX_string_cast + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
+
+
+ + + + + +

+Functions

template<template< typename, precision > class matType, typename T , precision P>
GLM_FUNC_DECL std::string to_string (matType< T, P > const &x)
 
+

Detailed Description

+

Setup strings for GLM type values.

+

<glm/gtx/string_cast.hpp> need to be included to use these functionalities. This extension is not supported with CUDA

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL std::string glm::to_string (matType< T, P > const & x)
+
+ +

Create a string from a GLM vector or matrix typed variable.

+
See also
GLM_GTX_string_cast extension.
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00236.html b/external/glm/doc/api/a00236.html new file mode 100644 index 0000000..f21bb04 --- /dev/null +++ b/external/glm/doc/api/a00236.html @@ -0,0 +1,143 @@ + + + + + + +0.9.7: GLM_GTX_transform + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
+
+
+ + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > rotate (T angle, tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > scale (tvec3< T, P > const &v)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > translate (tvec3< T, P > const &v)
 
+

Detailed Description

+

Add transformation matrices.

+

<glm/gtx/transform.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::rotate (T angle,
tvec3< T, P > const & v 
)
+
+ +

Builds a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in degrees.

+
See also
GLM_GTC_matrix_transform
+
+GLM_GTX_transform
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::scale (tvec3< T, P > const & v)
+
+ +

Transforms a matrix with a scale 4 * 4 matrix created from a vector of 3 components.

+
See also
GLM_GTC_matrix_transform
+
+GLM_GTX_transform
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::translate (tvec3< T, P > const & v)
+
+ +

Transforms a matrix with a translation 4 * 4 matrix created from 3 scalars.

+
See also
GLM_GTC_matrix_transform
+
+GLM_GTX_transform
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00237.html b/external/glm/doc/api/a00237.html new file mode 100644 index 0000000..4db5cfa --- /dev/null +++ b/external/glm/doc/api/a00237.html @@ -0,0 +1,372 @@ + + + + + + +0.9.7: GLM_GTX_transform2 + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > proj2D (const tmat3x3< T, P > &m, const tvec3< T, P > &normal)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > proj3D (const tmat4x4< T, P > &m, const tvec3< T, P > &normal)
 
template<typename valType , precision P>
GLM_FUNC_DECL tmat4x4< valType, P > scaleBias (valType scale, valType bias)
 
template<typename valType , precision P>
GLM_FUNC_DECL tmat4x4< valType, P > scaleBias (tmat4x4< valType, P > const &m, valType scale, valType bias)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > shearX2D (tmat3x3< T, P > const &m, T y)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > shearX3D (const tmat4x4< T, P > &m, T y, T z)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat3x3< T, P > shearY2D (tmat3x3< T, P > const &m, T x)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > shearY3D (const tmat4x4< T, P > &m, T x, T z)
 
template<typename T , precision P>
GLM_FUNC_DECL tmat4x4< T, P > shearZ3D (const tmat4x4< T, P > &m, T x, T y)
 
+

Detailed Description

+

Add extra transformation matrices.

+

<glm/gtx/transform2.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat3x3<T, P> glm::proj2D (const tmat3x3< T, P > & m,
const tvec3< T, P > & normal 
)
+
+ +

Build planar projection matrix along normal axis.

+

From GLM_GTX_transform2 extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::proj3D (const tmat4x4< T, P > & m,
const tvec3< T, P > & normal 
)
+
+ +

Build planar projection matrix along normal axis.

+

From GLM_GTX_transform2 extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<valType, P> glm::scaleBias (valType scale,
valType bias 
)
+
+ +

Build a scale bias matrix.

+

From GLM_GTX_transform2 extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<valType, P> glm::scaleBias (tmat4x4< valType, P > const & m,
valType scale,
valType bias 
)
+
+ +

Build a scale bias matrix.

+

From GLM_GTX_transform2 extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat3x3<T, P> glm::shearX2D (tmat3x3< T, P > const & m,
T y 
)
+
+ +

Transforms a matrix with a shearing on X axis.

+

From GLM_GTX_transform2 extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::shearX3D (const tmat4x4< T, P > & m,
T y,
T z 
)
+
+ +

Transforms a matrix with a shearing on X axis From GLM_GTX_transform2 extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat3x3<T, P> glm::shearY2D (tmat3x3< T, P > const & m,
T x 
)
+
+ +

Transforms a matrix with a shearing on Y axis.

+

From GLM_GTX_transform2 extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::shearY3D (const tmat4x4< T, P > & m,
T x,
T z 
)
+
+ +

Transforms a matrix with a shearing on Y axis.

+

From GLM_GTX_transform2 extension.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tmat4x4<T, P> glm::shearZ3D (const tmat4x4< T, P > & m,
T x,
T y 
)
+
+ +

Transforms a matrix with a shearing on Z axis.

+

From GLM_GTX_transform2 extension.

+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00238.html b/external/glm/doc/api/a00238.html new file mode 100644 index 0000000..2be046d --- /dev/null +++ b/external/glm/doc/api/a00238.html @@ -0,0 +1,7811 @@ + + + + + + +0.9.7: GLM_GTX_type_aligned + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_type_aligned
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

 GLM_ALIGNED_TYPEDEF (lowp_int8, aligned_lowp_int8, 1)
 
 GLM_ALIGNED_TYPEDEF (lowp_int16, aligned_lowp_int16, 2)
 
 GLM_ALIGNED_TYPEDEF (lowp_int32, aligned_lowp_int32, 4)
 
 GLM_ALIGNED_TYPEDEF (lowp_int64, aligned_lowp_int64, 8)
 
 GLM_ALIGNED_TYPEDEF (lowp_int8_t, aligned_lowp_int8_t, 1)
 
 GLM_ALIGNED_TYPEDEF (lowp_int16_t, aligned_lowp_int16_t, 2)
 
 GLM_ALIGNED_TYPEDEF (lowp_int32_t, aligned_lowp_int32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (lowp_int64_t, aligned_lowp_int64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (lowp_i8, aligned_lowp_i8, 1)
 
 GLM_ALIGNED_TYPEDEF (lowp_i16, aligned_lowp_i16, 2)
 
 GLM_ALIGNED_TYPEDEF (lowp_i32, aligned_lowp_i32, 4)
 
 GLM_ALIGNED_TYPEDEF (lowp_i64, aligned_lowp_i64, 8)
 
 GLM_ALIGNED_TYPEDEF (mediump_int8, aligned_mediump_int8, 1)
 
 GLM_ALIGNED_TYPEDEF (mediump_int16, aligned_mediump_int16, 2)
 
 GLM_ALIGNED_TYPEDEF (mediump_int32, aligned_mediump_int32, 4)
 
 GLM_ALIGNED_TYPEDEF (mediump_int64, aligned_mediump_int64, 8)
 
 GLM_ALIGNED_TYPEDEF (mediump_int8_t, aligned_mediump_int8_t, 1)
 
 GLM_ALIGNED_TYPEDEF (mediump_int16_t, aligned_mediump_int16_t, 2)
 
 GLM_ALIGNED_TYPEDEF (mediump_int32_t, aligned_mediump_int32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (mediump_int64_t, aligned_mediump_int64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (mediump_i8, aligned_mediump_i8, 1)
 
 GLM_ALIGNED_TYPEDEF (mediump_i16, aligned_mediump_i16, 2)
 
 GLM_ALIGNED_TYPEDEF (mediump_i32, aligned_mediump_i32, 4)
 
 GLM_ALIGNED_TYPEDEF (mediump_i64, aligned_mediump_i64, 8)
 
 GLM_ALIGNED_TYPEDEF (highp_int8, aligned_highp_int8, 1)
 
 GLM_ALIGNED_TYPEDEF (highp_int16, aligned_highp_int16, 2)
 
 GLM_ALIGNED_TYPEDEF (highp_int32, aligned_highp_int32, 4)
 
 GLM_ALIGNED_TYPEDEF (highp_int64, aligned_highp_int64, 8)
 
 GLM_ALIGNED_TYPEDEF (highp_int8_t, aligned_highp_int8_t, 1)
 
 GLM_ALIGNED_TYPEDEF (highp_int16_t, aligned_highp_int16_t, 2)
 
 GLM_ALIGNED_TYPEDEF (highp_int32_t, aligned_highp_int32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (highp_int64_t, aligned_highp_int64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (highp_i8, aligned_highp_i8, 1)
 
 GLM_ALIGNED_TYPEDEF (highp_i16, aligned_highp_i16, 2)
 
 GLM_ALIGNED_TYPEDEF (highp_i32, aligned_highp_i32, 4)
 
 GLM_ALIGNED_TYPEDEF (highp_i64, aligned_highp_i64, 8)
 
 GLM_ALIGNED_TYPEDEF (int8, aligned_int8, 1)
 
 GLM_ALIGNED_TYPEDEF (int16, aligned_int16, 2)
 
 GLM_ALIGNED_TYPEDEF (int32, aligned_int32, 4)
 
 GLM_ALIGNED_TYPEDEF (int64, aligned_int64, 8)
 
 GLM_ALIGNED_TYPEDEF (int8_t, aligned_int8_t, 1)
 
 GLM_ALIGNED_TYPEDEF (int16_t, aligned_int16_t, 2)
 
 GLM_ALIGNED_TYPEDEF (int32_t, aligned_int32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (int64_t, aligned_int64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (i8, aligned_i8, 1)
 
 GLM_ALIGNED_TYPEDEF (i16, aligned_i16, 2)
 
 GLM_ALIGNED_TYPEDEF (i32, aligned_i32, 4)
 
 GLM_ALIGNED_TYPEDEF (i64, aligned_i64, 8)
 
 GLM_ALIGNED_TYPEDEF (ivec1, aligned_ivec1, 4)
 
 GLM_ALIGNED_TYPEDEF (ivec2, aligned_ivec2, 8)
 
 GLM_ALIGNED_TYPEDEF (ivec3, aligned_ivec3, 16)
 
 GLM_ALIGNED_TYPEDEF (ivec4, aligned_ivec4, 16)
 
 GLM_ALIGNED_TYPEDEF (i8vec1, aligned_i8vec1, 1)
 
 GLM_ALIGNED_TYPEDEF (i8vec2, aligned_i8vec2, 2)
 
 GLM_ALIGNED_TYPEDEF (i8vec3, aligned_i8vec3, 4)
 
 GLM_ALIGNED_TYPEDEF (i8vec4, aligned_i8vec4, 4)
 
 GLM_ALIGNED_TYPEDEF (i16vec1, aligned_i16vec1, 2)
 
 GLM_ALIGNED_TYPEDEF (i16vec2, aligned_i16vec2, 4)
 
 GLM_ALIGNED_TYPEDEF (i16vec3, aligned_i16vec3, 8)
 
 GLM_ALIGNED_TYPEDEF (i16vec4, aligned_i16vec4, 8)
 
 GLM_ALIGNED_TYPEDEF (i32vec1, aligned_i32vec1, 4)
 
 GLM_ALIGNED_TYPEDEF (i32vec2, aligned_i32vec2, 8)
 
 GLM_ALIGNED_TYPEDEF (i32vec3, aligned_i32vec3, 16)
 
 GLM_ALIGNED_TYPEDEF (i32vec4, aligned_i32vec4, 16)
 
 GLM_ALIGNED_TYPEDEF (i64vec1, aligned_i64vec1, 8)
 
 GLM_ALIGNED_TYPEDEF (i64vec2, aligned_i64vec2, 16)
 
 GLM_ALIGNED_TYPEDEF (i64vec3, aligned_i64vec3, 32)
 
 GLM_ALIGNED_TYPEDEF (i64vec4, aligned_i64vec4, 32)
 
 GLM_ALIGNED_TYPEDEF (lowp_uint8, aligned_lowp_uint8, 1)
 
 GLM_ALIGNED_TYPEDEF (lowp_uint16, aligned_lowp_uint16, 2)
 
 GLM_ALIGNED_TYPEDEF (lowp_uint32, aligned_lowp_uint32, 4)
 
 GLM_ALIGNED_TYPEDEF (lowp_uint64, aligned_lowp_uint64, 8)
 
 GLM_ALIGNED_TYPEDEF (lowp_uint8_t, aligned_lowp_uint8_t, 1)
 
 GLM_ALIGNED_TYPEDEF (lowp_uint16_t, aligned_lowp_uint16_t, 2)
 
 GLM_ALIGNED_TYPEDEF (lowp_uint32_t, aligned_lowp_uint32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (lowp_uint64_t, aligned_lowp_uint64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (lowp_u8, aligned_lowp_u8, 1)
 
 GLM_ALIGNED_TYPEDEF (lowp_u16, aligned_lowp_u16, 2)
 
 GLM_ALIGNED_TYPEDEF (lowp_u32, aligned_lowp_u32, 4)
 
 GLM_ALIGNED_TYPEDEF (lowp_u64, aligned_lowp_u64, 8)
 
 GLM_ALIGNED_TYPEDEF (mediump_uint8, aligned_mediump_uint8, 1)
 
 GLM_ALIGNED_TYPEDEF (mediump_uint16, aligned_mediump_uint16, 2)
 
 GLM_ALIGNED_TYPEDEF (mediump_uint32, aligned_mediump_uint32, 4)
 
 GLM_ALIGNED_TYPEDEF (mediump_uint64, aligned_mediump_uint64, 8)
 
 GLM_ALIGNED_TYPEDEF (mediump_uint8_t, aligned_mediump_uint8_t, 1)
 
 GLM_ALIGNED_TYPEDEF (mediump_uint16_t, aligned_mediump_uint16_t, 2)
 
 GLM_ALIGNED_TYPEDEF (mediump_uint32_t, aligned_mediump_uint32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (mediump_uint64_t, aligned_mediump_uint64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (mediump_u8, aligned_mediump_u8, 1)
 
 GLM_ALIGNED_TYPEDEF (mediump_u16, aligned_mediump_u16, 2)
 
 GLM_ALIGNED_TYPEDEF (mediump_u32, aligned_mediump_u32, 4)
 
 GLM_ALIGNED_TYPEDEF (mediump_u64, aligned_mediump_u64, 8)
 
 GLM_ALIGNED_TYPEDEF (highp_uint8, aligned_highp_uint8, 1)
 
 GLM_ALIGNED_TYPEDEF (highp_uint16, aligned_highp_uint16, 2)
 
 GLM_ALIGNED_TYPEDEF (highp_uint32, aligned_highp_uint32, 4)
 
 GLM_ALIGNED_TYPEDEF (highp_uint64, aligned_highp_uint64, 8)
 
 GLM_ALIGNED_TYPEDEF (highp_uint8_t, aligned_highp_uint8_t, 1)
 
 GLM_ALIGNED_TYPEDEF (highp_uint16_t, aligned_highp_uint16_t, 2)
 
 GLM_ALIGNED_TYPEDEF (highp_uint32_t, aligned_highp_uint32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (highp_uint64_t, aligned_highp_uint64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (highp_u8, aligned_highp_u8, 1)
 
 GLM_ALIGNED_TYPEDEF (highp_u16, aligned_highp_u16, 2)
 
 GLM_ALIGNED_TYPEDEF (highp_u32, aligned_highp_u32, 4)
 
 GLM_ALIGNED_TYPEDEF (highp_u64, aligned_highp_u64, 8)
 
 GLM_ALIGNED_TYPEDEF (uint8, aligned_uint8, 1)
 
 GLM_ALIGNED_TYPEDEF (uint16, aligned_uint16, 2)
 
 GLM_ALIGNED_TYPEDEF (uint32, aligned_uint32, 4)
 
 GLM_ALIGNED_TYPEDEF (uint64, aligned_uint64, 8)
 
 GLM_ALIGNED_TYPEDEF (uint8_t, aligned_uint8_t, 1)
 
 GLM_ALIGNED_TYPEDEF (uint16_t, aligned_uint16_t, 2)
 
 GLM_ALIGNED_TYPEDEF (uint32_t, aligned_uint32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (uint64_t, aligned_uint64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (u8, aligned_u8, 1)
 
 GLM_ALIGNED_TYPEDEF (u16, aligned_u16, 2)
 
 GLM_ALIGNED_TYPEDEF (u32, aligned_u32, 4)
 
 GLM_ALIGNED_TYPEDEF (u64, aligned_u64, 8)
 
 GLM_ALIGNED_TYPEDEF (uvec1, aligned_uvec1, 4)
 
 GLM_ALIGNED_TYPEDEF (uvec2, aligned_uvec2, 8)
 
 GLM_ALIGNED_TYPEDEF (uvec3, aligned_uvec3, 16)
 
 GLM_ALIGNED_TYPEDEF (uvec4, aligned_uvec4, 16)
 
 GLM_ALIGNED_TYPEDEF (u8vec1, aligned_u8vec1, 1)
 
 GLM_ALIGNED_TYPEDEF (u8vec2, aligned_u8vec2, 2)
 
 GLM_ALIGNED_TYPEDEF (u8vec3, aligned_u8vec3, 4)
 
 GLM_ALIGNED_TYPEDEF (u8vec4, aligned_u8vec4, 4)
 
 GLM_ALIGNED_TYPEDEF (u16vec1, aligned_u16vec1, 2)
 
 GLM_ALIGNED_TYPEDEF (u16vec2, aligned_u16vec2, 4)
 
 GLM_ALIGNED_TYPEDEF (u16vec3, aligned_u16vec3, 8)
 
 GLM_ALIGNED_TYPEDEF (u16vec4, aligned_u16vec4, 8)
 
 GLM_ALIGNED_TYPEDEF (u32vec1, aligned_u32vec1, 4)
 
 GLM_ALIGNED_TYPEDEF (u32vec2, aligned_u32vec2, 8)
 
 GLM_ALIGNED_TYPEDEF (u32vec3, aligned_u32vec3, 16)
 
 GLM_ALIGNED_TYPEDEF (u32vec4, aligned_u32vec4, 16)
 
 GLM_ALIGNED_TYPEDEF (u64vec1, aligned_u64vec1, 8)
 
 GLM_ALIGNED_TYPEDEF (u64vec2, aligned_u64vec2, 16)
 
 GLM_ALIGNED_TYPEDEF (u64vec3, aligned_u64vec3, 32)
 
 GLM_ALIGNED_TYPEDEF (u64vec4, aligned_u64vec4, 32)
 
 GLM_ALIGNED_TYPEDEF (float32, aligned_float32, 4)
 
 GLM_ALIGNED_TYPEDEF (float64, aligned_float64, 8)
 
 GLM_ALIGNED_TYPEDEF (float32_t, aligned_float32_t, 4)
 
 GLM_ALIGNED_TYPEDEF (float64_t, aligned_float64_t, 8)
 
 GLM_ALIGNED_TYPEDEF (float32, aligned_f32, 4)
 
 GLM_ALIGNED_TYPEDEF (float64, aligned_f64, 8)
 
 GLM_ALIGNED_TYPEDEF (vec1, aligned_vec1, 4)
 
 GLM_ALIGNED_TYPEDEF (vec2, aligned_vec2, 8)
 
 GLM_ALIGNED_TYPEDEF (vec3, aligned_vec3, 16)
 
 GLM_ALIGNED_TYPEDEF (vec4, aligned_vec4, 16)
 
 GLM_ALIGNED_TYPEDEF (fvec1, aligned_fvec1, 4)
 
 GLM_ALIGNED_TYPEDEF (fvec2, aligned_fvec2, 8)
 
 GLM_ALIGNED_TYPEDEF (fvec3, aligned_fvec3, 16)
 
 GLM_ALIGNED_TYPEDEF (fvec4, aligned_fvec4, 16)
 
 GLM_ALIGNED_TYPEDEF (f32vec1, aligned_f32vec1, 4)
 
 GLM_ALIGNED_TYPEDEF (f32vec2, aligned_f32vec2, 8)
 
 GLM_ALIGNED_TYPEDEF (f32vec3, aligned_f32vec3, 16)
 
 GLM_ALIGNED_TYPEDEF (f32vec4, aligned_f32vec4, 16)
 
 GLM_ALIGNED_TYPEDEF (dvec1, aligned_dvec1, 8)
 
 GLM_ALIGNED_TYPEDEF (dvec2, aligned_dvec2, 16)
 
 GLM_ALIGNED_TYPEDEF (dvec3, aligned_dvec3, 32)
 
 GLM_ALIGNED_TYPEDEF (dvec4, aligned_dvec4, 32)
 
 GLM_ALIGNED_TYPEDEF (f64vec1, aligned_f64vec1, 8)
 
 GLM_ALIGNED_TYPEDEF (f64vec2, aligned_f64vec2, 16)
 
 GLM_ALIGNED_TYPEDEF (f64vec3, aligned_f64vec3, 32)
 
 GLM_ALIGNED_TYPEDEF (f64vec4, aligned_f64vec4, 32)
 
 GLM_ALIGNED_TYPEDEF (mat2, aligned_mat2, 16)
 
 GLM_ALIGNED_TYPEDEF (mat3, aligned_mat3, 16)
 
 GLM_ALIGNED_TYPEDEF (mat4, aligned_mat4, 16)
 
 GLM_ALIGNED_TYPEDEF (mat2x2, aligned_mat2x2, 16)
 
 GLM_ALIGNED_TYPEDEF (mat3x3, aligned_mat3x3, 16)
 
 GLM_ALIGNED_TYPEDEF (mat4x4, aligned_mat4x4, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat2x2, aligned_fmat2, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat3x3, aligned_fmat3, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat4x4, aligned_fmat4, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat2x2, aligned_fmat2x2, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat2x3, aligned_fmat2x3, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat2x4, aligned_fmat2x4, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat3x2, aligned_fmat3x2, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat3x3, aligned_fmat3x3, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat3x4, aligned_fmat3x4, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat4x2, aligned_fmat4x2, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat4x3, aligned_fmat4x3, 16)
 
 GLM_ALIGNED_TYPEDEF (fmat4x4, aligned_fmat4x4, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat2x2, aligned_f32mat2, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat3x3, aligned_f32mat3, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat4x4, aligned_f32mat4, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat2x2, aligned_f32mat2x2, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat2x3, aligned_f32mat2x3, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat2x4, aligned_f32mat2x4, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat3x2, aligned_f32mat3x2, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat3x3, aligned_f32mat3x3, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat3x4, aligned_f32mat3x4, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat4x2, aligned_f32mat4x2, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat4x3, aligned_f32mat4x3, 16)
 
 GLM_ALIGNED_TYPEDEF (f32mat4x4, aligned_f32mat4x4, 16)
 
 GLM_ALIGNED_TYPEDEF (f64mat2x2, aligned_f64mat2, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat3x3, aligned_f64mat3, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat4x4, aligned_f64mat4, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat2x2, aligned_f64mat2x2, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat2x3, aligned_f64mat2x3, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat2x4, aligned_f64mat2x4, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat3x2, aligned_f64mat3x2, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat3x3, aligned_f64mat3x3, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat3x4, aligned_f64mat3x4, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat4x2, aligned_f64mat4x2, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat4x3, aligned_f64mat4x3, 32)
 
 GLM_ALIGNED_TYPEDEF (f64mat4x4, aligned_f64mat4x4, 32)
 
 GLM_ALIGNED_TYPEDEF (quat, aligned_quat, 16)
 
 GLM_ALIGNED_TYPEDEF (fquat, aligned_fquat, 16)
 
 GLM_ALIGNED_TYPEDEF (dquat, aligned_dquat, 32)
 
 GLM_ALIGNED_TYPEDEF (f32quat, aligned_f32quat, 16)
 
 GLM_ALIGNED_TYPEDEF (f64quat, aligned_f64quat, 32)
 
+

Detailed Description

+

Defines aligned types.

+

Precision types defines aligned types.

+

<glm/gtx/type_aligned.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_int8 ,
aligned_lowp_int8 ,
1  
)
+
+ +

Low precision 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_int16 ,
aligned_lowp_int16 ,
2  
)
+
+ +

Low precision 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_int32 ,
aligned_lowp_int32 ,
4  
)
+
+ +

Low precision 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_int64 ,
aligned_lowp_int64 ,
8  
)
+
+ +

Low precision 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_int8_t ,
aligned_lowp_int8_t ,
1  
)
+
+ +

Low precision 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_int16_t ,
aligned_lowp_int16_t ,
2  
)
+
+ +

Low precision 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_int32_t ,
aligned_lowp_int32_t ,
4  
)
+
+ +

Low precision 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_int64_t ,
aligned_lowp_int64_t ,
8  
)
+
+ +

Low precision 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_i8 ,
aligned_lowp_i8 ,
1  
)
+
+ +

Low precision 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_i16 ,
aligned_lowp_i16 ,
2  
)
+
+ +

Low precision 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_i32 ,
aligned_lowp_i32 ,
4  
)
+
+ +

Low precision 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_i64 ,
aligned_lowp_i64 ,
8  
)
+
+ +

Low precision 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_int8 ,
aligned_mediump_int8 ,
1  
)
+
+ +

Medium precision 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_int16 ,
aligned_mediump_int16 ,
2  
)
+
+ +

Medium precision 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_int32 ,
aligned_mediump_int32 ,
4  
)
+
+ +

Medium precision 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_int64 ,
aligned_mediump_int64 ,
8  
)
+
+ +

Medium precision 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_int8_t ,
aligned_mediump_int8_t ,
1  
)
+
+ +

Medium precision 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_int16_t ,
aligned_mediump_int16_t ,
2  
)
+
+ +

Medium precision 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_int32_t ,
aligned_mediump_int32_t ,
4  
)
+
+ +

Medium precision 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_int64_t ,
aligned_mediump_int64_t ,
8  
)
+
+ +

Medium precision 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_i8 ,
aligned_mediump_i8 ,
1  
)
+
+ +

Medium precision 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_i16 ,
aligned_mediump_i16 ,
2  
)
+
+ +

Medium precision 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_i32 ,
aligned_mediump_i32 ,
4  
)
+
+ +

Medium precision 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_i64 ,
aligned_mediump_i64 ,
8  
)
+
+ +

Medium precision 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_int8 ,
aligned_highp_int8 ,
1  
)
+
+ +

High precision 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_int16 ,
aligned_highp_int16 ,
2  
)
+
+ +

High precision 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_int32 ,
aligned_highp_int32 ,
4  
)
+
+ +

High precision 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_int64 ,
aligned_highp_int64 ,
8  
)
+
+ +

High precision 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_int8_t ,
aligned_highp_int8_t ,
1  
)
+
+ +

High precision 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_int16_t ,
aligned_highp_int16_t ,
2  
)
+
+ +

High precision 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_int32_t ,
aligned_highp_int32_t ,
4  
)
+
+ +

High precision 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_int64_t ,
aligned_highp_int64_t ,
8  
)
+
+ +

High precision 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_i8 ,
aligned_highp_i8 ,
1  
)
+
+ +

High precision 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_i16 ,
aligned_highp_i16 ,
2  
)
+
+ +

High precision 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_i32 ,
aligned_highp_i32 ,
4  
)
+
+ +

High precision 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_i64 ,
aligned_highp_i64 ,
8  
)
+
+ +

High precision 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (int8 ,
aligned_int8 ,
1  
)
+
+ +

Default precision 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (int16 ,
aligned_int16 ,
2  
)
+
+ +

Default precision 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (int32 ,
aligned_int32 ,
4  
)
+
+ +

Default precision 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (int64 ,
aligned_int64 ,
8  
)
+
+ +

Default precision 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (int8_t ,
aligned_int8_t ,
1  
)
+
+ +

Default precision 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (int16_t ,
aligned_int16_t ,
2  
)
+
+ +

Default precision 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (int32_t ,
aligned_int32_t ,
4  
)
+
+ +

Default precision 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (int64_t ,
aligned_int64_t ,
8  
)
+
+ +

Default precision 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i8 ,
aligned_i8 ,
1  
)
+
+ +

Default precision 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i16 ,
aligned_i16 ,
2  
)
+
+ +

Default precision 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i32 ,
aligned_i32 ,
4  
)
+
+ +

Default precision 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i64 ,
aligned_i64 ,
8  
)
+
+ +

Default precision 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (ivec1 ,
aligned_ivec1 ,
4  
)
+
+ +

Default precision 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (ivec2 ,
aligned_ivec2 ,
8  
)
+
+ +

Default precision 32 bit signed integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (ivec3 ,
aligned_ivec3 ,
16  
)
+
+ +

Default precision 32 bit signed integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (ivec4 ,
aligned_ivec4 ,
16  
)
+
+ +

Default precision 32 bit signed integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i8vec1 ,
aligned_i8vec1 ,
1  
)
+
+ +

Default precision 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i8vec2 ,
aligned_i8vec2 ,
2  
)
+
+ +

Default precision 8 bit signed integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i8vec3 ,
aligned_i8vec3 ,
4  
)
+
+ +

Default precision 8 bit signed integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i8vec4 ,
aligned_i8vec4 ,
4  
)
+
+ +

Default precision 8 bit signed integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i16vec1 ,
aligned_i16vec1 ,
2  
)
+
+ +

Default precision 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i16vec2 ,
aligned_i16vec2 ,
4  
)
+
+ +

Default precision 16 bit signed integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i16vec3 ,
aligned_i16vec3 ,
8  
)
+
+ +

Default precision 16 bit signed integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i16vec4 ,
aligned_i16vec4 ,
8  
)
+
+ +

Default precision 16 bit signed integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i32vec1 ,
aligned_i32vec1 ,
4  
)
+
+ +

Default precision 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i32vec2 ,
aligned_i32vec2 ,
8  
)
+
+ +

Default precision 32 bit signed integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i32vec3 ,
aligned_i32vec3 ,
16  
)
+
+ +

Default precision 32 bit signed integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i32vec4 ,
aligned_i32vec4 ,
16  
)
+
+ +

Default precision 32 bit signed integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i64vec1 ,
aligned_i64vec1 ,
8  
)
+
+ +

Default precision 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i64vec2 ,
aligned_i64vec2 ,
16  
)
+
+ +

Default precision 64 bit signed integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i64vec3 ,
aligned_i64vec3 ,
32  
)
+
+ +

Default precision 64 bit signed integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i64vec4 ,
aligned_i64vec4 ,
32  
)
+
+ +

Default precision 64 bit signed integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_uint8 ,
aligned_lowp_uint8 ,
1  
)
+
+ +

Low precision 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_uint16 ,
aligned_lowp_uint16 ,
2  
)
+
+ +

Low precision 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_uint32 ,
aligned_lowp_uint32 ,
4  
)
+
+ +

Low precision 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_uint64 ,
aligned_lowp_uint64 ,
8  
)
+
+ +

Low precision 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_uint8_t ,
aligned_lowp_uint8_t ,
1  
)
+
+ +

Low precision 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_uint16_t ,
aligned_lowp_uint16_t ,
2  
)
+
+ +

Low precision 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_uint32_t ,
aligned_lowp_uint32_t ,
4  
)
+
+ +

Low precision 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_uint64_t ,
aligned_lowp_uint64_t ,
8  
)
+
+ +

Low precision 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_u8 ,
aligned_lowp_u8 ,
1  
)
+
+ +

Low precision 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_u16 ,
aligned_lowp_u16 ,
2  
)
+
+ +

Low precision 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_u32 ,
aligned_lowp_u32 ,
4  
)
+
+ +

Low precision 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_u64 ,
aligned_lowp_u64 ,
8  
)
+
+ +

Low precision 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_uint8 ,
aligned_mediump_uint8 ,
1  
)
+
+ +

Medium precision 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_uint16 ,
aligned_mediump_uint16 ,
2  
)
+
+ +

Medium precision 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_uint32 ,
aligned_mediump_uint32 ,
4  
)
+
+ +

Medium precision 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_uint64 ,
aligned_mediump_uint64 ,
8  
)
+
+ +

Medium precision 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_uint8_t ,
aligned_mediump_uint8_t ,
1  
)
+
+ +

Medium precision 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_uint16_t ,
aligned_mediump_uint16_t ,
2  
)
+
+ +

Medium precision 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_uint32_t ,
aligned_mediump_uint32_t ,
4  
)
+
+ +

Medium precision 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_uint64_t ,
aligned_mediump_uint64_t ,
8  
)
+
+ +

Medium precision 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_u8 ,
aligned_mediump_u8 ,
1  
)
+
+ +

Medium precision 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_u16 ,
aligned_mediump_u16 ,
2  
)
+
+ +

Medium precision 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_u32 ,
aligned_mediump_u32 ,
4  
)
+
+ +

Medium precision 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_u64 ,
aligned_mediump_u64 ,
8  
)
+
+ +

Medium precision 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_uint8 ,
aligned_highp_uint8 ,
1  
)
+
+ +

High precision 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_uint16 ,
aligned_highp_uint16 ,
2  
)
+
+ +

High precision 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_uint32 ,
aligned_highp_uint32 ,
4  
)
+
+ +

High precision 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_uint64 ,
aligned_highp_uint64 ,
8  
)
+
+ +

High precision 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_uint8_t ,
aligned_highp_uint8_t ,
1  
)
+
+ +

High precision 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_uint16_t ,
aligned_highp_uint16_t ,
2  
)
+
+ +

High precision 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_uint32_t ,
aligned_highp_uint32_t ,
4  
)
+
+ +

High precision 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_uint64_t ,
aligned_highp_uint64_t ,
8  
)
+
+ +

High precision 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_u8 ,
aligned_highp_u8 ,
1  
)
+
+ +

High precision 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_u16 ,
aligned_highp_u16 ,
2  
)
+
+ +

High precision 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_u32 ,
aligned_highp_u32 ,
4  
)
+
+ +

High precision 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_u64 ,
aligned_highp_u64 ,
8  
)
+
+ +

High precision 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uint8 ,
aligned_uint8 ,
1  
)
+
+ +

Default precision 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uint16 ,
aligned_uint16 ,
2  
)
+
+ +

Default precision 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uint32 ,
aligned_uint32 ,
4  
)
+
+ +

Default precision 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uint64 ,
aligned_uint64 ,
8  
)
+
+ +

Default precision 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uint8_t ,
aligned_uint8_t ,
1  
)
+
+ +

Default precision 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uint16_t ,
aligned_uint16_t ,
2  
)
+
+ +

Default precision 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uint32_t ,
aligned_uint32_t ,
4  
)
+
+ +

Default precision 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uint64_t ,
aligned_uint64_t ,
8  
)
+
+ +

Default precision 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u8 ,
aligned_u8 ,
1  
)
+
+ +

Default precision 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u16 ,
aligned_u16 ,
2  
)
+
+ +

Default precision 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u32 ,
aligned_u32 ,
4  
)
+
+ +

Default precision 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u64 ,
aligned_u64 ,
8  
)
+
+ +

Default precision 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uvec1 ,
aligned_uvec1 ,
4  
)
+
+ +

Default precision 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uvec2 ,
aligned_uvec2 ,
8  
)
+
+ +

Default precision 32 bit unsigned integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uvec3 ,
aligned_uvec3 ,
16  
)
+
+ +

Default precision 32 bit unsigned integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uvec4 ,
aligned_uvec4 ,
16  
)
+
+ +

Default precision 32 bit unsigned integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u8vec1 ,
aligned_u8vec1 ,
1  
)
+
+ +

Default precision 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u8vec2 ,
aligned_u8vec2 ,
2  
)
+
+ +

Default precision 8 bit unsigned integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u8vec3 ,
aligned_u8vec3 ,
4  
)
+
+ +

Default precision 8 bit unsigned integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u8vec4 ,
aligned_u8vec4 ,
4  
)
+
+ +

Default precision 8 bit unsigned integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u16vec1 ,
aligned_u16vec1 ,
2  
)
+
+ +

Default precision 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u16vec2 ,
aligned_u16vec2 ,
4  
)
+
+ +

Default precision 16 bit unsigned integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u16vec3 ,
aligned_u16vec3 ,
8  
)
+
+ +

Default precision 16 bit unsigned integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u16vec4 ,
aligned_u16vec4 ,
8  
)
+
+ +

Default precision 16 bit unsigned integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u32vec1 ,
aligned_u32vec1 ,
4  
)
+
+ +

Default precision 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u32vec2 ,
aligned_u32vec2 ,
8  
)
+
+ +

Default precision 32 bit unsigned integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u32vec3 ,
aligned_u32vec3 ,
16  
)
+
+ +

Default precision 32 bit unsigned integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u32vec4 ,
aligned_u32vec4 ,
16  
)
+
+ +

Default precision 32 bit unsigned integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u64vec1 ,
aligned_u64vec1 ,
8  
)
+
+ +

Default precision 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u64vec2 ,
aligned_u64vec2 ,
16  
)
+
+ +

Default precision 64 bit unsigned integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u64vec3 ,
aligned_u64vec3 ,
32  
)
+
+ +

Default precision 64 bit unsigned integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u64vec4 ,
aligned_u64vec4 ,
32  
)
+
+ +

Default precision 64 bit unsigned integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (float32 ,
aligned_float32 ,
4  
)
+
+ +

32 bit single-precision floating-point aligned scalar.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (float64 ,
aligned_float64 ,
8  
)
+
+ +

64 bit double-precision floating-point aligned scalar.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (float32_t ,
aligned_float32_t ,
4  
)
+
+ +

32 bit single-precision floating-point aligned scalar.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (float64_t ,
aligned_float64_t ,
8  
)
+
+ +

64 bit double-precision floating-point aligned scalar.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (float32 ,
aligned_f32 ,
4  
)
+
+ +

32 bit single-precision floating-point aligned scalar.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (float64 ,
aligned_f64 ,
8  
)
+
+ +

64 bit double-precision floating-point aligned scalar.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (vec1 ,
aligned_vec1 ,
4  
)
+
+ +

Single-precision floating-point aligned vector of 1 component.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (vec2 ,
aligned_vec2 ,
8  
)
+
+ +

Single-precision floating-point aligned vector of 2 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (vec3 ,
aligned_vec3 ,
16  
)
+
+ +

Single-precision floating-point aligned vector of 3 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (vec4 ,
aligned_vec4 ,
16  
)
+
+ +

Single-precision floating-point aligned vector of 4 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fvec1 ,
aligned_fvec1 ,
4  
)
+
+ +

Single-precision floating-point aligned vector of 1 component.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fvec2 ,
aligned_fvec2 ,
8  
)
+
+ +

Single-precision floating-point aligned vector of 2 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fvec3 ,
aligned_fvec3 ,
16  
)
+
+ +

Single-precision floating-point aligned vector of 3 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fvec4 ,
aligned_fvec4 ,
16  
)
+
+ +

Single-precision floating-point aligned vector of 4 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32vec1 ,
aligned_f32vec1 ,
4  
)
+
+ +

Single-precision floating-point aligned vector of 1 component.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32vec2 ,
aligned_f32vec2 ,
8  
)
+
+ +

Single-precision floating-point aligned vector of 2 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32vec3 ,
aligned_f32vec3 ,
16  
)
+
+ +

Single-precision floating-point aligned vector of 3 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32vec4 ,
aligned_f32vec4 ,
16  
)
+
+ +

Single-precision floating-point aligned vector of 4 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (dvec1 ,
aligned_dvec1 ,
8  
)
+
+ +

Double-precision floating-point aligned vector of 1 component.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (dvec2 ,
aligned_dvec2 ,
16  
)
+
+ +

Double-precision floating-point aligned vector of 2 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (dvec3 ,
aligned_dvec3 ,
32  
)
+
+ +

Double-precision floating-point aligned vector of 3 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (dvec4 ,
aligned_dvec4 ,
32  
)
+
+ +

Double-precision floating-point aligned vector of 4 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64vec1 ,
aligned_f64vec1 ,
8  
)
+
+ +

Double-precision floating-point aligned vector of 1 component.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64vec2 ,
aligned_f64vec2 ,
16  
)
+
+ +

Double-precision floating-point aligned vector of 2 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64vec3 ,
aligned_f64vec3 ,
32  
)
+
+ +

Double-precision floating-point aligned vector of 3 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64vec4 ,
aligned_f64vec4 ,
32  
)
+
+ +

Double-precision floating-point aligned vector of 4 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mat2 ,
aligned_mat2 ,
16  
)
+
+ +

Single-precision floating-point aligned 1x1 matrix.

+
See also
GLM_GTX_type_aligned Single-precision floating-point aligned 2x2 matrix.
+
+GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mat3 ,
aligned_mat3 ,
16  
)
+
+ +

Single-precision floating-point aligned 3x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mat4 ,
aligned_mat4 ,
16  
)
+
+ +

Single-precision floating-point aligned 4x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mat2x2 ,
aligned_mat2x2 ,
16  
)
+
+ +

Single-precision floating-point aligned 1x1 matrix.

+
See also
GLM_GTX_type_aligned Single-precision floating-point aligned 2x2 matrix.
+
+GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mat3x3 ,
aligned_mat3x3 ,
16  
)
+
+ +

Single-precision floating-point aligned 3x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mat4x4 ,
aligned_mat4x4 ,
16  
)
+
+ +

Single-precision floating-point aligned 4x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat2x2 ,
aligned_fmat2 ,
16  
)
+
+ +

Single-precision floating-point aligned 1x1 matrix.

+
See also
GLM_GTX_type_aligned Single-precision floating-point aligned 2x2 matrix.
+
+GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat3x3 ,
aligned_fmat3 ,
16  
)
+
+ +

Single-precision floating-point aligned 3x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat4x4 ,
aligned_fmat4 ,
16  
)
+
+ +

Single-precision floating-point aligned 4x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat2x2 ,
aligned_fmat2x2 ,
16  
)
+
+ +

Single-precision floating-point aligned 1x1 matrix.

+
See also
GLM_GTX_type_aligned Single-precision floating-point aligned 2x2 matrix.
+
+GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat2x3 ,
aligned_fmat2x3 ,
16  
)
+
+ +

Single-precision floating-point aligned 2x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat2x4 ,
aligned_fmat2x4 ,
16  
)
+
+ +

Single-precision floating-point aligned 2x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat3x2 ,
aligned_fmat3x2 ,
16  
)
+
+ +

Single-precision floating-point aligned 3x2 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat3x3 ,
aligned_fmat3x3 ,
16  
)
+
+ +

Single-precision floating-point aligned 3x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat3x4 ,
aligned_fmat3x4 ,
16  
)
+
+ +

Single-precision floating-point aligned 3x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat4x2 ,
aligned_fmat4x2 ,
16  
)
+
+ +

Single-precision floating-point aligned 4x2 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat4x3 ,
aligned_fmat4x3 ,
16  
)
+
+ +

Single-precision floating-point aligned 4x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat4x4 ,
aligned_fmat4x4 ,
16  
)
+
+ +

Single-precision floating-point aligned 4x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat2x2 ,
aligned_f32mat2 ,
16  
)
+
+ +

Single-precision floating-point aligned 1x1 matrix.

+
See also
GLM_GTX_type_aligned Single-precision floating-point aligned 2x2 matrix.
+
+GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat3x3 ,
aligned_f32mat3 ,
16  
)
+
+ +

Single-precision floating-point aligned 3x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat4x4 ,
aligned_f32mat4 ,
16  
)
+
+ +

Single-precision floating-point aligned 4x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat2x2 ,
aligned_f32mat2x2 ,
16  
)
+
+ +

Single-precision floating-point aligned 1x1 matrix.

+
See also
GLM_GTX_type_aligned Single-precision floating-point aligned 2x2 matrix.
+
+GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat2x3 ,
aligned_f32mat2x3 ,
16  
)
+
+ +

Single-precision floating-point aligned 2x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat2x4 ,
aligned_f32mat2x4 ,
16  
)
+
+ +

Single-precision floating-point aligned 2x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat3x2 ,
aligned_f32mat3x2 ,
16  
)
+
+ +

Single-precision floating-point aligned 3x2 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat3x3 ,
aligned_f32mat3x3 ,
16  
)
+
+ +

Single-precision floating-point aligned 3x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat3x4 ,
aligned_f32mat3x4 ,
16  
)
+
+ +

Single-precision floating-point aligned 3x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat4x2 ,
aligned_f32mat4x2 ,
16  
)
+
+ +

Single-precision floating-point aligned 4x2 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat4x3 ,
aligned_f32mat4x3 ,
16  
)
+
+ +

Single-precision floating-point aligned 4x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat4x4 ,
aligned_f32mat4x4 ,
16  
)
+
+ +

Single-precision floating-point aligned 4x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat2x2 ,
aligned_f64mat2 ,
32  
)
+
+ +

Double-precision floating-point aligned 1x1 matrix.

+
See also
GLM_GTX_type_aligned Double-precision floating-point aligned 2x2 matrix.
+
+GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat3x3 ,
aligned_f64mat3 ,
32  
)
+
+ +

Double-precision floating-point aligned 3x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat4x4 ,
aligned_f64mat4 ,
32  
)
+
+ +

Double-precision floating-point aligned 4x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat2x2 ,
aligned_f64mat2x2 ,
32  
)
+
+ +

Double-precision floating-point aligned 1x1 matrix.

+
See also
GLM_GTX_type_aligned Double-precision floating-point aligned 2x2 matrix.
+
+GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat2x3 ,
aligned_f64mat2x3 ,
32  
)
+
+ +

Double-precision floating-point aligned 2x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat2x4 ,
aligned_f64mat2x4 ,
32  
)
+
+ +

Double-precision floating-point aligned 2x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat3x2 ,
aligned_f64mat3x2 ,
32  
)
+
+ +

Double-precision floating-point aligned 3x2 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat3x3 ,
aligned_f64mat3x3 ,
32  
)
+
+ +

Double-precision floating-point aligned 3x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat3x4 ,
aligned_f64mat3x4 ,
32  
)
+
+ +

Double-precision floating-point aligned 3x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat4x2 ,
aligned_f64mat4x2 ,
32  
)
+
+ +

Double-precision floating-point aligned 4x2 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat4x3 ,
aligned_f64mat4x3 ,
32  
)
+
+ +

Double-precision floating-point aligned 4x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat4x4 ,
aligned_f64mat4x4 ,
32  
)
+
+ +

Double-precision floating-point aligned 4x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (quat ,
aligned_quat ,
16  
)
+
+ +

Single-precision floating-point aligned quaternion.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fquat ,
aligned_fquat ,
16  
)
+
+ +

Single-precision floating-point aligned quaternion.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (dquat ,
aligned_dquat ,
32  
)
+
+ +

Double-precision floating-point aligned quaternion.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32quat ,
aligned_f32quat ,
16  
)
+
+ +

Single-precision floating-point aligned quaternion.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64quat ,
aligned_f64quat ,
32  
)
+
+ +

Double-precision floating-point aligned quaternion.

+
See also
GLM_GTX_type_aligned
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00239.html b/external/glm/doc/api/a00239.html new file mode 100644 index 0000000..7b79902 --- /dev/null +++ b/external/glm/doc/api/a00239.html @@ -0,0 +1,163 @@ + + + + + + +0.9.7: GLM_GTX_vector_angle + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_vector_angle
+
+
+ + + + + + + + + + + +

+Functions

template<typename vecType >
GLM_FUNC_DECL vecType::value_type angle (vecType const &x, vecType const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL T orientedAngle (tvec2< T, P > const &x, tvec2< T, P > const &y)
 
template<typename T , precision P>
GLM_FUNC_DECL T orientedAngle (tvec3< T, P > const &x, tvec3< T, P > const &y, tvec3< T, P > const &ref)
 
+

Detailed Description

+

Compute angle between vectors.

+

<glm/gtx/vector_angle.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType::value_type glm::angle (vecType const & x,
vecType const & y 
)
+
+ +

Returns the absolute angle between two vectors Parameters need to be normalized.

+
See also
GLM_GTX_vector_angle extension
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::orientedAngle (tvec2< T, P > const & x,
tvec2< T, P > const & y 
)
+
+ +

Returns the oriented angle between two 2d vectors Parameters need to be normalized.

+
See also
GLM_GTX_vector_angle extension.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::orientedAngle (tvec3< T, P > const & x,
tvec3< T, P > const & y,
tvec3< T, P > const & ref 
)
+
+ +

Returns the oriented angle between two 3d vectors based from a reference axis.

+

Parameters need to be normalized.

See also
GLM_GTX_vector_angle extension.
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00240.html b/external/glm/doc/api/a00240.html new file mode 100644 index 0000000..3ac8e9d --- /dev/null +++ b/external/glm/doc/api/a00240.html @@ -0,0 +1,271 @@ + + + + + + +0.9.7: GLM_GTX_vector_query + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+ +
+
GLM_GTX_vector_query
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL bool areCollinear (vecType< T, P > const &v0, vecType< T, P > const &v1, T const &epsilon)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL bool areOrthogonal (vecType< T, P > const &v0, vecType< T, P > const &v1, T const &epsilon)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL bool areOrthonormal (vecType< T, P > const &v0, vecType< T, P > const &v1, T const &epsilon)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL vecType< bool, P > isCompNull (vecType< T, P > const &v, T const &epsilon)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL bool isNormalized (vecType< T, P > const &v, T const &epsilon)
 
template<typename T , precision P, template< typename, precision > class vecType>
GLM_FUNC_DECL bool isNull (vecType< T, P > const &v, T const &epsilon)
 
+

Detailed Description

+

Query informations of vector types.

+

<glm/gtx/vector_query.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::areCollinear (vecType< T, P > const & v0,
vecType< T, P > const & v1,
T const & epsilon 
)
+
+ +

Check whether two vectors are collinears.

+
See also
GLM_GTX_vector_query extensions.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::areOrthogonal (vecType< T, P > const & v0,
vecType< T, P > const & v1,
T const & epsilon 
)
+
+ +

Check whether two vectors are orthogonals.

+
See also
GLM_GTX_vector_query extensions.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::areOrthonormal (vecType< T, P > const & v0,
vecType< T, P > const & v1,
T const & epsilon 
)
+
+ +

Check whether two vectors are orthonormal.

+
See also
GLM_GTX_vector_query extensions.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vecType<bool, P> glm::isCompNull (vecType< T, P > const & v,
T const & epsilon 
)
+
+ +

Check whether a each component of a vector is null.

+
See also
GLM_GTX_vector_query extensions.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isNormalized (vecType< T, P > const & v,
T const & epsilon 
)
+
+ +

Check whether a vector is normalized.

+
See also
GLM_GTX_vector_query extensions.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isNull (vecType< T, P > const & v,
T const & epsilon 
)
+
+ +

Check whether a vector is null.

+
See also
GLM_GTX_vector_query extensions.
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/a00241.html b/external/glm/doc/api/a00241.html new file mode 100644 index 0000000..133b8e4 --- /dev/null +++ b/external/glm/doc/api/a00241.html @@ -0,0 +1,149 @@ + + + + + + +0.9.7: GLM_GTX_wrap + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+ +
+ + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType clamp (genType const &Texcoord)
 
template<typename genType >
GLM_FUNC_DECL genType mirrorClamp (genType const &Texcoord)
 
template<typename genType >
GLM_FUNC_DECL genType mirrorRepeat (genType const &Texcoord)
 
template<typename genType >
GLM_FUNC_DECL genType repeat (genType const &Texcoord)
 
+

Detailed Description

+

Wrapping mode of texture coordinates.

+

<glm/gtx/wrap.hpp> need to be included to use these functionalities.

+

Function Documentation

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::clamp (genType const & Texcoord)
+
+ +

Simulate GL_CLAMP OpenGL wrap mode.

+
See also
GLM_GTX_wrap extension.
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::mirrorClamp (genType const & Texcoord)
+
+ +

Simulate GL_MIRRORED_REPEAT OpenGL wrap mode.

+
See also
GLM_GTX_wrap extension.
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::mirrorRepeat (genType const & Texcoord)
+
+ +

Simulate GL_MIRROR_REPEAT OpenGL wrap mode.

+
See also
GLM_GTX_wrap extension.
+ +
+
+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::repeat (genType const & Texcoord)
+
+ +

Simulate GL_REPEAT OpenGL wrap mode.

+
See also
GLM_GTX_wrap extension.
+ +
+
+
+ + + + diff --git a/external/glm/doc/api/arrowdown.png b/external/glm/doc/api/arrowdown.png new file mode 100644 index 0000000..0b63f6d Binary files /dev/null and b/external/glm/doc/api/arrowdown.png differ diff --git a/external/glm/doc/api/arrowright.png b/external/glm/doc/api/arrowright.png new file mode 100644 index 0000000..c6ee22f Binary files /dev/null and b/external/glm/doc/api/arrowright.png differ diff --git a/external/glm/doc/api/bc_s.png b/external/glm/doc/api/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/external/glm/doc/api/bc_s.png differ diff --git a/external/glm/doc/api/bdwn.png b/external/glm/doc/api/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/external/glm/doc/api/bdwn.png differ diff --git a/external/glm/doc/api/closed.png b/external/glm/doc/api/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/external/glm/doc/api/closed.png differ diff --git a/external/glm/doc/api/dir_1f76e953200861345293ade84ac7fb6c.html b/external/glm/doc/api/dir_1f76e953200861345293ade84ac7fb6c.html new file mode 100644 index 0000000..dc01ef2 --- /dev/null +++ b/external/glm/doc/api/dir_1f76e953200861345293ade84ac7fb6c.html @@ -0,0 +1,61 @@ + + + + + + +0.9.7: G-Truc Directory Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + +
+
+
+
G-Truc Directory Reference
+
+
+ + + + +

+Directories

directory  glm
 
+
+ + + + diff --git a/external/glm/doc/api/dir_275089585c7fc1b5fd5d7d42c69cb1da.html b/external/glm/doc/api/dir_275089585c7fc1b5fd5d7d42c69cb1da.html new file mode 100644 index 0000000..9b004f6 --- /dev/null +++ b/external/glm/doc/api/dir_275089585c7fc1b5fd5d7d42c69cb1da.html @@ -0,0 +1,61 @@ + + + + + + +0.9.7: D: Directory Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + +
+
+
+
D: Directory Reference
+
+
+ + + + +

+Directories

directory  Source
 
+
+ + + + diff --git a/external/glm/doc/api/dir_577c788b67d63fb3b3b5752bd495d0f2.html b/external/glm/doc/api/dir_577c788b67d63fb3b3b5752bd495d0f2.html new file mode 100644 index 0000000..1e3824d --- /dev/null +++ b/external/glm/doc/api/dir_577c788b67d63fb3b3b5752bd495d0f2.html @@ -0,0 +1,63 @@ + + + + + + +0.9.7: doc Directory Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + +
+
+
+
doc Directory Reference
+
+
+ + + + + + +

+Files

file  man.doxy [code]
 
file  pages.doxy [code]
 
+
+ + + + diff --git a/external/glm/doc/api/dir_5ce58d942b2d0776e17a9a58abc01e04.html b/external/glm/doc/api/dir_5ce58d942b2d0776e17a9a58abc01e04.html new file mode 100644 index 0000000..664a673 --- /dev/null +++ b/external/glm/doc/api/dir_5ce58d942b2d0776e17a9a58abc01e04.html @@ -0,0 +1,114 @@ + + + + + + +0.9.7: glm Directory Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + +
+
+
+
glm Directory Reference
+
+
+ + + + + + + + +

+Directories

directory  detail
 
directory  gtc
 
directory  gtx
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  common.hpp [code]
 
file  exponential.hpp [code]
 
file  ext.hpp [code]
 
file  fwd.hpp [code]
 
file  geometric.hpp [code]
 
file  glm.hpp [code]
 
file  integer.hpp [code]
 
file  mat2x2.hpp [code]
 
file  mat2x3.hpp [code]
 
file  mat2x4.hpp [code]
 
file  mat3x2.hpp [code]
 
file  mat3x3.hpp [code]
 
file  mat3x4.hpp [code]
 
file  mat4x2.hpp [code]
 
file  mat4x3.hpp [code]
 
file  mat4x4.hpp [code]
 
file  matrix.hpp [code]
 
file  packing.hpp [code]
 
file  trigonometric.hpp [code]
 
file  vec2.hpp [code]
 
file  vec3.hpp [code]
 
file  vec4.hpp [code]
 
file  vector_relational.hpp [code]
 
+
+ + + + diff --git a/external/glm/doc/api/dir_7b98f88bffbed4b390b5f8f520d9c08e.html b/external/glm/doc/api/dir_7b98f88bffbed4b390b5f8f520d9c08e.html new file mode 100644 index 0000000..17b5500 --- /dev/null +++ b/external/glm/doc/api/dir_7b98f88bffbed4b390b5f8f520d9c08e.html @@ -0,0 +1,61 @@ + + + + + + +0.9.7: Source Directory Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + +
+
+
+
Source Directory Reference
+
+
+ + + + +

+Directories

directory  G-Truc
 
+
+ + + + diff --git a/external/glm/doc/api/dir_8d176b5b7dd0ae42ea6876078f2bde49.html b/external/glm/doc/api/dir_8d176b5b7dd0ae42ea6876078f2bde49.html new file mode 100644 index 0000000..1ffb8ee --- /dev/null +++ b/external/glm/doc/api/dir_8d176b5b7dd0ae42ea6876078f2bde49.html @@ -0,0 +1,175 @@ + + + + + + +0.9.7: gtx Directory Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + +
+
+
+
gtx Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  associated_min_max.hpp [code]
 
file  bit.hpp [code]
 
file  closest_point.hpp [code]
 
file  gtx/color_space.hpp [code]
 
file  color_space_YCoCg.hpp [code]
 
file  gtx/common.hpp [code]
 
file  compatibility.hpp [code]
 
file  component_wise.hpp [code]
 
file  dual_quaternion.hpp [code]
 
file  euler_angles.hpp [code]
 
file  extend.hpp [code]
 
file  extented_min_max.hpp [code]
 
file  fast_exponential.hpp [code]
 
file  fast_square_root.hpp [code]
 
file  fast_trigonometry.hpp [code]
 
file  gradient_paint.hpp [code]
 
file  handed_coordinate_space.hpp [code]
 
file  hash.hpp [code]
 
file  gtx/integer.hpp [code]
 
file  intersect.hpp [code]
 
file  io.hpp [code]
 
file  log_base.hpp [code]
 
file  matrix_cross_product.hpp [code]
 
file  matrix_decompose.hpp [code]
 
file  matrix_interpolation.hpp [code]
 
file  matrix_major_storage.hpp [code]
 
file  matrix_operation.hpp [code]
 
file  matrix_query.hpp [code]
 
file  matrix_transform_2d.hpp [code]
 
file  mixed_product.hpp [code]
 
file  norm.hpp [code]
 
file  normal.hpp [code]
 
file  normalize_dot.hpp [code]
 
file  number_precision.hpp [code]
 
file  optimum_pow.hpp [code]
 
file  orthonormalize.hpp [code]
 
file  perpendicular.hpp [code]
 
file  polar_coordinates.hpp [code]
 
file  projection.hpp [code]
 
file  gtx/quaternion.hpp [code]
 
file  range.hpp [code]
 
file  raw_data.hpp [code]
 
file  rotate_normalized_axis.hpp [code]
 
file  rotate_vector.hpp [code]
 
file  scalar_multiplication.hpp [code]
 
file  scalar_relational.hpp [code]
 
file  simd_mat4.hpp [code]
 
file  simd_quat.hpp [code]
 
file  simd_vec4.hpp [code]
 
file  spline.hpp [code]
 
file  std_based_type.hpp [code]
 
file  string_cast.hpp [code]
 
file  transform.hpp [code]
 
file  transform2.hpp [code]
 
file  type_aligned.hpp [code]
 
file  vector_angle.hpp [code]
 
file  vector_query.hpp [code]
 
file  wrap.hpp [code]
 
+
+ + + + diff --git a/external/glm/doc/api/dir_9440d7c11b99dcd7e5d369c7cf9802fe.html b/external/glm/doc/api/dir_9440d7c11b99dcd7e5d369c7cf9802fe.html new file mode 100644 index 0000000..4dc04bc --- /dev/null +++ b/external/glm/doc/api/dir_9440d7c11b99dcd7e5d369c7cf9802fe.html @@ -0,0 +1,97 @@ + + + + + + +0.9.7: gtc Directory Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + +
+
+
+
gtc Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  bitfield.hpp [code]
 
file  gtc/color_space.hpp [code]
 
file  constants.hpp [code]
 
file  epsilon.hpp [code]
 
file  gtc/integer.hpp [code]
 
file  matrix_access.hpp [code]
 
file  matrix_integer.hpp [code]
 
file  matrix_inverse.hpp [code]
 
file  matrix_transform.hpp [code]
 
file  noise.hpp [code]
 
file  gtc/packing.hpp [code]
 
file  gtc/quaternion.hpp [code]
 
file  random.hpp [code]
 
file  reciprocal.hpp [code]
 
file  round.hpp [code]
 
file  type_precision.hpp [code]
 
file  type_ptr.hpp [code]
 
file  ulp.hpp [code]
 
file  vec1.hpp [code]
 
+
+ + + + diff --git a/external/glm/doc/api/dir_e29b03b892e0e25920d021a614d4db9b.html b/external/glm/doc/api/dir_e29b03b892e0e25920d021a614d4db9b.html new file mode 100644 index 0000000..6d9c397 --- /dev/null +++ b/external/glm/doc/api/dir_e29b03b892e0e25920d021a614d4db9b.html @@ -0,0 +1,63 @@ + + + + + + +0.9.7: glm Directory Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + +
+
+
+
glm Directory Reference
+
+
+ + + + + + +

+Directories

directory  doc
 
directory  glm
 
+
+ + + + diff --git a/external/glm/doc/api/dir_e529a619cfdec1fa4c331fb042fd332f.html b/external/glm/doc/api/dir_e529a619cfdec1fa4c331fb042fd332f.html new file mode 100644 index 0000000..aaee2e3 --- /dev/null +++ b/external/glm/doc/api/dir_e529a619cfdec1fa4c331fb042fd332f.html @@ -0,0 +1,145 @@ + + + + + + +0.9.7: detail Directory Reference + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + +
+
+
+
detail Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  _features.hpp [code]
 
file  _fixes.hpp [code]
 
file  _noise.hpp [code]
 
file  _swizzle.hpp [code]
 
file  _swizzle_func.hpp [code]
 
file  _vectorize.hpp [code]
 
file  func_common.hpp [code]
 
file  func_exponential.hpp [code]
 
file  func_geometric.hpp [code]
 
file  func_integer.hpp [code]
 
file  func_matrix.hpp [code]
 
file  func_noise.hpp [code]
 
file  func_packing.hpp [code]
 
file  func_trigonometric.hpp [code]
 
file  func_vector_relational.hpp [code]
 
file  intrinsic_common.hpp [code]
 
file  intrinsic_exponential.hpp [code]
 
file  intrinsic_geometric.hpp [code]
 
file  intrinsic_integer.hpp [code]
 
file  intrinsic_matrix.hpp [code]
 
file  intrinsic_trigonometric.hpp [code]
 
file  intrinsic_vector_relational.hpp [code]
 
file  precision.hpp [code]
 
file  setup.hpp [code]
 
file  type_float.hpp [code]
 
file  type_gentype.hpp [code]
 
file  type_half.hpp [code]
 
file  type_int.hpp [code]
 
file  type_mat.hpp [code]
 
file  type_mat2x2.hpp [code]
 
file  type_mat2x3.hpp [code]
 
file  type_mat2x4.hpp [code]
 
file  type_mat3x2.hpp [code]
 
file  type_mat3x3.hpp [code]
 
file  type_mat3x4.hpp [code]
 
file  type_mat4x2.hpp [code]
 
file  type_mat4x3.hpp [code]
 
file  type_mat4x4.hpp [code]
 
file  type_vec.hpp [code]
 
file  type_vec1.hpp [code]
 
file  type_vec2.hpp [code]
 
file  type_vec3.hpp [code]
 
file  type_vec4.hpp [code]
 
+
+ + + + diff --git a/external/glm/doc/api/doc.png b/external/glm/doc/api/doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/external/glm/doc/api/doc.png differ diff --git a/external/glm/doc/api/doxygen.css b/external/glm/doc/api/doxygen.css new file mode 100644 index 0000000..6ccc7fe --- /dev/null +++ b/external/glm/doc/api/doxygen.css @@ -0,0 +1,865 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl +{ + font-family: Lucida Grande, Calibri, Verdana; + font-size: 14px; +} + +body +{ + margin:0px; + padding:0px; + background-color:#bf6000; + background-repeat:no-repeat; + background-position:center center; + background-attachment:fixed; +/* + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFF8F0 5%, #FFEEDD 95%, #FFDDBB); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.05,#FFF8F0), color-stop(0.05,#FFF8F0), color-stop(0.95,#FFEEDD), to(#FFDDBB)); +*/ + min-height:1200px; + overflow:auto; +} + +p +{ + background-color:#FFFFFF; +} + +/* @group Heading Levels */ + +h1 +{ + color:#FF8000; + font-family: Lucida Grande, Cambria, Georgia; + font-size: 24px; + font-weight: bold; +} + +h2 +{ + color:#FF8000; + font-family: Lucida Grande, Cambria, Georgia; + font-size: 18px; + font-weight: bold; +} + +h3 { + font-family: Lucida Grande, Cambria, Georgia; + font-size: 14px; + font-weight: bold; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #FFF8F0; + border: 0px solid #FF8000; + text-align: center; + margin: 2px; + padding: 2px; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #000000; + font-weight: normal; + /*text-decoration: none;*/ +} + +.contents a:visited { + color: #606060; +} + +.contents{ + background-color: #FFFFFF; + margin:0px; + margin-left:auto; + margin-right:auto; + padding-top:8px; + padding-bottom:8px; + padding-left:32px; + padding-right:32px; + width:936px; +} + +div.textblock{ + background-color: #FFFFFF; + padding-top: 4px; + padding-bottom: 4px; + padding-left: 32px; + padding-right: 32px; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 0px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code { + color: #4665A2; +} + +a.codeRef { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +.fragment { + font-family: monospace, consolas, "courier new"; + font-size: 12px; +} + +pre.fragment { + border: 0px solid #FF8000; + background-color: #FFF8F0; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + line-height: 125%; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +td.indexkey { + font-weight: bold; + border: 0px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 4px 10px; +} + +td.indexvalue { + border: 0px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #FFF8F0; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + margin-left:auto; + margin-right:auto; + width:1000px; + + text-align: right; + padding-right: 12px; + color: #FFEEDD; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 10px; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 0px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 0px solid #FF8000; +} + +hr.footer { + height: 1px; + margin-left:auto; + margin-right:auto; + width:1000px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + font-family: monospace, consolas, "courier new"; + font-size: 12px; + background-color: #FFFCF8; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #000000; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 4px solid #FFFFFF; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memTemplParams { + color: #404040; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + color: #000000; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #000000; + border: 0px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.memitem { + padding: 8px; + margin-bottom: 10px; +} + +.memname { + font-family: monospace, consolas, "courier new"; + font-weight: bold; + font-size: 12px; + white-space: nowrap; + margin-left: 6px; +} + +.memproto { + border-top: 0px solid #FF8000; + border-left: 0px solid #FF8000; + border-right: 0px solid #FF8000; + padding: 6px 0px 6px 0px; + color: #000000; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 8px; + border-top-left-radius: 8px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + background-repeat:repeat-x; + background-color: #FFFFFF; + background-image: -moz-linear-gradient(center top, #FFF8F0 0%, #FFFFFF 60%, #FFFFFF 95%, #FFFFFF); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFF8F0), color-stop(0.2,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#FFFFFF), to(#FFFFFF)); +} + +.memdoc { + /*font-family: Lucida Grande, Calibri, Verdana;*/ + border-bottom: 0px solid #FF8000; + border-left: 0px solid #FF8000; + border-right: 0px solid #FF8000; + padding: 2px 5px; + background-color: #FFFFFF; + border-top-width: 0; + /* opera specific markup */ + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #FFF8F0 90%, #FFEEDD); + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.90,#FFF8F0), to(#FFEEDD)); +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #FF8000; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + border-spacing: 6px 2px; +} + +.params .paramname, .retval .paramname { + color: #FF8000; + font-family: monospace, consolas, "courier new"; + font-weight: bold; + font-size: 12px; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + vertical-align: top; +} + + + + +/* @end */ + +/* @group Directory (tree) */ + +/* for the tree view */ + +.ftvtree { + /*font-family: Lucida Grande, Calibri, Verdana;*/ + margin: 0px; +} + +/* these are for tree view when used as main index */ + +.directory { + font-weight: bold; + margin: 5px; +} + +.directory h3 { + margin: 0px; + margin-top: 1em; +} + +/* +The following two styles can be used to replace the root node title +with an image of your choice. Simply uncomment the next two styles, +specify the name of your image and be sure to set 'height' to the +proper pixel height of your image. +*/ + +/* +.directory h3.swap { + height: 61px; + background-repeat: no-repeat; + background-image: url("yourimage.gif"); +} +.directory h3.swap span { + display: none; +} +*/ + +.directory > h3 { + margin-top: 0; +} + +.directory p { + margin: 0px; + white-space: nowrap; +} + +.directory div { + display: none; + margin: 0px; +} + +.directory img { + vertical-align: -30%; +} + +/* these are for tree view when not used as main index */ + +.directory-alt { + font-size: 100%; + font-weight: bold; +} + +.directory-alt h3 { + margin: 0px; + margin-top: 1em; +} + +.directory-alt > h3 { + margin-top: 0; +} + +.directory-alt p { + margin: 0px; + white-space: nowrap; +} + +.directory-alt div { + display: none; + margin: 0px; +} + +.directory-alt img { + vertical-align: -30%; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; +} + +address { + font-style: normal; + color: #804000; +} + +table.doxtable { + border-collapse:collapse; +} + +table.doxtable td, table.doxtable th { + border: 0px solid #000000; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #000000; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; +} + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + /*background-image: url('tab_b.png');*/ + z-index: 101; + overflow: hidden; +} + +.navpath ul +{ + background-color: #FFEEDD; + height:30px; + line-height:30px; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + /*background-image:url('bc_s.png');*/ + background-repeat:no-repeat; + background-position:right; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath li.navelem a:hover +{ + color:#FF8000; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#FFEEDD; +} + +div.summary +{ + float: right; + font-size: 12px; + padding-right: 5px; + width: 160px; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + padding-left: 5px; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-color:#FFEEDD; + background-image: -moz-linear-gradient(center top, #FFEEDD 0%, #FFEEDD 5%, #FFEEDD 80%, #FFFFFF); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFEEDD), color-stop(0.05,#FFEEDD), color-stop(0.05,#FFEEDD), color-stop(0.80,#FFEEDD), to(#FFFFFF)); + + padding:0px; + margin:0px; + margin-left:auto; + margin-right:auto; + width:1000px; + border-bottom: 0px solid #FFC080; +} + +div.headertitle +{ + margin: 0px; + padding: 5px; + padding-bottom:10px; + padding-top:10px; +} + +div.title +{ + font-family: Lucida Grande, Cambria, Georgia; + font-size: 24px; + color: #FF7F00; +} + +dl +{ + padding: 0 0 0 10px; +} + +dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug +{ + border-color: #FF7F00; + border-left:4px solid; + padding: 0 0 0 6px; +} + +dl.note +{ + border-color: #FFDDBB; +} + +dl.warning, dl.attention +{ + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + border-color: #00D000; +} + +dl.deprecated +{ + border-color: #505050; +} + +dl.todo +{ + border-color: #00C0E0; +} + +dl.test +{ + border-color: #3030E0; +} + +dl.bug +{ + border-color: #C08050; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + /*font-family: Lucida Grande, Cambria, Georgia;*/ + font-size: 24px; + margin: 0px; + padding: 0px; +} + +#projectbrief +{ + /*font-family: Lucida Grande, Cambria, Georgia;*/ + font-size: 18px; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + /*font-family: Lucida Grande, Cambria, Georgia;*/ + font-size: 14px; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 0px solid #FF8000; + background-color:#FFFFFF; +} + +#top +{ + margin-left:auto; + margin-right:auto; + width:1000px; +} diff --git a/external/glm/doc/api/doxygen.png b/external/glm/doc/api/doxygen.png new file mode 100644 index 0000000..3ff17d8 Binary files /dev/null and b/external/glm/doc/api/doxygen.png differ diff --git a/external/glm/doc/api/dynsections.js b/external/glm/doc/api/dynsections.js new file mode 100644 index 0000000..1e6bf07 --- /dev/null +++ b/external/glm/doc/api/dynsections.js @@ -0,0 +1,104 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + +0.9.7: File List + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + + +
+
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 _features.hppOpenGL Mathematics (glm.g-truc.net)
 _fixes.hppOpenGL Mathematics (glm.g-truc.net)
 _noise.hppOpenGL Mathematics (glm.g-truc.net)
 _swizzle.hppOpenGL Mathematics (glm.g-truc.net)
 _swizzle_func.hppOpenGL Mathematics (glm.g-truc.net)
 _vectorize.hppOpenGL Mathematics (glm.g-truc.net)
 associated_min_max.hppOpenGL Mathematics (glm.g-truc.net)
 bit.hppOpenGL Mathematics (glm.g-truc.net)
 bitfield.hppOpenGL Mathematics (glm.g-truc.net)
 closest_point.hppOpenGL Mathematics (glm.g-truc.net)
 gtc/color_space.hppOpenGL Mathematics (glm.g-truc.net)
 gtx/color_space.hppOpenGL Mathematics (glm.g-truc.net)
 color_space_YCoCg.hppOpenGL Mathematics (glm.g-truc.net)
 common.hppOpenGL Mathematics (glm.g-truc.net)
 gtx/common.hppOpenGL Mathematics (glm.g-truc.net)
 compatibility.hppOpenGL Mathematics (glm.g-truc.net)
 component_wise.hppOpenGL Mathematics (glm.g-truc.net)
 constants.hppOpenGL Mathematics (glm.g-truc.net)
 dual_quaternion.hppOpenGL Mathematics (glm.g-truc.net)
 epsilon.hppOpenGL Mathematics (glm.g-truc.net)
 euler_angles.hppOpenGL Mathematics (glm.g-truc.net)
 exponential.hppOpenGL Mathematics (glm.g-truc.net)
 ext.hpp
 extend.hppOpenGL Mathematics (glm.g-truc.net)
 extented_min_max.hppOpenGL Mathematics (glm.g-truc.net)
 fast_exponential.hppOpenGL Mathematics (glm.g-truc.net)
 fast_square_root.hppOpenGL Mathematics (glm.g-truc.net)
 fast_trigonometry.hppOpenGL Mathematics (glm.g-truc.net)
 func_common.hppOpenGL Mathematics (glm.g-truc.net)
 func_exponential.hppOpenGL Mathematics (glm.g-truc.net)
 func_geometric.hppOpenGL Mathematics (glm.g-truc.net)
 func_integer.hppOpenGL Mathematics (glm.g-truc.net)
 func_matrix.hppOpenGL Mathematics (glm.g-truc.net)
 func_noise.hppOpenGL Mathematics (glm.g-truc.net)
 func_packing.hppOpenGL Mathematics (glm.g-truc.net)
 func_trigonometric.hppOpenGL Mathematics (glm.g-truc.net)
 func_vector_relational.hppOpenGL Mathematics (glm.g-truc.net)
 fwd.hppOpenGL Mathematics (glm.g-truc.net)
 geometric.hppOpenGL Mathematics (glm.g-truc.net)
 glm.hppOpenGL Mathematics (glm.g-truc.net)
 gradient_paint.hppOpenGL Mathematics (glm.g-truc.net)
 handed_coordinate_space.hppOpenGL Mathematics (glm.g-truc.net)
 hash.hppOpenGL Mathematics (glm.g-truc.net)
 gtc/integer.hppOpenGL Mathematics (glm.g-truc.net)
 gtx/integer.hppOpenGL Mathematics (glm.g-truc.net)
 integer.hppOpenGL Mathematics (glm.g-truc.net)
 intersect.hppOpenGL Mathematics (glm.g-truc.net)
 intrinsic_common.hppOpenGL Mathematics (glm.g-truc.net)
 intrinsic_exponential.hppOpenGL Mathematics (glm.g-truc.net)
 intrinsic_geometric.hppOpenGL Mathematics (glm.g-truc.net)
 intrinsic_integer.hppOpenGL Mathematics (glm.g-truc.net)
 intrinsic_matrix.hpp
 intrinsic_trigonometric.hppOpenGL Mathematics (glm.g-truc.net)
 intrinsic_vector_relational.hppOpenGL Mathematics (glm.g-truc.net)
 io.hppOpenGL Mathematics (glm.g-truc.net)
 log_base.hppOpenGL Mathematics (glm.g-truc.net)
 man.doxy
 mat2x2.hppOpenGL Mathematics (glm.g-truc.net)
 mat2x3.hppOpenGL Mathematics (glm.g-truc.net)
 mat2x4.hppOpenGL Mathematics (glm.g-truc.net)
 mat3x2.hppOpenGL Mathematics (glm.g-truc.net)
 mat3x3.hppOpenGL Mathematics (glm.g-truc.net)
 mat3x4.hppOpenGL Mathematics (glm.g-truc.net)
 mat4x2.hppOpenGL Mathematics (glm.g-truc.net)
 mat4x3.hpp
 mat4x4.hppOpenGL Mathematics (glm.g-truc.net)
 matrix.hppOpenGL Mathematics (glm.g-truc.net)
 matrix_access.hppOpenGL Mathematics (glm.g-truc.net)
 matrix_cross_product.hppOpenGL Mathematics (glm.g-truc.net)
 matrix_decompose.hppOpenGL Mathematics (glm.g-truc.net)
 matrix_integer.hppOpenGL Mathematics (glm.g-truc.net)
 matrix_interpolation.hppOpenGL Mathematics (glm.g-truc.net)
 matrix_inverse.hppOpenGL Mathematics (glm.g-truc.net)
 matrix_major_storage.hppOpenGL Mathematics (glm.g-truc.net)
 matrix_operation.hppOpenGL Mathematics (glm.g-truc.net)
 matrix_query.hppOpenGL Mathematics (glm.g-truc.net)
 matrix_transform.hppOpenGL Mathematics (glm.g-truc.net)
 matrix_transform_2d.hppOpenGL Mathematics (glm.g-truc.net)
 mixed_product.hppOpenGL Mathematics (glm.g-truc.net)
 noise.hppOpenGL Mathematics (glm.g-truc.net)
 norm.hppOpenGL Mathematics (glm.g-truc.net)
 normal.hppOpenGL Mathematics (glm.g-truc.net)
 normalize_dot.hppOpenGL Mathematics (glm.g-truc.net)
 number_precision.hppOpenGL Mathematics (glm.g-truc.net)
 optimum_pow.hppOpenGL Mathematics (glm.g-truc.net)
 orthonormalize.hppOpenGL Mathematics (glm.g-truc.net)
 gtc/packing.hppOpenGL Mathematics (glm.g-truc.net)
 packing.hppOpenGL Mathematics (glm.g-truc.net)
 pages.doxy
 perpendicular.hppOpenGL Mathematics (glm.g-truc.net)
 polar_coordinates.hppOpenGL Mathematics (glm.g-truc.net)
 precision.hppOpenGL Mathematics (glm.g-truc.net)
 projection.hppOpenGL Mathematics (glm.g-truc.net)
 gtc/quaternion.hppOpenGL Mathematics (glm.g-truc.net)
 gtx/quaternion.hppOpenGL Mathematics (glm.g-truc.net)
 random.hppOpenGL Mathematics (glm.g-truc.net)
 range.hppOpenGL Mathematics (glm.g-truc.net)
 raw_data.hppOpenGL Mathematics (glm.g-truc.net)
 reciprocal.hppOpenGL Mathematics (glm.g-truc.net)
 rotate_normalized_axis.hppOpenGL Mathematics (glm.g-truc.net)
 rotate_vector.hppOpenGL Mathematics (glm.g-truc.net)
 round.hppOpenGL Mathematics (glm.g-truc.net)
 scalar_multiplication.hppOpenGL Mathematics (glm.g-truc.net)
 scalar_relational.hppOpenGL Mathematics (glm.g-truc.net)
 setup.hppOpenGL Mathematics (glm.g-truc.net)
 simd_mat4.hppOpenGL Mathematics (glm.g-truc.net)
 simd_quat.hppOpenGL Mathematics (glm.g-truc.net)
 simd_vec4.hppOpenGL Mathematics (glm.g-truc.net)
 spline.hppOpenGL Mathematics (glm.g-truc.net)
 std_based_type.hppOpenGL Mathematics (glm.g-truc.net)
 string_cast.hppOpenGL Mathematics (glm.g-truc.net)
 transform.hppOpenGL Mathematics (glm.g-truc.net)
 transform2.hppOpenGL Mathematics (glm.g-truc.net)
 trigonometric.hppOpenGL Mathematics (glm.g-truc.net)
 type_aligned.hppOpenGL Mathematics (glm.g-truc.net)
 type_float.hppOpenGL Mathematics (glm.g-truc.net)
 type_gentype.hppOpenGL Mathematics (glm.g-truc.net)
 type_half.hppOpenGL Mathematics (glm.g-truc.net)
 type_int.hppOpenGL Mathematics (glm.g-truc.net)
 type_mat.hppOpenGL Mathematics (glm.g-truc.net)
 type_mat2x2.hppOpenGL Mathematics (glm.g-truc.net)
 type_mat2x3.hppOpenGL Mathematics (glm.g-truc.net)
 type_mat2x4.hppOpenGL Mathematics (glm.g-truc.net)
 type_mat3x2.hppOpenGL Mathematics (glm.g-truc.net)
 type_mat3x3.hppOpenGL Mathematics (glm.g-truc.net)
 type_mat3x4.hppOpenGL Mathematics (glm.g-truc.net)
 type_mat4x2.hppOpenGL Mathematics (glm.g-truc.net)
 type_mat4x3.hppOpenGL Mathematics (glm.g-truc.net)
 type_mat4x4.hppOpenGL Mathematics (glm.g-truc.net)
 type_precision.hppOpenGL Mathematics (glm.g-truc.net)
 type_ptr.hppOpenGL Mathematics (glm.g-truc.net)
 type_vec.hppOpenGL Mathematics (glm.g-truc.net)
 type_vec1.hppOpenGL Mathematics (glm.g-truc.net)
 type_vec2.hppOpenGL Mathematics (glm.g-truc.net)
 type_vec3.hppOpenGL Mathematics (glm.g-truc.net)
 type_vec4.hppOpenGL Mathematics (glm.g-truc.net)
 ulp.hppOpenGL Mathematics (glm.g-truc.net)
 vec1.hppOpenGL Mathematics (glm.g-truc.net)
 vec2.hppOpenGL Mathematics (glm.g-truc.net)
 vec3.hppOpenGL Mathematics (glm.g-truc.net)
 vec4.hppOpenGL Mathematics (glm.g-truc.net)
 vector_angle.hppOpenGL Mathematics (glm.g-truc.net)
 vector_query.hppOpenGL Mathematics (glm.g-truc.net)
 vector_relational.hppOpenGL Mathematics (glm.g-truc.net)
 wrap.hppOpenGL Mathematics (glm.g-truc.net)
+
+
+ + + + diff --git a/external/glm/doc/api/folderclosed.png b/external/glm/doc/api/folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/external/glm/doc/api/folderclosed.png differ diff --git a/external/glm/doc/api/folderopen.png b/external/glm/doc/api/folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/external/glm/doc/api/folderopen.png differ diff --git a/external/glm/doc/api/index.html b/external/glm/doc/api/index.html new file mode 100644 index 0000000..505b17d --- /dev/null +++ b/external/glm/doc/api/index.html @@ -0,0 +1,68 @@ + + + + + + +0.9.7: OpenGL Mathematics + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+
+
OpenGL Mathematics
+
+
+

OpenGL Mathematics (GLM) is a header only C++ mathematics library for graphics software based on the OpenGL Shading Language (GLSL) specification.

+

GLM provides classes and functions designed and implemented with the same naming conventions and functionalities than GLSL so that when a programmer knows GLSL, he knows GLM as well which makes it really easy to use.

+

This project isn't limited to GLSL features. An extension system, based on the GLSL extension conventions, provides extended capabilities: matrix transformations, quaternions, half-based types, random numbers, noise, etc...

+

This library works perfectly with OpenGL but it also ensures interoperability with other third party libraries and SDK. It is a good candidate for software rendering (raytracing / rasterisation), image processing, physic simulations and any development context that requires a simple and convenient mathematics library.

+

GLM is written in C++98 but can take advantage of C++11 when supported by the compiler. It is a platform independent library with no dependence and it officially supports the following compilers:

+
Note
The Doxygen-generated documentation will often state that a type or function is defined in a namespace that is a child of the glm namespace. Please ignore this; All publicly available types and functions can be accessed as a direct children of the glm namespace.
+

The source code is licenced under the Happy Bunny License (Modified MIT) and MIT license.

+

These pages are the API reference only. For more information about how to use GLM, please have a look at the manual.

+

Thanks for contributing to the project by submitting tickets for bug reports and feature requests. Any feedback is welcome at glm@g.nosp@m.-tru.nosp@m.c.net.

+
+ + + + diff --git a/external/glm/doc/api/logo.png b/external/glm/doc/api/logo.png new file mode 100644 index 0000000..80b5f9d Binary files /dev/null and b/external/glm/doc/api/logo.png differ diff --git a/external/glm/doc/api/modules.html b/external/glm/doc/api/modules.html new file mode 100644 index 0000000..d439843 --- /dev/null +++ b/external/glm/doc/api/modules.html @@ -0,0 +1,147 @@ + + + + + + +0.9.7: Modules + + + + + + +
+
+ + + + + + + +
+
0.9.7 +
+
+
+ + + +
+
+
+
Modules
+
+
+
Here is a list of all modules:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 ▼GTC Extensions (Stable)Functions and types that the GLSL specification doesn't define, but useful to have for a C++ program
 GLM_GTC_bitfieldAllow to perform bit operations on integer values
 GLM_GTC_color_spaceAllow to perform bit operations on integer values
 GLM_GTC_constantsProvide a list of constants and precomputed useful values
 GLM_GTC_epsilonComparison functions for a user defined epsilon values
 GLM_GTC_integerAllow to perform bit operations on integer values
 GLM_GTC_matrix_accessDefines functions to access rows or columns of a matrix easily
 GLM_GTC_matrix_integerDefines a number of matrices with integer types
 GLM_GTC_matrix_inverseDefines additional matrix inverting functions
 GLM_GTC_matrix_transformDefines functions that generate common transformation matrices
 GLM_GTC_noiseDefines 2D, 3D and 4D procedural noise functions Based on the work of Stefan Gustavson and Ashima Arts on "webgl-noise": https://github.com/ashima/webgl-noise Following Stefan Gustavson's paper "Simplex noise demystified": http://www.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf <glm/gtc/noise.hpp> need to be included to use these functionalities
 GLM_GTC_packingThis extension provides a set of function to convert vertors to packed formats
 GLM_GTC_quaternionDefines a templated quaternion type and several quaternion operations
 GLM_GTC_randomGenerate random number from various distribution methods
 GLM_GTC_reciprocalDefine secant, cosecant and cotangent functions
 GLM_GTC_roundRounding value to specific boundings
 GLM_GTC_type_precisionDefines specific C++-based precision types
 GLM_GTC_type_ptrHandles the interaction between pointers and vector, matrix types
 GLM_GTC_ulpAllow the measurement of the accuracy of a function against a reference implementation
 GLM_GTC_vec1Add vec1, ivec1, uvec1 and bvec1 types
 ▼GTX Extensions (Experimental)Functions and types that the GLSL specification doesn't define, but useful to have for a C++ program
 GLM_GTX_associated_min_maxMin and max functions that return associated values not the compared onces
 GLM_GTX_bitAllow to perform bit operations on integer values
 GLM_GTX_closest_pointFind the point on a straight line which is the closet of a point
 GLM_GTX_color_spaceRelated to RGB to HSV conversions and operations
 GLM_GTX_color_space_YCoCgRGB to YCoCg conversions and operations
 GLM_GTX_commonProvide functions to increase the compatibility with Cg and HLSL languages
 GLM_GTX_compatibilityProvide functions to increase the compatibility with Cg and HLSL languages
 GLM_GTX_component_wiseOperations between components of a type
 GLM_GTX_dual_quaternionDefines a templated dual-quaternion type and several dual-quaternion operations
 GLM_GTX_euler_anglesBuild matrices from Euler angles
 GLM_GTX_extendExtend a position from a source to a position at a defined length
 GLM_GTX_extented_min_maxMin and max functions for 3 to 4 parameters
 GLM_GTX_fast_exponentialFast but less accurate implementations of exponential based functions
 GLM_GTX_fast_square_rootFast but less accurate implementations of square root based functions
 GLM_GTX_fast_trigonometryFast but less accurate implementations of trigonometric functions
 GLM_GTX_gradient_paintFunctions that return the color of procedural gradient for specific coordinates
 GLM_GTX_handed_coordinate_spaceTo know if a set of three basis vectors defines a right or left-handed coordinate system
 GLM_GTX_hashAdd std::hash support for glm types
 GLM_GTX_integerAdd support for integer for core functions
 GLM_GTX_intersectAdd intersection functions
 GLM_GTX_ioStd::[w]ostream support for glm types
 GLM_GTX_log_baseLogarithm for any base
 GLM_GTX_matrix_cross_productBuild cross product matrices
 GLM_GTX_matrix_decomposeDecomposes a model matrix to translations, rotation and scale components
 GLM_GTX_matrix_interpolationAllows to directly interpolate two exiciting matrices
 GLM_GTX_matrix_major_storageBuild matrices with specific matrix order, row or column
 GLM_GTX_matrix_operationBuild diagonal matrices from vectors
 GLM_GTX_matrix_queryQuery to evaluate matrix properties
 GLM_GTX_matrix_transform_2dDefines functions that generate common 2d transformation matrices
 GLM_GTX_mixed_producteMixed product of 3 vectors
 GLM_GTX_normVarious ways to compute vector norms
 GLM_GTX_normalCompute the normal of a triangle
 GLM_GTX_normalize_dotDot product of vectors that need to be normalize with a single square root
 GLM_GTX_number_precisionDefined size types
 GLM_GTX_optimum_powInteger exponentiation of power functions
 GLM_GTX_orthonormalizeOrthonormalize matrices
 GLM_GTX_perpendicularPerpendicular of a vector from other one
 GLM_GTX_polar_coordinatesConversion from Euclidean space to polar space and revert
 GLM_GTX_projectionProjection of a vector to other one
 GLM_GTX_quaternionExtented quaternion types and functions
 GLM_GTX_rangeDefines begin and end for vectors and matrices
 GLM_GTX_raw_dataProjection of a vector to other one
 GLM_GTX_rotate_normalized_axisQuaternions and matrices rotations around normalized axis
 GLM_GTX_rotate_vectorFunction to directly rotate a vector
 GLM_GTX_scalar_relationalExtend a position from a source to a position at a defined length
 GLM_GTX_simd_mat4SIMD implementation of mat4 type
 GLM_GTX_simd_quatSIMD implementation of quat type
 GLM_GTX_simd_vec4SIMD implementation of vec4 type
 GLM_GTX_splineSpline functions
 GLM_GTX_std_based_typeAdds vector types based on STL value types
 GLM_GTX_string_castSetup strings for GLM type values
 GLM_GTX_transformAdd transformation matrices
 GLM_GTX_transform2Add extra transformation matrices
 GLM_GTX_type_alignedDefines aligned types
 GLM_GTX_vector_angleCompute angle between vectors
 GLM_GTX_vector_queryQuery informations of vector types
 GLM_GTX_wrapWrapping mode of texture coordinates
 ▼GLM CoreThe core of GLM, which implements exactly and only the GLSL specification to the degree possible
 Common functionsThese all operate component-wise
 Exponential functionsThese all operate component-wise
 Geometric functionsThese operate on vectors as vectors, not component-wise
 Integer functionsThese all operate component-wise
 Matrix functionsFor each of the following built-in matrix functions, there is both a single-precision floating point version, where all arguments and return values are single precision, and a double-precision floating version, where all arguments and return values are double precision
 Noise functionsNoise functions are stochastic functions that can be used to increase visual complexity
 Floating-Point Pack and Unpack FunctionsThese functions do not operate component-wise, rather as described in each case
 Angle and Trigonometry FunctionsFunction parameters specified as angle are assumed to be in units of radians
 Vector Relational FunctionsRelational and equality operators (<, <=, >, >=, ==, !=) are defined to operate on scalars and produce scalar Boolean results
 ▼TypesThe standard types defined by the specification
 Precision typesNon-GLSL types that are used to define precision-based types
 Precision typesNon-GLSL types that are used to define precision-based types
 Template typesThe generic template types used as the basis for the core types
+
+
+ + + + diff --git a/external/glm/doc/api/nav_f.png b/external/glm/doc/api/nav_f.png new file mode 100644 index 0000000..72a58a5 Binary files /dev/null and b/external/glm/doc/api/nav_f.png differ diff --git a/external/glm/doc/api/nav_g.png b/external/glm/doc/api/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/external/glm/doc/api/nav_g.png differ diff --git a/external/glm/doc/api/nav_h.png b/external/glm/doc/api/nav_h.png new file mode 100644 index 0000000..33389b1 Binary files /dev/null and b/external/glm/doc/api/nav_h.png differ diff --git a/external/glm/doc/api/open.png b/external/glm/doc/api/open.png new file mode 100644 index 0000000..30f75c7 Binary files /dev/null and b/external/glm/doc/api/open.png differ diff --git a/external/glm/doc/api/splitbar.png b/external/glm/doc/api/splitbar.png new file mode 100644 index 0000000..fe895f2 Binary files /dev/null and b/external/glm/doc/api/splitbar.png differ diff --git a/external/glm/doc/api/sync_off.png b/external/glm/doc/api/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/external/glm/doc/api/sync_off.png differ diff --git a/external/glm/doc/api/sync_on.png b/external/glm/doc/api/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/external/glm/doc/api/sync_on.png differ diff --git a/external/glm/doc/api/tab_a.png b/external/glm/doc/api/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/external/glm/doc/api/tab_a.png differ diff --git a/external/glm/doc/api/tab_b.png b/external/glm/doc/api/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/external/glm/doc/api/tab_b.png differ diff --git a/external/glm/doc/api/tab_h.png b/external/glm/doc/api/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/external/glm/doc/api/tab_h.png differ diff --git a/external/glm/doc/api/tab_s.png b/external/glm/doc/api/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/external/glm/doc/api/tab_s.png differ diff --git a/external/glm/doc/api/tabs.css b/external/glm/doc/api/tabs.css new file mode 100644 index 0000000..25db042 --- /dev/null +++ b/external/glm/doc/api/tabs.css @@ -0,0 +1,79 @@ +.tabs, .tabs2, .tabs3 { + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 5%, #FFEEDD 95%, #FFEEDD); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.95,#FFEEDD), to(#FFEEDD)); + + /*background-image: url('tab_b.png');*/ + background-color:#FFF8F0; + width: 100%; + z-index: 101; + font-size: 13px; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 5%, #FFEEDD 95%, #FFEEDD); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.95,#FFEEDD), to(#FFEEDD)); + + /*background-image: url('tab_b.png');*/ + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 5%, #FFEEDD 95%, #FFEEDD); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.95,#FFEEDD), to(#FFEEDD)); + + /*background-image:url('tab_s.png');*/ + background-repeat:no-repeat; + background-position:right; + color: #FF8000; + /*text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);*/ + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 5%, #FFEEDD 95%, #FFEEDD); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.95,#FFEEDD), to(#FFEEDD)); + + /*background-image: url('tab_h.png');*/ + background-color:#FFFEFD; + background-repeat:repeat-x; + color: #FF8000; + /*text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);*/ + text-decoration:underline; +} + +.tablist li.current a { + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 5%, #FFEEDD 95%, #FFEEDD); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.05,#FFFFFF), color-stop(0.95,#FFEEDD), to(#FFEEDD)); + + /*background-image: url('tab_a.png');*/ + background-color:#FFFEFD; + background-repeat:repeat-x; + color: #FF8000; + /*text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);*/ +} diff --git a/external/glm/doc/glm.docx b/external/glm/doc/glm.docx new file mode 100644 index 0000000..00101b3 Binary files /dev/null and b/external/glm/doc/glm.docx differ diff --git a/external/glm/doc/glm.pdf b/external/glm/doc/glm.pdf new file mode 100644 index 0000000..8b67446 Binary files /dev/null and b/external/glm/doc/glm.pdf differ diff --git a/external/glm/doc/logo.png b/external/glm/doc/logo.png new file mode 100644 index 0000000..80b5f9d Binary files /dev/null and b/external/glm/doc/logo.png differ diff --git a/external/glm/doc/man.doxy b/external/glm/doc/man.doxy new file mode 100644 index 0000000..faa8285 --- /dev/null +++ b/external/glm/doc/man.doxy @@ -0,0 +1,2396 @@ +# Doxyfile 1.8.10 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = 0.9.7 + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = D:/Source/G-Truc/glm/doc/logo.png + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = . + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = NO + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class " \ + "The $name widget " \ + "The $name file " \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = NO + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = "C:/Documents and Settings/Groove/ " + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = YES + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = YES + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = NO + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = NO + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO, these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = YES + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = YES + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = YES + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = NO + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = NO + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = YES + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = YES + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = ../glm \ + . + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, +# *.vhdl, *.ucf, *.qsf, *.as and *.js. + +FILE_PATTERNS = *.hpp \ + *.doxy + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = NO + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://www.mathjax.org/mathjax + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /