Software Engineer

Isa Geriler

I build efficient software, from systems to applications.

C++ & performance · Backend · Systems · Graphics

Light transport / 01C++ · CPU renderer
Kitchen interior rendered at 16 samples per pixel and denoised with Intel Open Image Denoise
16 samples per pixel + Intel OIDNExplore the renderer ↗

01 / Portfolio

Selected work

Systems, applications, graphics and games.
The results, and how I built them.

Path Tracer & Light Transport Renderer

C++ · Multithreading · Intel OIDN · Warwick · 2026

Source

I extended a CPU path tracer with light tracing, instant radiosity, and material models for metal, glass and layered surfaces. The renderer combines a Binned SAH BVH with 32 × 32 tiled rendering across CPU threads.

C++MultithreadingBVHMISPBR MathIntel OIDN
Kitchen rendered at 16 samples per pixel and denoised with Intel OIDN Kitchen reference rendered at 128 samples per pixel
128 spp reference 16 spp + OIDN

128 spp reference and 16 spp denoised with Intel OIDN. Drag the divider or use the slider to compare.
Implementation & additional renders
  • Architecture: Three integrators in one engine: Path Tracing, Light Tracing, and Instant Radiosity (which uses a Halton quasi-Monte Carlo sampler relying on prime bases for the Radical Inverse).
  • Material framework: GGX microfacets (Conductor BSDF, sampled proportionally to the NDF), Plastic (Phong), Diffuse, Oren-Nayar, Glass, Mirror, and a Layered BSDF evaluating Beer's Law for attenuation.
  • Performance: Rendering distributed across CPU threads in 32 × 32 tiles, with a Binned SAH BVH (surface area heuristic bounding volume hierarchy) to reduce geometry searches and Multiple Importance Sampling (MIS) for latitude-longitude environment maps.
  • Denoising: Integrated Intel Open Image Denoise using colour, albedo and normal buffers, producing denoised images at 16 samples per pixel across four test scenes.
Cornell Box rendered with light tracing Cornell Box rendered with path tracing
Path Tracing Light Tracing

The same Cornell Box scene rendered with different light transport methods.
Materials test scene
Materials test: GGX conductor, Plastic, Oren-Nayar, Glass, and Mirror BSDFs.

Software Rasterizer Optimisation

C++ · SIMD · Multithreading · Warwick · 2026

Source

I profiled a supplied CPU rasterizer, applied SIMD instructions, and cached transformed vertices to avoid repeated calculations. A separate thread-pool experiment explored CPU scaling across three scenes.

C++SIMD (SSE/AVX)MultithreadingPerformance Profiling
Speedup vs. thread count, peaking near 6 then degrading
Scene 3 thread-pool profiling: speedup peaks around 6 threads, then declines as more workers are added.
Benchmark context & test scenes

The thread-pool chart is a separate experiment from the sequential optimisation result. Scene 3 peaks at roughly 2.8× speedup around six threads and then declines. These results alone do not establish which cores the scheduler used or the cause of the plateau.

Rasterizer scene 1
Scene 1
Rasterizer scene 2
Scene 2
Rasterizer scene 3
Scene 3

Frontrooms

Individual game · UE5 · C++ / HLSL / Blueprints · 2026

Source

A stealth-horror game with a denoising-inspired mechanic. Standing still clears the visual noise hiding the enemies, but also allows them to approach. Visibility and player risk are directly connected.

Unreal Engine 5C++HLSLSDF Sphere TracingDenoisingGame AI
The noise clears while the player holds still, and the enemy closes the distance.
Rendering, AI & playtest iteration
  • Enemy rendering: enemies are signed distance fields sphere-traced in an HLSL shader, each with independently configurable appearance parameters, so a new silhouette is authored as SDF parameters rather than as a mesh.
  • The mechanic: screen-space noise resolves while the player holds still, tying denoise convergence directly to enemy visibility and to how much ground the enemy gains while you wait.
  • AI: enemy vision, pursuit and retreat written in C++, with debug draw visualization used to verify detection state during development.
  • Iteration: presented in fortnightly demos to staff and peers. Movement speeds were retuned and a tutorial added directly off the back of playtest feedback.

Skyfire Uprising · Level 2

Team game · UE5 · Technical art & group lead · 2026

I led the six-person Level 2 group within a 42-person international team. Alongside coordinating the group’s work and shared art direction, I built the level’s water, rain, wetness materials, fog and lighting.

Unreal Engine 5.4HLSLNiagaraPost-ProcessingVolumetric FogTeam Lead
The same courtyard in rain, with the wetness layer active A dry courtyard before the wetness layer is applied
Dry base materials Rain + wetness layer
Dry base materials compared with rain and the reusable wetness layer.
Weather, lighting & player feedback
  • Weather & materials: Gerstner wave water, a Niagara rain system with splashes and puddle accumulation, and a reusable wetness layer that darkens albedo and drops roughness across the level's surfaces.
  • Lighting & atmosphere: volumetric fog tuned across the whole level footprint, and interior lighting passes for the warehouse spaces the level routes players through.
  • Damage feedback: a full post-process state stack — a red screen-space response on taking damage, a chromatic-aberration and slice-displacement glitch on death, and a grid overlay marking respawn invulnerability.
  • Performance: Cull Distance Volumes used to scale the level's draw load across a large outdoor footprint.
Red screen-space post-process on taking damage
Taking damage
Chromatic aberration and slice displacement glitch on death
Death
Grid overlay marking respawn invulnerability
Invulnerable
One post-process stack, three readable player states: hit, dead, and briefly invulnerable after respawn.
The whole level footprint seen through volumetric fog
Volumetric fog · level footprint
Warehouse interior lighting pass
Warehouse interior lighting
Fog tuned across the full level footprint, and the interior lighting pass for the warehouses.

Software Rasterizer · Foundations

C++ · 3D maths · CPU rendering

Source

A software rasterizer built from scratch to understand the maths behind graphics APIs. I wrote the vector, matrix and homogeneous-coordinate operations, then implemented the model-view-projection pipeline, depth buffering and Lambertian lighting.

C++3D MathMVP PipelineZ-buffer
Stanford bunny geometry Stanford bunny shaded
Lambertian Shaded Wireframe / Geometry
The Stanford bunny: Lambertian shading compared with raw geometry.
Pipeline implementation

The full pipeline includes model, view and projection transforms, homogeneous-coordinate mathematics, perspective-correct interpolation, a Z-buffer and Lambertian lighting. The implementation uses a custom maths library and parses .gem meshes.

DirectX 12 Rendering Framework

C++ · DirectX 12 · HLSL · 2025

Source

A rendering framework for loading and displaying 3D models. GPU instancing draws repeated instances of each mesh in a single draw call; camera controls, normal mapping, parallax occlusion mapping and animated grass support scene exploration.

C++HLSLDirectX 12GPU InstancingRenderDoc
DirectX 12 rendering framework with roughness mapping
Render from the DirectX 12 framework. The separate DX12 Engine re-architecture remains a work in progress.
Framework features & DX12 Engine progress
  • Framework features: GPU instancing, camera controls, normal mapping, parallax occlusion mapping and animated grass.
  • Further development (WIP): my separate DX12 Engine re-architects this framework, with ongoing work on Descriptor Heaps, Root Signatures and Pipeline State Objects (PSOs).

Offline Ray Tracer

C++ · BVH acceleration · Motion blur · Work in progress

Source

A place to explore light-transport maths, built on the Ray Tracing in One Weekend architecture. I extended it with motion blur, a custom BVH, and parallel rendering and BVH sorting.

C++Ray TracingMotion BlurBVH Acceleration
Offline ray tracer with motion blur
Integrated motion blur.
Architecture & more frames

Based on Ray Tracing in One Weekend (Shirley et al., 2025). The per-pixel render loop is parallelised, and BVH sorting uses C++17’s std::execution::par. This project remains a work in progress.

A strip of frames from my ray tracer
A few frames from my own ray tracer.

Applications & networking

C++ · Networking · University of Warwick · 2026

Client-Server Chat Application

A multiuser desktop chat application built with C++, multithreading and WinSock. The server handles username validation, public broadcasts and private message routing, connected to a Dear ImGui client interface and FMOD audio notifications. Source

Python · Team Graduation Project · IEEE SIU 2025 · Isik University

Face Recognition for Authentication

Co-developed an authentication prototype using Python, OpenCV, FaceNet, Flask and PostgreSQL, with face matching, a staff dashboard, access permissions and two-factor authentication. Selected for the IEEE SIU 2025 Undergraduate Projects Competition and presented as a poster.

02 / Background

About me

C++ · Systems · Software

I’m a software engineer based in Leamington Spa, UK. My core strengths are C++, high-performance programming and systems programming, supported by a broad software engineering foundation.

Across internships and projects, I’ve built client-server applications, authentication prototypes and backend REST APIs, alongside graphics and games. This work brings together performance profiling, debugging, data handling and system design.

Education & research

MSc Games EngineeringUniversity of Warwick · WMGSeptember 2025–September 2026Dissertation submitted · Awaiting results
BSc Software EngineeringIsik UniversityAugust 2020–July 2025

Dissertation: Path Guiding in Primary Sample Space via BSDF Inversion, supervised by Dr. Thomas Bashford-Rogers.

Languages

C++ HLSL Python Java SQL

Graphics & systems

DirectX 12 ray tracing path tracing BVH acceleration MIS GGX / microfacet BSDFs SDF sphere tracing linear algebra SIMD (SSE/AVX/AVX2) multithreading profiling and debugging

Engines & tools

Unreal Engine 5 Blueprints Niagara RenderDoc Dear ImGui Intel Open Image Denoise FMOD WinSock OpenCV Git

Backend & data

Spring Boot Docker OpenAPI Flask PostgreSQL (pgvector) Microsoft SQL Server

Spoken languages

Turkish (native) English (IELTS Academic 8.0) Japanese (beginner)

03 / Contact

Let’s talk software.

Open to full-time, graduate and long-term internship opportunities in software engineering, backend, systems, graphics and engine programming.