Almost removed Halibut Engine

This commit is contained in:
vladislav.khorev committed 2013-01-27 21:31:32 +00:00
1 parent 2e6989afe7
commit feef4c1453
16 files changed
+636 -426

No files matched your search

+222
View File
@@ -0,0 +1,222 @@
#include "include/Render/SalmonRender/Cameras.h"
#include "include/Engine.h"
namespace SE
{
TCameraInterface::TCameraInterface()
: CamShift(ZeroVec3)
{
CamVec = vec3(0,0,-1);
}
TPanoramicCamera::TPanoramicCamera()
: CamAlpha(0.0f)
, CamPhi(0.0f)
, CamDist(0.0f)
{
}
void TPanoramicCamera::MoveAlpha(float dAlpha)
{
if (dAlpha == 0.0f)
return;
CamAlpha += dAlpha;
while (CamAlpha >= 2*pi)
{
CamAlpha -= 2*pi;
}
while (CamAlpha<0.0f)
{
CamAlpha += 2*pi;
}
//Possibly refactor???
Renderer->CalcCamPosVec();
}
void TPanoramicCamera::MovePhi(float dPhi)
{
if (dPhi == 0.0f)
return;
//float oldCamPhi = CamPhi;
CamPhi += dPhi;
if (CamPhi > CONST_MAX_CAM_PHI)
{
CamPhi = CONST_MAX_CAM_PHI;
}
if (CamPhi < CONST_MIN_CAM_PHI)
{
CamPhi = CONST_MIN_CAM_PHI;
}
//Possibly refactor???
Renderer->CalcCamPosVec();
}
void TPanoramicCamera::MoveDist(float dDist)
{
CamDist += dDist;
if (CamDist<CONST_MIN_CAM_DIST)
{
CamDist = CONST_MIN_CAM_DIST;
}
//Possibly refactor???
Renderer->CalcCamPosVec();
}
void TPanoramicCamera::SetAlpha(float alpha)
{
if (alpha == CamAlpha)
return;
CamAlpha = alpha;
while (CamAlpha >= 2*pi)
{
CamAlpha -= 2*pi;
}
while (CamAlpha<0.0f)
{
CamAlpha += 2*pi;
}
//Possibly refactor???
Renderer->CalcCamPosVec();
}
void TPanoramicCamera::MoveForward()
{
vec3 mov;
float sina = sinf(CamAlpha);
float cosa = cosf(CamAlpha);
mov.v[0] = sina;
mov.v[1] = 0;
mov.v[2] = - cosa;
CamShift = CamShift + mov;
//Possibly refactor???
Renderer->CalcCamPosVec();
}
void TPanoramicCamera::MoveBackward()
{
vec3 mov;
float sina = sinf(CamAlpha);
float cosa = cosf(CamAlpha);
mov.v[0] = - sina;
mov.v[1] = 0;
mov.v[2] = cosa;
CamShift = CamShift + mov;
//Possibly refactor???
Renderer->CalcCamPosVec();
}
void TPanoramicCamera::MoveLeft()
{
vec3 mov;
float sina = sinf(CamAlpha);
float cosa = cosf(CamAlpha);
mov.v[0] = - cosa;
mov.v[1] = 0;
mov.v[2] = - sina;
CamShift = CamShift + mov;
//Possibly refactor???
Renderer->CalcCamPosVec();
}
void TPanoramicCamera::MoveRight()
{
vec3 mov;
float sina = sinf(CamAlpha);
float cosa = cosf(CamAlpha);
mov.v[0] = cosa;
mov.v[1] = 0;
mov.v[2] = sina;
CamShift = CamShift + mov;
//Possibly refactor???
Renderer->CalcCamPosVec();
}
void TPanoramicCamera::CalcCamVec()
{
vec3 camPos;
vec3 camVec;
float sina = sinf(CamAlpha);
float cosa = cosf(CamAlpha);
float sinp = sinf(CamPhi);
float cosp = cosf(CamPhi);
CamVec.v[0] = CamDist * cosp * sina;
CamVec.v[1] = - CamDist * sinp;
CamVec.v[2] = - CamDist * cosp * cosa;
}
void TPanoramicCamera::SetCamView()
{
Renderer->LoadIdentity();
Renderer->TranslateMatrix(vec3(0.0f, 0.0f, -CamDist));
Renderer->RotateMatrix(vec4(1.f * sin(CamPhi/2.f), 0.f, 0.f, 1.f * cos(CamPhi/2.f)));
Renderer->RotateMatrix(vec4(0.f, 1.f * sin(CamAlpha/2.f), 0.f, 1.f * cos(CamAlpha/2.f)));
Renderer->TranslateMatrix(-CamShift);
}
void TPitCamera::SetCamView()
{
Renderer->LoadIdentity();
Renderer->RotateMatrix(InverseQuat(CameraQuat));
Renderer->TranslateMatrix(-CamShift);
}
void TPitCamera::CalcCamVec()
{
vec3 r = vec3(0,0,-1);
CamVec = Normalize(CameraQuat * vec4(r) * InverseQuat(CameraQuat));
}
void TPitCamera::RotateByQuat(vec4 quat)
{
CameraQuat = quat * CameraQuat;
//float len = Length(CameraQuat);
}
} //namespace SE
+23 -298
View File
@@ -6,220 +6,6 @@
namespace SE
{
TCameraInterface::TCameraInterface()
: CamShift(ZeroVec3)
, CamVec(ZeroVec3)
{
}
TPanoramicCamera::TPanoramicCamera()
: CamAlpha(0.0f)
, CamPhi(0.0f)
, CamDist(0.0f)
{
}
void TPanoramicCamera::MoveAlpha(float dAlpha)
{
if (dAlpha == 0.0f)
return;
CamAlpha += dAlpha;
while (CamAlpha >= 2*pi)
{
CamAlpha -= 2*pi;
}
while (CamAlpha<0.0f)
{
CamAlpha += 2*pi;
}
//Possibly refactor???
Renderer->CalcCamPosVec();
}
void TPanoramicCamera::MovePhi(float dPhi)
{
if (dPhi == 0.0f)
return;
//float oldCamPhi = CamPhi;
CamPhi += dPhi;
if (CamPhi > CONST_MAX_CAM_PHI)
{
CamPhi = CONST_MAX_CAM_PHI;
}
if (CamPhi < CONST_MIN_CAM_PHI)
{
CamPhi = CONST_MIN_CAM_PHI;
}
//Possibly refactor???
Renderer->CalcCamPosVec();
}
void TPanoramicCamera::MoveDist(float dDist)
{
CamDist += dDist;
if (CamDist<CONST_MIN_CAM_DIST)
{
CamDist = CONST_MIN_CAM_DIST;
}
//Possibly refactor???
Renderer->CalcCamPosVec();
}
void TPanoramicCamera::SetAlpha(float alpha)
{
if (alpha == CamAlpha)
return;
CamAlpha = alpha;
while (CamAlpha >= 2*pi)
{
CamAlpha -= 2*pi;
}
while (CamAlpha<0.0f)
{
CamAlpha += 2*pi;
}
//Possibly refactor???
Renderer->CalcCamPosVec();
}
void TPanoramicCamera::MoveForward()
{
vec3 mov;
float sina = sinf(CamAlpha);
float cosa = cosf(CamAlpha);
mov.v[0] = sina;
mov.v[1] = 0;
mov.v[2] = - cosa;
CamShift = CamShift + mov;
//Possibly refactor???
Renderer->CalcCamPosVec();
}
void TPanoramicCamera::MoveBackward()
{
vec3 mov;
float sina = sinf(CamAlpha);
float cosa = cosf(CamAlpha);
mov.v[0] = - sina;
mov.v[1] = 0;
mov.v[2] = cosa;
CamShift = CamShift + mov;
//Possibly refactor???
Renderer->CalcCamPosVec();
}
void TPanoramicCamera::MoveLeft()
{
vec3 mov;
float sina = sinf(CamAlpha);
float cosa = cosf(CamAlpha);
mov.v[0] = - cosa;
mov.v[1] = 0;
mov.v[2] = - sina;
CamShift = CamShift + mov;
//Possibly refactor???
Renderer->CalcCamPosVec();
}
void TPanoramicCamera::MoveRight()
{
vec3 mov;
float sina = sinf(CamAlpha);
float cosa = cosf(CamAlpha);
mov.v[0] = cosa;
mov.v[1] = 0;
mov.v[2] = sina;
CamShift = CamShift + mov;
//Possibly refactor???
Renderer->CalcCamPosVec();
}
void TPanoramicCamera::CalcCamVec()
{
vec3 camPos;
vec3 camVec;
float sina = sinf(CamAlpha);
float cosa = cosf(CamAlpha);
float sinp = sinf(CamPhi);
float cosp = cosf(CamPhi);
CamVec.v[0] = CamDist * cosp * sina;
CamVec.v[1] = - CamDist * sinp;
CamVec.v[2] = - CamDist * cosp * cosa;
}
void TPanoramicCamera::SetCamView()
{
Renderer->LoadIdentity();
Renderer->TranslateMatrix(vec3(0.0f, 0.0f, -CamDist));
Renderer->RotateMatrix(vec4(1.f * sin(CamPhi/2.f), 0.f, 0.f, 1.f * cos(CamPhi/2.f)));
Renderer->RotateMatrix(vec4(0.f, 1.f * sin(CamAlpha/2.f), 0.f, 1.f * cos(CamAlpha/2.f)));
Renderer->TranslateMatrix(-CamShift);
}
void TPitCamera::SetCamView()
{
Renderer->LoadIdentity();
Renderer->RotateMatrix(InverseQuat(CameraQuat));
Renderer->TranslateMatrix(-CamShift);
}
void TPitCamera::CalcCamVec()
{
vec3 r = vec3(0,0,-1);
CamVec = Normalize(CameraQuat * vec4(r) * InverseQuat(CameraQuat));
}
void TPitCamera::RotateByQuat(vec4 quat)
{
CameraQuat = quat * CameraQuat;
//float len = Length(CameraQuat);
}
//============================================
//============================================
//============================================
@@ -273,6 +59,11 @@ void TSalmonRendererInterface::SetUniforms()
RenderUniform3fv(CONST_STRING_CAMPOS_UNIFORM, GetCamPos().v);
RenderUniform1f(CONST_STRING_TRANSPARENCY_UNIFORM, 1.f);
RenderUniform4fv(CONST_STRING_MATERIAL_COLOR_UNIFORM, WhiteColor);
ResourceManager->LightManager.SetLightUniforms();
}
@@ -289,10 +80,6 @@ void TSalmonRendererInterface::InitOpenGL(int screenWidth, int screenHeight, flo
MatrixWidth = matrixWidth;
MatrixHeight = matrixHeight;
SetPerspectiveProjectionMatrix(pi / 6.f, 1.0, 1.0f, 100.0f); //Baad =(
SetPerspectiveFullScreenViewport();
glEnable(GL_DEPTH_TEST);
#ifdef TARGET_WIN32
glEnable(GL_LIGHTING);
@@ -331,14 +118,24 @@ void TSalmonRendererInterface::SetPerspectiveFullScreenViewport()
SetPerspectiveProjectionMatrix(pi / 6.f, float(MatrixWidth) / float(MatrixHeight), 1.0f, 100.0f);
}
void TSalmonRendererInterface::SetPerspectiveProjection(float angle, float zNear, float zFar)
{
SetPerspectiveProjectionMatrix(angle, float(MatrixWidth) / float(MatrixHeight), zNear, zFar);
}
void TSalmonRendererInterface::SetOrthoFullScreenViewport()
{
glViewport(0, 0, ScreenWidth, ScreenHeight);
SetProjectionMatrix(static_cast<float>(MatrixWidth), static_cast<float>(MatrixHeight));
}
void TSalmonRendererInterface::SetOrthoProjection()
{
SetProjectionMatrix(static_cast<float>(MatrixWidth), static_cast<float>(MatrixHeight));
}
mat4 TSalmonRendererInterface::GetModelviewMatrix()
{
@@ -394,15 +191,7 @@ void TSalmonRendererInterface::SetGLCamView()
void TSalmonRendererInterface::SetGlIdentityView()
{
/*
glLoadIdentity();
glGetFloatv(GL_MODELVIEW_MATRIX,CamModelViewMatrix.m);
CamInversedModelViewMatrix = InverseModelViewMatrix(CamModelViewMatrix);
RenderUniform3fv(CONST_STRING_CAMPOS_UNIFORM, (float*)ZeroVec3.v);*/
LoadIdentity();
CamModelViewMatrix = ModelviewMatrixStack.top();
@@ -413,16 +202,6 @@ void TSalmonRendererInterface::SetGlIdentityView()
void TSalmonRendererInterface::SetGlPosXView()
{
/*
glLoadIdentity();
glRotatef ( 90.0, 0.0, 1.0, 0.0 );
glRotatef ( 180.0, 1.0, 0.0, 0.0 );
glTranslatef(-CamPos.v[0], -CamPos.v[1], -CamPos.v[2]);
glGetFloatv(GL_MODELVIEW_MATRIX,CamModelViewMatrix.m);
CamInversedModelViewMatrix = InverseModelViewMatrix(CamModelViewMatrix);*/
LoadIdentity();
RotateMatrix(vec4(0.f, 1.f * sin(pi / 4.f), 0.f, 1.f * cos(pi / 4.f)));
@@ -439,16 +218,7 @@ void TSalmonRendererInterface::SetGlPosXView()
void TSalmonRendererInterface::SetGlNegXView()
{
/*
glLoadIdentity();
glRotatef ( -90.0, 0.0, 1.0, 0.0 );
glRotatef ( 180.0, 1.0, 0.0, 0.0 );
glTranslatef(-CamPos.v[0], -CamPos.v[1], -CamPos.v[2]);
glGetFloatv(GL_MODELVIEW_MATRIX,CamModelViewMatrix.m);
CamInversedModelViewMatrix = InverseModelViewMatrix(CamModelViewMatrix);*/
LoadIdentity();
RotateMatrix(vec4(0.f, -1.f * sin(pi / 4.f), 0.f, 1.f * cos(pi / 4.f)));
@@ -464,15 +234,7 @@ void TSalmonRendererInterface::SetGlNegXView()
void TSalmonRendererInterface::SetGlPosYView()
{
/*
glLoadIdentity();
glRotatef ( -90.0, 1.0, 0.0, 0.0 );
glTranslatef(-CamPos.v[0], -CamPos.v[1], -CamPos.v[2]);
glGetFloatv(GL_MODELVIEW_MATRIX,CamModelViewMatrix.m);
CamInversedModelViewMatrix = InverseModelViewMatrix(CamModelViewMatrix);*/
LoadIdentity();
RotateMatrix(vec4(-1.f * sin(pi / 4.f), 0.f, 0.f, 1.f * cos(pi / 4.f)));
@@ -487,15 +249,7 @@ void TSalmonRendererInterface::SetGlPosYView()
void TSalmonRendererInterface::SetGlNegYView()
{
/*
glLoadIdentity();
glRotatef ( 90.0, 1.0, 0.0, 0.0 );
glTranslatef(-CamPos.v[0], -CamPos.v[1], -CamPos.v[2]);
glGetFloatv(GL_MODELVIEW_MATRIX,CamModelViewMatrix.m);
CamInversedModelViewMatrix = InverseModelViewMatrix(CamModelViewMatrix);*/
LoadIdentity();
RotateMatrix(vec4(1.f * sin(pi / 4.f), 0.f, 0.f, 1.f * cos(pi / 4.f)));
@@ -509,17 +263,7 @@ void TSalmonRendererInterface::SetGlNegYView()
void TSalmonRendererInterface::SetGlPosZView()
{
/*
glLoadIdentity();
glRotatef ( 180.0, 0.0, 1.0, 0.0 );
glRotatef ( 180.0, 0.0, 0.0, 1.0 );
glTranslatef(-CamPos.v[0], -CamPos.v[1], -CamPos.v[2]);
glGetFloatv(GL_MODELVIEW_MATRIX,CamModelViewMatrix.m);
CamInversedModelViewMatrix = InverseModelViewMatrix(CamModelViewMatrix);
*/
LoadIdentity();
RotateMatrix(vec4(0.f, 1.f * sin(pi / 2.f), 0.f, 1.f * cos(pi / 2.f)));
@@ -535,15 +279,7 @@ void TSalmonRendererInterface::SetGlPosZView()
void TSalmonRendererInterface::SetGlNegZView()
{
/*
glLoadIdentity();
glRotatef ( 180.0, 0.0, 0.0, 1.0 );
glTranslatef(-CamPos.v[0], -CamPos.v[1], -CamPos.v[2]);
glGetFloatv(GL_MODELVIEW_MATRIX,CamModelViewMatrix.m);
CamInversedModelViewMatrix = InverseModelViewMatrix(CamModelViewMatrix);*/
LoadIdentity();
RotateMatrix(vec4(0.f, 0.f, 1.f * sin(pi / 2.f), 1.f * cos(pi / 2.f)));
@@ -567,8 +303,6 @@ vec3 TSalmonRendererInterface::GetCamPos()
void TSalmonRendererInterface::SwitchToScreen()
{
glBindFramebuffer(GL_FRAMEBUFFER, 0);
SetPerspectiveFullScreenViewport();
SetGLCamView();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
@@ -583,7 +317,6 @@ void TSalmonRendererInterface::SwitchToFrameBuffer(const std::string& frameName)
SetFrameViewport(frameName);
SetGLCamView();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
}
@@ -598,15 +331,7 @@ void TSalmonRendererInterface::SwitchToCubemapBuffer(const std::string& frameNam
glBindFramebuffer(GL_FRAMEBUFFER, Frame.FrameBuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_CUBE_MAP_POSITIVE_X + cubeSide, Frame.TexID, 0);
/*
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(90, 1, 1, 100);
glViewport(0, 0, Frame.Width, Frame.Height);
glMatrixMode(GL_MODELVIEW);*/
SetPerspectiveProjectionMatrix(90, 1, 1, 100);
SetFrameViewport(frameName);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //IS A MUST!!!