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:
authorClément Foucault <foucault.clem@gmail.com>2017-08-04 19:30:13 +0300
committerClément Foucault <foucault.clem@gmail.com>2017-08-10 16:43:47 +0300
commit4ec58659adaf693994e09dda00bcaa8f58674adb (patch)
tree3bfc907e03568738c70c5fe5365c2d4f6936ab59 /source/blender/draw/engines/eevee/eevee_materials.c
parentba4ffe90cd62dd84fdc4be8bbf3f6de1c7b696b2 (diff)
Eevee: Add precomputed BTDF LUT.
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_materials.c')
-rw-r--r--source/blender/draw/engines/eevee/eevee_materials.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_materials.c b/source/blender/draw/engines/eevee/eevee_materials.c
index 8cd9dd4829d..046a7ea1367 100644
--- a/source/blender/draw/engines/eevee/eevee_materials.c
+++ b/source/blender/draw/engines/eevee/eevee_materials.c
@@ -358,7 +358,7 @@ void EEVEE_materials_init(EEVEE_StorageList *stl)
MEM_freeN(frag_str);
/* Textures */
- const int layers = 3;
+ const int layers = 3 + 16;
float (*texels)[4] = MEM_mallocN(sizeof(float[4]) * 64 * 64 * layers, "utils texels");
float (*texels_layer)[4] = texels;
@@ -382,6 +382,16 @@ void EEVEE_materials_init(EEVEE_StorageList *stl)
texels_layer[i][3] = sinf(blue_noise[i][1] * 2.0 * M_PI);
}
+ for (int j = 0; j < 16; ++j) {
+ texels_layer += 64 * 64;
+ for (int i = 0; i < 64 * 64; i++) {
+ texels_layer[i][0] = btdf_split_sum_ggx[j*2][i];
+ texels_layer[i][1] = btdf_split_sum_ggx[j*2][i];
+ texels_layer[i][2] = btdf_split_sum_ggx[j*2][i];
+ texels_layer[i][3] = btdf_split_sum_ggx[j*2][i];
+ }
+ }
+
e_data.util_tex = DRW_texture_create_2D_array(64, 64, layers, DRW_TEX_RGBA_16, DRW_TEX_FILTER | DRW_TEX_WRAP, (float *)texels);
MEM_freeN(texels);
}