mirror of
https://github.com/stevenrobertson/cuburn.git
synced 2025-02-05 11:40:04 -05:00
closes 11 - all black pixels with non-zero density were not being handled properly.
This commit is contained in:
parent
981de94be5
commit
addad052b1
@ -5,7 +5,7 @@ class ColorClip(HunkOCode):
|
|||||||
def __init__(self, features):
|
def __init__(self, features):
|
||||||
self.defs = self.defs_tmpl.substitute(features=features)
|
self.defs = self.defs_tmpl.substitute(features=features)
|
||||||
|
|
||||||
defs_tmpl = Template("""
|
defs_tmpl = Template('''
|
||||||
__global__
|
__global__
|
||||||
void colorclip(float4 *pixbuf, float gamma, float vibrancy, float highpow,
|
void colorclip(float4 *pixbuf, float gamma, float vibrancy, float highpow,
|
||||||
float linrange, float lingam, float3 bkgd) {
|
float linrange, float lingam, float3 bkgd) {
|
||||||
@ -14,6 +14,11 @@ void colorclip(float4 *pixbuf, float gamma, float vibrancy, float highpow,
|
|||||||
int i = blockDim.x * blockIdx.x + threadIdx.x;
|
int i = blockDim.x * blockIdx.x + threadIdx.x;
|
||||||
float4 pix = pixbuf[i];
|
float4 pix = pixbuf[i];
|
||||||
|
|
||||||
|
if (i == 58905) {
|
||||||
|
printf("pix = %f %f %f %f\\n",pix.w,pix.x,pix.y,pix.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (pix.w <= 0) {
|
if (pix.w <= 0) {
|
||||||
pixbuf[i] = make_float4(bkgd.x, bkgd.y, bkgd.z, 0);
|
pixbuf[i] = make_float4(bkgd.x, bkgd.y, bkgd.z, 0);
|
||||||
return;
|
return;
|
||||||
@ -28,6 +33,12 @@ void colorclip(float4 *pixbuf, float gamma, float vibrancy, float highpow,
|
|||||||
}
|
}
|
||||||
|
|
||||||
float ls = vibrancy * alpha / pix.w;
|
float ls = vibrancy * alpha / pix.w;
|
||||||
|
|
||||||
|
if (i == 58905) {
|
||||||
|
printf("alpha = %f, ls = %f\\n",alpha, ls);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
alpha = fminf(1.0f, fmaxf(0.0f, alpha));
|
alpha = fminf(1.0f, fmaxf(0.0f, alpha));
|
||||||
|
|
||||||
float maxc = fmaxf(pix.x, fmaxf(pix.y, pix.z));
|
float maxc = fmaxf(pix.x, fmaxf(pix.y, pix.z));
|
||||||
@ -50,11 +61,13 @@ void colorclip(float4 *pixbuf, float gamma, float vibrancy, float highpow,
|
|||||||
} else {
|
} else {
|
||||||
float adjhlp = -highpow;
|
float adjhlp = -highpow;
|
||||||
if (adjhlp > 1.0f || maxa <= 1.0f) adjhlp = 1.0f;
|
if (adjhlp > 1.0f || maxa <= 1.0f) adjhlp = 1.0f;
|
||||||
|
if (maxc > 0.0f) {
|
||||||
float adj = ((1.0f - adjhlp) * newls + adjhlp * ls);
|
float adj = ((1.0f - adjhlp) * newls + adjhlp * ls);
|
||||||
pix.x *= adj;
|
pix.x *= adj;
|
||||||
pix.y *= adj;
|
pix.y *= adj;
|
||||||
pix.z *= adj;
|
pix.z *= adj;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pix.x += (1.0f - vibrancy) * powf(opix.x, gamma);
|
pix.x += (1.0f - vibrancy) * powf(opix.x, gamma);
|
||||||
pix.y += (1.0f - vibrancy) * powf(opix.y, gamma);
|
pix.y += (1.0f - vibrancy) * powf(opix.y, gamma);
|
||||||
@ -79,7 +92,7 @@ void colorclip(float4 *pixbuf, float gamma, float vibrancy, float highpow,
|
|||||||
|
|
||||||
pixbuf[i] = pix;
|
pixbuf[i] = pix;
|
||||||
}
|
}
|
||||||
""")
|
''')
|
||||||
|
|
||||||
class DensityEst(HunkOCode):
|
class DensityEst(HunkOCode):
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user