Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PC×
Skip to content
World desk7 min

How Denshin Team Cut PixiJS Map Rendering from 33.9 to 3.0 Seconds

Denshin Team’s PixiJS case study shows how smaller first-frame assets and ordered background loading cut map-rendering overlay time from 33.9 to 3.0 seconds in a throttled production test.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Denshin Team reports reducing its PixiJS city-map rendering overlay from 33.9 seconds to 3.0 seconds on a throttled production build. The key was to shrink the assets required for the first frame, then stream the remaining art in an order that protected visible content. In the same test, total time until the map was up fell from 38.7 seconds to 7.8 seconds, and bytes transferred before the first frame dropped from 6.9 MB to 1.0 MB. These are the team’s measurements, not an independently reproduced benchmark.

What the timing measures—and what it does not

The case study concerns DENSHIN’s live city map, built with PixiJS v8 and arranged as a 10 × 10 grid with roads, vehicles, planes, and other players. Denshin Team says it tested a production build at 1.6 Mbps and 6× CPU slowdown. In that setup, the on-screen “RENDERING MAP” overlay lasted 33.9 seconds before the changes and 3.0 seconds afterward. The separate measure of total time until the map was up improved from 38.7 seconds to 7.8 seconds.

As an Amazon Associate I earn from qualifying purchases.

Those measures answer different questions: the overlay is not the same as the time for every desired asset to finish loading. Before the changes, a production load took 35.7 seconds to show the map and transferred 203.7 MB across 309 requests. The team says 196.1 MB of that transfer came from 62 PNG block images included in the awaited Assets.load() path. Its render pipeline accounted for 410 ms of the total, so the team focused first on reducing pre-paint downloads rather than treating the problem as primarily CPU rendering. Denshin Team’s case study.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Make the first frame wait for less

Resize and re-encode large art

The team resized block images for their displayed size, re-encoded opaque art as WebP, and made a smaller 512-pixel image set for phones. It reports reducing the desktop set to 16.6 MB and the phone set to 4.6 MB. These are the image-set sizes described in the case study, not the bytes required before first paint: the real block images were removed from the awaited bulk load so they could arrive after the map appeared.

#1 Best Overall
GIGABYTE GeForce RTX 5070 Ti Gaming OC 16G Graphics Card, 16GB 256-bit GDDR7, PCIe 5.0, WINDFORCE Cooling System, GV-N507TGAMING OC-16GD Video Card
  • Powered by the NVIDIA Blackwell architecture and DLSS 4
  • Powered by GeForce RTX 5070 Ti
  • Integrated with 16GB GDDR7 256bit memory interface
  • PCIe 5.0
  • WINDFORCE cooling system

To avoid showing empty blocks while that art streamed in, the team used one shared 494-byte blurred placeholder. This gives the renderer something lightweight to display while the higher-detail images load.

Remove assets that cannot be seen or used yet

The awaited list also included content that did not belong in the initial map. Denshin Team says 2.7 MB of asphalt debris was downloaded for renderers disabled on phones. An eager import.meta.glob had also pulled files from a disabled code path into the build; one unused block set added 70 MB across 337 files. The team removed the unused imports and manhole-cover images that were about 1,000 pixels across despite appearing at only 6–9 pixels on screen.

The case study attributes the eager-glob behavior to Vite and notes that a build flag did not remove the imported files. The practical distinction is that disabling a feature at runtime does not necessarily keep its assets out of the bundle or away from the network. Check what the production build actually includes and requests.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
ASUS Dual Radeon RX 9060 XT 16GB GDDR6 Gaming Graphics Card | PCIe 5.0, HDMI 2.1b, DisplayPort 2.1a, 2.5-slot design, Axial-tech Fans, 0dB Technology
  • Axial-tech fans now feature a smaller fan hub that facilitates longer blades and a barrier ring that increases downward air pressure
  • 2.5-slot design allows for greater build compatibility while maintaining cooling performance
  • 0dB technology lets you enjoy light gaming in relative silence
  • Dual BIOS switch lets you toggle between Quiet and Performance BIOS profiles
  • Dual ball fan bearings last up to twice as long as sleeve bearing designs

Defer in deliberate waves, not all at once

Simply moving nonessential assets later was not enough: if all deferred work started together, it competed for bandwidth and delayed useful content. Denshin Team instead sequenced background loading so each wave began after the preceding one completed.

  1. Draw the essential city: await 324 KB of road markings and overlays.
  2. Add moving and social content: load 1.1 MB of cars, planes, players, and related assets.
  3. Stream block art: prioritize blocks nearest the screen center.
  4. Load desktop-only detail: fetch 2.7 MB of asphalt debris on desktop.

With this order, the team reports that traffic finished loading in 11.7 seconds rather than 21.8 seconds under the same 1.6 Mbps throttle. It starts population work without making initialization wait for every wave. Two animation frames are allowed before deferred loading begins so the initial city can be presented; late results are applied only if the page is still active, and the art wave has a 45-second deadline.

Prioritize nearby art while limiting concurrency

The block streamer sorts pending images by distance from the screen center, checks for work every 140 ms, and limits simultaneous loads to four on desktop and two on phones. After 2.5 seconds, it removes the viewport-only filter and continues outward. These are the team’s implementation choices, not required PixiJS settings; the transferable idea is to prioritize what affects the current view and keep background requests from overwhelming it.

Rank #3
GIGABYTE GeForce RTX 5060 WINDFORCE OC 8G Graphics Card, Cooling System, 8GB 128-bit GDDR7, PCIe 5.0, Manufactured by NVIDIA, DisplayPort & HDMI - Video Output Interface, GV-N5060WF2OC-8GD Video Card
  • Powered by the NVIDIA Blackwell architecture and DLSS 4
  • Powered by GeForce RTX 5060
  • Integrated with 8GB GDDR7 128bit memory interface
  • PCIe 5.0
  • WINDFORCE cooling system

Manage textures and render targets without creating new failures

Avoid unloading textures that may be reused

An earlier version called Assets.unload() when blocks left the viewport. On a later return, the team found that loading the same alias could yield a cached texture object whose GPU source had already been destroyed. That led to a batcher crash with a null alphaMode. The team removed eviction and added a check for a missing or destroyed texture source.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For this map, its stated strategy is to keep memory bounded through texture size and count rather than unload and then reuse those texture objects. If you choose another eviction strategy, verify that the asset manager and renderer cannot hand back stale GPU-backed objects.

Estimate render-target costs before baking a whole world

Denshin Team reports mobile tab termination after creating world-sized render textures measuring about 14,848 × 14,848 pixels. At four bytes per pixel, it estimated roughly 0.8 GB for one target and about 2.5 GB for three. Those are the team’s approximate calculations for the described targets, not a universal measurement of actual GPU allocation. The team stopped making world-sized bakes on phones and drew the relevant surface as live masked sprites instead.

Rank #4
Sale
GIGABYTE Radeon RX 9070 XT Gaming OC 16G Graphics Card, PCIe 5.0, 16GB GDDR6, GV-R9070XTGAMING OC-16GD Video Card
  • Powered by Radeon RX 9070 XT
  • WINDFORCE Cooling System
  • Hawk Fan
  • Server-grade Thermal Conductive Gel
  • RGB Lighting

A useful first estimate for an uncompressed four-byte-per-pixel target is width × height × 4. Treat that as a warning-level estimate: actual resource use can differ, and multiple targets, intermediate surfaces, and other textures add to the total.

Adapt asset cost to the device; adapt effects to measured performance

The implementation uses reported navigator.deviceMemory where available, combined with a coarse pointer and a short-screen-side condition, to identify a lower-power tier. That tier selects smaller block art, avoids mipmaps, applies a matching zoom cap, and skips world-sized bakes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The team learned not to use that tier to remove visible features. It had disabled headlight beams and locked-block effects on phones, and users reported those changes as bugs. Instead, device capability selects lighter assets, while sustained frame-time measurements decide whether effects should step down.

Best Value
Sale
ASUS Dual GeForce RTX 5060 Ti 16GB GDDR7 OC Edition Gaming Graphics Card | PCIe 5.0, HDMI 2.1b, DisplayPort 2.1b, 2.5-slot, Axial-tech Fans, 0dB Technology, Dual BIOS
  • AI Performance: 767 AI TOPS
  • OC mode: 2632 MHz (OC mode)/ 2602 MHz (Default mode)
  • Powered by the NVIDIA Blackwell architecture and DLSS 4
  • Axial-tech fan design features a smaller fan hub that facilitates longer blades and a barrier ring that increases downward air pressure
  • A 2.5-slot design maximizes compatibility and cooling efficiency for superior performance in small chassis

In interleaved mobile-emulation runs at 4× CPU slowdown, Denshin Team reports that beams raised p95 frame time from 18.5 ms to about 32 ms; at 1× CPU slowdown, it saw no cost. The team kept the beams. For locked-block effects, it now steps down only when median frame time remains above 24 ms for three seconds. An earlier rule that triggered on p95 above 14 ms fired in every session, even though a session the team described as healthy had p50 of 16.7 ms and p95 of 17.6 ms.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Separate loading symptoms from rendering and lifecycle bugs

Set texture upload options before loading

The team found that setting a mipmap option after Assets.load() resolved caused a live 1,152-square texture to be uploaded again. Its fix was to pass upload options with the asset source, before loading. When a change appears to cause a late hitch or re-upload, inspect the timing of texture configuration as well as network requests.

Check filter bounds when effects clip during movement

A half-resolution blur filter without an explicit filterArea clipped part of a locked block while panning. The team isolated the cause by inspecting bounds and disabling the mask, overlay, and blur in turn. This is a useful debugging sequence when a visual artifact follows camera movement: disable effects one at a time to distinguish filter bounds from asset-loading or geometry problems.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Reduce WebGL contexts on pages with repeated live scenes

The landing page’s eight live map fragments created eight WebGL contexts. In an emulated iPhone 13 scroll-down-and-back test, the team reports 51 contexts and a 254 MB JavaScript heap, after which iOS began killing tabs. It kept the hero live and replaced the other seven fragments with still images generated from the same renderer and seed; the described scroll then created three contexts. These are observations from the team’s emulation setup, but they illustrate why multiple live canvases can create a lifecycle and memory problem that looks like a loading failure.

How to apply the approach to another PixiJS map

  1. Measure the production build: test with realistic network and CPU throttling. A localhost run can hide transfer costs and the memory behavior associated with latency.
  2. Define separate milestones: record time to first visible map, time until desired content is present, and bytes and requests awaited before first paint.
  3. Inspect the critical asset path: identify oversized files, assets for disabled renderers, and eager imports that enter the build despite an inactive code path.
  4. Make first paint self-sufficient: load only the geometry, markings, and placeholder assets needed to draw a coherent initial view.
  5. Sequence deferred work: prioritize content visible now, then add broader or lower-priority detail without saturating the network.
  6. Budget GPU surfaces: estimate render-target memory from dimensions and pixel format, and avoid world-sized targets on devices that cannot sustain them.
  7. Preserve feature parity: use device capability to choose cheaper assets, then base effect reductions on sustained frame-time data rather than a single noisy spike.

Denshin Team says its test rig could drift by as much as 2× between batches, so it interleaved frame-time runs. Its reported results are a single-team case study; no independent replication, raw dataset, or controlled comparison across named physical phones is included in the article.

Quick Recap

Bestseller No. 1
GIGABYTE GeForce RTX 5070 Ti Gaming OC 16G Graphics Card, 16GB 256-bit GDDR7, PCIe 5.0, WINDFORCE Cooling System, GV-N507TGAMING OC-16GD Video Card
GIGABYTE GeForce RTX 5070 Ti Gaming OC 16G Graphics Card, 16GB 256-bit GDDR7, PCIe 5.0, WINDFORCE Cooling System, GV-N507TGAMING OC-16GD Video Card
Powered by the NVIDIA Blackwell architecture and DLSS 4; Powered by GeForce RTX 5070 Ti; Integrated with 16GB GDDR7 256bit memory interface
$1,249.99
Bestseller No. 2
ASUS Dual Radeon RX 9060 XT 16GB GDDR6 Gaming Graphics Card | PCIe 5.0, HDMI 2.1b, DisplayPort 2.1a, 2.5-slot design, Axial-tech Fans, 0dB Technology
ASUS Dual Radeon RX 9060 XT 16GB GDDR6 Gaming Graphics Card | PCIe 5.0, HDMI 2.1b, DisplayPort 2.1a, 2.5-slot design, Axial-tech Fans, 0dB Technology
0dB technology lets you enjoy light gaming in relative silence; Dual BIOS switch lets you toggle between Quiet and Performance BIOS profiles
$529.00
Bestseller No. 3
GIGABYTE GeForce RTX 5060 WINDFORCE OC 8G Graphics Card, Cooling System, 8GB 128-bit GDDR7, PCIe 5.0, Manufactured by NVIDIA, DisplayPort & HDMI - Video Output Interface, GV-N5060WF2OC-8GD Video Card
GIGABYTE GeForce RTX 5060 WINDFORCE OC 8G Graphics Card, Cooling System, 8GB 128-bit GDDR7, PCIe 5.0, Manufactured by NVIDIA, DisplayPort & HDMI - Video Output Interface, GV-N5060WF2OC-8GD Video Card
Powered by the NVIDIA Blackwell architecture and DLSS 4; Powered by GeForce RTX 5060; Integrated with 8GB GDDR7 128bit memory interface
$494.95
SaleBestseller No. 4
GIGABYTE Radeon RX 9070 XT Gaming OC 16G Graphics Card, PCIe 5.0, 16GB GDDR6, GV-R9070XTGAMING OC-16GD Video Card
GIGABYTE Radeon RX 9070 XT Gaming OC 16G Graphics Card, PCIe 5.0, 16GB GDDR6, GV-R9070XTGAMING OC-16GD Video Card
Powered by Radeon RX 9070 XT; WINDFORCE Cooling System; Hawk Fan; Server-grade Thermal Conductive Gel
$814.99
SaleBestseller No. 5
ASUS Dual GeForce RTX 5060 Ti 16GB GDDR7 OC Edition Gaming Graphics Card | PCIe 5.0, HDMI 2.1b, DisplayPort 2.1b, 2.5-slot, Axial-tech Fans, 0dB Technology, Dual BIOS
ASUS Dual GeForce RTX 5060 Ti 16GB GDDR7 OC Edition Gaming Graphics Card | PCIe 5.0, HDMI 2.1b, DisplayPort 2.1b, 2.5-slot, Axial-tech Fans, 0dB Technology, Dual BIOS
AI Performance: 767 AI TOPS; OC mode: 2632 MHz (OC mode)/ 2602 MHz (Default mode); Powered by the NVIDIA Blackwell architecture and DLSS 4
$771.99

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.