spectral rendering improvements, added back further documentation chapters
parent
4a6d69df32
commit
1dc0193f68
|
@ -1,7 +1,7 @@
|
|||
BUILDDIR = '#build/release'
|
||||
CXX = 'g++'
|
||||
CC = 'gcc'
|
||||
CXXFLAGS = ['-arch', 'i386', '-arch', 'x86_64', '-mmacosx-version-min=10.5', '-march=nocona', '-msse2', '-mfpmath=sse', '-ftree-vectorize', '-funsafe-math-optimizations', '-fno-rounding-math', '-fno-signaling-nans', '-fomit-frame-pointer', '-isysroot', '/Developer/SDKs/MacOSX10.5.sdk', '-O3', '-Wall', '-g', '-pipe', '-DMTS_DEBUG', '-DSINGLE_PRECISION', '-DMTS_SSE', '-DMTS_HAS_COHERENT_RT', '-fopenmp', '-fstrict-aliasing', '-fsched-interblock', '-freorder-blocks']
|
||||
CXXFLAGS = ['-arch', 'i386', '-arch', 'x86_64', '-mmacosx-version-min=10.5', '-march=nocona', '-msse2', '-mfpmath=sse', '-ftree-vectorize', '-funsafe-math-optimizations', '-fno-rounding-math', '-fno-signaling-nans', '-fomit-frame-pointer', '-isysroot', '/Developer/SDKs/MacOSX10.5.sdk', '-O3', '-Wall', '-g', '-pipe', '-DMTS_DEBUG', '-DSINGLE_PRECISION', '-DSPECTRUM_SAMPLES=3', '-DMTS_SSE', '-DMTS_HAS_COHERENT_RT', '-fopenmp', '-fstrict-aliasing', '-fsched-interblock', '-freorder-blocks']
|
||||
LINKFLAGS = ['-framework', 'OpenGL', '-framework', 'Cocoa', '-arch', 'i386', '-arch', 'x86_64', '-mmacosx-version-min=10.5', '-Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk']
|
||||
BASEINCLUDE = ['#include']
|
||||
BASELIB = ['m', 'pthread', 'gomp']
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
BUILDDIR = '#build/release'
|
||||
CXX = 'g++'
|
||||
CC = 'gcc'
|
||||
CXXFLAGS = ['-arch', 'i386', '-mmacosx-version-min=10.5', '-march=nocona', '-msse2', '-mfpmath=sse', '-ftree-vectorize', '-funsafe-math-optimizations', '-fno-rounding-math', '-fno-signaling-nans', '-fomit-frame-pointer', '-isysroot', '/Developer/SDKs/MacOSX10.5.sdk', '-O3', '-Wall', '-g', '-pipe', '-DMTS_DEBUG', '-DSINGLE_PRECISION', '-DMTS_SSE', '-DMTS_HAS_COHERENT_RT', '-fopenmp', '-fstrict-aliasing', '-fsched-interblock', '-freorder-blocks']
|
||||
CXXFLAGS = ['-arch', 'i386', '-mmacosx-version-min=10.5', '-march=nocona', '-msse2', '-mfpmath=sse', '-ftree-vectorize', '-funsafe-math-optimizations', '-fno-rounding-math', '-fno-signaling-nans', '-fomit-frame-pointer', '-isysroot', '/Developer/SDKs/MacOSX10.5.sdk', '-O3', '-Wall', '-g', '-pipe', '-DMTS_DEBUG', '-DSINGLE_PRECISION', '-DSPECTRUM_SAMPLES=3', '-DMTS_SSE', '-DMTS_HAS_COHERENT_RT', '-fopenmp', '-fstrict-aliasing', '-fsched-interblock', '-freorder-blocks']
|
||||
LINKFLAGS = ['-framework', 'OpenGL', '-framework', 'Cocoa', '-arch', 'i386', '-mmacosx-version-min=10.5', '-Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk']
|
||||
BASEINCLUDE = ['#include']
|
||||
BASELIB = ['m', 'pthread', 'gomp']
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
BUILDDIR = '#build/release'
|
||||
CXX = 'g++'
|
||||
CC = 'gcc'
|
||||
CXXFLAGS = ['-arch', 'x86_64', '-mmacosx-version-min=10.5', '-march=nocona', '-msse2', '-mfpmath=sse', '-ftree-vectorize', '-funsafe-math-optimizations', '-fno-rounding-math', '-fno-signaling-nans', '-isysroot', '/Developer/SDKs/MacOSX10.5.sdk', '-O3', '-Wall', '-g', '-pipe', '-DMTS_DEBUG', '-DSINGLE_PRECISION', '-DMTS_SSE', '-DMTS_HAS_COHERENT_RT', '-fopenmp', '-fstrict-aliasing', '-fsched-interblock', '-freorder-blocks']
|
||||
CXXFLAGS = ['-arch', 'x86_64', '-mmacosx-version-min=10.5', '-march=nocona', '-msse2', '-mfpmath=sse', '-ftree-vectorize', '-funsafe-math-optimizations', '-fno-rounding-math', '-fno-signaling-nans', '-isysroot', '/Developer/SDKs/MacOSX10.5.sdk', '-O3', '-Wall', '-g', '-pipe', '-DMTS_DEBUG', '-DSINGLE_PRECISION', '-DSPECTRUM_SAMPLES=3', '-DMTS_SSE', '-DMTS_HAS_COHERENT_RT', '-fopenmp', '-fstrict-aliasing', '-fsched-interblock', '-freorder-blocks']
|
||||
LINKFLAGS = ['-framework', 'OpenGL', '-framework', 'Cocoa', '-arch', 'x86_64', '-mmacosx-version-min=10.5', '-Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk']
|
||||
BASEINCLUDE = ['#include']
|
||||
BASELIB = ['m', 'pthread', 'gomp']
|
||||
|
|
|
@ -2,7 +2,7 @@ BUILDDIR = '#build/release'
|
|||
CXX = 'icl'
|
||||
CC = 'icl'
|
||||
LINK = 'xilink'
|
||||
CXXFLAGS = ['/nologo', '/O3', '/Qipo', '/QxSSE2', '/QaxSSE3,SSE4.2', '/fp:fast=2', '/D', 'WIN32', '/W3', '/Qdiag-disable:2586', '/EHsc', '/GS-', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/Qopenmp']
|
||||
CXXFLAGS = ['/nologo', '/O3', '/Qipo', '/QxSSE2', '/QaxSSE3,SSE4.2', '/fp:fast=2', '/D', 'WIN32', '/W3', '/Qdiag-disable:2586', '/EHsc', '/GS-', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'SPECTRUM_SAMPLES=3', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/Qopenmp']
|
||||
SHCXXFLAGS = CXXFLAGS
|
||||
TARGET_ARCH = 'x86'
|
||||
MSVC_VERSION = '10.0'
|
||||
|
|
|
@ -2,7 +2,7 @@ BUILDDIR = '#build/release'
|
|||
CXX = 'icl'
|
||||
CC = 'icl'
|
||||
LINK = 'xilink'
|
||||
CXXFLAGS = ['/nologo', '/O3', '/Qipo', '/QxSSE2', '/QaxSSE3,SSE4.2', '/fp:fast=2', '/D', 'WIN32', '/D', 'WIN64', '/W3', '/Qdiag-disable:2586', '/EHsc', '/GS-', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/Qopenmp']
|
||||
CXXFLAGS = ['/nologo', '/O3', '/Qipo', '/QxSSE2', '/QaxSSE3,SSE4.2', '/fp:fast=2', '/D', 'WIN32', '/D', 'WIN64', '/W3', '/Qdiag-disable:2586', '/EHsc', '/GS-', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'SPECTRUM_SAMPLES=3', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/Qopenmp']
|
||||
SHCXXFLAGS = CXXFLAGS
|
||||
TARGET_ARCH = 'x86_64'
|
||||
MSVC_VERSION = '10.0'
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
BUILDDIR = '#build/debug'
|
||||
CXX = 'g++'
|
||||
CC = 'gcc'
|
||||
CXXFLAGS = ['-O0', '-Wall', '-g', '-pipe', '-march=nocona', '-msse2', '-ftree-vectorize', '-mfpmath=sse', '-funsafe-math-optimizations', '-fno-rounding-math', '-fno-signaling-nans', '-fomit-frame-pointer', '-DMTS_DEBUG', '-DSINGLE_PRECISION', '-DMTS_SSE', '-DMTS_HAS_COHERENT_RT', '-fopenmp']
|
||||
CXXFLAGS = ['-O0', '-Wall', '-g', '-pipe', '-march=nocona', '-msse2', '-ftree-vectorize', '-mfpmath=sse', '-funsafe-math-optimizations', '-fno-rounding-math', '-fno-signaling-nans', '-fomit-frame-pointer', '-DMTS_DEBUG', '-DSINGLE_PRECISION', '-DSPECTRUM_SAMPLES=3', '-DMTS_SSE', '-DMTS_HAS_COHERENT_RT', '-fopenmp']
|
||||
LINKFLAGS = []
|
||||
SHLINKFLAGS = ['-rdynamic', '-shared', '-fPIC']
|
||||
BASEINCLUDE = ['#include']
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
BUILDDIR = '#build/release'
|
||||
CXX = 'g++'
|
||||
CC = 'gcc'
|
||||
CXXFLAGS = ['-O3', '-Wall', '-g', '-pipe', '-march=nocona', '-msse2', '-ftree-vectorize', '-mfpmath=sse', '-funsafe-math-optimizations', '-fno-rounding-math', '-fno-signaling-nans', '-fomit-frame-pointer', '-DMTS_DEBUG', '-DSINGLE_PRECISION', '-DMTS_SSE', '-DMTS_HAS_COHERENT_RT', '-fopenmp']
|
||||
CXXFLAGS = ['-O3', '-Wall', '-g', '-pipe', '-march=nocona', '-msse2', '-ftree-vectorize', '-mfpmath=sse', '-funsafe-math-optimizations', '-fno-rounding-math', '-fno-signaling-nans', '-fomit-frame-pointer', '-DMTS_DEBUG', '-DSINGLE_PRECISION', '-DSPECTRUM_SAMPLES=3', '-DMTS_SSE', '-DMTS_HAS_COHERENT_RT', '-fopenmp']
|
||||
LINKFLAGS = []
|
||||
SHLINKFLAGS = ['-rdynamic', '-shared', '-fPIC']
|
||||
BASEINCLUDE = ['#include']
|
||||
|
|
|
@ -4,7 +4,7 @@ CC = 'cl'
|
|||
# /Ox=optimize for speed, global optimizations, intrinsic functions, favor fast code, frame pointer omission
|
||||
# /EHsc=C++ exceptions, /fp:fast=Enable reasonable FP optimizations, /GS-=No buffer security checks, /GL=whole program optimizations
|
||||
# To include debug information add '/Z7' to CXXFLAGS and '/DEBUG' to LINKFLAGS
|
||||
CXXFLAGS = ['/nologo', '/Od', '/Z7', '/fp:fast', '/arch:SSE2' ,'/D', 'WIN32', '/W3', '/EHsc', '/GS-', '/GL', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/openmp']
|
||||
CXXFLAGS = ['/nologo', '/Od', '/Z7', '/fp:fast', '/arch:SSE2' ,'/D', 'WIN32', '/W3', '/EHsc', '/GS-', '/GL', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'SPECTRUM_SAMPLES=3', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/openmp']
|
||||
SHCXXFLAGS = CXXFLAGS
|
||||
TARGET_ARCH = 'x86'
|
||||
MSVC_VERSION = '9.0'
|
||||
|
|
|
@ -4,7 +4,7 @@ CC = 'cl'
|
|||
# /Ox=optimize for speed, global optimizations, intrinsic functions, favor fast code, frame pointer omission
|
||||
# /EHsc=C++ exceptions, /fp:fast=Enable reasonable FP optimizations, /GS-=No buffer security checks, /GL=whole program optimizations
|
||||
# To include debug information add '/Z7' to CXXFLAGS and '/DEBUG' to LINKFLAGS
|
||||
CXXFLAGS = ['/nologo', '/Ox', '/fp:fast', '/arch:SSE2' ,'/D', 'WIN32', '/W3', '/EHsc', '/GS-', '/GL', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/openmp']
|
||||
CXXFLAGS = ['/nologo', '/Ox', '/fp:fast', '/arch:SSE2' ,'/D', 'WIN32', '/W3', '/EHsc', '/GS-', '/GL', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'SPECTRUM_SAMPLES=3', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/openmp']
|
||||
SHCXXFLAGS = CXXFLAGS
|
||||
TARGET_ARCH = 'x86'
|
||||
MSVC_VERSION = '9.0'
|
||||
|
|
|
@ -4,7 +4,7 @@ CC = 'cl'
|
|||
# /Ox=optimize for speed, global optimizations, intrinsic functions, favor fast code, frame pointer omission
|
||||
# /EHsc=C++ exceptions, /fp:fast=Enable reasonable FP optimizations, /GS-=No buffer security checks, /GL=whole program optimizations
|
||||
# To include debug information add '/Z7' to CXXFLAGS and '/DEBUG' to LINKFLAGS
|
||||
CXXFLAGS = ['/nologo', '/Od', '/Z7', '/fp:fast', '/D', 'WIN32', '/D', 'WIN64', '/W3', '/EHsc', '/GS-', '/GL', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/openmp']
|
||||
CXXFLAGS = ['/nologo', '/Od', '/Z7', '/fp:fast', '/D', 'WIN32', '/D', 'WIN64', '/W3', '/EHsc', '/GS-', '/GL', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'SPECTRUM_SAMPLES=3', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/openmp']
|
||||
SHCXXFLAGS = CXXFLAGS
|
||||
TARGET_ARCH = 'x86_64'
|
||||
MSVC_VERSION = '9.0'
|
||||
|
|
|
@ -4,7 +4,7 @@ CC = 'cl'
|
|||
# /Ox=optimize for speed, global optimizations, intrinsic functions, favor fast code, frame pointer omission
|
||||
# /EHsc=C++ exceptions, /fp:fast=Enable reasonable FP optimizations, /GS-=No buffer security checks, /GL=whole program optimizations
|
||||
# To include debug information add '/Z7' to CXXFLAGS and '/DEBUG' to LINKFLAGS
|
||||
CXXFLAGS = ['/nologo', '/Ox', '/fp:fast', '/D', 'WIN32', '/D', 'WIN64', '/W3', '/EHsc', '/GS-', '/GL', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/openmp']
|
||||
CXXFLAGS = ['/nologo', '/Ox', '/fp:fast', '/D', 'WIN32', '/D', 'WIN64', '/W3', '/EHsc', '/GS-', '/GL', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'SPECTRUM_SAMPLES=3', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/openmp']
|
||||
SHCXXFLAGS = CXXFLAGS
|
||||
TARGET_ARCH = 'x86_64'
|
||||
MSVC_VERSION = '9.0'
|
||||
|
|
|
@ -4,7 +4,7 @@ CC = 'cl'
|
|||
# /Ox=optimize for speed, global optimizations, intrinsic functions, favor fast code, frame pointer omission
|
||||
# /EHsc=C++ exceptions, /fp:fast=Enable reasonable FP optimizations, /GS-=No buffer security checks, /GL=whole program optimizations
|
||||
# To include debug information add '/Z7' to CXXFLAGS and '/DEBUG' to LINKFLAGS
|
||||
CXXFLAGS = ['/nologo', '/Od', '/Z7', '/fp:fast', '/arch:SSE2' ,'/D', 'WIN32', '/W3', '/EHsc', '/GS-', '/GL', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/openmp']
|
||||
CXXFLAGS = ['/nologo', '/Od', '/Z7', '/fp:fast', '/arch:SSE2' ,'/D', 'WIN32', '/W3', '/EHsc', '/GS-', '/GL', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'SPECTRUM_SAMPLES=3', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/openmp']
|
||||
SHCXXFLAGS = CXXFLAGS
|
||||
TARGET_ARCH = 'x86'
|
||||
MSVC_VERSION = '10.0'
|
||||
|
|
|
@ -4,7 +4,7 @@ CC = 'cl'
|
|||
# /Ox=optimize for speed, global optimizations, intrinsic functions, favor fast code, frame pointer omission
|
||||
# /EHsc=C++ exceptions, /fp:fast=Enable reasonable FP optimizations, /GS-=No buffer security checks, /GL=whole program optimizations
|
||||
# To include debug information add '/Z7' to CXXFLAGS and '/DEBUG' to LINKFLAGS
|
||||
CXXFLAGS = ['/nologo', '/Ox', '/fp:fast', '/arch:SSE2' ,'/D', 'WIN32', '/W3', '/EHsc', '/GS-', '/GL', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/openmp']
|
||||
CXXFLAGS = ['/nologo', '/Ox', '/fp:fast', '/arch:SSE2' ,'/D', 'WIN32', '/W3', '/EHsc', '/GS-', '/GL', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'SPECTRUM_SAMPLES=3', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/openmp']
|
||||
SHCXXFLAGS = CXXFLAGS
|
||||
TARGET_ARCH = 'x86'
|
||||
MSVC_VERSION = '10.0'
|
||||
|
|
|
@ -4,7 +4,7 @@ CC = 'cl'
|
|||
# /Ox=optimize for speed, global optimizations, intrinsic functions, favor fast code, frame pointer omission
|
||||
# /EHsc=C++ exceptions, /fp:fast=Enable reasonable FP optimizations, /GS-=No buffer security checks, /GL=whole program optimizations
|
||||
# To include debug information add '/Z7' to CXXFLAGS and '/DEBUG' to LINKFLAGS
|
||||
CXXFLAGS = ['/nologo', '/Od', '/Z7', '/fp:fast', '/D', 'WIN32', '/D', 'WIN64', '/W3', '/EHsc', '/GS-', '/GL', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/openmp']
|
||||
CXXFLAGS = ['/nologo', '/Od', '/Z7', '/fp:fast', '/D', 'WIN32', '/D', 'WIN64', '/W3', '/EHsc', '/GS-', '/GL', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'SPECTRUM_SAMPLES=3', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/openmp']
|
||||
SHCXXFLAGS = CXXFLAGS
|
||||
TARGET_ARCH = 'x86_64'
|
||||
MSVC_VERSION = '10.0'
|
||||
|
|
|
@ -4,7 +4,7 @@ CC = 'cl'
|
|||
# /Ox=optimize for speed, global optimizations, intrinsic functions, favor fast code, frame pointer omission
|
||||
# /EHsc=C++ exceptions, /fp:fast=Enable reasonable FP optimizations, /GS-=No buffer security checks, /GL=whole program optimizations
|
||||
# To include debug information add '/Z7' to CXXFLAGS and '/DEBUG' to LINKFLAGS
|
||||
CXXFLAGS = ['/nologo', '/Ox', '/fp:fast', '/D', 'WIN32', '/D', 'WIN64', '/W3', '/EHsc', '/GS-', '/GL', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/openmp']
|
||||
CXXFLAGS = ['/nologo', '/Ox', '/fp:fast', '/D', 'WIN32', '/D', 'WIN64', '/W3', '/EHsc', '/GS-', '/GL', '/MD', '/D', 'MTS_DEBUG', '/D', 'SINGLE_PRECISION', '/D', 'SPECTRUM_SAMPLES=3', '/D', 'MTS_SSE', '/D', 'MTS_HAS_COHERENT_RT', '/D', '_CONSOLE', '/D', 'NDEBUG', '/openmp']
|
||||
SHCXXFLAGS = CXXFLAGS
|
||||
TARGET_ARCH = 'x86_64'
|
||||
MSVC_VERSION = '10.0'
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
\section{Basic usage}
|
||||
\label{sec:basics}
|
||||
The rendering functionality of Mitsuba can be accessed through
|
||||
a command line interface and an interactive Qt-based frontend. This section
|
||||
provides some basic instructions on how to use them.
|
||||
|
@ -14,7 +15,7 @@ frontend for command-line use and batch job operation.
|
|||
To get a listing of the parameters it supports, run
|
||||
the executable without parameters:
|
||||
\begin{shell}
|
||||
$\texttt{\$}$ mitsuba
|
||||
$\texttt{\$}$ mitsuba
|
||||
\end{shell}
|
||||
\lstref{mitsuba-cli} shows the output resulting from this command. The most common
|
||||
mode of operation is to render a single scene, which is provided as a parameter, e.g.
|
||||
|
@ -91,11 +92,11 @@ where each line contains a separate connection description as discussed previous
|
|||
$\texttt{\$}$ mitsuba -s servers.txt path-to/my-scene.xml
|
||||
\end{shell}
|
||||
where \code{servers.txt} e.g. contains
|
||||
\begin{console}
|
||||
\begin{shell}
|
||||
user1@machine1.domain.org:/opt/mitsuba
|
||||
machine2.domain.org
|
||||
machine3.domain.org:7346
|
||||
\end{console}
|
||||
\end{shell}
|
||||
\subsubsection{Passing parameters}
|
||||
Any attribute in the scene XML file can be parameterized from the
|
||||
command line.
|
||||
|
|
|
@ -3,7 +3,7 @@ To compile Mitsuba, you will need a recent C++ compiler (e.g. GCC 4.1+ or
|
|||
Visual Studio 2008+) and some additional libraries, which Mitsuba uses internally.
|
||||
Builds on all supported platforms are done using a unified system
|
||||
based on SCons (\url{http://www.scons.org}), which is a Python-based
|
||||
software construction tool. There are some minor differences between operating systems though: for
|
||||
software construction tool. There are some differences between the different operating systems---for
|
||||
more details, please refer to one of the next sections depending on which one you use.
|
||||
|
||||
\subsection{Common steps}
|
||||
|
@ -11,8 +11,8 @@ To get started, you will need to download a recent version of Mitsuba. Make sure
|
|||
\begin{shell}
|
||||
$\texttt{\$}$ hg clone https://www.mitsuba-renderer.org/hg/mitsuba
|
||||
\end{shell}
|
||||
Afterwards, you will need to download the precompiled dependencies into the
|
||||
subdirectory \code{mitsuba/dependencies}:
|
||||
Afterwards, you will need to download the precompiled dependencies into a new
|
||||
subdirectory named \code{mitsuba/dependencies}:
|
||||
\begin{shell}
|
||||
$\texttt{\$}$ cd mitsuba
|
||||
$\texttt{\$}$ hg clone https://www.mitsuba-renderer.org/hg/dependencies
|
||||
|
@ -33,7 +33,7 @@ build/config-icl12-msvc2010-win32.py
|
|||
build/config-icl12-msvc2010-win64.py
|
||||
\end{shell}
|
||||
|
||||
Usually, you will not have to make any modification to this fine, but sometimes a few minor
|
||||
Usually, you will not have to make any modification to this file, but sometimes a few minor
|
||||
edits may be necessary. In particular, you might want to add or remove certain
|
||||
compilation flags from the \code{CXXFLAGS} parameter. The following settings
|
||||
affect the behavior of Mitsuba:
|
||||
|
@ -42,20 +42,28 @@ affect the behavior of Mitsuba:
|
|||
enabled by default.
|
||||
\item[\texttt{MTS\_KD\_DEBUG}] Enable additional checks in the kd-Tree. This
|
||||
is quite slow and mainly useful to track down bugs when they are suspected.
|
||||
\item[\texttt{MTS\_KD\_CONSERVE\_MEMORY}] Use less memory for storing geometry (at the cost of speed).
|
||||
\item[\texttt{MTS\_KD\_CONSERVE\_MEMORY}] Use a more compact representation
|
||||
for triangle geometry (at the cost of speed). This flag causes Mitsuba to use the somewhat slower
|
||||
Moeller-Trumbore triangle intersection method instead of the default Wald
|
||||
intersection test, which has an overhead of 48 bytes per triangle.
|
||||
Off by default.
|
||||
\item[\texttt{SINGLE\_PRECISION}] Do all computation in single precision. This is usually sufficient.
|
||||
\item[\texttt{DOUBLE\_PRECISION}] Do all computation in double precision. Incompatible with
|
||||
\item[\texttt{MTS\_SSE}]Activate optimized SSE routines. On by default.
|
||||
\item[\texttt{MTS\_HAS\_COHERENT\_RT}]Include coherent ray tracing support (depends on \texttt{MTS\_SSE}). This flag is activated by default.
|
||||
\item[\texttt{MTS\_DEBUG\_FP}]Generated NaNs and overflows will cause floating point exceptions, which can be caught in a debugger. This is slow and mainly meant as a debugging tool for developers. Off by default.
|
||||
\item[\texttt{MTS\_SPECTRUM\_SAMPLES=}$\langle ..\rangle$]This setting defines the number of evenly-spaced
|
||||
spectral samples in the 400-700nm range that Mitsuba uses when rendering scenes.
|
||||
The default is 3 samples, in which case the renderer automatically turns into an
|
||||
RGB-based system.
|
||||
\item[\texttt{SINGLE\_PRECISION}] Do all computation in single precision. This is normally sufficient and therefore used as the default setting.
|
||||
\item[\texttt{DOUBLE\_PRECISION}] Do all computation in double precision. This flag is incompatible with
|
||||
\texttt{MTS\_SSE}, \texttt{MTS\_HAS\_COHERENT\_RT}, and \texttt{MTS\_DEBUG\_FP}.
|
||||
\item[\texttt{MTS\_SSE}]Activate optimized SSE routines.
|
||||
\item[\texttt{MTS\_HAS\_COHERENT\_RT}]Include coherent ray tracing support (depends on \texttt{MTS\_SSE}).
|
||||
\item[\texttt{MTS\_DEBUG\_FP}]Generated NaNs and overflows will cause floating point exceptions, which can be caught in a debugger. This is slow and mainly meant as a debugging tool for developers.
|
||||
\item[\texttt{MTS\_GUI\_SOFTWARE\_FALLBACK}]Forces the GUI to use a software
|
||||
fallback mode, which is considerably slower and removes the realtime preview.
|
||||
This is useful when running the interface on a remote machine
|
||||
This is useful when running the interface on a remote Windows machine
|
||||
accessed via the Remote Desktop Protocol (RDP).
|
||||
\end{description}
|
||||
All default configurations use the flags \code{MTS\_DEBUG}, \code{SINGLE\_PRECISION}, \code{MTS\_SSE},
|
||||
All of the default configurations files located in the \texttt{build} directory use the flags
|
||||
\code{SINGLE\_PRECISION}, \code{SPECTRUM\_SAMPLES=3}, \code{MTS\_DEBUG}, \code{MTS\_SSE},
|
||||
as well as \code{MTS\_HAS\_COHERENT\_RT}.
|
||||
|
||||
\subsection{Building on Ubuntu Linux}
|
||||
|
@ -67,9 +75,9 @@ First, run
|
|||
\begin{shell}
|
||||
$\text{\$}$ sudo apt-get install build-essential scons qt4-dev-tools scons libpng12-dev libjpeg62-dev libilmbase-dev libopenexr-dev libxerces-c-dev libboost-dev libglewmx1.5-dev libxxf86vm-dev libboost-system-dev libboost-filesystem-dev
|
||||
\end{shell}
|
||||
To get COLLADA support, you will also need to install the \texttt{collada-dom} packages or build them from scratch. Here, we install the \code{x86\_64} binaries and development headers available on the Mitsuba website:
|
||||
To get COLLADA support, you will also need to install the \texttt{collada-dom} packages or build it from scratch. Here, we install the \code{x86\_64} binaries and development headers that can be found in the \texttt{dependencies/linux} directory\footnote{The directory also contains source packages in case these binaries don't work for you.}:
|
||||
\begin{shell}
|
||||
$\text{\$}$ sudo dpkg --install collada-dom2.2_2.2-2_amd64.deb collada-dom-dev_2.2-2_amd64.deb
|
||||
$\text{\$}$ sudo dpkg --install collada-dom_2.3.1-1_amd64.deb collada-dom-dev_2.2-2_amd64.deb
|
||||
\end{shell}
|
||||
Afterwards, simply run
|
||||
\begin{shell}
|
||||
|
@ -85,6 +93,7 @@ To be able to run the renderer from the command line, you will also have to impo
|
|||
$\text{\$}$ . setpath.sh
|
||||
\end{shell}
|
||||
(note the period at the beginning -- this assumes that you are using \code{bash}).
|
||||
Having set up everything, you can now move on to \secref{basics}.
|
||||
|
||||
\subsection{Building on Fedora Core}
|
||||
You'll first need to install a number of dependencies. It is assumed here
|
||||
|
@ -96,8 +105,8 @@ First, run
|
|||
$\text{\$}$ yum install mercurial gcc-c++ scons boost-devel qt4-devel OpenEXR-devel xerces-c-devel
|
||||
\end{shell}
|
||||
You will also need the \texttt{glew-mx} and \texttt{collada-dom} packages, which are not included in the Fedora package repository.
|
||||
You can grab source, \texttt{i386}, and \text{x86\_64} \texttt{RPM} files here: \texttt{http://www.mitsuba-renderer.org/releases}.
|
||||
Afterwards, simply run
|
||||
You can grab source, \texttt{i386}, and \text{x86\_64} \texttt{RPM} files at the following location: \texttt{http://www.mitsuba-renderer.org/releases}.
|
||||
After installing them, simply run
|
||||
\begin{shell}
|
||||
$\text{\$}$ scons
|
||||
\end{shell}
|
||||
|
@ -111,24 +120,25 @@ To be able to run the renderer from the command line, you will also have to impo
|
|||
$\text{\$}$ . setpath.sh
|
||||
\end{shell}
|
||||
(note the period at the beginning -- this assumes that you are using \code{bash}).
|
||||
Having set up everything, you can now move on to \secref{basics}.
|
||||
|
||||
\subsection{Building on Arch Linux}
|
||||
There are two ways to install Mitsuba on Archlinux, the Arch way, and the other way.
|
||||
|
||||
The Arch Way is to use the Aur software repository.
|
||||
Accessing software in the Aur repository is made a lot easier by using a script called packer.
|
||||
Accessing software in the Aur repository is easiest when using a script called \texttt{packer}.
|
||||
|
||||
First download packer then use makepkg to build and install it.
|
||||
The -is flags will prompt you for your sudo password and then install the package after it has finished building as well as install any needed dependencies.
|
||||
First download packer then use \texttt{makepkg} to build and install it.
|
||||
The \texttt{-is} flags will prompt you for your sudo password and then install the package after it has finished building as well as install any needed dependencies.
|
||||
\begin{shell}
|
||||
$\text{\$}$ mkdir packer && cd packer
|
||||
$\text{\$}$ wget http://aur.archlinux.org/packages/packer/packer/PKGBUILD
|
||||
$\text{\$}$ makepkg -is
|
||||
\end{shell}
|
||||
|
||||
Next use packer to automatically download, build, and install Mitsuba as well as any needed dependencies.
|
||||
The optional --noedit flag is used if you do not wish to edit the files after they are downloaded.
|
||||
The optional --noconfirm flag is used if you do not wish to confirm each step of the installation.
|
||||
Next, use packer to automatically download, build, and install Mitsuba as well as any needed dependencies.
|
||||
The optional \code{--noedit} flag is used if you do not wish to edit the files after they are downloaded.
|
||||
The optional \code{--noconfirm} flag is used if you do not wish to confirm each step of the installation.
|
||||
\begin{shell}
|
||||
$\text{\$}$ sudo packer -S --noedit --noconfirm mitsuba-hg glewmx collada-dom
|
||||
\end{shell}
|
||||
|
@ -165,10 +175,11 @@ To uninstall do this
|
|||
\begin{shell}
|
||||
$\text{\$}$ sudo pacman -R mitsuba-hg glewmx collada-dom
|
||||
\end{shell}
|
||||
|
||||
After installing you will be able to run the renderer from the command line.
|
||||
Having set up everything, you can now move on to \secref{basics}.
|
||||
|
||||
If for some reason you are unable access the Aur files, they are also hosted at (\url{https://www.mitsuba-renderer.org/releases/contrib/archlinux/})
|
||||
If for some reason you are unable access the Aur files, they are also hosted at
|
||||
(\url{https://www.mitsuba-renderer.org/releases/contrib/archlinux/}).
|
||||
|
||||
\subsection{Building on Windows}
|
||||
On the Windows platform, Mitsuba already includes most of the dependencies in precompiled form.
|
||||
|
@ -179,9 +190,9 @@ installer generates a warning about not finding Python in the registry. In this
|
|||
Next, you will either need to compile Qt 4.7 (or a newer version) from
|
||||
source or grab pre-built binaries (e.g. from
|
||||
\url{http://code.google.com/p/qt-msvc-installer}).
|
||||
It is crucial that the Qt build configuration matches that of Mitsuba:
|
||||
It is crucial that the Qt build configuration \emph{exactly} matches that of Mitsuba:
|
||||
for instance, if you were planning to use the 64-bit compiler in Visual
|
||||
Studio 2010, both projects must be built with that \emph{exact} same compiler.
|
||||
Studio 2010, both projects must be built with that exact same compiler.
|
||||
|
||||
When building Qt from source, an important point is to install any
|
||||
Visual Studio service packs prior to this step---for instance, 64-bit
|
||||
|
@ -209,16 +220,17 @@ Afterwards, simply run
|
|||
\begin{shell}
|
||||
C:\Mitsuba\>scons
|
||||
\end{shell}
|
||||
In the case that you have multiple processors, you might want to parallelize the build by appending \code{-j }\emph{core count} to the \code{scons} command.
|
||||
In the case that you have multiple processors, you might want to parallelize the build by appending the option \code{-j }\emph{core count} to the \code{scons} command.
|
||||
|
||||
If all goes well, the build process will finish successfully after a few
|
||||
minutes. In comparison to the other platforms, you don't have to run the \code{setpath.sh} script at this point.
|
||||
All binaries are now located in the \code{dist} directory, and they should be executed directly from there.
|
||||
|
||||
\subsubsection{Integration with the Visual Studio interface}
|
||||
Basic Visual Studio 2008 and 2010 integration with support for code completion
|
||||
exists for those who develop Mitsuba code on Windows.
|
||||
To use the supplied projects, simply double-click on \code{build/mitsuba-msvc2008.sln}
|
||||
or \code{build/mitsuba-msvc2010.sln}. These Visual Studio projects still internally
|
||||
To use the supplied projects, simply double-click on one of the two files \code{build/mitsuba-msvc2008.sln}
|
||||
and \code{build/mitsuba-msvc2010.sln}. These Visual Studio projects still internally
|
||||
use the SCons-based build system to compile Mitsuba; whatever
|
||||
build configuration is selected within Visual Studio will be used to pick a matching
|
||||
configuration file from the \texttt{build} directory. Note that you will
|
||||
|
@ -230,7 +242,6 @@ On Mac OS X, you will need to install both scons (\code{www.scons.org}) and
|
|||
a recent release of XCode. You will also need to get Qt 4.7.0 or a newer version
|
||||
--- make sure that you get the normal Cocoa release (i.e. \emph{not} the one based on Carbon). All of the
|
||||
other dependencies are already included in precompiled form.
|
||||
|
||||
Now open a Terminal and run
|
||||
\begin{shell}
|
||||
$\text{\$}$ scons
|
||||
|
|
|
@ -161,9 +161,10 @@ file:
|
|||
<spectrum name="spectrumProperty" filename="measuredSpectrum.spd"/>
|
||||
\end{xml}
|
||||
The file should contain a single measurement per line, with the corresponding
|
||||
wavelength in nanometers and the measured value separated by a space. Here is
|
||||
an example:
|
||||
wavelength in nanometers and the measured value separated by a space. Comments
|
||||
are allowed. Here is an example:
|
||||
\begin{xml}
|
||||
# This file contains a measured spectral power distribution
|
||||
406.13 0.703313
|
||||
413.88 0.744563
|
||||
422.03 0.791625
|
||||
|
@ -172,8 +173,7 @@ an example:
|
|||
...
|
||||
\end{xml}
|
||||
|
||||
It is also possible to specify a completely flat spectral power distribution by specifying
|
||||
just one value:
|
||||
Passing a single value to \texttt{spectrum} will result in a a completely flat spectral power distribution:
|
||||
\begin{xml}
|
||||
<spectrum name="spectrumProperty" value="0.56"/>
|
||||
\end{xml}
|
||||
|
|
|
@ -6,7 +6,6 @@ bear with me while things are coming together.
|
|||
Mitsuba is an extensible rendering framework written in portable C++. It implements unbiased
|
||||
as well as biased techniques and contains heavy optimizations targeted towards current CPU
|
||||
architectures.
|
||||
|
||||
In comparison to other open source renderers, Mitsuba places a strong emphasis on recent research-oriented
|
||||
rendering techniques, such as path-based formulations of Metropolis Light Transport and volumetric
|
||||
modeling approaches.
|
||||
|
|
10
doc/main.tex
10
doc/main.tex
|
@ -72,7 +72,6 @@
|
|||
\definecolor{lstcomment}{gray}{0.5}
|
||||
\definecolor{lstattrib}{rgb}{0,0.34,0}
|
||||
|
||||
|
||||
% Listings settings
|
||||
\lstset{
|
||||
basicstyle = \small\ttfamily\raggedright,
|
||||
|
@ -92,7 +91,6 @@
|
|||
upquote = true
|
||||
}
|
||||
|
||||
|
||||
\lstdefinelanguage{xml} {
|
||||
sensitive=true,
|
||||
morecomment=[s][\color{lstcomment}\itshape]{<!--}{-->},
|
||||
|
@ -114,12 +112,12 @@
|
|||
% Less vertical spacing for \figure[h] floats
|
||||
\setlength{\intextsep}{3pt}
|
||||
|
||||
\lstnewenvironment{shell}[1][]{\lstset{#1}}
|
||||
{}
|
||||
\lstnewenvironment{cpp}[1][]{\lstset{language=c++, #1}}
|
||||
{}
|
||||
\lstnewenvironment{xml}[1][]{\lstset{language=xml, #1}}
|
||||
{}
|
||||
\lstnewenvironment{shell}[1]{\lstset{language=bash, #1}}
|
||||
{}
|
||||
\lstnewenvironment{console}[1][]{\lstset{basicstyle=\footnotesize\ttfamily, float, #1}}
|
||||
{}
|
||||
|
||||
|
@ -140,8 +138,8 @@
|
|||
\tableofcontents
|
||||
|
||||
\include{introduction}
|
||||
%\include{compiling}
|
||||
%\include{basics}
|
||||
\include{compiling}
|
||||
\include{basics}
|
||||
\include{format}
|
||||
\IfFileExists{plugins_generated.tex}{\include{plugins_generated}}{}
|
||||
%\include{import}
|
||||
|
|
|
@ -27,7 +27,11 @@ namespace fs = boost::filesystem;
|
|||
#define SPECTRUM_MIN_WAVELENGTH 400
|
||||
#define SPECTRUM_MAX_WAVELENGTH 700
|
||||
#define SPECTRUM_RANGE (SPECTRUM_MAX_WAVELENGTH-SPECTRUM_MIN_WAVELENGTH+1)
|
||||
#define SPECTRUM_SAMPLES 3
|
||||
|
||||
#if !defined(SPECTRUM_SAMPLES)
|
||||
#error The desired number of spectral samples must be specified \
|
||||
in the configuration file!
|
||||
#endif
|
||||
|
||||
MTS_NAMESPACE_BEGIN
|
||||
|
||||
|
|
|
@ -1,34 +1,27 @@
|
|||
Import('env', 'plugins')
|
||||
|
||||
|
||||
# Basic materials (one smooth & microfacet version of each)
|
||||
#plugins += env.SharedLibrary('roughdielectric', ['roughdielectric.cpp'])
|
||||
#plugins += env.SharedLibrary('plastic', ['plastic.cpp'])
|
||||
#plugins += env.SharedLibrary('roughplastic', ['roughplastic.cpp'])
|
||||
#plugins += env.SharedLibrary('varnish', ['varnish.cpp'])
|
||||
#plugins += env.SharedLibrary('conductor', ['conductor.cpp'])
|
||||
#plugins += env.SharedLibrary('roughconductor', ['roughconductor.cpp'])
|
||||
|
||||
#plugins += env.SharedLibrary('diffuse', ['diffuse.cpp'])
|
||||
#plugins += env.SharedLibrary('roughdiffuse', ['roughdiffuse.cpp'])
|
||||
|
||||
|
||||
# Basic materials (smooth & rough versions of each)
|
||||
plugins += env.SharedLibrary('dielectric', ['dielectric.cpp'])
|
||||
|
||||
# Diffuse models
|
||||
plugins += env.SharedLibrary('difftrans', ['difftrans.cpp'])
|
||||
plugins += env.SharedLibrary('conductor', ['conductor.cpp'])
|
||||
plugins += env.SharedLibrary('diffuse', ['diffuse.cpp'])
|
||||
#plugins += env.SharedLibrary('plastic', ['plastic.cpp'])
|
||||
|
||||
#plugins += env.SharedLibrary('roughdielectric', ['roughdielectric.cpp'])
|
||||
#plugins += env.SharedLibrary('roughconductor', ['roughconductor.cpp'])
|
||||
#plugins += env.SharedLibrary('roughdiffuse', ['roughdiffuse.cpp'])
|
||||
#plugins += env.SharedLibrary('roughplastic', ['roughplastic.cpp'])
|
||||
|
||||
# Other
|
||||
plugins += env.SharedLibrary('difftrans', ['difftrans.cpp'])
|
||||
|
||||
# Plugins that act as modifiers
|
||||
plugins += env.SharedLibrary('mixture', ['mixture.cpp'])
|
||||
|
||||
#plugins += env.SharedLibrary('twosided', ['twosided.cpp'])
|
||||
|
||||
#plugins += env.SharedLibrary('difftrans', ['difftrans.cpp'])
|
||||
#plugins += env.SharedLibrary('mask', ['mask.cpp'])
|
||||
#plugins += env.SharedLibrary('coating', ['coating.cpp'])
|
||||
|
||||
#plugins += env.SharedLibrary('ward', ['ward.cpp'])
|
||||
#plugins += env.SharedLibrary('phong', ['phong.cpp'])
|
||||
#plugins += env.SharedLibrary('microfacet', ['microfacet.cpp'])
|
||||
#plugins += env.SharedLibrary('irawan', ['irawan.cpp'])
|
||||
|
||||
Export('plugins')
|
||||
|
|
|
@ -268,11 +268,21 @@ InterpolatedSpectrum::InterpolatedSpectrum(const fs::path &path) {
|
|||
SLog(EError, "InterpolatedSpectrum: could not open \"%s\"",
|
||||
path.file_string().c_str());
|
||||
|
||||
while (is.good() && !is.eof()) {
|
||||
std::string line;
|
||||
while (true) {
|
||||
if (!std::getline(is, line))
|
||||
break;
|
||||
line = trim(line);
|
||||
if (line.length() == 0 || line[0] == '#')
|
||||
continue;
|
||||
std::istringstream iss(line);
|
||||
Float lambda, value;
|
||||
is >> lambda >> value;
|
||||
if (!(iss >> lambda >> value))
|
||||
break;
|
||||
appendSample(lambda, value);
|
||||
}
|
||||
SLog(EInfo, "Loaded a spectral power distribution with " SIZE_T_FMT
|
||||
" entries", m_wavelength.size());
|
||||
}
|
||||
|
||||
void InterpolatedSpectrum::appendSample(Float lambda, Float value) {
|
||||
|
|
|
@ -421,7 +421,7 @@ Spectrum PhotonMap::estimateIrradiance(const Point &p, const Normal &n,
|
|||
return result * (m_scale * INV_PI / distSquared);
|
||||
}
|
||||
|
||||
#if !defined(MTS_SSE)
|
||||
#if !defined(MTS_SSE) || SPECTRUM_SAMPLES != 3
|
||||
Spectrum PhotonMap::estimateIrradianceFiltered(const Point &p, const Normal &n,
|
||||
Float searchRadius, size_t maxPhotons) const {
|
||||
Spectrum result(0.0f);
|
||||
|
|
|
@ -393,7 +393,6 @@ void SceneHandler::endElement(const XMLCh* const xmlName) {
|
|||
} else if (name == "transform") {
|
||||
context.parent->properties.setTransform(context.attributes["name"],
|
||||
m_transform);
|
||||
/* Do nothing */
|
||||
} else if (name == "include") {
|
||||
SAXParser* parser = new SAXParser();
|
||||
FileResolver *resolver = Thread::getThread()->getFileResolver();
|
||||
|
|
Loading…
Reference in New Issue