MCPcopy Create free account
hub / github.com/RenderKit/embree / l2w

Method l2w

kernels/common/scene_instance_array.h:258–300  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

256 private:
257
258 __forceinline AffineSpace3ff l2w(size_t i, size_t itime) const {
259 if (l2w_buf[itime].getFormat() == RTC_FORMAT_FLOAT4X4_COLUMN_MAJOR) {
260 return *(AffineSpace3ff*)(l2w_buf[itime].getPtr(i));
261 }
262 else if(l2w_buf[itime].getFormat() == RTC_FORMAT_QUATERNION_DECOMPOSITION) {
263 AffineSpace3ff transform;
264 QuaternionDecomposition* qd = (QuaternionDecomposition*)l2w_buf[itime].getPtr(i);
265 transform.l.vx.x = qd->scale_x;
266 transform.l.vy.y = qd->scale_y;
267 transform.l.vz.z = qd->scale_z;
268 transform.l.vy.x = qd->skew_xy;
269 transform.l.vz.x = qd->skew_xz;
270 transform.l.vz.y = qd->skew_yz;
271 transform.l.vx.y = qd->translation_x;
272 transform.l.vx.z = qd->translation_y;
273 transform.l.vy.z = qd->translation_z;
274 transform.p.x = qd->shift_x;
275 transform.p.y = qd->shift_y;
276 transform.p.z = qd->shift_z;
277 // normalize quaternion
278 Quaternion3f q(qd->quaternion_r, qd->quaternion_i, qd->quaternion_j, qd->quaternion_k);
279 q = normalize(q);
280 transform.l.vx.w = q.i;
281 transform.l.vy.w = q.j;
282 transform.l.vz.w = q.k;
283 transform.p.w = q.r;
284 return transform;
285 }
286 else if (l2w_buf[itime].getFormat() == RTC_FORMAT_FLOAT3X4_COLUMN_MAJOR) {
287 AffineSpace3f* l2w = reinterpret_cast<AffineSpace3f*>(l2w_buf[itime].getPtr(i));
288 return AffineSpace3ff(*l2w);
289 }
290 else if (l2w_buf[itime].getFormat() == RTC_FORMAT_FLOAT3X4_ROW_MAJOR) {
291 float* data = reinterpret_cast<float*>(l2w_buf[itime].getPtr(i));
292 AffineSpace3f l2w;
293 l2w.l.vx.x = data[0]; l2w.l.vy.x = data[1]; l2w.l.vz.x = data[2]; l2w.p.x = data[3];
294 l2w.l.vx.y = data[4]; l2w.l.vy.y = data[5]; l2w.l.vz.y = data[6]; l2w.p.y = data[7];
295 l2w.l.vx.z = data[8]; l2w.l.vy.z = data[9]; l2w.l.vz.z = data[10]; l2w.p.z = data[11];
296 return l2w;
297 }
298 assert(false);
299 return AffineSpace3ff();
300 }
301
302 inline AffineSpace3ff l2w(size_t i) const {
303 return l2w(i, 0);

Callers

nothing calls this directly

Calls 3

getFormatMethod · 0.80
normalizeFunction · 0.50
getPtrMethod · 0.45

Tested by

no test coverage detected