fix/improve camera near_z usage

This commit is contained in:
Garux 2018-02-04 16:55:25 +03:00
parent c22187907e
commit 339d078bc6

View File

@ -156,6 +156,7 @@ struct camera_t
static float fieldOfView; static float fieldOfView;
static const float near_z;
DeferredMotionDelta m_mouseMove; DeferredMotionDelta m_mouseMove;
@ -185,6 +186,7 @@ struct camera_t
}; };
float camera_t::fieldOfView = 110.0f; float camera_t::fieldOfView = 110.0f;
const float camera_t::near_z = 1.f;
camera_draw_mode camera_t::draw_mode = cd_texture; camera_draw_mode camera_t::draw_mode = cd_texture;
inline Matrix4 projection_for_camera( float near_z, float far_z, float fieldOfView, int width, int height ){ inline Matrix4 projection_for_camera( float near_z, float far_z, float fieldOfView, int width, int height ){
@ -207,8 +209,8 @@ float Camera_getFarClipPlane( camera_t& camera ){
void Camera_updateProjection( camera_t& camera ){ void Camera_updateProjection( camera_t& camera ){
float farClip = Camera_getFarClipPlane( camera ); float farClip = Camera_getFarClipPlane( camera );
//~near_z = farClip / 4096.0f
camera.projection = projection_for_camera( 1.f, farClip, camera_t::fieldOfView, camera.width, camera.height ); camera.projection = projection_for_camera( camera_t::near_z, farClip, camera_t::fieldOfView, camera.width, camera.height );
camera.m_view->Construct( camera.projection, camera.modelview, camera.width, camera.height ); camera.m_view->Construct( camera.projection, camera.modelview, camera.width, camera.height );
} }
@ -645,7 +647,7 @@ void setModelview( const Matrix4& modelview ){
} }
void setFieldOfView( float fieldOfView ){ void setFieldOfView( float fieldOfView ){
float farClip = Camera_getFarClipPlane( m_camera ); float farClip = Camera_getFarClipPlane( m_camera );
m_camera.projection = projection_for_camera( farClip / 4096.0f, farClip, fieldOfView, m_camera.width, m_camera.height ); m_camera.projection = projection_for_camera( camera_t::near_z, farClip, fieldOfView, m_camera.width, m_camera.height );
update(); update();
} }
}; };
@ -1044,7 +1046,7 @@ gboolean wheelmove_scroll( GtkWidget* widget, GdkEventScroll* event, CamWnd* cam
normalized[1] *= -1.f; normalized[1] *= -1.f;
normalized[2] = 0.f; normalized[2] = 0.f;
normalized *= 2.0f; //*= 2 * nearplane normalized *= ( camera_t::near_z * 2.f );
//globalOutputStream() << normalized << " normalized "; //globalOutputStream() << normalized << " normalized ";
matrix4_transform_point( maa, normalized ); matrix4_transform_point( maa, normalized );
//globalOutputStream() << normalized << "\n"; //globalOutputStream() << normalized << "\n";