Nikolaus Amstler
Shader Village

Information

  • Visibility: hidden
  • Publication Type: Ongoing Student Project
  • Workgroup(s)/Project(s):
  • Date: ongoing
  • Date (Start): 1. November 2025
  • Date (End): 1. July 2026
  • Second Supervisor: Annalena UlschmidORCID iD
  • Matrikelnummer: 12023991
  • First Supervisor: Michael WimmerORCID iD

Abstract

The goal of this project is to develop a game that teaches the fundamentals of shader programming in an interactive and engaging way. Players build and customize a village populated with houses, NPCs, environmental elements, and decorative objects. Buildings can be freely placed, and specific predefined parts of them can be visually modified. Customization is achieved through a Scratch-inspired visual scripting system, where nodes represent functions and variables. By connecting these nodes, players create shader logic without writing code directly. NPCs guide players through a series of progressively more challenging quests and tutorials. These introduce both the practical use of individual functions and the underlying logic of shader programming. The primary focus is on fragment shader programming, particularly procedural materials and lighting models, as well as compute shader programming for particle systems. Because Unity does not allow shaders to be compiled at runtime, the project implements a lightweight virtual machine written in compute shaders. This virtual machine interprets a user-generated node graph encoded as a texture, enabling real-time visual updates based on the player’s visual scripts.

Additional Files and Images

No additional files or images.

Weblinks

No further information available.

BibTeX

@runstudentproject{Ams25,
  title =      "Shader Village",
  author =     "Nikolaus Amstler",
  year =       "2025",
  abstract =   "The goal of this project is to develop a game that teaches
               the fundamentals of shader programming in an interactive and
               engaging way. Players build and customize a village
               populated with houses, NPCs, environmental elements, and
               decorative objects. Buildings can be freely placed, and
               specific predefined parts of them can be visually modified.
               Customization is achieved through a Scratch-inspired visual
               scripting system, where nodes represent functions and
               variables. By connecting these nodes, players create shader
               logic without writing code directly. NPCs guide players
               through a series of progressively more challenging quests
               and tutorials. These introduce both the practical use of
               individual functions and the underlying logic of shader
               programming. The primary focus is on fragment shader
               programming, particularly procedural materials and lighting
               models, as well as compute shader programming for particle
               systems. Because Unity does not allow shaders to be compiled
               at runtime, the project implements a lightweight virtual
               machine written in compute shaders. This virtual machine
               interprets a user-generated node graph encoded as a texture,
               enabling real-time visual updates based on the player’s
               visual scripts. ",
  month =      nov,
  URL =        "https://www.cg.tuwien.ac.at/research/publications/2025/Ams25/",
}