[Bf-blender-cvs] [951fad2] master: Cycles: Add missing velocity attribute to builtin image loader

Sergey Sharybin noreply at git.blender.org
Tue Apr 12 13:26:24 CEST 2016


Commit: 951fad2baa592b4dc5201d8630517e6a92a510d2
Author: Sergey Sharybin
Date:   Tue Apr 12 13:25:20 2016 +0200
Branches: master
https://developer.blender.org/rB951fad2baa592b4dc5201d8630517e6a92a510d2

Cycles: Add missing velocity attribute to builtin image loader

For some reason other parts of blender importer were assuming velocity
is supported, but actual loader was not aware of that.

Fixes T48064: Adding velocity attribute crashes render

===================================================================

M	intern/cycles/blender/blender_session.cpp

===================================================================

diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index aac2ffb..7dfe941 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -1117,6 +1117,8 @@ void BlenderSession::builtin_image_info(const string &builtin_name, void *builti
 			channels = 1;
 		else if(builtin_name == Attribute::standard_name(ATTR_STD_VOLUME_COLOR))
 			channels = 4;
+		else if(builtin_name == Attribute::standard_name(ATTR_STD_VOLUME_VELOCITY))
+			channels = 3;
 		else
 			return;
 
@@ -1246,6 +1248,11 @@ bool BlenderSession::builtin_image_float_pixels(const string &builtin_name, void
 		int3 resolution = get_int3(b_domain.domain_resolution());
 		int length, amplify = (b_domain.use_high_resolution())? b_domain.amplify() + 1: 1;
 
+		/* Velocity data is always low-resolution. */
+		if(builtin_name == Attribute::standard_name(ATTR_STD_VOLUME_VELOCITY)) {
+			amplify = 1;
+		}
+
 		int width = resolution.x * amplify;
 		int height = resolution.y * amplify;
 		int depth = resolution.z * amplify;
@@ -1278,6 +1285,14 @@ bool BlenderSession::builtin_image_float_pixels(const string &builtin_name, void
 				return true;
 			}
 		}
+		else if(builtin_name == Attribute::standard_name(ATTR_STD_VOLUME_VELOCITY)) {
+			SmokeDomainSettings_velocity_grid_get_length(&b_domain.ptr, &length);
+
+			if(length == num_pixels*3) {
+				SmokeDomainSettings_velocity_grid_get(&b_domain.ptr, pixels);
+				return true;
+			}
+		}
 		else {
 			fprintf(stderr, "Cycles error: unknown volume attribute, skipping\n");
 			pixels[0] = 0.0f;




More information about the Bf-blender-cvs mailing list