public void LoadViewMatrix(JCamera camera) { Matrix4 viewMatrix = JMathUtils.createViewMatrix(camera); base.loadMatrix(location_viewMatrix, viewMatrix); base.LoadVector(location_cameraPosition, camera.Position); }
public static Matrix4 createViewMatrix(JCamera camera) { Vector3 oppositeCameraTranslation = new Vector3(-camera.Position.X, -camera.Position.Y, -camera.Position.Z); Matrix4 returnMatrix = Matrix4.CreateRotationX(-camera.Pitch) * Matrix4.CreateRotationY(camera.Yaw) * Matrix4.Transpose(Matrix4.CreateTranslation(oppositeCameraTranslation)); return(Matrix4.Transpose(returnMatrix)); }
public JOrthoProject3D(JCamera cam) : base() { Elements[0, 0] = 1.0 / cam.Width; Elements[1, 1] = 1.0 / cam.Heigth; Elements[2, 2] = -2.0 / (cam.ZFar - cam.ZNear); Elements[2, 3] = -(cam.ZFar + cam.ZNear) / (cam.ZFar - cam.ZNear); }
/// <summary> /// Create a JMousePicker instance. JMousePicker will project a 2D screen coordinate into a 3D unit vector within the world. /// It can determine intersection with terrain as well as check for intersection with a JBoundingSphere. /// </summary> /// <param name="camera">The JCamera entity.</param> /// <param name="projectionMatrix">The JMasterRenderers Projection Matrix based off of the JCameras properties.</param> /// <param name="terrain">The JTerrain the Mouse Ray will intersect with.</param> /// <param name="gameWindow">The active JGameWindow. We need this to get it's height and width.</param> public JMousePicker(JCamera camera, Matrix4 projectionMatrix, JPerlinTerrain terrain, JGameWindow gameWindow) { Camera = camera; ProjectionMatrix = projectionMatrix; ViewMatrix = JMathUtils.createViewMatrix(camera); Terrain = terrain; GameWindow = gameWindow; }
public void Render(List <JWaterTile> waterTiles, JCamera camera, JLight light) { PrepareRender(camera, light); foreach (JWaterTile tile in waterTiles) { Matrix4 modelMatrix = JMathUtils.createTransformationMatrix(new Vector3(tile.X, tile.Height, tile.Z), 0, 0, 0, JWaterTile.TILE_SIZE); WaterShader.LoadModelMatrix(modelMatrix); GL.DrawArrays(PrimitiveType.Triangles, 0, WaterQuad.vertexCount); } Unbind(); }
public void Render(JLight light, JCamera camera, Vector4 clippingPlane) { prepare(); Shader.start(); Shader.LoadClippingPlane(clippingPlane); Shader.LoadSkyColor(skyRed, skyGreen, skyBlue); Shader.LoadLight(light); Shader.LoadViewMatrix(camera); Renderer.render(Entities); Shader.stop(); TerrainShader.start(); TerrainShader.LoadClippingPlane(clippingPlane); TerrainShader.LoadSkyColor(skyRed, skyGreen, skyBlue); TerrainShader.LoadLight(light); TerrainShader.LoadViewMatrix(camera); TerrainRenderer.Render(terrains); TerrainShader.stop(); Entities.Clear(); terrains.Clear(); }
private void PrepareRender(JCamera camera, JLight light) { WaterShader.start(); WaterShader.LoadViewMatrix(camera); distortionVariance += DISTORTION_SPEED * JGameWindow.FrameTimeSeconds(); distortionVariance %= 1.0f; WaterShader.LoadDistortionVariance(distortionVariance); WaterShader.LoadLight(light); GL.BindVertexArray(WaterQuad.vaoID); GL.EnableVertexAttribArray(0); GL.ActiveTexture(TextureUnit.Texture0); GL.BindTexture(TextureTarget.Texture2D, FrameBuffer.ReflectionTexture); GL.ActiveTexture(TextureUnit.Texture1); GL.BindTexture(TextureTarget.Texture2D, FrameBuffer.RefractionTexture); GL.ActiveTexture(TextureUnit.Texture2); GL.BindTexture(TextureTarget.Texture2D, WaterTile.ColorTexture.TextureID); GL.ActiveTexture(TextureUnit.Texture3); GL.BindTexture(TextureTarget.Texture2D, dudvMap); GL.ActiveTexture(TextureUnit.Texture4); GL.BindTexture(TextureTarget.Texture2D, normalMap); }
public void RenderScene(List <JBoundedEntity> entities, List <JEntity> staticEntities, JPerlinTerrain terrain, JLight light, JCamera camera, Vector4 clippingPlane) { processTerrain(terrain); foreach (JBoundedEntity entity in entities) { ProcessEntity(entity); ProcessEntity(entity.BoundingSphere.SphereEntity); } foreach (JEntity entity in staticEntities) { ProcessEntity(entity); } Render(light, camera, clippingPlane); }
public void LoadViewMatrix(JCamera camera) { Matrix4 viewMatrix = JMathUtils.createViewMatrix(camera); base.loadMatrix(location_viewMatrix, viewMatrix); }