Esempio n. 1
0
        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));
        }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
 /// <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;
 }
Esempio n. 5
0
 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();
        }
Esempio n. 7
0
        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);
 }
Esempio n. 9
0
        public void LoadViewMatrix(JCamera camera)
        {
            Matrix4 viewMatrix = JMathUtils.createViewMatrix(camera);

            base.loadMatrix(location_viewMatrix, viewMatrix);
        }