Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-03-07 16:27:18 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-03-07 16:27:18 +0400
commit9fba458a7fe535e60f5c6beee9757fe25ffe2d49 (patch)
treee625eb73d3da32a01c84385e1976f81d2f8b92bd /intern/cycles/kernel
parentbdf731f03d727d3862537c59fa11477b77eb60b0 (diff)
Cycles: float texture support. Due to GPU limitations there are now 95 byte,
and 5 float image textures. For CPU render this limit will be lifted later on with image cache support. Patch by Mike Farnsworth. Also changed color space option in image/environment texture node, to show options Color and Non-Color Data, instead of sRGB and Linear, this is more descriptive, and it was not really correct to equate Non-Color Data with Linear.
Diffstat (limited to 'intern/cycles/kernel')
-rw-r--r--intern/cycles/kernel/kernel.cpp24
-rw-r--r--intern/cycles/kernel/kernel_textures.h12
-rw-r--r--intern/cycles/kernel/svm/svm_image.h10
3 files changed, 31 insertions, 15 deletions
diff --git a/intern/cycles/kernel/kernel.cpp b/intern/cycles/kernel/kernel.cpp
index a93f6172d28..667db1e5f03 100644
--- a/intern/cycles/kernel/kernel.cpp
+++ b/intern/cycles/kernel/kernel.cpp
@@ -84,6 +84,25 @@ void kernel_tex_copy(KernelGlobals *kg, const char *name, device_ptr mem, size_t
#define KERNEL_IMAGE_TEX(type, ttype, tname)
#include "kernel_textures.h"
+ else if(strstr(name, "__tex_image_float")) {
+ texture_image_float4 *tex = NULL;
+ int id = atoi(name + strlen("__tex_image_float_"));
+
+ switch(id) {
+ case 95: tex = &kg->__tex_image_float_095; break;
+ case 96: tex = &kg->__tex_image_float_096; break;
+ case 97: tex = &kg->__tex_image_float_097; break;
+ case 98: tex = &kg->__tex_image_float_098; break;
+ case 99: tex = &kg->__tex_image_float_099; break;
+ default: break;
+ }
+
+ if(tex) {
+ tex->data = (float4*)mem;
+ tex->width = width;
+ tex->height = height;
+ }
+ }
else if(strstr(name, "__tex_image")) {
texture_image_uchar4 *tex = NULL;
int id = atoi(name + strlen("__tex_image_"));
@@ -184,11 +203,6 @@ void kernel_tex_copy(KernelGlobals *kg, const char *name, device_ptr mem, size_t
case 92: tex = &kg->__tex_image_092; break;
case 93: tex = &kg->__tex_image_093; break;
case 94: tex = &kg->__tex_image_094; break;
- case 95: tex = &kg->__tex_image_095; break;
- case 96: tex = &kg->__tex_image_096; break;
- case 97: tex = &kg->__tex_image_097; break;
- case 98: tex = &kg->__tex_image_098; break;
- case 99: tex = &kg->__tex_image_099; break;
default: break;
}
diff --git a/intern/cycles/kernel/kernel_textures.h b/intern/cycles/kernel/kernel_textures.h
index ca7ae432efa..8bab735d0d1 100644
--- a/intern/cycles/kernel/kernel_textures.h
+++ b/intern/cycles/kernel/kernel_textures.h
@@ -142,11 +142,13 @@ KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_091)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_092)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_093)
KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_094)
-KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_095)
-KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_096)
-KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_097)
-KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_098)
-KERNEL_IMAGE_TEX(uchar4, texture_image_uchar4, __tex_image_099)
+
+/* full-float image */
+KERNEL_IMAGE_TEX(float4, texture_image_float4, __tex_image_float_095)
+KERNEL_IMAGE_TEX(float4, texture_image_float4, __tex_image_float_096)
+KERNEL_IMAGE_TEX(float4, texture_image_float4, __tex_image_float_097)
+KERNEL_IMAGE_TEX(float4, texture_image_float4, __tex_image_float_098)
+KERNEL_IMAGE_TEX(float4, texture_image_float4, __tex_image_float_099)
#undef KERNEL_TEX
#undef KERNEL_IMAGE_TEX
diff --git a/intern/cycles/kernel/svm/svm_image.h b/intern/cycles/kernel/svm/svm_image.h
index 073021bdd54..3d737b483cb 100644
--- a/intern/cycles/kernel/svm/svm_image.h
+++ b/intern/cycles/kernel/svm/svm_image.h
@@ -130,11 +130,11 @@ __device float4 svm_image_texture(KernelGlobals *kg, int id, float x, float y)
case 92: r = kernel_tex_image_interp(__tex_image_092, x, y); break;
case 93: r = kernel_tex_image_interp(__tex_image_093, x, y); break;
case 94: r = kernel_tex_image_interp(__tex_image_094, x, y); break;
- case 95: r = kernel_tex_image_interp(__tex_image_095, x, y); break;
- case 96: r = kernel_tex_image_interp(__tex_image_096, x, y); break;
- case 97: r = kernel_tex_image_interp(__tex_image_097, x, y); break;
- case 98: r = kernel_tex_image_interp(__tex_image_098, x, y); break;
- case 99: r = kernel_tex_image_interp(__tex_image_099, x, y); break;
+ case 95: r = kernel_tex_image_interp(__tex_image_float_095, x, y); break;
+ case 96: r = kernel_tex_image_interp(__tex_image_float_096, x, y); break;
+ case 97: r = kernel_tex_image_interp(__tex_image_float_097, x, y); break;
+ case 98: r = kernel_tex_image_interp(__tex_image_float_098, x, y); break;
+ case 99: r = kernel_tex_image_interp(__tex_image_float_099, x, y); break;
default:
kernel_assert(0);
return make_float4(0.0f, 0.0f, 0.0f, 0.0f);