In this assignment, you will be working with HLSL shader code, and adding the simple C++ code necessary for the Unreal Engine to be able to find shader code in the project directory.

To ease you into working with Unreal, this assignment is pretty specific about what to do. Expect that subsequent assignments will rely more and more on your ability to figure out how to do what is required. This may require searching for help online or experimenting on your own. On this and future assignments, graduate students (those taking the class as CMSC 691) will have additional component(s) that are less clearly defined and may require more research or experimentation to complete.

Assignment Goals

The primary goals of this assignment are:

  1. Gain experience with shader code.
  2. Add C++ code to a UE5 project


Here's a detailed description of what you need to do for this assignment. Numbered items are things you need to do, bullets below them are possibly helpful comments.

Create an Unreal Project

  1. Inside the UE4 Editor, create a new blank C++ project without(!!!) starter content. Call the project "assn1" (lower-case please!) and save it at the top level of your g4g2022 directory.
    • Do not choose a different name or location. We rely on the name and location to be the same for everyone to ease grading.
  2. Now would be a good time to commit a checkpoint of your progress.
    • Be sure to save in the UE4 Editor before you commit.
    • Look at what it wants you to commit before you do it (command-line: git status).
    • You will need to stage the things you want to commit (command-line: git add files).
    • This should be the assn1.uproject file, and files from the assn1/Config and assn1/Source directories. If you've waited until later to commit, you may also see files from the assn1/Content directory. The gitignore file should keep them from being included, but be sure not to commit anything from the Binaries, DerivedDataCache, Intermediate, or Saved directories.

"Do" the cloud project

  1. Save the default level with the name assn1
  2. In Settings > Project Settings, set assn1 as the Editor Startup Map, so it'll automatically go into that map/level
  3. Follow the directions from the shader walkthrough lecture to create a cloud sphere.
    • When you get to the step to create a ush file, be sure to put it into the project directory
  4. Commit along the way.

Grad Students

Do any one of the extensions listed in the last four slides of the Shader Walkthrough lecture. This part is only 10 points of the project grade, so don't turn the project in more than a day late to get it done if the rest is working.


Material Graph

Take a screen shot of your material graph, sufficient to read any material node names & values.

  1. You can either use the standard Windows/Mac screen shot tools, or the EditorScreenShot console command.
  2. Move/save this screen shot image to your assn1 directory.
  3. Remember that you need to either modify your gitignore file to include images, or force git to add them anyway with git add -f, even though they'd normally be ignored.


  1. Record a 15 second video with the camera moving around the cloud. You can use the UE5 Sequencer, windows game bar recording, or even a recorded Zoom or WebEx "meeting".
  2. Upload your video to youtube, vimeo, box, google, or other site where we'll be able to watch it.
    • Recording and sharing videos this way is a great way to show off your work, especially when looking for a job. You are unlikely to convince anyone with an ounce of security sense to download and run a random executable, but you may be able to get them to watch a short interesting video clip.

Git Submission

Make sure everything is submitted and tagged

  1. For full credit, you must commit multiple times during development. This will be part of your grade on every assignment in this class.
    • We'll be looking for your development process, so make sure the commit messages are somewhat meaningful, and at meaningful points along the way.
    • One commit per file once you are done does not count. Committing a zip of your directory does not count. Emailing me or the TA a copy of your project does not count.
  2. Add an "assn1.txt" to your assn1 directory.
    1. Include your name and campus ID at the top of this file.
    2. Describe what is and is not working in your project.
    3. Include the link to the video of your running scene, and make sure we can access it.
  3. Be sure to commit all of the necessary files: your assn1.txt, material graph image, assn1.uproject, and all uassets and umaps.
  4. Push your changes back to your personal github repository.
    • You can and should do this multiple times during development.
    • There won't be any external changes unless you're using git to work in more than one place (which you can totally do), but the usual sequence is git pull to first get anything that's changed on github, followed by git push to upload your changes.
  5. Add an assn1 tag for your final commit.
    • Git tags are typically used to mark releases. For our purposes, your completed assignment is a release.
    • Remember, you should push your changes before midnight, but can tag an existing commit after the deadline. Since it is tricky to move tags once they are made, it is probably a good idea to tag the day after your final submission.
    • If you do need to re-tag you will need to git tag -d assn1" to remove the local tag, git push --delete origin assn1 to remove the tag from github, then follow the tagging directions again to re-tag