Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void setCameraShadow(float partialTicks)
- {
- Entity viewEntity = mc.getRenderViewEntity();
- double x = viewEntity.lastTickPosX + (viewEntity.posX - viewEntity.lastTickPosX) * partialTicks;
- double y = viewEntity.lastTickPosY + (viewEntity.posY - viewEntity.lastTickPosY) * partialTicks;
- double z = viewEntity.lastTickPosZ + (viewEntity.posZ - viewEntity.lastTickPosZ) * partialTicks;
- cameraPositionX = x;
- cameraPositionY = y;
- cameraPositionZ = z;
- glGetFloat(GL_PROJECTION_MATRIX, (FloatBuffer) projection.position(0));
- SMath.invertMat4FBFA((FloatBuffer) projectionInverse.position(0), (FloatBuffer) projection.position(0), faProjectionInverse, faProjection);
- projection.position(0);
- projectionInverse.position(0);
- glGetFloat(GL_MODELVIEW_MATRIX, (FloatBuffer) modelView.position(0));
- SMath.invertMat4FBFA((FloatBuffer) modelViewInverse.position(0), (FloatBuffer) modelView.position(0), faModelViewInverse, faModelView);
- modelView.position(0);
- modelViewInverse.position(0);
- glViewport(0, 0, shadowMapWidth, shadowMapHeight);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- if (shadowMapIsOrtho)
- {
- glOrtho(-shadowMapHalfPlane, shadowMapHalfPlane, -shadowMapHalfPlane, shadowMapHalfPlane, 0.05f, 256.0f);
- }
- else
- {
- // just backwards compatibility. it's only used when SHADOWFOV is set in the shaders.
- gluPerspective(shadowMapFOV, (float) shadowMapWidth / (float) shadowMapHeight, 0.05f, 256.0f);
- }
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0.0f, 0.0f, -100.0f);
- glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
- celestialAngle = mc.theWorld.getCelestialAngle(partialTicks);
- sunAngle = (celestialAngle < 0.75f) ? celestialAngle + 0.25f : celestialAngle - 0.75f;
- float angle = celestialAngle * (-360.0f);
- float angleInterval = shadowAngleInterval > 0.0f ? (angle % shadowAngleInterval - (shadowAngleInterval * 0.5f)) : 0.0f;
- if (sunAngle <= 0.5)
- {
- // day time
- glRotatef(angle - angleInterval, 0.0f, 0.0f, 1.0f);
- glRotatef(sunPathRotation, 1.0f, 0.0f, 0.0f); //rotate
- shadowAngle = sunAngle;
- }
- else
- {
- // night time
- glRotatef(angle + 180.0f - angleInterval, 0.0f, 0.0f, 1.0f);
- glRotatef(sunPathRotation, 1.0f, 0.0f, 0.0f); //rotate
- shadowAngle = sunAngle - 0.5f;
- }
- if (shadowMapIsOrtho)
- {
- // reduces jitter
- float trans = shadowIntervalSize;
- float trans2 = trans / 2.0f;
- glTranslatef((float) x % trans - trans2, (float) y % trans - trans2, (float) z % trans - trans2);
- }
- // calculate sun or moon position
- {
- float raSun = sunAngle * (float) (Math.PI * 2);
- float x1 = (float) Math.cos(raSun);
- float y1 = (float) Math.sin(raSun);
- float raTilt = sunPathRotation * (float) (Math.PI * 2);
- float x2 = x1;
- float y2 = y1 * (float) Math.cos(raTilt);
- float z2 = y1 * (float) Math.sin(raTilt);
- if (sunAngle > 0.5)
- {
- x2 = -x2;
- y2 = -y2;
- z2 = -z2;
- }
- shadowLightPositionVector[0] = x2;
- shadowLightPositionVector[1] = y2;
- shadowLightPositionVector[2] = z2;
- shadowLightPositionVector[3] = 0;
- }
- glGetFloat(GL_PROJECTION_MATRIX, (FloatBuffer) shadowProjection.position(0));
- SMath.invertMat4FBFA((FloatBuffer) shadowProjectionInverse.position(0), (FloatBuffer) shadowProjection.position(0), faShadowProjectionInverse, faShadowProjection);
- shadowProjection.position(0);
- shadowProjectionInverse.position(0);
- glGetFloat(GL_MODELVIEW_MATRIX, (FloatBuffer) shadowModelView.position(0));
- SMath.invertMat4FBFA((FloatBuffer) shadowModelViewInverse.position(0), (FloatBuffer) shadowModelView.position(0), faShadowModelViewInverse, faShadowModelView);
- shadowModelView.position(0);
- shadowModelViewInverse.position(0);
- setProgramUniformMatrix4ARB("gbufferProjection", false, projection);
- setProgramUniformMatrix4ARB("gbufferProjectionInverse", false, projectionInverse);
- setProgramUniformMatrix4ARB("gbufferPreviousProjection", false, previousProjection);
- setProgramUniformMatrix4ARB("gbufferModelView", false, modelView);
- setProgramUniformMatrix4ARB("gbufferModelViewInverse", false, modelViewInverse);
- setProgramUniformMatrix4ARB("gbufferPreviousModelView", false, previousModelView);
- setProgramUniformMatrix4ARB("shadowProjection", false, shadowProjection);
- setProgramUniformMatrix4ARB("shadowProjectionInverse", false, shadowProjectionInverse);
- setProgramUniformMatrix4ARB("shadowModelView", false, shadowModelView);
- setProgramUniformMatrix4ARB("shadowModelViewInverse", false, shadowModelViewInverse);
- // Also render player shadow
- mc.gameSettings.thirdPersonView = 1;
- checkGLError("setCamera");
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement