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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2011-12-31 19:18:13 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2011-12-31 19:18:13 +0400
commitb5595298d36a5023cc33ed41463fd6c032f2ec7b (patch)
treee3a404393ff4a8e39a991f9a3d8ca78c0d3033a7 /intern/cycles/render/mesh_displace.cpp
parent1b4487e813edac9c5b57b6d5c6175c46c4a54b1c (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.cpp23
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];