40 data.type = CAMERA_PERSP;
43 data.type = CAMERA_ORTHO;
47 switch (cam->panorama_type) {
49 case CAM_PANO_EQUIRECTANGULAR:
50 data.type = CAMERA_PANO_EQUIRECT;
52 case CAM_PANO_FISHEYE_EQUIDISTANT:
53 data.type = CAMERA_PANO_EQUIDISTANT;
55 case CAM_PANO_FISHEYE_EQUISOLID:
56 data.type = CAMERA_PANO_EQUISOLID;
58 case CAM_PANO_MIRRORBALL:
59 data.type = CAMERA_PANO_MIRROR;
71 data.type = CAMERA_PERSP;
106 data.wininv =
data.winmat.inverted();
108 data.persinv =
data.persmat.inverted();
113 data.clip_near = cam->clip_start;
114 data.clip_far = cam->clip_end;
116 data.fisheye_fov = cam->fisheye_fov;
117 data.fisheye_lens = cam->fisheye_lens;
118 data.equirect_bias.x = -cam->longitude_min +
M_PI_2;
119 data.equirect_bias.y = -cam->latitude_min +
M_PI_2;
120 data.equirect_scale.x = cam->longitude_min - cam->longitude_max;
121 data.equirect_scale.y = cam->latitude_min - cam->latitude_max;
123 data.equirect_bias +=
data.uv_bias *
data.equirect_scale;
124 data.equirect_scale *=
data.uv_scale;
126 data.equirect_scale_inv = 1.0f /
data.equirect_scale;
128 data.fisheye_fov =
data.fisheye_lens = -1.0f;
136 data.fisheye_fov =
data.fisheye_lens = -1.0f;
141 data_.initialized =
true;
Camera data-block and utility functions.
void perspective_m4(float mat[4][4], float left, float right, float bottom, float top, float nearClip, float farClip)
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
bool invert_m4_m4(float R[4][4], const float A[4][4])
Object * camera_eval_object
float DRW_view_near_distance_get(const DRWView *view)
void DRW_view_persmat_get(const DRWView *view, float mat[4][4], bool inverse)
void DRW_view_camtexco_get(const DRWView *view, float r_texco[4])
bool DRW_view_is_persp_get(const DRWView *view)
void DRW_view_winmat_get(const DRWView *view, float mat[4][4], bool inverse)
float DRW_view_far_distance_get(const DRWView *view)
void DRW_view_viewmat_get(const DRWView *view, float mat[4][4], bool inverse)
smooth(Type::VEC3, "prev") .smooth(Type CameraData
void RE_GetCameraModelMatrix(const Render *re, const struct Object *camera, float r_modelmat[4][4])
void RE_GetCameraWindow(struct Render *re, const struct Object *camera, float r_winmat[4][4])
vec_base< float, 2 > float2
static float4x4 identity()