[Bf-blender-cvs] [45830999d9e] soc-2018-volumes: Merge branch 'soc-2018-volumes' of git.blender.org:blender into soc-2018-volumes
Geraldine Chua
noreply at git.blender.org
Wed May 30 19:21:59 CEST 2018
Commit: 45830999d9e8b62288edc97d98ba6b6f69c051a3
Author: Geraldine Chua
Date: Thu May 31 01:21:21 2018 +0800
Branches: soc-2018-volumes
https://developer.blender.org/rB45830999d9e8b62288edc97d98ba6b6f69c051a3
Merge branch 'soc-2018-volumes' of git.blender.org:blender into soc-2018-volumes
===================================================================
===================================================================
diff --cc intern/cycles/render/image.cpp
index 756807d0642,c37d7e02d43..f7e2f6488a1
--- a/intern/cycles/render/image.cpp
+++ b/intern/cycles/render/image.cpp
@@@ -699,52 -698,45 +699,54 @@@ template<TypeDesc::BASETYPE FileFormat
bool ImageManager::file_load_image(Image *img,
ImageDataType type,
int texture_limit,
- device_vector<VolumeTile>& tex_img,
- device_vector<int>& tex_helper)
+ device_vector<SparseTile>& tex_img,
+ device_vector<int>& tex_offsets)
{
- device_vector<DeviceType> *tex_img_raw
+ device_vector<DeviceType> *tex_img_dense
= new device_vector<DeviceType>(NULL, img->mem_name.c_str(), MEM_TEXTURE);
- if(!file_load_image<FileFormat, StorageType, DeviceType>(img, type, texture_limit, *tex_img_raw)) {
- return false;
+ if(!file_load_image<FileFormat, StorageType, DeviceType>(img,
+ type,
+ texture_limit,
+ *tex_img_dense))
+ {
+ /* Release temporary pointer. */
+ delete tex_img_dense;
+ tex_img_dense = NULL;
+ return false;
+ }
+
+ DeviceType *data = tex_img_dense->data();
+ size_t tile_width = compute_tile_resolution(tex_img_dense->data_width);
+ size_t tile_height = compute_tile_resolution(tex_img_dense->data_height);
+ size_t tile_depth = compute_tile_resolution(tex_img_dense->data_depth);
+
+ vector<SparseTile> sparse_grid;
+ vector<int> offsets;
- int active_tile_count = create_sparse_grid(data,
++ /* Sample threshold value for now. */
++ float4 threshold = make_float4(0.0f);
++ int active_tile_count = create_sparse_grid(data, threshold,
+ tex_img_dense->data_width,
+ tex_img_dense->data_height,
+ tex_img_dense->data_depth,
+ &sparse_grid, &offsets);
+
+ if(active_tile_count < 1) {
+ /* to-do (gchua): handle this. */
}
- VLOG(1) << "Memory usage of raw volume texture: "
- << string_human_readable_size(tex_img_raw->memory_size());
-
- DeviceType *data = tex_img_raw->data();
- size_t tile_width = compute_tile_resolution(tex_img_raw->data_width);
- size_t tile_height = compute_tile_resolution(tex_img_raw->data_height);
- size_t tile_depth = compute_tile_resolution(tex_img_raw->data_depth);
-
- vector<VolumeTile> sparse_grid;
- vector<int> indexes;
- create_sparse_grid(data,
- tex_img_raw->data_width,
- tex_img_raw->data_height,
- tex_img_raw->data_depth,
- sparse_grid,
- indexes);
-
- VolumeTile *texture_pixels;
- int *texture_indexes;
+ SparseTile *texture_pixels;
+ int *texture_offsets;
{
/* Since only active tiles are stored in tex_img, its
- * allocated memory will be less than the actual resolution
+ * allocated memory will be <= the actual resolution
* of the volume. We store the true resolution (in tiles) in the
- * tex_helper instead, since it needs to be allocated enough
+ * tex_offsets instead, since it needs to be allocated enough
* space to track all tiles anyway. */
thread_scoped_lock device_lock(device_mutex);
- texture_pixels = (VolumeTile*)tex_img.alloc(sparse_grid.size());
- texture_indexes = (int*)tex_helper.alloc(tile_width,
+ texture_pixels = (SparseTile*)tex_img.alloc(active_tile_count);
+ texture_offsets = (int*)tex_offsets.alloc(tile_width,
tile_height,
tile_depth);
}
@@@ -959,44 -944,18 +961,44 @@@ void ImageManager::device_load_image(De
type,
texture_limit,
*tex_img,
- *tex_helper)) {
- /* todo (gchua): fix this later */
- }
+ *tex_offsets))
+ {
+ /* Clear pointers. */
+ delete tex_img;
+ delete tex_offsets;
+ tex_img = NULL;
+ tex_offsets = NULL;
- tex_img->helper = tex_helper;
- img->mem = tex_img;
- img->mem->interpolation = img->interpolation;
- img->mem->extension = img->extension;
+ /* on failure to load, we set a 1x1 pixels pink image (float4) */
+ device_vector<float4> *tex_fail
+ = new device_vector<float4>(device, img->mem_name.c_str(), MEM_TEXTURE);
- thread_scoped_lock device_lock(device_mutex);
- tex_img->copy_to_device();
- tex_helper->copy_to_device();
+ thread_scoped_lock device_lock(device_mutex);
+ float *pixels = (float*)tex_fail->alloc(1, 1);
+
+ pixels[0] = TEX_IMAGE_MISSING_R;
+ pixels[1] = TEX_IMAGE_MISSING_G;
+ pixels[2] = TEX_IMAGE_MISSING_B;
+ pixels[3] = TEX_IMAGE_MISSING_A;
+
+ img->mem = tex_fail;
+ img->mem->interpolation = img->interpolation;
+ img->mem->extension = img->extension;
+ tex_fail->copy_to_device();
+ }
+ else {
+ img->mem = tex_img;
+ img->mem->interpolation = img->interpolation;
+ img->mem->extension = img->extension;
- img->mem->offsets = tex_offsets;
++ img->mem->offets = tex_offsets;
+ /* Need to set interpolation so that tex_alloc() will treat
+ * tex_offsets as a image instead of data texture. */
+ tex_offsets->interpolation = img->interpolation;
+
+ thread_scoped_lock device_lock(device_mutex);
+ tex_img->copy_to_device();
+ tex_offsets->copy_to_device();
+ }
}
img->need_load = false;
diff --cc release/datafiles/locale
index 469c949d1ca,469c949d1ca..d3349b42856
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@@ -1,1 -1,1 +1,1 @@@
--Subproject commit 469c949d1ca882be19daa128842f813b72a944d8
++Subproject commit d3349b42856d00c278f72f2a5909a6c96b9cdb5e
diff --cc release/scripts/addons
index c88411ff777,c88411ff777..4b91309b122
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@@ -1,1 -1,1 +1,1 @@@
--Subproject commit c88411ff7776a2db5d6ef6117a1b2faa42a95611
++Subproject commit 4b91309b122bcdcddd1854b1137407b2c4f55c7e
diff --cc release/scripts/addons_contrib
index 310578043de,310578043de..cd57934bd04
--- a/release/scripts/addons_contrib
+++ b/release/scripts/addons_contrib
@@@ -1,1 -1,1 +1,1 @@@
--Subproject commit 310578043dec1aae382eb6a447ae1d103792d7e6
++Subproject commit cd57934bd04c174fc3402888d01a74e6e6653b2f
diff --cc source/tools
index 7695e14cfc5,7695e14cfc5..266ca839763
--- a/source/tools
+++ b/source/tools
@@@ -1,1 -1,1 +1,1 @@@
--Subproject commit 7695e14cfc5820ac66546e0e515914d85ab81af3
++Subproject commit 266ca8397638d2e098f7eeadd291766f77da2ed3
More information about the Bf-blender-cvs
mailing list