GLSL Terrain Assessment

This document outlines the requirements of a terrain rendering prototype you must write using C++/SFML/GLSL.

This can be two person project, you are free to choose a project partner. You MUST show a work break-down between the two team members. All parts need to be complete.

You can do this project on your own, in which case you need only do parts 1,3,4,5,6,7,8,9 & 10.

Requirements

(I strongly recommend that you tackle these in the given order)

  1. Use opengl to create a square mesh/grid with at least 2000 triangles lying on the x-z plane (i.e. a 100 x 100 grid of squares)(take note of part 10 when doing this)
  2. Add a key stroke function which will change subdivisions of the grid to be 10x10. This should not change the overall size of the mesh
  3. Implement a free camera
  4. Each vertex on the grid should have an appropriate texture coordinate using glTexCood2D()
  5. Render your grid using a minimal shader
  6. Create a smooth greyscale height map of your own design, it should incorporate mountains & valleys. There should be a flat area representing sea/water(about 25% of overall) with a value zero (pure black). There must be at least some areas with values above 0.95 (mountain tops)
  7. In a vertex shader, modulate the y-coordinate of each vertex to be proportional to the value of the corresponding textel  in the height map.
  8. find or create 3 texture maps (sea-surface, grass, snowy-rocks)
  9. apply all 3 of the texture maps to the surface only in the following areas
  10. add a light source (not positioned directly overhead) and add diffuse lighting to the scene
  11. add easy to see specular light to the area of sea texture (nowhere else)
  12. lighting should be “per-pixel”
  13. areas where two textures overlap, there should be a blended transition

Marking

This assessment will be worth 10% and will be marked separately by code review and a mini-viva.

Handup

Due Date 5:00 pm, Monday 24th February, via github


Marking

This assessment will be worth 10% and will be marked separately by code review and a mini-viva.

I expect that the work will be distributed equally among the team members. Keep a log of who did what in the group. Note that the final end-of-year exam will feature some questions based on the problems you will have encountered during this project.