aboutsummaryrefslogtreecommitdiff
path: root/graphics/luxrender14
diff options
context:
space:
mode:
authorAlexey Dokuchaev <danfe@FreeBSD.org>2015-10-12 09:37:20 +0000
committerAlexey Dokuchaev <danfe@FreeBSD.org>2015-10-12 09:37:20 +0000
commitf7ef0c292faad8fdd1c4e4443c0ceb7f2f670aa5 (patch)
tree463be3b05823d03f07360c422835c5c16566481f /graphics/luxrender14
parentbe0628b38ec31712640a5bbe54a1baaa963d6a72 (diff)
downloadports-f7ef0c292faad8fdd1c4e4443c0ceb7f2f670aa5.tar.gz
ports-f7ef0c292faad8fdd1c4e4443c0ceb7f2f670aa5.zip
Notes
Diffstat (limited to 'graphics/luxrender14')
-rw-r--r--graphics/luxrender14/Makefile15
-rw-r--r--graphics/luxrender14/distinfo4
-rw-r--r--graphics/luxrender14/files/patch-CMakeLists.txt19
-rw-r--r--graphics/luxrender14/files/patch-gcc42-fixes394
-rw-r--r--graphics/luxrender14/files/patch-luxrays-cmake-PlatformSpecific.cmake26
-rw-r--r--graphics/luxrender14/files/patch-luxrays-include-luxcore-luxcore.h20
-rw-r--r--graphics/luxrender14/files/patch-luxrays-samples-benchsimple-CMakeLists.txt14
-rw-r--r--graphics/luxrender14/files/patch-luxrays-samples-luxcoredemo-CMakeLists.txt16
-rw-r--r--graphics/luxrender14/files/patch-luxrays-samples-luxcorescenedemo-CMakeLists.txt16
-rw-r--r--graphics/luxrender14/files/patch-luxrays-samples-smallluxgpu4-CMakeLists.txt20
10 files changed, 544 insertions, 0 deletions
diff --git a/graphics/luxrender14/Makefile b/graphics/luxrender14/Makefile
new file mode 100644
index 000000000000..b1ca53a8575b
--- /dev/null
+++ b/graphics/luxrender14/Makefile
@@ -0,0 +1,15 @@
+# Created by: Alexey Dokuchaev <danfe@FreeBSD.org>
+# $FreeBSD$
+
+DISTVERSION= 1.4
+
+LUX_REV= dfd211d6faa0
+LUXRAYS_REV= 7c7127ee1fa4
+
+MASTERDIR= ${.CURDIR}/../luxrender
+PKGNAMESUFFIX= -14
+
+DISTINFO_FILE= ${.CURDIR}/distinfo
+PATCHDIR= ${.CURDIR}/files
+
+.include "${MASTERDIR}/Makefile"
diff --git a/graphics/luxrender14/distinfo b/graphics/luxrender14/distinfo
new file mode 100644
index 000000000000..21b9a50c4199
--- /dev/null
+++ b/graphics/luxrender14/distinfo
@@ -0,0 +1,4 @@
+SHA256 (luxrender/v14.tar.bz2) = 87389167496037e22cbf420efd610474d6a02395c4f4e4a39e2bd50453676b0b
+SIZE (luxrender/v14.tar.bz2) = 2642639
+SHA256 (luxrender/luxrender_v1.4.tar.bz2) = 8229a814807fed2810eefd4a5ba051e7b05a4b30862ee066a3c205d6bd730205
+SIZE (luxrender/luxrender_v1.4.tar.bz2) = 26682611
diff --git a/graphics/luxrender14/files/patch-CMakeLists.txt b/graphics/luxrender14/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..5cd7bca61653
--- /dev/null
+++ b/graphics/luxrender14/files/patch-CMakeLists.txt
@@ -0,0 +1,19 @@
+--- CMakeLists.txt.orig
++++ CMakeLists.txt
+@@ -210,7 +210,6 @@ IF(NOT APPLE AND NOT WIN32)
+ STRING(REGEX MATCH "(x86_64-*)|(X86_64-*)|(AMD64-*)|(amd64-*)" _mach_x86_64 ${MACHINE})
+ IF (_mach_x86_64)
+ SET(ARCH_X86_64 1)
+- SET(LIB_SUFFIX 64)
+ #jromang - Hack to avoid boost bug on x64 Ubuntu 8.10 and Fedora 10 (http://www.luxrender.net/mantis/view.php?id=433)
+ ADD_DEFINITIONS(-DBOOST_NO_INTRINSIC_INT64_T)
+ ENDIF (_mach_x86_64)
+@@ -402,7 +401,7 @@ ELSEIF(MSVC)
+ ELSE(APPLE)
+ # Dade - default compiler options
+ # Removed "-O3" from definitions in order to have CMake Release/Debug options to work
+- ADD_DEFINITIONS(-msse2 -mfpmath=sse -ftree-vectorize -funroll-loops -Wall -fPIC -DHAVE_PTHREAD_H)
++ ADD_DEFINITIONS(-msse -Wall -fPIC -DHAVE_PTHREAD_H)
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fvisibility=hidden -fvisibility-inlines-hidden")
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fvisibility=hidden -fvisibility-inlines-hidden")
+ # The QBVH accelerator needs to be compiled with much reduced optimizations
diff --git a/graphics/luxrender14/files/patch-gcc42-fixes b/graphics/luxrender14/files/patch-gcc42-fixes
new file mode 100644
index 000000000000..dbf2e1b99f53
--- /dev/null
+++ b/graphics/luxrender14/files/patch-gcc42-fixes
@@ -0,0 +1,394 @@
+--- ../luxrays/include/luxrays/core/geometry/frame.h.orig
++++ ../luxrays/include/luxrays/core/geometry/frame.h
+@@ -46,11 +46,11 @@ public:
+ SetFromZ(z);
+ }
+
+- Frame(const Normal &z) {
++ Frame(const luxrays::Normal &z) {
+ SetFromZ(Vector(z));
+ }
+
+- void SetFromZ(const Normal &z) {
++ void SetFromZ(const luxrays::Normal &z) {
+ SetFromZ(Vector(z));
+ }
+
+--- textures/bilerp.h.orig
++++ textures/bilerp.h
+@@ -39,7 +39,7 @@ public:
+ // BilerpTexture Public Methods
+ BilerpFloatTexture(TextureMapping2D *m,
+ float t00, float t01, float t10, float t11) :
+- Texture("BilerpFloatTexture-" + boost::lexical_cast<string>(this)) {
++ lux::Texture<float>::Texture("BilerpFloatTexture-" + boost::lexical_cast<string>(this)) {
+ mapping = m;
+ v00 = t00;
+ v01 = t01;
+@@ -87,7 +87,7 @@ public:
+ BilerpSpectrumTexture(TextureMapping2D *m,
+ const RGBColor &t00, const RGBColor &t01,
+ const RGBColor &t10, const RGBColor &t11) :
+- Texture("BilerpSpectrumTexture-" + boost::lexical_cast<string>(this)) {
++ lux::Texture<lux::SWCSpectrum>::Texture("BilerpSpectrumTexture-" + boost::lexical_cast<string>(this)) {
+ mapping = m;
+ v00 = t00;
+ v01 = t01;
+@@ -145,7 +145,7 @@ public:
+ const boost::shared_ptr<Texture<FresnelGeneral> > &t01,
+ const boost::shared_ptr<Texture<FresnelGeneral> > &t10,
+ const boost::shared_ptr<Texture<FresnelGeneral> > &t11) :
+- Texture("BilerpFresnelTexture-" + boost::lexical_cast<string>(this)) {
++ lux::Texture<lux::FresnelGeneral>::Texture("BilerpFresnelTexture-" + boost::lexical_cast<string>(this)) {
+ mapping = m;
+ v00 = t00;
+ v01 = t01;
+--- textures/blackbody.h.orig
++++ textures/blackbody.h
+@@ -34,7 +34,7 @@ namespace lux
+ class BlackBodyTexture : public Texture<SWCSpectrum> {
+ public:
+ // BlackBodyTexture Public Methods
+- BlackBodyTexture(float t) : Texture("BlackBodyTexture-" + boost::lexical_cast<string>(this)),
++ BlackBodyTexture(float t) : lux::Texture<lux::SWCSpectrum>::Texture("BlackBodyTexture-" + boost::lexical_cast<string>(this)),
+ BBSPD(t) { }
+ virtual ~BlackBodyTexture() { }
+ virtual SWCSpectrum Evaluate(const SpectrumWavelengths &sw,
+--- textures/blender_base.h.orig
++++ textures/blender_base.h
+@@ -34,7 +34,7 @@ public:
+ virtual ~BlenderTexture3D() { }
+
+ BlenderTexture3D(const std::string &name, const Transform &tex2world, const ParamSet &tp,
+- short type) : Texture(name) {
++ short type) : lux::Texture<float>::Texture(name) {
+ // Read mapping coordinates
+ mapping = TextureMapping3D::Create(tex2world, tp);
+ tex1 = tp.GetFloatTexture("tex1", 0.f);
+--- textures/cauchytexture.h.orig
++++ textures/cauchytexture.h
+@@ -35,7 +35,7 @@ class CauchyTexture : public Texture<Fre
+ public:
+ // ConstantTexture Public Methods
+ CauchyTexture(float cauchya, float cauchyb) :
+- Texture("CauchyTexture-" + boost::lexical_cast<string>(this)),
++ lux::Texture<lux::FresnelGeneral>::Texture("CauchyTexture-" + boost::lexical_cast<string>(this)),
+ fresnel(cauchya, cauchyb, 0.f), index(cauchya + cauchyb * 1e6f /
+ (WAVELENGTH_END * WAVELENGTH_START)) { }
+ virtual ~CauchyTexture() { }
+--- textures/checkerboard.h.orig
++++ textures/checkerboard.h
+@@ -42,7 +42,7 @@ public:
+ Checkerboard2D(TextureMapping2D *m,
+ boost::shared_ptr<Texture<float> > &c1,
+ boost::shared_ptr<Texture<float> > &c2, const string &aa) :
+- Texture("Checkerboard2D-" + boost::lexical_cast<string>(this)),
++ lux::Texture<float>::Texture("Checkerboard2D-" + boost::lexical_cast<string>(this)),
+ tex1(c1), tex2(c2), mapping(m) {
+ // Select anti-aliasing method for _Checkerboard2D_
+ if (aa == "none")
+@@ -226,7 +226,7 @@ public:
+ Checkerboard3D(TextureMapping3D *m,
+ boost::shared_ptr<Texture<float> > &c1,
+ boost::shared_ptr<Texture<float> > &c2) :
+- Texture("Checkerboard3D-" + boost::lexical_cast<string>(this)),
++ lux::Texture<float>::Texture("Checkerboard3D-" + boost::lexical_cast<string>(this)),
+ tex1(c1), tex2(c2), mapping(m) { }
+ virtual ~Checkerboard3D() { delete mapping; }
+ virtual float Evaluate(const SpectrumWavelengths &sw,
+--- textures/cloud.h.orig
++++ textures/cloud.h
+@@ -47,7 +47,7 @@ public:
+ const u_int octaves, const float o, const float offset,
+ const u_int numspheres, const float spheresize,
+ TextureMapping3D *map) :
+- Texture("CloudTexture-" + boost::lexical_cast<string>(this)),
++ lux::Texture<float>::Texture("CloudTexture-" + boost::lexical_cast<string>(this)),
+ radius(r), numSpheres(numspheres), sphereSize(spheresize),
+ sharpness(sharp), baseFlatness(baseflatness), variability(v),
+ omega(o), firstNoiseScale(noiseScale), noiseOffset(offset),
+--- textures/colordepth.h.orig
++++ textures/colordepth.h
+@@ -34,7 +34,7 @@ class ColorDepthTexture : public Texture
+ public:
+ // ColorDepthTexture Public Methods
+ ColorDepthTexture(float t, boost::shared_ptr<Texture<SWCSpectrum> > &c) :
+- Texture("ColorDepthTexture-" + boost::lexical_cast<string>(this)),
++ lux::Texture<lux::SWCSpectrum>::Texture("ColorDepthTexture-" + boost::lexical_cast<string>(this)),
+ d(-max(1e-3f, t)), color(c) { }
+ virtual ~ColorDepthTexture() { }
+ virtual SWCSpectrum Evaluate(const SpectrumWavelengths &sw,
+--- textures/constant.h.orig
++++ textures/constant.h
+@@ -36,7 +36,7 @@ class ConstantFloatTexture : public Text
+ public:
+ // ConstantTexture Public Methods
+ ConstantFloatTexture(float v) :
+- Texture("ConstantFloatTexture-" + boost::lexical_cast<string>(this)), value(v) {
++ lux::Texture<float>::Texture("ConstantFloatTexture-" + boost::lexical_cast<string>(this)), value(v) {
+ AddFloatAttribute(*this, "value", "ConstantFloatTexture value", &ConstantFloatTexture::value);
+ }
+ virtual ~ConstantFloatTexture() { }
+@@ -60,7 +60,7 @@ class ConstantRGBColorTexture : public T
+ public:
+ // ConstantTexture Public Methods
+ ConstantRGBColorTexture(const RGBColor &s) :
+- Texture("ConstantRGBColorTexture-" + boost::lexical_cast<string>(this)),
++ lux::Texture<lux::SWCSpectrum>::Texture("ConstantRGBColorTexture-" + boost::lexical_cast<string>(this)),
+ color(s) {
+ RGBSPD = new RGBReflSPD(color);
+
+@@ -99,7 +99,7 @@ class ConstantFresnelTexture : public Te
+ public:
+ // ConstantTexture Public Methods
+ ConstantFresnelTexture(float v) :
+- Texture("ConstantFresnelTexture-" + boost::lexical_cast<string>(this)),
++ lux::Texture<lux::FresnelGeneral>::Texture("ConstantFresnelTexture-" + boost::lexical_cast<string>(this)),
+ value(DIELECTRIC_FRESNEL, SWCSpectrum(v), 0.f), val(v) {
+ AddFloatAttribute(*this, "value", "ConstantFresnelTexture value", &ConstantFresnelTexture::val);
+ }
+--- textures/densitygrid.h.orig
++++ textures/densitygrid.h
+@@ -39,7 +39,7 @@ public:
+ // DensityGridTexture Public Methods
+ DensityGridTexture(int x, int y, int z, const float *d,
+ enum WrapMode w, TextureMapping3D *map) :
+- Texture("DensityGridTexture-" + boost::lexical_cast<string>(this)),
++ lux::Texture<float>::Texture("DensityGridTexture-" + boost::lexical_cast<string>(this)),
+ nx(x), ny(y), nz(z), wrapMode(w), mapping(map) {
+ density.assign(d, d + nx * ny * nz);
+ dMin = *std::min_element(density.begin(), density.end());
+--- textures/dots.h.orig
++++ textures/dots.h
+@@ -37,7 +37,7 @@ public:
+ // DotsTexture Public Methods
+ DotsTexture(TextureMapping2D *m, boost::shared_ptr<Texture<float> > &c1,
+ boost::shared_ptr<Texture<float> > &c2) :
+- Texture("DotsTexture-" + boost::lexical_cast<string>(this)),
++ lux::Texture<float>::Texture("DotsTexture-" + boost::lexical_cast<string>(this)),
+ outsideDot(c1), insideDot(c2), mapping(m) { }
+ virtual ~DotsTexture() { delete mapping; }
+ virtual float Evaluate(const SpectrumWavelengths &sw,
+--- textures/equalenergy.h.orig
++++ textures/equalenergy.h
+@@ -35,7 +35,7 @@ class EqualEnergyTexture : public Textur
+ public:
+ // EqualEnergyTexture Public Methods
+ EqualEnergyTexture(float t) :
+- Texture("EqualEnergyTexture-" + boost::lexical_cast<string>(this)), e(t) { }
++ lux::Texture<lux::SWCSpectrum>::Texture("EqualEnergyTexture-" + boost::lexical_cast<string>(this)), e(t) { }
+ virtual ~EqualEnergyTexture() { }
+ virtual SWCSpectrum Evaluate(const SpectrumWavelengths &sw,
+ const DifferentialGeometry &) const {
+--- textures/exponential.h.orig
++++ textures/exponential.h
+@@ -36,7 +36,7 @@ public:
+ // ExponentialTexture Public Methods
+ ExponentialTexture(const Point &o, const Vector &up, float d,
+ TextureMapping3D *map) :
+- Texture("ExponentialTexture-" + boost::lexical_cast<string>(this)),
++ lux::Texture<float>::Texture("ExponentialTexture-" + boost::lexical_cast<string>(this)),
+ origin(o), upDir(up), decay(d), mapping(map) { }
+ virtual ~ExponentialTexture() { delete mapping; }
+ virtual float Evaluate(const SpectrumWavelengths &sw,
+--- textures/fbm.h.orig
++++ textures/fbm.h
+@@ -37,7 +37,7 @@ class FBmTexture : public Texture<float>
+ public:
+ // FBmTexture Public Methods
+ FBmTexture(int oct, float roughness, TextureMapping3D *map) :
+- Texture("FBmTexture-" + boost::lexical_cast<string>(this)) {
++ lux::Texture<float>::Texture("FBmTexture-" + boost::lexical_cast<string>(this)) {
+ omega = roughness;
+ octaves = oct;
+ mapping = map;
+--- textures/frequencytexture.h.orig
++++ textures/frequencytexture.h
+@@ -35,7 +35,7 @@ class FrequencyTexture : public Texture<
+ public:
+ // FrequencyTexture Public Methods
+ FrequencyTexture(float w, float p, float r)
+- : Texture("FrequencyTexture-" + boost::lexical_cast<string>(this)),
++ : lux::Texture<lux::SWCSpectrum>::Texture("FrequencyTexture-" + boost::lexical_cast<string>(this)),
+ FSPD(w, p, r) { }
+ virtual ~FrequencyTexture() { }
+ virtual SWCSpectrum Evaluate(const SpectrumWavelengths &sw,
+--- textures/fresnelcolor.h.orig
++++ textures/fresnelcolor.h
+@@ -34,7 +34,7 @@ class FresnelColorTexture : public Textu
+ public:
+ // FresnelColorTexture Public Methods
+ FresnelColorTexture(const boost::shared_ptr<Texture<SWCSpectrum> > &c) :
+- Texture("FresnelColorTexture-" + boost::lexical_cast<string>(this)),
++ lux::Texture<lux::FresnelGeneral>::Texture("FresnelColorTexture-" + boost::lexical_cast<string>(this)),
+ color(c) { }
+ virtual ~FresnelColorTexture() { }
+ virtual FresnelGeneral Evaluate(const SpectrumWavelengths &sw,
+--- textures/gaussiantexture.h.orig
++++ textures/gaussiantexture.h
+@@ -35,7 +35,7 @@ class GaussianTexture : public Texture<S
+ public:
+ // GaussianTexture Public Methods
+ GaussianTexture(float m, float w, float r) :
+- Texture("GaussianTexture-" + boost::lexical_cast<string>(this)),
++ lux::Texture<lux::SWCSpectrum>::Texture("GaussianTexture-" + boost::lexical_cast<string>(this)),
+ GSPD(m, w, r) { }
+ virtual ~GaussianTexture() { }
+ virtual SWCSpectrum Evaluate(const SpectrumWavelengths &sw,
+--- textures/harlequin.h.orig
++++ textures/harlequin.h
+@@ -40,7 +40,7 @@ namespace lux
+ class HarlequinTexture : public Texture<SWCSpectrum> {
+ public:
+ // Harlequin Public Methods
+- HarlequinTexture() : Texture("HarlequinTexture-" + boost::lexical_cast<string>(this)) {
++ HarlequinTexture() : lux::Texture<lux::SWCSpectrum>::Texture("HarlequinTexture-" + boost::lexical_cast<string>(this)) {
+ float c[3];
+ for (int i = 0; i < HARLEQUIN_TEXTURE_PALETTE_SIZE; i++) {
+ c[0] = RadicalInverse(i * COLOR_SAMPLES + 1, 2);
+--- textures/hitpointcolor.h.orig
++++ textures/hitpointcolor.h
+@@ -34,7 +34,7 @@ namespace lux
+ class HitPointAlphaTexture : public Texture<float> {
+ public:
+ HitPointAlphaTexture() :
+- Texture("HitPointAlphaTexture-" + boost::lexical_cast<string>(this)) { }
++ lux::Texture<float>::Texture("HitPointAlphaTexture-" + boost::lexical_cast<string>(this)) { }
+ virtual ~HitPointAlphaTexture() { }
+ virtual float Evaluate(const SpectrumWavelengths &sw,
+ const DifferentialGeometry &dgs) const {
+@@ -58,7 +58,7 @@ public:
+ class HitPointRGBColorTexture : public Texture<SWCSpectrum> {
+ public:
+ HitPointRGBColorTexture() :
+- Texture("HitPointRGBColorTexture-" + boost::lexical_cast<string>(this)) { }
++ lux::Texture<lux::SWCSpectrum>::Texture("HitPointRGBColorTexture-" + boost::lexical_cast<string>(this)) { }
+ virtual ~HitPointRGBColorTexture() { }
+ virtual SWCSpectrum Evaluate(const SpectrumWavelengths &sw,
+ const DifferentialGeometry &dgs) const {
+@@ -83,7 +83,7 @@ public:
+ class HitPointGreyTexture : public Texture<float> {
+ public:
+ HitPointGreyTexture(const u_int ch) :
+- Texture("HitPointGreyTexture-" + boost::lexical_cast<string>(this)), channel(ch) { }
++ lux::Texture<float>::Texture("HitPointGreyTexture-" + boost::lexical_cast<string>(this)), channel(ch) { }
+ virtual ~HitPointGreyTexture() { }
+ virtual float Evaluate(const SpectrumWavelengths &sw,
+ const DifferentialGeometry &dgs) const {
+--- textures/imagemap.h.orig
++++ textures/imagemap.h
+@@ -112,7 +112,7 @@ class ImageFloatTexture : public Texture
+ public:
+ // ImageFloatTexture Public Methods
+ ImageFloatTexture(const TexInfo &texInfo, TextureMapping2D *m, Channel ch) :
+- Texture("ImageFloatTexture-" + boost::lexical_cast<string>(this)),
++ lux::Texture<float>::Texture("ImageFloatTexture-" + boost::lexical_cast<string>(this)),
+ ImageTexture(texInfo, m) { channel = ch; }
+
+ virtual ~ImageFloatTexture() { }
+@@ -152,7 +152,7 @@ class ImageSpectrumTexture : public Text
+ public:
+ // ImageSpectrumTexture Public Methods
+ ImageSpectrumTexture(const TexInfo &texInfo, TextureMapping2D *m) :
+- Texture("ImageSpectrumTexture-" + boost::lexical_cast<string>(this)),
++ lux::Texture<lux::SWCSpectrum>::Texture("ImageSpectrumTexture-" + boost::lexical_cast<string>(this)),
+ ImageTexture(texInfo, m), isIlluminant(false) { }
+
+ virtual ~ImageSpectrumTexture() { }
+@@ -200,7 +200,7 @@ class NormalMapTexture : public Texture<
+ public:
+ // NormalMapTexture Public Methods
+ NormalMapTexture(const TexInfo &texInfo, TextureMapping2D *m) :
+- Texture("NormalMapTexture-" + boost::lexical_cast<string>(this)),
++ lux::Texture<float>::Texture("NormalMapTexture-" + boost::lexical_cast<string>(this)),
+ ImageTexture(texInfo, m) { }
+
+ virtual ~NormalMapTexture() { }
+--- textures/irregulardata.h.orig
++++ textures/irregulardata.h
+@@ -36,7 +36,7 @@ public:
+ // IrregularDataSpectrumTexture Public Methods
+ IrregularDataTexture(u_int n, const float *wl, const float *data,
+ float resolution = 5.f) :
+- Texture("IrregularDataTexture-" + boost::lexical_cast<string>(this)),
++ lux::Texture<lux::SWCSpectrum>::Texture("IrregularDataTexture-" + boost::lexical_cast<string>(this)),
+ SPD(wl, data, n, resolution) { }
+ virtual ~IrregularDataTexture() { }
+ virtual SWCSpectrum Evaluate(const SpectrumWavelengths &sw,
+--- textures/marble.h.orig
++++ textures/marble.h
+@@ -39,7 +39,7 @@ public:
+ // MarbleTexture Public Methods
+ virtual ~MarbleTexture() { delete mapping; }
+ MarbleTexture(int oct, float roughness, float sc, float var,
+- TextureMapping3D *map) : Texture("MarbleTexture-" + boost::lexical_cast<string>(this)) {
++ TextureMapping3D *map) : lux::Texture<lux::SWCSpectrum>::Texture("MarbleTexture-" + boost::lexical_cast<string>(this)) {
+ omega = roughness;
+ octaves = oct;
+ mapping = map;
+--- textures/regulardata.h.orig
++++ textures/regulardata.h
+@@ -35,7 +35,7 @@ class RegularDataTexture : public Textur
+ public:
+ // RegularDataSpectrumTexture Public Methods
+ RegularDataTexture(float s, float e, u_int n, const float *data)
+- : Texture("RegularDataTexture-" + boost::lexical_cast<string>(this)),
++ : lux::Texture<lux::SWCSpectrum>::Texture("RegularDataTexture-" + boost::lexical_cast<string>(this)),
+ SPD(data, s, e, n) { }
+ virtual ~RegularDataTexture() { }
+ virtual SWCSpectrum Evaluate(const SpectrumWavelengths &sw,
+--- textures/sellmeiertexture.h.orig
++++ textures/sellmeiertexture.h
+@@ -36,7 +36,7 @@ class SellmeierTexture : public Texture<
+ public:
+ // SellmeierTexture Public Methods
+ SellmeierTexture(float a_, u_int n, const float *b_, const float *c_) :
+- Texture("SellmeierTexture-" + boost::lexical_cast<string>(this)),
++ lux::Texture<lux::FresnelGeneral>::Texture("SellmeierTexture-" + boost::lexical_cast<string>(this)),
+ b(b_, b_ + n), c(c_, c_ + n), a(a_) {
+ // Sellmeier expects wavelength in µm but we have it in nm
+ for (u_int i = 0; i < n; ++i)
+--- textures/tabulatedfresnel.h.orig
++++ textures/tabulatedfresnel.h
+@@ -37,7 +37,7 @@ public:
+ // TabulatedFresnel Public Methods
+ TabulatedFresnel(const vector<float> &wl, const vector<float> &n,
+ const vector<float> &k) :
+- Texture("TabulatedFresnel-" + boost::lexical_cast<string>(this)),
++ lux::Texture<lux::FresnelGeneral>::Texture("TabulatedFresnel-" + boost::lexical_cast<string>(this)),
+ N(&wl[0], &n[0], wl.size()), K(&wl[0], &k[0], wl.size()),
+ index(N.Filter()) { }
+ virtual ~TabulatedFresnel() { }
+--- textures/uv.h.orig
++++ textures/uv.h
+@@ -36,7 +36,7 @@ namespace lux
+ class UVTexture : public Texture<SWCSpectrum> {
+ public:
+ // UVTexture Public Methods
+- UVTexture(TextureMapping2D *m) : Texture("UVTexture-" + boost::lexical_cast<string>(this)) {
++ UVTexture(TextureMapping2D *m) : lux::Texture<lux::SWCSpectrum>::Texture("UVTexture-" + boost::lexical_cast<string>(this)) {
+ mapping = m;
+ }
+ virtual ~UVTexture() {
+--- textures/windy.h.orig
++++ textures/windy.h
+@@ -37,7 +37,7 @@ class WindyTexture : public Texture<floa
+ public:
+ // WindyTexture Public Methods
+ WindyTexture(TextureMapping3D *map) :
+- Texture("WindyTexture-" + boost::lexical_cast<string>(this)) { mapping = map; }
++ lux::Texture<float>::Texture("WindyTexture-" + boost::lexical_cast<string>(this)) { mapping = map; }
+ virtual ~WindyTexture() { delete mapping; }
+ virtual float Evaluate(const SpectrumWavelengths &sw,
+ const DifferentialGeometry &dg) const {
+--- textures/wrinkled.h.orig
++++ textures/wrinkled.h
+@@ -37,7 +37,7 @@ class WrinkledTexture : public Texture<f
+ public:
+ // WrinkledTexture Public Methods
+ WrinkledTexture(int oct, float roughness, TextureMapping3D *map) :
+- Texture("WrinkledTexture-" + boost::lexical_cast<string>(this)) {
++ lux::Texture<float>::Texture("WrinkledTexture-" + boost::lexical_cast<string>(this)) {
+ omega = roughness;
+ octaves = oct;
+ mapping = map;
diff --git a/graphics/luxrender14/files/patch-luxrays-cmake-PlatformSpecific.cmake b/graphics/luxrender14/files/patch-luxrays-cmake-PlatformSpecific.cmake
new file mode 100644
index 000000000000..4ff5dc3bad2b
--- /dev/null
+++ b/graphics/luxrender14/files/patch-luxrays-cmake-PlatformSpecific.cmake
@@ -0,0 +1,26 @@
+--- ../luxrays/cmake/PlatformSpecific.cmake.orig
++++ ../luxrays/cmake/PlatformSpecific.cmake
+@@ -138,18 +138,17 @@ ENDIF(MSVC)
+
+
+
+-IF(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
++#IF(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
+ # Update if necessary
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic")
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -msse2 -msse3 -mssse3")
++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long")
++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse")
+ IF(NOT CYGWIN)
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
+ ENDIF(NOT CYGWIN)
+
+ SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
+- SET(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O3 -ftree-vectorize -fvariable-expansion-in-unroller")
+-
+-ENDIF()
++ SET(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG")
++#ENDIF()
+
+
+ # Setting Universal Binary Properties, only for Mac OS X
diff --git a/graphics/luxrender14/files/patch-luxrays-include-luxcore-luxcore.h b/graphics/luxrender14/files/patch-luxrays-include-luxcore-luxcore.h
new file mode 100644
index 000000000000..4a0b0eeb7380
--- /dev/null
+++ b/graphics/luxrender14/files/patch-luxrays-include-luxcore-luxcore.h
@@ -0,0 +1,20 @@
+--- ../luxrays/include/luxcore/luxcore.h.orig
++++ ../luxrays/include/luxcore/luxcore.h
+@@ -63,7 +63,7 @@
+ */
+ namespace luxcore {
+
+-CPP_EXPORT CPP_API void (*LuxCore_LogHandler)(const char *msg); // LuxCore Log Handler
++extern CPP_API void (*LuxCore_LogHandler)(const char *msg); // LuxCore Log Handler
+
+ #define LC_LOG(a) { if (luxcore::LuxCore_LogHandler) { std::stringstream _LUXCORE_LOG_LOCAL_SS; _LUXCORE_LOG_LOCAL_SS << a; luxcore::LuxCore_LogHandler(_LUXCORE_LOG_LOCAL_SS.str().c_str()); } }
+
+@@ -603,7 +603,7 @@ public:
+ *
+ * \return the default Properties.
+ */
+- static const luxrays::Properties &GetDefaultProperties();
++ const luxrays::Properties &GetDefaultProperties();
+
+ friend class RenderSession;
+
diff --git a/graphics/luxrender14/files/patch-luxrays-samples-benchsimple-CMakeLists.txt b/graphics/luxrender14/files/patch-luxrays-samples-benchsimple-CMakeLists.txt
new file mode 100644
index 000000000000..57463f284521
--- /dev/null
+++ b/graphics/luxrender14/files/patch-luxrays-samples-benchsimple-CMakeLists.txt
@@ -0,0 +1,14 @@
+--- ../luxrays/samples/benchsimple/CMakeLists.txt.orig
++++ ../luxrays/samples/benchsimple/CMakeLists.txt
+@@ -19,8 +19,10 @@
+ # LuxRays website: http://www.luxrender.net #
+ ###########################################################################
+
++find_package(Threads)
++
+ include_directories(${LuxRays_INCLUDE_DIR})
+ link_directories (${LuxRays_LIB_DIR})
+
+ add_executable(benchsimple benchsimple.cpp)
+-target_link_libraries(benchsimple luxrays)
++target_link_libraries(benchsimple luxrays ${PYTHON_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
diff --git a/graphics/luxrender14/files/patch-luxrays-samples-luxcoredemo-CMakeLists.txt b/graphics/luxrender14/files/patch-luxrays-samples-luxcoredemo-CMakeLists.txt
new file mode 100644
index 000000000000..c49fa9306fa8
--- /dev/null
+++ b/graphics/luxrender14/files/patch-luxrays-samples-luxcoredemo-CMakeLists.txt
@@ -0,0 +1,16 @@
+--- ../luxrays/samples/luxcoredemo/CMakeLists.txt.orig
++++ ../luxrays/samples/luxcoredemo/CMakeLists.txt
+@@ -22,10 +22,12 @@
+ #
+ ################################################################################
+
++find_package(Threads)
++
+ set(LUXCORELIBDEMO_SRCS
+ luxcoredemo.cpp
+ )
+
+ add_executable(luxcoredemo ${LUXCORELIBDEMO_SRCS})
+
+-TARGET_LINK_LIBRARIES(luxcoredemo luxcore smallluxgpu luxrays ${TIFF_LIBRARIES} ${OPENEXR_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES})
++TARGET_LINK_LIBRARIES(luxcoredemo luxcore smallluxgpu luxrays ${TIFF_LIBRARIES} ${OPENEXR_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${PYTHON_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
diff --git a/graphics/luxrender14/files/patch-luxrays-samples-luxcorescenedemo-CMakeLists.txt b/graphics/luxrender14/files/patch-luxrays-samples-luxcorescenedemo-CMakeLists.txt
new file mode 100644
index 000000000000..582310ee23b0
--- /dev/null
+++ b/graphics/luxrender14/files/patch-luxrays-samples-luxcorescenedemo-CMakeLists.txt
@@ -0,0 +1,16 @@
+--- ../luxrays/samples/luxcorescenedemo/CMakeLists.txt.orig
++++ ../luxrays/samples/luxcorescenedemo/CMakeLists.txt
+@@ -22,10 +22,12 @@
+ #
+ ################################################################################
+
++find_package(Threads)
++
+ set(LUXCORESCENEDEMO_SRCS
+ luxcorescenedemo.cpp
+ )
+
+ add_executable(luxcorescenedemo ${LUXCORESCENEDEMO_SRCS})
+
+-TARGET_LINK_LIBRARIES(luxcorescenedemo luxcore smallluxgpu luxrays ${TIFF_LIBRARIES} ${OPENEXR_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES})
++TARGET_LINK_LIBRARIES(luxcorescenedemo luxcore smallluxgpu luxrays ${TIFF_LIBRARIES} ${OPENEXR_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${PYTHON_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
diff --git a/graphics/luxrender14/files/patch-luxrays-samples-smallluxgpu4-CMakeLists.txt b/graphics/luxrender14/files/patch-luxrays-samples-smallluxgpu4-CMakeLists.txt
new file mode 100644
index 000000000000..d978fce88fd6
--- /dev/null
+++ b/graphics/luxrender14/files/patch-luxrays-samples-smallluxgpu4-CMakeLists.txt
@@ -0,0 +1,20 @@
+--- ../luxrays/samples/smallluxgpu4/CMakeLists.txt.orig
++++ ../luxrays/samples/smallluxgpu4/CMakeLists.txt
+@@ -25,6 +25,8 @@
+ #
+ #############################################################################
+
++find_package(Threads)
++
+ set(SMALLLUXGPU_SRCS
+ smallluxgpu.cpp
+ displayfunc.cpp
+@@ -32,7 +34,7 @@ set(SMALLLUXGPU_SRCS
+
+ add_executable(slg4 ${SMALLLUXGPU_SRCS})
+
+-TARGET_LINK_LIBRARIES(slg4 luxcore smallluxgpu luxrays ${OPENGL_LIBRARIES} ${GLEW_LIBRARY} ${GLUT_LIBRARY} ${TIFF_LIBRARIES} ${OPENEXR_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES})
++TARGET_LINK_LIBRARIES(slg4 luxcore smallluxgpu luxrays ${OPENGL_LIBRARIES} ${GLEW_LIBRARY} ${GLUT_LIBRARY} ${TIFF_LIBRARIES} ${OPENEXR_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${PYTHON_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} -lexecinfo)
+
+ # This instructs FREEGLUT to emit a pragma for the static version
+ SET_TARGET_PROPERTIES(slg4 PROPERTIES COMPILE_DEFINITIONS FREEGLUT_STATIC)