1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-14 07:43:06 +00:00

graphics/blender: Changes to adapt to updated dependencies

- Changes needed for blender to work with OSL 1.10.x
- Switch to using llvm60 and patch included osl scripts.
- Also includes support for opencollada >= 1.6.65

PR:		225942
Submitted by:	Shane Ambler <FreeBSD@ShaneWare.Biz>
This commit is contained in:
Kurt Jaeger 2018-12-08 18:27:51 +00:00
parent 43dcdab1bd
commit 58e68eee97
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=486971
4 changed files with 197 additions and 5 deletions

View File

@ -24,8 +24,7 @@ RUN_DEPENDS= ${PYNUMPY}
# libraries are used, if either of the most common options in blender
# are set. We will pull boost in just to be on the safe side.
# 10.4 fails to build with clang3.4 so we want to use clang50
# clang50 is already in place for opengl
# USES=compiler is needed to support gcc built archs
USES= cmake:outsource compiler:c++14-lang desktop-file-utils \
jpeg python:3.5 shebangfix
USE_XORG= x11 xext xfixes xmu xrender
@ -69,10 +68,10 @@ CYCLES_CMAKE_BOOL= WITH_CYCLES
CYCLESOSL_IMPLIES= CYCLES
CYCLESOSL_CMAKE_BOOL= WITH_CYCLES_OSL WITH_LLVM
CYCLESOSL_CMAKE_ON= -DLLVM_STATIC:BOOL=OFF \
-DLLVM_CONFIG:STRING="${LOCALBASE}/bin/llvm-config40"
CYCLESOSL_BUILD_DEPENDS= llvm-config40:devel/llvm40
-DLLVM_CONFIG:STRING="${LOCALBASE}/bin/llvm-config60"
CYCLESOSL_BUILD_DEPENDS= llvm-config60:devel/llvm60
CYCLESOSL_LIB_DEPENDS= liboslcomp.so:graphics/openshadinglanguage
CYCLESOSL_RUN_DEPENDS= llvm-config40:devel/llvm40
CYCLESOSL_RUN_DEPENDS= llvm-config60:devel/llvm60
DDS_CMAKE_BOOL= WITH_IMAGE_DDS
FFMPEG_CMAKE_BOOL= WITH_CODEC_FFMPEG
FFMPEG_LIB_DEPENDS= libavutil.so:multimedia/ffmpeg

View File

@ -0,0 +1,168 @@
--- intern/cycles/kernel/shaders/node_brick_texture.osl.orig 2018-12-03 16:56:43 UTC
+++ intern/cycles/kernel/shaders/node_brick_texture.osl
@@ -19,10 +19,10 @@
/* Brick */
-float brick_noise(int n) /* fast integer noise */
+float brick_noise(int ns) /* fast integer noise */
{
int nn;
- n = (n + 1013) & 2147483647;
+ int n = (ns + 1013) & 2147483647;
n = (n >> 13) ^ n;
nn = (n * (n * n * 60493 + 19990303) + 1376312589) & 2147483647;
return 0.5 * ((float)nn / 1073741824.0);
@@ -30,7 +30,7 @@ float brick_noise(int n) /* fast integer noise */
float brick(point p, float mortar_size, float mortar_smooth, float bias,
float BrickWidth, float row_height, float offset_amount, int offset_frequency,
- float squash_amount, int squash_frequency, float tint)
+ float squash_amount, int squash_frequency, output float tint)
{
int bricknum, rownum;
float offset = 0.0;
--- intern/cycles/kernel/shaders/node_checker_texture.osl.orig 2018-12-03 16:56:43 UTC
+++ intern/cycles/kernel/shaders/node_checker_texture.osl
@@ -19,11 +19,12 @@
/* Checker */
-float checker(point p)
+float checker(point ip)
{
- p[0] = (p[0] + 0.000001) * 0.999999;
- p[1] = (p[1] + 0.000001) * 0.999999;
- p[2] = (p[2] + 0.000001) * 0.999999;
+ point p;
+ p[0] = (ip[0] + 0.000001) * 0.999999;
+ p[1] = (ip[1] + 0.000001) * 0.999999;
+ p[2] = (ip[2] + 0.000001) * 0.999999;
int xi = (int)fabs(floor(p[0]));
int yi = (int)fabs(floor(p[1]));
--- intern/cycles/kernel/shaders/node_environment_texture.osl.orig 2018-12-03 16:56:43 UTC
+++ intern/cycles/kernel/shaders/node_environment_texture.osl
@@ -25,8 +25,9 @@ vector environment_texture_direction_to_equirectangular(vector dir)
return vector(u, v, 0.0);
}
-vector environment_texture_direction_to_mirrorball(vector dir)
+vector environment_texture_direction_to_mirrorball(vector idir)
{
+ vector dir = idir;
dir[1] -= 1.0;
float div = 2.0 * sqrt(max(-0.5 * dir[1], 0.0));
--- intern/cycles/kernel/shaders/node_musgrave_texture.osl.orig 2018-12-03 16:56:43 UTC
+++ intern/cycles/kernel/shaders/node_musgrave_texture.osl
@@ -26,13 +26,14 @@
* from "Texturing and Modelling: A procedural approach"
*/
-float noise_musgrave_fBm(point p, float H, float lacunarity, float octaves)
+float noise_musgrave_fBm(point ip, float H, float lacunarity, float octaves)
{
float rmd;
float value = 0.0;
float pwr = 1.0;
float pwHL = pow(lacunarity, -H);
int i;
+ point p = ip;
for (i = 0; i < (int)octaves; i++) {
value += safe_noise(p, "signed") * pwr;
@@ -54,13 +55,14 @@ float noise_musgrave_fBm(point p, float H, float lacunarity, float octaves)
* octaves: number of frequencies in the fBm
*/
-float noise_musgrave_multi_fractal(point p, float H, float lacunarity, float octaves)
+float noise_musgrave_multi_fractal(point ip, float H, float lacunarity, float octaves)
{
float rmd;
float value = 1.0;
float pwr = 1.0;
float pwHL = pow(lacunarity, -H);
int i;
+ point p = ip;
for (i = 0; i < (int)octaves; i++) {
value *= (pwr * safe_noise(p, "signed") + 1.0);
@@ -83,12 +85,13 @@ float noise_musgrave_multi_fractal(point p, float H, float lacunarity, float oct
* offset: raises the terrain from `sea level'
*/
-float noise_musgrave_hetero_terrain(point p, float H, float lacunarity, float octaves, float offset)
+float noise_musgrave_hetero_terrain(point ip, float H, float lacunarity, float octaves, float offset)
{
float value, increment, rmd;
float pwHL = pow(lacunarity, -H);
float pwr = pwHL;
int i;
+ point p = ip;
/* first unscaled octave of function; later octaves are scaled */
value = offset + safe_noise(p, "signed");
@@ -118,13 +121,14 @@ float noise_musgrave_hetero_terrain(point p, float H, float lacunarity, float oc
* offset: raises the terrain from `sea level'
*/
-float noise_musgrave_hybrid_multi_fractal(point p, float H, float lacunarity,
+float noise_musgrave_hybrid_multi_fractal(point ip, float H, float lacunarity,
float octaves, float offset, float gain)
{
float result, signal, weight, rmd;
float pwHL = pow(lacunarity, -H);
float pwr = pwHL;
int i;
+ point p = ip;
result = safe_noise(p, "signed") + offset;
weight = gain * result;
@@ -156,13 +160,14 @@ float noise_musgrave_hybrid_multi_fractal(point p, float H, float lacunarity,
* offset: raises the terrain from `sea level'
*/
-float noise_musgrave_ridged_multi_fractal(point p, float H, float lacunarity,
+float noise_musgrave_ridged_multi_fractal(point ip, float H, float lacunarity,
float octaves, float offset, float gain)
{
float result, signal, weight;
float pwHL = pow(lacunarity, -H);
float pwr = pwHL;
int i;
+ point p = ip;
signal = offset - fabs(safe_noise(p, "signed"));
signal *= signal;
--- intern/cycles/kernel/shaders/node_noise_texture.osl.orig 2018-12-03 16:56:43 UTC
+++ intern/cycles/kernel/shaders/node_noise_texture.osl
@@ -19,9 +19,10 @@
/* Noise */
-float noise(point p, float distortion, float detail, float fac, color Color)
+float noise(point ip, float distortion, float detail, output color Color)
{
point r;
+ point p = ip;
int hard = 0;
if (distortion != 0.0) {
@@ -32,7 +33,7 @@ float noise(point p, float distortion, float detail, float fac, color Color)
p += r;
}
- fac = noise_turbulence(p, detail, hard);
+ float fac = noise_turbulence(p, detail, hard);
Color = color(fac, noise_turbulence(point(p[1], p[0], p[2]), detail, hard),
noise_turbulence(point(p[1], p[2], p[0]), detail, hard));
@@ -55,6 +56,6 @@ shader node_noise_texture(
if (use_mapping)
p = transform(mapping, p);
- Fac = noise(p * Scale, Distortion, Detail, Fac, Color);
+ Fac = noise(p * Scale, Distortion, Detail, Color);
}

View File

@ -0,0 +1,14 @@
--- source/blender/collada/DocumentImporter.cpp.orig 2018-12-03 07:38:07 UTC
+++ source/blender/collada/DocumentImporter.cpp
@@ -1340,6 +1340,11 @@ bool DocumentImporter::writeAnimationLis
return anim_importer.write_animation_list(animationList);
}
+bool DocumentImporter::writeAnimationClip(const COLLADAFW::AnimationClip *AnimationClip)
+{
+ return true;
+}
+
/** When this method is called, the writer must write the skin controller data.
* \return The writer should return true, if writing succeeded, false otherwise.*/
bool DocumentImporter::writeSkinControllerData(const COLLADAFW::SkinControllerData *skin)

View File

@ -0,0 +1,11 @@
--- source/blender/collada/DocumentImporter.h.orig 2018-12-03 07:38:12 UTC
+++ source/blender/collada/DocumentImporter.h
@@ -107,6 +107,8 @@ public:
bool writeAnimation(const COLLADAFW::Animation*);
bool writeAnimationList(const COLLADAFW::AnimationList*);
+
+ bool writeAnimationClip( const COLLADAFW::AnimationClip* );
bool writeGeometry(const COLLADAFW::Geometry*);