MCPcopy Create free account
hub / github.com/RenderKit/ospray / commit

Method commit

modules/cpu/camera/Camera.cpp:33–116  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

31}
32
33void Camera::commit()
34{
35 motionTransform.readParams(*this);
36
37 // "parse" the general expected parameters
38 pos = getParam<vec3f>("position", vec3f(0.f));
39 dir = getParam<vec3f>("direction", vec3f(0.f, 0.f, 1.f));
40 up = getParam<vec3f>("up", vec3f(0.f, 1.f, 0.f));
41 nearClip = std::max(getParam<float>("nearClip", 1e-6f), 0.f);
42 imageStart = getParam<vec2f>("imageStart", vec2f(0.f));
43 imageEnd = getParam<vec2f>("imageEnd", vec2f(1.f));
44 shutter = getParam<range1f>("shutter", range1f(0.5f, 0.5f));
45 clamp(shutter.lower);
46 clamp(shutter.upper);
47 if (shutter.lower > shutter.upper)
48 shutter.lower = shutter.upper;
49 shutterType =
50 (OSPShutterType)getParam<uint32_t>("shutterType", OSP_SHUTTER_GLOBAL);
51 rollingShutterDuration = clamp(
52 getParam<float>("rollingShutterDuration", 0.0f), 0.0f, shutter.size());
53
54 if (motionTransform.motionBlur || motionTransform.quaternion) {
55 // create dummy RTCGeometry for transform interpolation or conversion
56 if (!embreeGeometry) {
57 embreeGeometry = rtcNewGeometry(
58 getISPCDevice().getEmbreeDevice(), RTC_GEOMETRY_TYPE_INSTANCE);
59 embreeScene = rtcNewScene(getISPCDevice().getEmbreeDevice());
60 rtcAttachGeometryByID(embreeScene, embreeGeometry, 0);
61 }
62
63 motionTransform.setEmbreeTransform(embreeGeometry);
64
65 if (shutter.lower == shutter.upper || !motionTransform.motionBlur) {
66 // directly interpolate to single shutter time
67 rtcGetGeometryTransformFromScene(embreeScene,
68 0,
69 shutter.lower,
70 RTC_FORMAT_FLOAT3X4_COLUMN_MAJOR,
71 &motionTransform.transform);
72 motionTransform.motionBlur = false;
73 }
74 }
75
76 if (!motionTransform.motionBlur) {
77 if (embreeGeometry) {
78 rtcReleaseGeometry(embreeGeometry);
79 embreeGeometry = nullptr;
80 rtcReleaseScene(embreeScene);
81 embreeScene = nullptr;
82 }
83
84 // apply transform right away
85 pos = xfmPoint(motionTransform.transform, pos);
86 dir = normalize(xfmVector(motionTransform.transform, dir));
87 up = normalize(xfmVector(motionTransform.transform, up));
88 }
89
90 if (shutterType != OSP_SHUTTER_GLOBAL) { // rolling shutter

Callers

nothing calls this directly

Calls 3

setEmbreeTransformMethod · 0.80
readParamsMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected