Stencil Cat

Stencil Cat

Graphics Engineer

Graphics Engineer

Overview
Role: Graphics Programmer

Project Description: This is an in-class project for CS250-Spring-2023, featuring graphical demos using OpenGL and ImGui.

Team Name: stencil_cat

Team Members: Seongryul Park, Wonhyeong Chae

Structure: The project includes various graphics demos (e.g., procedural geometric modeling, toon shading, fog effects, noise, curves, tessellation, shadow mapping) and provides an interface for users to select and view the demos. Core graphics functionalities are implemented in C++, and the project is built using CMake.


Sep 2022 ~ June 2023

My achievements

This project successfully implemented and demonstrated several graphics topics. Each demo allows users to tweak parameters and observe the results in real-time. Key achievements include:


Procedural Geometric Modeling: Implemented demos for generating various procedural meshes like planes, cubes, spheres, tori, cylinders, and cones, with tweakable parameters for slices and stacks.


Toon/Cell Shading: Applied toon shading to models, allowing tweaking of the number of divisions, light position, and color.


Fog: Demonstrated fog effects with tweakable controls for minimum/maximum distance and light position.


Value Noise: Implemented value noise using PBO (Pixel Buffer Object), allowing control over frequency and interpolation method selection.


Gradient/Perlin Noise: Created Perlin noise texture generation using PBO and a terrain generation demo using it. Frequency is controllable.


Hermite Curves/Catmull-Rom Splines: Visualized Hermite curves and Catmull-Rom splines, allowing the addition of control points and switching between spline types.


Geometry and Tessellation Shaders: Implemented a grass generator using tessellation and geometry shaders. Allows control over grass color, length, and tessellation levels for natural grass rendering.


Shadow Mapping: Implemented shadow mapping using framebuffers, demonstrating shadow changes based on light position adjustments and allowing display of the depth texture.


Stencil Buffer: Studied and implemented a demo using the stencil buffer to draw object outlines, inspired by the team name ("stencil_cat"). Outline width and color are controllable.

Challenges

Conceptual Understanding: Grasping and correctly implementing advanced graphics concepts like shader programming, tessellation, PBOs, and shadow mapping.


Debugging: GPU-related issues and visual artifacts can be difficult to debug. The use of a glCheck macro suggests an effort to manage errors.


Performance Optimization: Optimizing complex calculations (e.g., noise generation, tessellation) for real-time rendering. Using PBOs might be an attempt at performance improvement.


Platform Compatibility and Setup: Correctly setting up and building OpenGL and related libraries (GLEW, SDL, ImGui, Assimp) across different environments. The CMakeLists.txt and build instructions in the ReadMe.md address this.

Wonhyeong Chae

Create a free website with Framer, the website builder loved by startups, designers and agencies.