diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-03-19 22:18:24 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-03-19 23:22:15 +0300 |
commit | fddb4dee8a880df138a5163825625a19d0ec2f1c (patch) | |
tree | cf295f4d4e6b0b860ec66f9096e4ba505993f239 /intern/cycles/render | |
parent | b8eca8e07d4e0c2061464b485f4c2e1e5d23d8cc (diff) |
Fix T54356: volume rendering bug using just color attribute.
Diffstat (limited to 'intern/cycles/render')
-rw-r--r-- | intern/cycles/render/mesh_volume.cpp | 46 |
1 files changed, 3 insertions, 43 deletions
diff --git a/intern/cycles/render/mesh_volume.cpp b/intern/cycles/render/mesh_volume.cpp index 3571beb40d6..d1c49b456ff 100644 --- a/intern/cycles/render/mesh_volume.cpp +++ b/intern/cycles/render/mesh_volume.cpp @@ -495,54 +495,14 @@ void MeshManager::create_volume_mesh(Scene *scene, for(size_t i = 0; i < voxel_grids.size(); ++i) { const VoxelAttributeGrid &voxel_grid = voxel_grids[i]; + const int channels = voxel_grid.channels; - if(voxel_grid.channels == 1) { - if(voxel_grid.data[voxel_index] >= isovalue) { + for(int c = 0; c < channels; c++) { + if(voxel_grid.data[voxel_index * channels + c] >= isovalue) { builder.add_node_with_padding(x, y, z); break; } } - else if(voxel_grid.channels == 3) { - voxel_index = compute_voxel_index(resolution, x*3, y, z); - - if(voxel_grid.data[voxel_index] >= isovalue) { - builder.add_node_with_padding(x, y, z); - break; - } - - if(voxel_grid.data[voxel_index + 1] >= isovalue) { - builder.add_node_with_padding(x, y, z); - break; - } - - if(voxel_grid.data[voxel_index + 2] >= isovalue) { - builder.add_node_with_padding(x, y, z); - break; - } - } - else if(voxel_grid.channels == 4) { - voxel_index = compute_voxel_index(resolution, x*4, y, z); - - /* check alpha first */ - if(voxel_grid.data[voxel_index + 3] < isovalue) { - continue; - } - - if(voxel_grid.data[voxel_index] >= isovalue) { - builder.add_node_with_padding(x, y, z); - continue; - } - - if(voxel_grid.data[voxel_index + 1] >= isovalue) { - builder.add_node_with_padding(x, y, z); - continue; - } - - if(voxel_grid.data[voxel_index + 2] >= isovalue) { - builder.add_node_with_padding(x, y, z); - continue; - } - } } } } |