31 if (shutter_curve.
size() == 0) {
35 x *= shutter_curve.
size();
37 float frac =
x - index;
38 if (index < shutter_curve.
size() - 1) {
39 return lerp(shutter_curve[index], shutter_curve[index + 1],
frac);
42 return shutter_curve[shutter_curve.
size() - 1];
52 static NodeEnum motion_position_enum;
58 static NodeEnum rolling_shutter_type_enum;
59 rolling_shutter_type_enum.
insert(
"none", ROLLING_SHUTTER_NONE);
60 rolling_shutter_type_enum.
insert(
"top", ROLLING_SHUTTER_TOP);
62 "Rolling Shutter Type",
63 rolling_shutter_type_enum,
64 ROLLING_SHUTTER_NONE);
65 SOCKET_FLOAT(rolling_shutter_duration,
"Rolling Shutter Duration", 0.1f);
103 SOCKET_FLOAT(fisheye_polynomial_k0,
"Fisheye Polynomial K0", 0.0f);
104 SOCKET_FLOAT(fisheye_polynomial_k1,
"Fisheye Polynomial K1", 0.0f);
105 SOCKET_FLOAT(fisheye_polynomial_k2,
"Fisheye Polynomial K2", 0.0f);
106 SOCKET_FLOAT(fisheye_polynomial_k3,
"Fisheye Polynomial K3", 0.0f);
107 SOCKET_FLOAT(fisheye_polynomial_k4,
"Fisheye Polynomial K4", 0.0f);
110 stereo_eye_enum.
insert(
"none", STEREO_NONE);
111 stereo_eye_enum.
insert(
"left", STEREO_LEFT);
112 stereo_eye_enum.
insert(
"right", STEREO_RIGHT);
113 SOCKET_ENUM(stereo_eye,
"Stereo Eye", stereo_eye_enum, STEREO_NONE);
115 SOCKET_BOOLEAN(use_spherical_stereo,
"Use Spherical Stereo",
false);
117 SOCKET_FLOAT(interocular_distance,
"Interocular Distance", 0.065f);
118 SOCKET_FLOAT(convergence_distance,
"Convergence Distance", 30.0f * 0.065f);
121 SOCKET_FLOAT(pole_merge_angle_from,
"Pole Merge Angle From", 60.0f *
M_PI_F / 180.0f);
140 SOCKET_FLOAT(viewport_camera_border.left,
"Viewport Border Left", 0);
141 SOCKET_FLOAT(viewport_camera_border.right,
"Viewport Border Right", 0);
142 SOCKET_FLOAT(viewport_camera_border.bottom,
"Viewport Border Bottom", 0);
143 SOCKET_FLOAT(viewport_camera_border.top,
"Viewport Border Top", 0);
145 SOCKET_FLOAT(offscreen_dicing_scale,
"Offscreen Dicing Scale", 1.0f);
150 SOCKET_BOOLEAN(use_perspective_motion,
"Use Perspective Motion",
false);
162 use_perspective_motion =
false;
165 for (
int i = 0; i < shutter_curve.size(); ++i) {
166 shutter_curve[i] = 1.0f;
203 float aspect = (
float)full_width / (
float)full_height;
204 if (full_width >= full_height) {
235 scene->update_stats->camera.times.add_entry({
"update", time});
250 Transform screentoraster = ndctoraster * screentondc;
252 Transform full_screentoraster = full_ndctoraster * screentondc;
266 rastertocamera = screentocamera * rastertoscreen;
267 full_rastertocamera = screentocamera * full_rastertoscreen;
268 cameratoraster = screentoraster * cameratoscreen;
270 cameratoworld = matrix;
271 screentoworld = cameratoworld * screentocamera;
272 rastertoworld = cameratoworld * rastertocamera;
273 ndctoworld = rastertoworld * ndctoraster;
279 worldtoscreen = cameratoscreen * worldtocamera;
280 worldtondc = screentondc * worldtoscreen;
281 worldtoraster = ndctoraster * worldtondc;
338 kernel_camera_motion.clear();
341 bool have_motion =
false;
342 for (
size_t i = 0; i < motion.size(); i++) {
343 have_motion = have_motion || motion[i] != matrix;
371 kernel_camera_motion.resize(motion.size());
395 kcam->
blades = (blades < 3) ? 0.0f : blades;
403 kcam->
type = camera_type;
414 latitude_min - latitude_max,
418 fisheye_polynomial_k1, fisheye_polynomial_k2, fisheye_polynomial_k3, fisheye_polynomial_k4);
420 switch (stereo_eye) {
434 if (use_pole_merge) {
457 kcam->
cliplength = (farclip == FLT_MAX) ? FLT_MAX : farclip - nearclip;
468 need_device_update =
true;
469 need_flags_update =
true;
470 previous_need_motion = need_motion;
482 scene->update_stats->camera.times.add_entry({
"device_update", time});
487 if (kernel_camera.shuttertime != -1.0f) {
496 kernel_camera.shutter_table_offset = (int)shutter_table_offset;
499 dscene->data.cam = kernel_camera;
501 size_t num_motion_steps = kernel_camera_motion.size();
502 if (num_motion_steps) {
504 memcpy(camera_motion, kernel_camera_motion.data(),
sizeof(*camera_motion) * num_motion_steps);
505 dscene->camera_motion.copy_to_device();
508 dscene->camera_motion.free();
518 KernelIntegrator *kintegrator = &dscene->
data.integrator;
519 if (kintegrator->use_volumes) {
525 static const int OBJECTS_PER_TASK = 32;
527 [&](
const blocked_range<size_t> &
r) {
528 for (size_t i = r.begin(); i != r.end(); i++) {
529 Object *object = scene->objects[i];
530 if (object->get_geometry()->has_volume &&
531 viewplane_boundbox.intersects(object->bounds)) {
533 VLOG_INFO <<
"Detected camera inside volume.";
534 kcam->is_inside_volume = 1;
535 parallel_for_cancel();
542 VLOG_INFO <<
"Camera is outside of the volume.";
546 need_device_update =
false;
547 need_flags_update =
false;
556 float3 Camera::transform_raster_to_world(
float raster_x,
float raster_y)
570 P += nearclip *
D / Pclip.
z;
580 assert(!
"unsupported camera type");
592 if (use_spherical_stereo ==
false) {
596 float half_eye_distance = interocular_distance * 0.5f;
616 bounds.grow(transform_raster_to_world(0.0f, 0.0f));
617 bounds.grow(transform_raster_to_world(0.0f, (
float)height));
618 bounds.grow(transform_raster_to_world((
float)width, (
float)
height));
619 bounds.grow(transform_raster_to_world((
float)
width, 0.0f));
637 if (offscreen_dicing_scale > 1.0f) {
647 c.z =
max(0.0f, p.
z);
656 res += res * f_dist * (offscreen_dicing_scale - 1.0f);
673 res =
len(dist * dDdx -
dot(dist * dDdx,
D) *
D);
679 if (offscreen_dicing_scale > 1.0f) {
688 if (
r <= 0.0f &&
l <= 0.0f &&
t <= 0.0f &&
b <= 0.0f) {
692 else if (
r > 0.0f &&
l > 0.0f &&
t > 0.0f &&
b > 0.0f) {
703 float dist[] = {
r,
l,
t,
b};
704 float3 along[] = {along_right, along_left, along_top, along_bottom};
710 for (
int i = 0; i < 4; i++, d++,
a++) {
713 if (
dot(p, *
a) >= 0.0f) {
715 f_dist =
max(f_dist, *d);
726 f_dist = (f_dist > 0) ?
min(f_dist,
len(p)) :
len(p);
731 res +=
len(dDdx -
dot(dDdx,
D) *
D) * f_dist * (offscreen_dicing_scale - 1.0f);
740 memset(&ray, 0,
sizeof(ray));
786 return motion.size() > 1;
791 if (width_ != width || height_ != height) {
800 return (
use_motion()) ? 2.0f * step / (motion.size() - 1) - 1.0f : 0.0f;
806 for (
int step = 0; step < motion.size(); step++) {
typedef float(TangentPoint)[2]
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble v1
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMLoop * l
ATTR_WARN_UNUSED_RESULT const BMVert * v
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
device_vector< DecomposedTransform > camera_motion
size_t add_table(DeviceScene *dscene, vector< float > &data)
void remove_table(size_t *offset)
#define CCL_NAMESPACE_END
ccl_device_inline float2 direction_to_panorama(ccl_constant KernelCamera *cam, float3 dir)
ccl_device_inline float3 transform_perspective(ccl_private const ProjectionTransform *t, const float3 a)
ccl_device_inline ProjectionTransform projection_perspective(float fov, float n, float f)
ccl_device_inline float3 transform_perspective_direction(ccl_private const ProjectionTransform *t, const float3 a)
ccl_device_inline ProjectionTransform projection_identity()
ProjectionTransform projection_inverse(const ProjectionTransform &a)
ccl_device_inline ProjectionTransform projection_orthographic(float znear, float zfar)
ccl_device_forceinline void differential_transfer_compact(ccl_private differential3 *surface_dP, const float ray_dP, const float3, const float ray_dD, const float3 surface_Ng, const float ray_t)
IconTextureDrawCall border
ccl_device_inline void camera_sample_panorama(ccl_constant KernelCamera *cam, float raster_x, float raster_y, float lens_u, float lens_v, ccl_private Ray *ray)
#define __CAMERA_MOTION__
#define SHUTTER_TABLE_SIZE
@ PANORAMA_FISHEYE_EQUISOLID
@ PANORAMA_FISHEYE_EQUIDISTANT
@ PANORAMA_FISHEYE_LENS_POLYNOMIAL
@ PANORAMA_EQUIRECTANGULAR
void util_cdf_inverted(const int resolution, const float from, const float to, Functor functor, const bool make_symmetric, vector< float > &inv_cdf)
ccl_device_inline float3 zero_float3()
ccl_device_inline float len_squared(const float3 a)
static float lerp(float t, float a, float b)
ccl_device_inline float frac(float x, int *ix)
std::unique_ptr< IDProperty, IDPropertyDeleter > create(StringRefNull prop_name, int32_t value)
Allocate a new IDProperty of type IDP_INT, set its name and value.
T dot(const vec_base< T, Size > &a, const vec_base< T, Size > &b)
vec_base< T, Size > normalize(const vec_base< T, Size > &v)
void parallel_for(IndexRange range, int64_t grain_size, const Function &function)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
#define SOCKET_FLOAT(name, ui_name, default_value,...)
#define SOCKET_INT(name, ui_name, default_value,...)
#define SOCKET_FLOAT_ARRAY(name, ui_name, default_value,...)
#define SOCKET_TRANSFORM(name, ui_name, default_value,...)
#define SOCKET_UINT(name, ui_name, default_value,...)
#define SOCKET_TRANSFORM_ARRAY(name, ui_name, default_value,...)
#define SOCKET_BOOLEAN(name, ui_name, default_value,...)
#define SOCKET_ENUM(name, ui_name, values, default_value,...)
static CCL_NAMESPACE_BEGIN float shutter_curve_eval(float x, array< float > &shutter_curve)
ProjectionTransform worldtoraster
float3 frustum_right_normal
void set_screen_size(int width_, int height_)
ProjectionTransform rastertoworld
BoundBox viewplane_bounds_get()
float motion_time(int step) const
void update(Scene *scene)
ProjectionTransform rastertocamera
ProjectionTransform screentoworld
size_t shutter_table_offset
void device_update_volume(Device *device, DeviceScene *dscene, Scene *scene)
void device_free(Device *device, DeviceScene *dscene, Scene *scene)
ProjectionTransform ndctoworld
void device_update(Device *device, DeviceScene *dscene, Scene *scene)
float3 frustum_left_normal
float world_to_raster_size(float3 P)
int motion_step(float time) const
void compute_auto_viewplane()
float3 frustum_top_normal
ProjectionTransform full_rastertocamera
float3 frustum_bottom_normal
KernelCamera kernel_camera
array< DecomposedTransform > kernel_camera_motion
ProjectionTransform ndctoworld
float pole_merge_angle_to
int have_perspective_motion
ProjectionTransform rastertocamera
float pole_merge_angle_from
ProjectionTransform worldtoraster
float fisheye_lens_polynomial_bias
Transform motion_pass_post
float4 equirectangular_range
ProjectionTransform screentoworld
ProjectionTransform perspective_post
float rolling_shutter_duration
ProjectionTransform perspective_pre
ProjectionTransform worldtoscreen
Transform motion_pass_pre
ProjectionTransform worldtondc
float convergence_distance
ProjectionTransform rastertoworld
float4 fisheye_lens_polynomial_coefficients
void insert(const char *x, int y)
static NodeType * add(const char *name, CreateFunc create, Type type=NONE, const NodeType *base=NULL)
MotionType need_motion() const
LookupTables * lookup_tables
vector< Object * > objects
SceneUpdateStats * update_stats
ccl_device_inline float4 float3_to_float4(const float3 a)
BLI_INLINE float D(const float *data, const int res[3], int x, int y, int z)