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.

Like assignment 0, this assignment is still pretty explicit about what to do, though this time you'll actually be adding some C++ and HLSL code to the assn1 UE5 project.

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 UE5 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 g4g2023 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 UE5 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. Share this image in google drive, box, one drive, or similar and include the link in your assn1.txt


  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 and include the link in your assn1.txt.
    • 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.
  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 image and video links mentioned above and make sure we can access them.
  3. Be sure to commit all of the necessary files: your assn1.txt, 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, follow the directions in assn0