diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-08-04 19:30:13 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-08-10 16:43:47 +0300 |
commit | 4ec58659adaf693994e09dda00bcaa8f58674adb (patch) | |
tree | 3bfc907e03568738c70c5fe5365c2d4f6936ab59 /source/blender/draw/engines/eevee/eevee_materials.c | |
parent | ba4ffe90cd62dd84fdc4be8bbf3f6de1c7b696b2 (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.c | 12 |
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); } |