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


Hatching


Isophotes