Build the System

I keep Unreal Engine scenes inside their frame budget — and I measure what they cost.

Technical Artist & Game Engine Artist

Profiling and optimisation, lighting-pipeline conversions, layered material systems other artists can drive, and small C++ and Blueprint tools that take repetitive steps out of the art pipeline. Most recently a measured 34.7% GPU frame-time reduction at native 1440p, and a baked-to-Lumen conversion that cut a level from 143 dynamic shadow casters to 11.

Pune, Maharashtra, IndiaUnreal Engine 5C++ & BlueprintsCsvProfilerSubstance 3D Painter
Time of Day · runtime preset
Time of Day system — environment by Polyart Studio; the lighting conversion, presets and C++ controller are mine.

Technical Artist

What this covers

  • Unreal Engine 5 production
  • Materials, shaders & layered material systems
  • Blueprints, C++ tooling & pipeline automation
  • GPU profiling & frame-budget analysis
  • Lumen, baked lighting & Virtual Shadow Maps
  • Modular systems & efficient scene construction

Screening for 3d environment artist work instead? See the 3d environment artist portfolio →

Selected work

Selected Technical Art & Real-Time Work

Four systems and one playable prototype, each stated as the problem it addresses, the thing built to address it, and what that measurably changed. Where a number has not been captured yet, the card says so rather than rounding it off.

The cave entrance lit by the Day preset: warm sunlight raking across pale rock, a tree and flowering grass in the foreground, and the circular latticed door in cool shadow.

The Day preset applied at runtime — warm sun raking across the rock face.

Lighting Pipeline

Time of Day: Runtime Day/Night Lighting System

Unreal Engine 5.4 · C++ · Movie Render Queue

Problem
The level shipped lit exactly one way: baked, static, night. A second time of day was not a slider, it was a second bake — and the project was running DX11 with Shader Model 5, so Lumen and Virtual Shadow Maps were not disabled, they were unavailable.
Constraints
A third-party environment used as-is, in a project holding around thirty other baked levels that all had to keep working. The pack’s candle Blueprint carried a shadow-casting point light, and there were 132 instances of it.
System
Moved to DX12 and Shader Model 6, enabled Virtual Shadow Maps, set the sun, sky and every local light to Movable with the sky light on Real-Time Capture, and took the baked lighting data out of the content directory. On top of that, a C++ actor holding two instances of one struct: a preset describes an entire look — sun angle, colour, intensity, volumetric scattering, sky, fog, grade, lamp multipliers and particle visibility — and the controller applies or interpolates between them at runtime.
Result
143 dynamic shadow casters down to 11. 1.1 GB of baked lighting data removed. 49 standalone lights and 264 inside Blueprints converted to Movable. Frame time before and after has not been captured.

Measured

Dynamic shadow casters
14311
Baked lighting data removed
1.1 GB
Lights converted to Movable
49 standalone + 264 in Blueprints

Technical artist — lighting pipeline, C++ tooling, optimisation

What it taught Three bugs were worth writing down, and the most expensive was measurement rather than code: the editor viewport applies physical camera exposure and Movie Render Queue does not, so every value tuned by eye was about ten stops out when rendered.

Read the case study

Horizontal bar chart comparing GPU milliseconds per render pass before and after optimisation, measured at 2560 by 1440 on an RTX 3060. TemporalSuperResolution falls from 5.83 to 3.70 milliseconds, RenderDeferredLighting from 3.57 to 0.96, RenderVelocities from 2.65 to 0.05 and ShadowDepths from 3.70 to 2.63, while ShadowProjection rises from 2.61 to 3.09 and Prepass from 0.19 to 2.01.

Optimisation

Performance Audit

Unreal Engine 5.8 · PowerShell · Python

Problem
Optimising your own environment proves very little — if the frame gets faster and you also control the art, nobody can tell whether the win came from engineering or from quietly deleting half the foliage. The goal was a measured optimisation pass where that ambiguity is impossible.
Constraints
A third-party scene, none of it authored here, so every millisecond had to come from engineering. Measured at 2560×1440 native, Epic scalability, on an RTX 3060.
System
A benchmark harness built before any optimisation, then tested against itself before its numbers were trusted. Profiling identified the cost as the scalability preset rather than the scene: at Epic, ShadowQuality@3 sets the directional virtual-shadow-map LOD bias to −1.5, and the scene’s directional light carried a ShadowResolutionScale of 8.0 on top of it.
Result
32.99 → 44.37 average FPS, a 34.7% improvement. Frame time 30.45 → 22.60 ms, GPU time 29.60 → 21.76 ms, 1% lows 31.87 → 41.91, VRAM 4 327 → 3 790 MB. Every camera improved and the worst baseline camera improved most. The 90 FPS target was not reached.

Measured

Average FPS
32.9944.37(+34.7%)
Frame time
30.4522.60ms
GPU time
29.6021.76ms
1% low FPS
31.8741.91
VRAM
4 3273 790MB
Test conditions
2560×1440 native, Epic scalability, RTX 3060
Target
90 FPS — not reached

Sole author — benchmark harness, profiling method, optimisation decisions, QA pass

What it taught Two hypotheses died on contact with the data. Switching Lumen to software tracing was expected to be cheaper on a mid-range card and was 5.9% slower, so it was reverted.

Read the case study

The same viewport angle as the ID mask, now lit: the layered material resolved on the mesh, with the Details panel showing its single material slot.

The layered material resolved on the mesh, lit in the viewport.

Materials & Shaders

Modular Layered Material System

Unreal Engine 5 · Substance 3D Painter

Problem
Changing how an asset looks meant a round trip to Substance 3D Painter — re-texture, re-bake, re-import — and that loop gets slower the more assets share a look, because one art-direction change fans out across every texture set in the environment.
Constraints
It had to be drivable by an artist who does not want to open a material graph, and it had to cost less memory than the texture sets it replaces, not more.
System
One master material blending several material layers — base wood grains, painted metals, emissive trims — resolved inside a single material instance. An ID map assigns material properties to regions of a mesh, so the handle and the panel are addressable independently within one material. The parameters that actually get adjusted in practice are exposed on the instance: colour tint, roughness and metallic scalars, and static switches for optional features such as surface wear.
Result
Retexturing becomes a dropdown rather than a round trip, and shared tiling textures plus channel-packed masks carry the detail instead of unique bakes. No measured numbers yet: shader instruction count, texture sets replaced, texture memory and a shader-complexity capture are all outstanding.

Measured

Shader instructions
152 base pass, 119 vertex

Sole author — master material, layer set, ID-mask logic, exposed parameter interface

What it taught A system nobody else can drive is not a system.

Read the case study

Wide high-angle view of a sci-fi maintenance hangar built from a modular kit, captured in the Unreal Engine viewport, with a central lit maintenance platform, overhead gantries and yellow crane supports.

Lit with Lumen and textured from the single 4K trim sheet.

Environment Systems

Maintenance Hangar

Unreal Engine 5 · Blender · Substance 3D Painter

Problem
A hangar has to read as enormous and as functional, and those goals fight: the scale that makes a space impressive is exactly what makes it repetitive and expensive to texture, and a big open volume gives the viewer no obvious route through it.
Constraints
Industrial scale without the texture budget that usually implies. Work in progress — the images show the environment mid-development.
System
A modular kit rather than a single environment: structural trusses, floor gridding and wall panels that snap to a consistent grid. A single 4K trim sheet in place of unique bakes per beam and panel. Lumen lighting used navigationally, picking out the central maintenance platform first. And a Blueprint that instances and deforms static meshes along a 3D spline for the transit tube, recalculating segment count, orientation and spacing as the spline points move.
Result
One 4K trim sheet and one material ID across the environment. Triangle count, draw calls and frame time have not been captured.

Measured

Trim sheet
Single 4K sheet
Material IDs
One across the environment

Sole environment artist — kit design, materials, lighting, set dressing, Blueprint tooling

What it taught Scale is only legible against something already familiar — the cones, crates and terminals are placed to make the trusses read as massive.

Read the case study

Tools, Blueprints & workflows

Small things I build to speed up the work

Public, inspectable, and modest by design. These are here as evidence of implementation capability, not as a claim to software engineering.

Batch Image to Brush Asset Library

A Blender add-on that converts a folder of images into a single .blend brush asset library, with a modal progress loop so Blender stays responsive across large batches.

Written by me. Public repository, GPL-3.0.

PythonBlender 4.x add-on API
View repository

This portfolio

A static site built with Vite, React, TypeScript, Three.js and GSAP, deployed to GitHub Pages through GitHub Actions.

Directed the content, structure and art direction; built with AI assistance. Included as an honest example of how I prototype interactive web work, not as a claim to front-end engineering depth.

TypeScriptReactThree.jsGSAPVite
View repository

Real-time

A buoy, afloat

My buoy model placed in a real-time sea. The water is a sum of four directional waves evaluated on the GPU, and the buoy reads that same wave function to find its height and the slope beneath it — so it rides the surface actually being drawn.

Push it and it behaves like a moored buoy rather than a prop on a turntable: the submerged hull generates a restoring moment proportional to its tilt, so it swings past upright, overshoots, and settles.

Download the buoy model (glTF binary, 315 kB)

Technical skills

What I actually do

Listed at the depth I can defend in a portfolio review — nothing aspirational.

Unreal Engine 5

  • LightingLumen real-time GI and baked workflows
  • Materials & shadersLayered materials, ID masking, material instances
  • Real-time optimisationDraw-call reduction, virtual textures, texel-density discipline
  • GPU profiling & frame-budget analysisCsvProfiler pass breakdowns, controlled before/after benchmarking with drift control
  • Virtual Shadow Map & Lumen tuningShadow resolution bias, page budgets and Lumen quality knobs — measured, not guessed
  • Basic BlueprintsSimple interactions and art-pipeline tooling — not gameplay programming
  • Scene assembly & set dressing

AI-assisted prototyping

  • Interactive website & experience prototypes
  • UI/UX concepts and visual direction
  • Generated imagery & story structures
  • Reusable pipeline toolsSmall Python tools that remove repetitive steps
  • Implementation planning

Production & leadership

  • Leading 3D production workflows
  • Asset-quality review
  • Team coordination
  • Workflow alignment & output consistency
  • Production planning

Environment art

  • Stylised & low-poly environmentsModular kits, blockout through final dressing
  • Hard-surface & prop modellingBlender, 3ds Max, Maya, ZBrush
  • PBR texturingSubstance 3D Painter, Photoshop
  • Trim sheets & channel-packed masks
  • Scene composition & visual storytelling
  • RenderingCycles, Marmoset Toolbag, V-Ray, Arnold

Supporting tools

Godot (2D and 3D)Comfortable in the editor: scenes, nodes, the project structure and general engine concepts in both 2D and 3D. I do not write Godot scripting, and I make no claim to GDScript, C# or gameplay programming in Godot.

PythonSmall pipeline tools rather than software engineering — see the Blender add-on below. Not a claim to Unreal editor scripting yet.

Working knowledge rather than production depth — listed for accuracy, not as a headline skill.

Currently building

Nanite for environment authoringMoving my own kits onto it, beyond tuning its cost.

Unreal InsightsTimeline and trace analysis; my profiling so far has used CsvProfiler.

NiagaraReal-time VFX — no published work yet.

Python editor utilitiesExtending pipeline tooling from Blender into Unreal.

Not yet demonstrated on this site, so not claimed as a skill. Listed so the gap is visible rather than hidden.

Experience

Production and pipeline

Most of the technical-art work is consistency: setting the workflow, reviewing asset quality before it reaches the engine, and keeping output aligned as more hands touch the same scenes.

The rest is the engine itself — scene lighting, optimisation and draw-call reduction, the decisions that determine whether an environment holds its frame budget — plus Blueprint support where the art pipeline needs it.

Current role
3D Team Lead, Analyzer Tensor Technologies
Since
April 2026
Route in
Promoted from 3D Environment Artist
Based in
Pune, Maharashtra, India
CurrentApr 2026 — PresentPune, Maharashtra, India

3D Team Lead

Analyzer Tensor Technologies

  • Promoted and transferred from Analyzer CAE Solutions after the department spun out into a new company.
  • Lead 3D environment production, team coordination and real-time workflow execution.
  • Own scene lighting, optimisation and draw-call reduction, plus basic Blueprint support in Unreal Engine.
  • Manage asset quality, workflow alignment and consistency of output across the team.
Jun 2024 — Mar 2026Pune, Maharashtra, India

3D Environment Artist

Analyzer CAE Solutions Pvt. Ltd.

  • Created stylised low-poly environment assets in Blender with PBR texturing in Substance 3D Painter.
  • Lit scenes in Unreal Engine 5 using both Lumen and baked workflows.
  • Optimised environments with virtual textures, trim sheets, shaders and draw-call reduction techniques.
  • Built basic Blueprints for simple interactions and workflow needs.
Jul 2022 — Oct 2023Mehsana, Gujarat, India

3D Artist

Aswaforce Pvt. Ltd.

  • Created 3D models and textures for gaming, VR and architectural visualisation.
  • Worked across 3ds Max, Maya, Blender, the Substance tools, V-Ray, Arnold and ZBrush.
  • Collaborated with teams to integrate assets into final deliverables.
May 2021 — Mar 2022Remote

Freelance 3D Artist

Independent

  • Created mid-poly models and textures for product advertising.
  • Applied PBR workflow principles and baking methods for high-detail results.
Feb 2020 — Mar 2021Raipur, Chhattisgarh, India

EDGE Trainer

Tata ClassEdge / The Radiant Way School

  • Maintained Linux-based Tata ClassEdge systems.
  • Assisted teachers with platform usage and technical guidance.
  • Ran regular teacher training sessions.

About

Vishnu Vardhan Tekkem

I lead 3D environment production at Analyzer Tensor Technologies in Pune, where I moved with my department when it spun out of Analyzer CAE Solutions. Day to day that means owning scene lighting and optimisation, reviewing asset quality across the team, and keeping the workflow and output consistent as the project scales.

My hands-on work is stylised and low-poly environment art: modelling in Blender, PBR texturing in Substance 3D Painter, then assembly and lighting in Unreal Engine 5 with Lumen and baked workflows. The parts I enjoy most are the constraints — trim sheets, virtual textures, channel-packed masks and draw-call reduction — because that is where art direction and real-time budgets actually meet.

Alongside that I use AI tools to prototype interactive websites and digital experiences, work through UI/UX and visual directions, and build small reusable tools that take repetitive steps out of the art pipeline. I treat that as applied creative technology and execution planning rather than engineering: it is how I get a concept in front of people quickly.

Before Pune I made models and textures for gaming, VR and architectural visualisation at Aswaforce, worked freelance on product visualisation, and trained teachers on classroom technology at Tata ClassEdge. I trained in Game Art and Design Integration at MAAC Kolkata after a Bachelor of Computer Applications.

Contact

Let's talk about the work

Open to Unreal Engine environment art, technical art and real-time optimisation roles — on-site, hybrid or remote. Currently 3D Team Lead at Analyzer Tensor Technologies, Pune.

tvishnuvardhan.503@gmail.com