hugin-devs team mailing list archive
-
hugin-devs team
-
Mailing list archive
-
Message #05119
[Bug 1322695] Re: Hugin won't create a panorama with "Use GPU for remapping" checked.
Note to self: Read the FAQ _before_ filling up the bug database.
http://http://wiki.panotools.org/Hugin_FAQ#GPU-stitching_.28nona.29
says that only nVidea & AMD graphics cards are supported.
Devs, is it worth adding some code so that the option is greyed out if
hugin does not detect an nVidea or AMD chip?
PS. My version is 2013.0.0.4692917e7a55
--
You received this bug notification because you are a member of Hugin
Developers, which is subscribed to Hugin.
https://bugs.launchpad.net/bugs/1322695
Title:
Hugin won't create a panorama with "Use GPU for remapping" checked.
Status in Hugin - Panorama Tools GUI:
New
Bug description:
I've got a SandyBridge i7, no external graphics card.
Hugin supplied with xubuntu 14.04.
===========================================================================
*************** Panorama makefile generated by Hugin ***************
===========================================================================
System information
===========================================================================
Operating system: GNU/Linux
Release: 3.13.0-24-generic
Kernel version: #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014
Machine: x86_64
Disc usage
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 94G 5.0G 84G 6% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 3.8G 4.0K 3.8G 1% /dev
tmpfs 771M 1.4M 769M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 3.8G 808K 3.8G 1% /run/shm
none 100M 48K 100M 1% /run/user
/dev/sda1 180M 36M 132M 22% /boot
/dev/sda4 816G 436G 339G 57% /home
total used free shared buffers cached
Mem: 7701 6183 1518 342 67 2464
-/+ buffers/cache: 3650 4050
Swap: 7812 56 7756
===========================================================================
Output options
===========================================================================
Hugin Version: 2013.0.0.4692917e7a55
Project file: /tmp/huginpto_N2njr0
Output prefix: IMG_8429-1 - IMG_8430-1
Projection: Equirectangular (2)
Field of view: 74 x 74
Canvas dimensions: 4098 x 4098
Crop area: (88,168) - (4027,3132)
Output exposure value: 11.39
Output stacks minimum overlap: 0.700
Output layers maximum Ev difference: 0.50
Selected outputs
Normal panorama
* Blended panorama
Using GPU for remapping
===========================================================================
Input images
===========================================================================
Number of images in project file: 2
Number of active images: 2
Image 0: /home/ian/Pictures/2014-05-10 Boat Trip Leeds Liverpool/2014-05-12 Wigan Flight Down Wigam Pier/converted/IMG_8429-1.tif
Image 0: Size 2848x4282, Exposure: 11.40
Image 1: /home/ian/Pictures/2014-05-10 Boat Trip Leeds Liverpool/2014-05-12 Wigan Flight Down Wigam Pier/converted/IMG_8430-1.tif
Image 1: Size 2848x4282, Exposure: 11.39
===========================================================================
Testing programs
===========================================================================
Checking nona...[OK]
Checking enblend...[OK]
Checking enfuse...[OK]
Checking hugin_hdrmerge...[OK]
Checking exiftool...[OK]
===========================================================================
Stitching panorama
===========================================================================
nona -g -z LZW -r ldr -m TIFF_m -o IMG_8429-1\ -\ IMG_8430-1 -i 0 /tmp/huginpto_N2njr0
nona: using graphics card: Intel Open Source Technology Center Mesa DRI Intel(R) Sandybridge Desktop
destStart=[88, 168]
destEnd=[2664, 3132]
destSize=[(2576, 2964)]
srcSize=[(2848, 4282)]
srcBuffer=0x2b1c5c686010
srcAlphaBuffer=0
destBuffer=0x2b1c60c4e010
destAlphaBuffer=0x2b1c637ff010
destGLInternalFormat=GL_RGBA16
destGLFormat=GL_RGB
destGLType=GL_UNSIGNED_SHORT
srcGLInternalFormat=GL_RGBA16
srcGLFormat=GL_RGB
srcGLType=GL_UNSIGNED_SHORT
srcAlphaGLType=GL_BYTE
destAlphaGLType=GL_UNSIGNED_BYTE
warparound=0
needsAtanWorkaround=0
maxTextureSize=8192
Source chunks:
[(0, 0) to (2848, 4282) = (2848x4282)]
Dest chunks:
[(0, 0) to (1288, 1482) = (1288x1482)]
[(1288, 0) to (2576, 1482) = (1288x1482)]
[(0, 1482) to (1288, 2964) = (1288x1482)]
[(1288, 1482) to (2576, 2964) = (1288x1482)]
Total GPU memory used: 260446256
Interpolator chunks:
[(0, 0) to (4, 4) = (4x4)]
#version 110
#extension GL_ARB_texture_rectangle : enable
uniform sampler2DRect SrcTexture;
float sinh(in float x) { return (exp(x) - exp(-x)) / 2.0; }
float cosh(in float x) { return (exp(x) + exp(-x)) / 2.0; }
float atan2_xge0(const in float y, const in float x) {
return atan(y, x);
}
float atan2_safe(const in float y, const in float x) {
return atan(y, x);
}
float atan_safe(const in float yx) {
return atan(yx);
}
void main(void)
{
float discardA = 1.0;
float discardB = 0.0;
vec2 src = gl_TexCoord[0].st;
src -= vec2(2049.0000000000000000, 2049.0000000000000000);
// rotate_erect(9968.1081081081083539, 734.44677103224705661)
{
src.s += 734.44677103224705661;
float w = (abs(src.s) > 9968.1081081081083539) ? 1.0 : 0.0;
float n = (src.s < 0.0) ? 0.5 : -0.5;
src.s += w * -19936.216216216216708 * ceil(src.s / 19936.216216216216708 + n);
}
// sphere_tp_erect(3172.9473573596128517)
{
float phi = src.s / 3172.9473573596128517;
float theta = -src.t / 3172.9473573596128517 + 1.5707963267948965580;
if (theta < 0.0) {
theta = -theta;
phi += 3.1415926535897931160;
}
if (theta > 3.1415926535897931160) {
theta = 3.1415926535897931160 - (theta - 3.1415926535897931160);
phi += 3.1415926535897931160;
}
float s = sin(theta);
vec2 v = vec2(s * sin(phi), cos(theta));
float r = length(v);
theta = 3172.9473573596128517 * atan2_safe(r, s * cos(phi));
src = v * (theta / r);
}
// persp_sphere(3172.9473573596128517)
{
mat3 m = mat3(1.0000000000000000000, 8.3266726846886789836e-17, 6.1716875719902952767e-18,
-8.3495134752153772000e-17, 0.99726441659211662039, 0.073916732876835020138,
0.0000000000000000000, -0.073916732876835020138, 0.99726441659211662039);
float r = length(src);
float theta = r / 3172.9473573596128517;
float s = 0.0;
if (r != 0.0) s = sin(theta) / r;
vec3 v = vec3(s * src.s, s * src.t, cos(theta));
vec3 u = v * m;
r = length(u.st);
theta = 0.0;
if (r != 0.0) theta = 3172.9473573596128517 * atan2_safe(r, u.p) / r;
src = theta * u.st;
}
// rect_sphere_tp(3172.9473573596128517)
{
float r = length(src);
float theta = r / 3172.9473573596128517;
float rho = 0.0;
if (theta >= 1.5707963267948965580) rho = 1.6e16;
else if (theta == 0.0) rho = 1.0;
else rho = tan(theta) / theta;
src *= rho;
}
// resize(1.0270517266772629661, 1.0270517266772629661)
src *= vec2(1.0270517266772629661, 1.0270517266772629661);
// radial(0.97371777052458663437, 0.0000000000000000000, 0.026282229475413400321, 0.0000000000000000000, 1424.0000000000000000, 1000.0000000000000000)
{
float r = length(src) / 1424.0000000000000000;
float scale = 1000.0;
if (r < 1000.0000000000000000) {
scale = ((0.0000000000000000000 * r + 0.026282229475413400321) * r + 0.0000000000000000000) * r + 0.97371777052458663437;
}
src *= scale;
}
src += vec2(1423.5000000000000000, 2140.5000000000000000);
src = src * discardA + vec2(-1000.0, -1000.0) * discardB;
gl_FragColor = vec4(src.s, 0.0, 0.0, src.t);
}
#version 110
#extension GL_ARB_texture_rectangle : enable
uniform sampler2DRect CoordTexture;
uniform sampler2DRect SrcTexture;
uniform sampler2DRect AccumTexture;
uniform vec2 SrcUL;
uniform vec2 SrcLR;
uniform vec2 KernelUL;
uniform vec2 KernelWH;
float w(const in float i, const in float f) {
float A = -0.75000000000000000000;
float c = abs(i - 1.0);
float m = (i > 1.0) ? -1.0 : 1.0;
float p = c + m * f;
if (i == 1.0 || i == 2.0) {
return (( A + 2.0 )*p - ( A + 3.0 ))*p*p + 1.0;
} else {
return (( A * p - 5.0 * A ) * p + 8.0 * A ) * p - 4.0 * A;
}
}
void main(void)
{
vec2 src = texture2DRect(CoordTexture, gl_TexCoord[0].st).sq;
vec4 accum = texture2DRect(AccumTexture, gl_TexCoord[0].st);
src -= SrcUL;
vec2 t = floor(src) + -0.50000000000000000000;
vec2 f = fract(src);
vec2 k = vec2(0.0, 0.0);
for (float ky = 0.0; ky < 4.0000000000000000000; ky += 1.0) {
k.t = ky + KernelUL.t;
float wy = w(k.t, f.t);
for (float kx = 0.0; kx < 4.0000000000000000000; kx += 1.0) {
k.s = kx + KernelUL.s;
float wx = w(k.s, f.s);
vec2 ix = t + k;
vec4 sp = texture2DRect(SrcTexture, ix);
float weight = wx * wy * sp.a;
accum += sp * weight;
}
}
gl_FragColor = accum;
}
#version 120
#extension GL_ARB_texture_rectangle : enable
uniform sampler2DRect NormTexture;
uniform sampler2DRect CoordTexture;
uniform sampler2DRect InvLutTexture;
uniform sampler2DRect DestLutTexture;
void main(void)
{
// Normalization
vec4 n = texture2DRect(NormTexture, gl_TexCoord[0].st);
vec4 p = vec4(0.0, 0.0, 0.0, 0.0);
if (n.a >= 0.2) p = n / n.a;
// Photometric
// invLutSize = 1024.0000000000000000
// pixelMax = 65535.000000000000000
// destLutSize = 1024.0000000000000000
// destExposure = 0.00037251857878706234493
// srcExposure = 0.00037127799462741026227
// whiteBalanceRed = 1.0000000000000000000
// whiteBalanceBlue = 1.0000000000000000000
p.rgb = p.rgb * 1023.0000000000000000;
vec2 invR = texture2DRect(InvLutTexture, vec2(p.r, 0.0)).sq;
vec2 invG = texture2DRect(InvLutTexture, vec2(p.g, 0.0)).sq;
vec2 invB = texture2DRect(InvLutTexture, vec2(p.b, 0.0)).sq;
vec3 invX = vec3(invR.x, invG.x, invB.x);
vec3 invY = vec3(invR.y, invG.y, invB.y);
vec3 invA = fract(p.rgb);
p.rgb = mix(invX, invY, invA);
// VigCorrMode=VIGCORR_RADIAL
float vig = 1.0;
{
vec2 vigCorrCenter = vec2(1423.5000000000000000, 2140.5000000000000000);
float radiusScale=0.00038890617819337537208;
float radialVigCorrCoeff0 = 1.0000000000000000000;
float radialVigCorrCoeff1 = 0.016847625337309098809;
float radialVigCorrCoeff2 = 0.081252655071550994315;
float radialVigCorrCoeff3 = -0.059167709616513797233;
vec2 src = texture2DRect(CoordTexture, gl_TexCoord[0].st).sq;
vec2 d = src - vigCorrCenter;
d *= radiusScale;
vig = radialVigCorrCoeff0;
float r2 = dot(d, d);
float r = r2;
vig += radialVigCorrCoeff1 * r;
r *= r2;
vig += radialVigCorrCoeff2 * r;
r *= r2;
vig += radialVigCorrCoeff3 * r;
}
vec3 exposure_whitebalance = vec3(1.0033413888719611151, 1.0033413888719611151, 1.0033413888719611151);
p.rgb = (p.rgb * exposure_whitebalance) / vig;
p.rgb = p.rgb * 1023.0000000000000000;
vec2 destR = texture2DRect(DestLutTexture, vec2(p.r, 0.0)).sq;
vec2 destG = texture2DRect(DestLutTexture, vec2(p.g, 0.0)).sq;
vec2 destB = texture2DRect(DestLutTexture, vec2(p.b, 0.0)).sq;
vec3 destX = vec3(destR.x, destG.x, destB.x);
vec3 destY = vec3(destR.y, destG.y, destB.y);
vec3 destA = fract(p.rgb);
p.rgb = mix(destX, destY, destA);
gl_FragColor = p;
}
gpu shader program compile time = 0.028
nona: Unsupported framebuffer format in: /build/buildd/hugin-2013.0.0+dfsg/src/hugin_base/vigra_ext/ImageTransformsGPU.cpp:714
make: *** [IMG_8429-1 - IMG_8430-10000.tif] Error 1
To manage notifications about this bug go to:
https://bugs.launchpad.net/hugin/+bug/1322695/+subscriptions
References