Advertisement
Guest User

Untitled

a guest
Jan 11th, 2016
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.85 KB | None | 0 0
  1. public static void setCameraShadow(float partialTicks)
  2. {
  3. Entity viewEntity = mc.getRenderViewEntity();
  4. double x = viewEntity.lastTickPosX + (viewEntity.posX - viewEntity.lastTickPosX) * partialTicks;
  5. double y = viewEntity.lastTickPosY + (viewEntity.posY - viewEntity.lastTickPosY) * partialTicks;
  6. double z = viewEntity.lastTickPosZ + (viewEntity.posZ - viewEntity.lastTickPosZ) * partialTicks;
  7.  
  8. cameraPositionX = x;
  9. cameraPositionY = y;
  10. cameraPositionZ = z;
  11.  
  12. glGetFloat(GL_PROJECTION_MATRIX, (FloatBuffer) projection.position(0));
  13. SMath.invertMat4FBFA((FloatBuffer) projectionInverse.position(0), (FloatBuffer) projection.position(0), faProjectionInverse, faProjection);
  14. projection.position(0);
  15. projectionInverse.position(0);
  16.  
  17. glGetFloat(GL_MODELVIEW_MATRIX, (FloatBuffer) modelView.position(0));
  18. SMath.invertMat4FBFA((FloatBuffer) modelViewInverse.position(0), (FloatBuffer) modelView.position(0), faModelViewInverse, faModelView);
  19. modelView.position(0);
  20. modelViewInverse.position(0);
  21.  
  22. glViewport(0, 0, shadowMapWidth, shadowMapHeight);
  23.  
  24. glMatrixMode(GL_PROJECTION);
  25. glLoadIdentity();
  26.  
  27. if (shadowMapIsOrtho)
  28. {
  29. glOrtho(-shadowMapHalfPlane, shadowMapHalfPlane, -shadowMapHalfPlane, shadowMapHalfPlane, 0.05f, 256.0f);
  30. }
  31. else
  32. {
  33. // just backwards compatibility. it's only used when SHADOWFOV is set in the shaders.
  34. gluPerspective(shadowMapFOV, (float) shadowMapWidth / (float) shadowMapHeight, 0.05f, 256.0f);
  35. }
  36.  
  37. glMatrixMode(GL_MODELVIEW);
  38. glLoadIdentity();
  39. glTranslatef(0.0f, 0.0f, -100.0f);
  40. glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
  41. celestialAngle = mc.theWorld.getCelestialAngle(partialTicks);
  42. sunAngle = (celestialAngle < 0.75f) ? celestialAngle + 0.25f : celestialAngle - 0.75f;
  43. float angle = celestialAngle * (-360.0f);
  44. float angleInterval = shadowAngleInterval > 0.0f ? (angle % shadowAngleInterval - (shadowAngleInterval * 0.5f)) : 0.0f;
  45. if (sunAngle <= 0.5)
  46. {
  47. // day time
  48. glRotatef(angle - angleInterval, 0.0f, 0.0f, 1.0f);
  49. glRotatef(sunPathRotation, 1.0f, 0.0f, 0.0f); //rotate
  50. shadowAngle = sunAngle;
  51. }
  52. else
  53. {
  54. // night time
  55. glRotatef(angle + 180.0f - angleInterval, 0.0f, 0.0f, 1.0f);
  56. glRotatef(sunPathRotation, 1.0f, 0.0f, 0.0f); //rotate
  57. shadowAngle = sunAngle - 0.5f;
  58. }
  59. if (shadowMapIsOrtho)
  60. {
  61. // reduces jitter
  62. float trans = shadowIntervalSize;
  63. float trans2 = trans / 2.0f;
  64. glTranslatef((float) x % trans - trans2, (float) y % trans - trans2, (float) z % trans - trans2);
  65. }
  66. // calculate sun or moon position
  67. {
  68. float raSun = sunAngle * (float) (Math.PI * 2);
  69. float x1 = (float) Math.cos(raSun);
  70. float y1 = (float) Math.sin(raSun);
  71. float raTilt = sunPathRotation * (float) (Math.PI * 2);
  72. float x2 = x1;
  73. float y2 = y1 * (float) Math.cos(raTilt);
  74. float z2 = y1 * (float) Math.sin(raTilt);
  75. if (sunAngle > 0.5)
  76. {
  77. x2 = -x2;
  78. y2 = -y2;
  79. z2 = -z2;
  80. }
  81. shadowLightPositionVector[0] = x2;
  82. shadowLightPositionVector[1] = y2;
  83. shadowLightPositionVector[2] = z2;
  84. shadowLightPositionVector[3] = 0;
  85. }
  86. glGetFloat(GL_PROJECTION_MATRIX, (FloatBuffer) shadowProjection.position(0));
  87. SMath.invertMat4FBFA((FloatBuffer) shadowProjectionInverse.position(0), (FloatBuffer) shadowProjection.position(0), faShadowProjectionInverse, faShadowProjection);
  88. shadowProjection.position(0);
  89. shadowProjectionInverse.position(0);
  90.  
  91. glGetFloat(GL_MODELVIEW_MATRIX, (FloatBuffer) shadowModelView.position(0));
  92. SMath.invertMat4FBFA((FloatBuffer) shadowModelViewInverse.position(0), (FloatBuffer) shadowModelView.position(0), faShadowModelViewInverse, faShadowModelView);
  93. shadowModelView.position(0);
  94. shadowModelViewInverse.position(0);
  95.  
  96. setProgramUniformMatrix4ARB("gbufferProjection", false, projection);
  97. setProgramUniformMatrix4ARB("gbufferProjectionInverse", false, projectionInverse);
  98. setProgramUniformMatrix4ARB("gbufferPreviousProjection", false, previousProjection);
  99. setProgramUniformMatrix4ARB("gbufferModelView", false, modelView);
  100. setProgramUniformMatrix4ARB("gbufferModelViewInverse", false, modelViewInverse);
  101. setProgramUniformMatrix4ARB("gbufferPreviousModelView", false, previousModelView);
  102. setProgramUniformMatrix4ARB("shadowProjection", false, shadowProjection);
  103. setProgramUniformMatrix4ARB("shadowProjectionInverse", false, shadowProjectionInverse);
  104. setProgramUniformMatrix4ARB("shadowModelView", false, shadowModelView);
  105. setProgramUniformMatrix4ARB("shadowModelViewInverse", false, shadowModelViewInverse);
  106.  
  107. // Also render player shadow
  108. mc.gameSettings.thirdPersonView = 1;
  109. checkGLError("setCamera");
  110. return;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement