[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57919] branches/soc-2013-dingto/intern/ cycles/kernel/svm/svm_vector_transform.h: Cycles / Vector Transform Node:
Thomas Dinges
blender at dingto.org
Tue Jul 2 01:17:25 CEST 2013
Revision: 57919
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57919
Author: dingto
Date: 2013-07-01 23:17:24 +0000 (Mon, 01 Jul 2013)
Log Message:
-----------
Cycles / Vector Transform Node:
* After some more thinking, solved the remaining ToDos. :)
* Added is_object check to check if we have a valid object.
* If we operate on the world, and try to convert from/to object space, we now assume world space instead, same as OSL.
Modified Paths:
--------------
branches/soc-2013-dingto/intern/cycles/kernel/svm/svm_vector_transform.h
Modified: branches/soc-2013-dingto/intern/cycles/kernel/svm/svm_vector_transform.h
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/svm/svm_vector_transform.h 2013-07-01 22:56:56 UTC (rev 57918)
+++ branches/soc-2013-dingto/intern/cycles/kernel/svm/svm_vector_transform.h 2013-07-01 23:17:24 UTC (rev 57919)
@@ -18,11 +18,6 @@
CCL_NAMESPACE_BEGIN
-/* ToDo
-* if (object != ~0) null check?
-* differs from OSL when used for the world
-*/
-
/* Vector Transform */
__device void svm_node_vector_transform(KernelGlobals *kg, ShaderData *sd, float *stack, uint4 node)
@@ -40,6 +35,7 @@
NodeVectorTransformConvertTo to = (NodeVectorTransformConvertTo)ito;
Transform tfm;
+ int is_object = (sd->object != ~0);
/* From world */
if(from == NODE_VECTOR_TRANSFORM_CONVERT_FROM_WORLD) {
@@ -50,7 +46,7 @@
else
in = transform_point(&tfm, in);
}
- else if (to == NODE_VECTOR_TRANSFORM_CONVERT_TO_OBJECT) {
+ else if (to == NODE_VECTOR_TRANSFORM_CONVERT_TO_OBJECT && is_object) {
if(type == NODE_VECTOR_TRANSFORM_TYPE_VECTOR)
object_inverse_dir_transform(kg, sd, &in);
else
@@ -67,7 +63,7 @@
else
in = transform_point(&tfm, in);
}
- if(to == NODE_VECTOR_TRANSFORM_CONVERT_TO_OBJECT) {
+ if(to == NODE_VECTOR_TRANSFORM_CONVERT_TO_OBJECT && is_object) {
if(type == NODE_VECTOR_TRANSFORM_TYPE_VECTOR)
object_inverse_dir_transform(kg, sd, &in);
else
@@ -77,7 +73,7 @@
/* From object */
else if(from == NODE_VECTOR_TRANSFORM_CONVERT_FROM_OBJECT) {
- if(to == NODE_VECTOR_TRANSFORM_CONVERT_TO_WORLD || to == NODE_VECTOR_TRANSFORM_CONVERT_TO_CAMERA) {
+ if((to == NODE_VECTOR_TRANSFORM_CONVERT_TO_WORLD || to == NODE_VECTOR_TRANSFORM_CONVERT_TO_CAMERA) && is_object) {
if(type == NODE_VECTOR_TRANSFORM_TYPE_VECTOR)
object_dir_transform(kg, sd, &in);
else
More information about the Bf-blender-cvs
mailing list