diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-12-31 19:18:13 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-12-31 19:18:13 +0400 |
commit | b5595298d36a5023cc33ed41463fd6c032f2ec7b (patch) | |
tree | e3a404393ff4a8e39a991f9a3d8ca78c0d3033a7 /intern/cycles/render/mesh_displace.cpp | |
parent | 1b4487e813edac9c5b57b6d5c6175c46c4a54b1c (diff) |
Cycles code refactoring: change displace kernel into more generic shader
evaluate kernel, added background shader evaluate.
Diffstat (limited to 'intern/cycles/render/mesh_displace.cpp')
-rw-r--r-- | intern/cycles/render/mesh_displace.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/intern/cycles/render/mesh_displace.cpp b/intern/cycles/render/mesh_displace.cpp index e86bea59ec1..f0ddf4e8d7b 100644 --- a/intern/cycles/render/mesh_displace.cpp +++ b/intern/cycles/render/mesh_displace.cpp @@ -89,25 +89,26 @@ bool MeshManager::displace(Device *device, Scene *scene, Mesh *mesh, Progress& p return false; /* run device task */ - device_vector<float3> d_offset; - d_offset.resize(d_input.size()); + device_vector<float3> d_output; + d_output.resize(d_input.size()); device->mem_alloc(d_input, MEM_READ_ONLY); device->mem_copy_to(d_input); - device->mem_alloc(d_offset, MEM_WRITE_ONLY); + device->mem_alloc(d_output, MEM_WRITE_ONLY); - DeviceTask task(DeviceTask::DISPLACE); - task.displace_input = d_input.device_pointer; - task.displace_offset = d_offset.device_pointer; - task.displace_x = 0; - task.displace_w = d_input.size(); + DeviceTask task(DeviceTask::SHADER); + task.shader_input = d_input.device_pointer; + task.shader_output = d_output.device_pointer; + task.shader_eval_type = SHADER_EVAL_DISPLACE; + task.shader_x = 0; + task.shader_w = d_input.size(); device->task_add(task); device->task_wait(); - device->mem_copy_from(d_offset, 0, sizeof(float3)*d_offset.size()); + device->mem_copy_from(d_output, 0, sizeof(float3)*d_output.size()); device->mem_free(d_input); - device->mem_free(d_offset); + device->mem_free(d_output); if(progress.get_cancel()) return false; @@ -117,7 +118,7 @@ bool MeshManager::displace(Device *device, Scene *scene, Mesh *mesh, Progress& p done.resize(mesh->verts.size(), false); int k = 0; - float3 *offset = (float3*)d_offset.data_pointer; + float3 *offset = (float3*)d_output.data_pointer; for(size_t i = 0; i < mesh->triangles.size(); i++) { Mesh::Triangle t = mesh->triangles[i]; |