CV<AdrianYip>::SelectedWork::get<ShaderRenderer>()
::desc<"OpenGL Rendering Pipline for Shaders">
::stack<C++, OpenGL, GLSL>;


ShaderRenderer::overview();

A multi-pass deferred C++/OpenGL renderer showcasing a growing collection of non-photorealistic GLSL shaders, built alongside enginemath [2] and gl-profiler [3], my custom math library and GPU profiling tool. Currently features 3 distinct shaders: Cel Shading (inspired by Guilty Gear Xrd [1]), Crosshatching/Screentoned Manga Style, and an Isophote Contour Style.

The renderer features two-tone cel lighting, rim lighting, specular highlights, screen-space outlines derived from normal and depth buffers, and a ping-pong Gaussian bloom pipeline with three HDR tone mapping operators (Reinhard, GT, ACES) over models imported using Assimp [4].

I profiled the pipeline with gl-profiler (my own GPU timing tool), pinpointed bloom as the slowest pass, and cut its GPU time ~4× at quarter resolution with bilinear upsampling and no visible quality loss, holding 60+ fps at 1600×1200 on integrated AMD Radeon 610M graphics.


Normal

Genshin base render Samus base render Tangrowth base render

Cel

Genshin cel shading Samus cel shading Tangrowth cel shading

Hatching

Genshin crosshatching Samus crosshatching Tangrowth crosshatching

Isophotes

Genshin isophote contours Samus isophote contours Tangrowth isophote contours