$24
Implement the Phong-Blinn reflection model in the fragment shader, treating the texture colour as surface albedo (Hint: you need camera position in the fragment shader for specular reflection). (10%)
Place a few 3D models onto the procedural terrain, elevate them as the terrain goes up, and rotate them so they seem to be upright on their local surface. (Hint: you need to calculate the local normalof the procedure terrain). (10%)
Assignment 2 – Advanced Requirements (up to 30%)
Add fractal Perlin noise to the heightfield and create height variation details on different scales. (5%)
Make a moveable camera so you can fly through the scene and examine your terrain Yfrom any point of view. (5%)
Scatter more models on to your mini-terrain, for example, other houses and little
towers. When place then randomly, write code to ensure that they don’t overlap each other. (5%)
✓● Extend the procedural terrain to infinity (or to a very large area such that it looks like infinite) while keeping a reasonable rendering performance. (10%)
Add reflections to the water that not only reflects the skybox but also the mountains/placed 3D models above the water. (10%)
Add ripple effect to the water. (5%)
✓● Desaturate everything in the scene according to a fragment’s distance to the camera, such that far away terrain & objects appear grey-ish and things closer to the camera have more vibrant colour. (Hint: you need a method to adjust a pixel’s saturation only, without changing its hue or luminance.) (10%)
✓● Add moving sun and clouds in the skybox, create a day/night cycle. (10%)
Create atmospheric rendering effects for the environment – adjust the sunlight colour, cloud colour, reflection and shadows according to the simulated time of the day and the sun’s height from the horizon. (10%)
Add interactive terrain editing features: when a user clicks on part of the terrain, s/he can use the mouse to drag the terrain up and down. Surface features such as water definition, texturing and small models must be updated in real time according to the editing. (10%)
Feel free to propose your own ideas and improvements for Advanced Requirements. Your instructor/TA will assign a point value after discussing the idea with you.