Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix Now×
FREEDOM251

Freedom251 › Blog › affine texture mapping

How to create PS1-style graphics with low-poly models, dithering, and texture warping

By Freedom251 Team · · 11 min read

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

To create convincing PlayStation 1-style graphics, treat the look as a rendering pipeline rather than a polygon count: model restrained silhouettes, use small unfiltered textures and vertex colors, snap vertices in screen space, apply affine texture mapping, reduce color depth, dither the result, and render internally near a 240-pixel image height. Each effect should be tuned per asset because excessive jitter, warping, or palette reduction can make characters and gameplay unreadable.

What actually creates the PS1 look

A low-poly mesh by itself produces only a simplified model. The recognizable early-3D appearance comes from several limitations working together:

As an Amazon Associate I earn from qualifying purchases.

  • Limited geometric precision: vertices are rounded or snapped in screen space, producing visible movement and “jitter” as the camera or object moves.
  • Affine texture mapping: texture coordinates are interpolated without modern perspective correction, so textures can swim or appear to bend across oblique polygons.
  • Restricted color depth: textures and lighting are reduced to a small number of tones instead of smooth gradients.
  • Dithering: adjacent pixels alternate between colors to suggest intermediate shades.
  • Small source textures and nearest-style sampling: pixels remain visible instead of being softened by filtering.
  • Low internal resolution, simple lighting, and fog: the final image has the compact, high-contrast quality associated with early 3D.

The order matters. If a scene is rendered at modern resolution with smooth textures and physically complex lighting, adding a jitter effect at the end rarely looks authentic. Establish the geometry, sampling, palette, and resolution first; use optional CRT or scanline effects only after the core image works.

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

Plan geometry for both silhouettes and texture stability

Start with readable, restrained silhouettes

Block characters, props, and architecture from simple primitives. Spend polygons where they change the outline or the way a surface bends, not uniformly across every object. A character may need more geometry around the face, hands, or joints to keep its silhouette recognizable, while a flat wall can remain a single broad surface.

#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter | 4Pack Type C Female to A Male Cable Converter for Apple Duo 17 16 15 14 Plus,iWatch Watch 12 11 10,iPad 9 8 Air,Airpods 5 4
  • Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
  • Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
  • Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
  • Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
  • 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.

Do not assume that an authentic scene must use the fewest possible polygons. The Godot PSX Style Demo notes that PlayStation-era levels could use more polygons than people often expect. The goal is a deliberate silhouette budget, not an arbitrary minimum.

Use edge loops to control affine distortion

Affine mapping is most unstable on large polygons viewed at an angle. A floor, wall, or character limb may show textures that stretch, swim, or pivot around a vertex. Add an edge loop and split the surface when that movement becomes distracting. Each smaller polygon receives its own interpolation, reducing the size of the visible error while preserving the low-poly style.

This is a control for distortion, not a rejection of the aesthetic. Mighty Duke’s shader documentation describes the original pipeline as using integer shortcuts and recommends subdividing geometry to counteract “weird floaty textures.” Subdivide only the areas that need help; adding loops everywhere can make the mesh too smooth and removes the intentional instability.

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

Decide where jitter is acceptable

Vertex snapping is especially noticeable on thin silhouettes, distant props, and diagonals. It can add character to a signpost or building but make a face or weapon difficult to read. Mark important assets as “readability first” and plan to use less snapping, more subdivision, or both on those meshes.

Prepare textures, UVs, and vertex colors

Paint small textures with intentional blocks

Use compact texture sheets and paint broad shapes rather than relying on smooth gradients. Posterizing a texture to about 15 or 16 color levels is a documented PS1-style approach in the Godot PSX Style Demo. Treat those levels as a starting point: a dark scene may need fewer tones, while a character face may need enough separation to preserve its expression.

Rank #2
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter | USB C Dongle with 90W Max Power Delivery, 3×5Gbps USB A Data Ports, for MacBook, Dell, and More (Charger Not Included)
  • 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
  • 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
  • Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
  • 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
  • What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.

Keep important value changes large enough to survive the final internal resolution. Tiny highlights, one-pixel outlines, and subtle noise can disappear or turn into flicker after snapping and downscaling.

Disable smoothing that hides the pixels

For the PS1 treatment, disable texture filtering and mipmaps in the import settings used by the material. Filtering blends neighboring texels and produces a modern soft edge; mipmaps can introduce additional resampling that changes the intended pixel blocks at distance.

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

Godot’s documentation also recommends disabling VRAM compression for pixel-art textures in 3D. Compression can alter hard color boundaries and introduce artifacts that are especially visible after palette reduction. Check the imported resource, not just the source image, because project defaults or platform-specific import overrides can re-enable an unwanted mode.

Combine textures with vertex colors

Vertex colors are useful for broad lighting, team colors, and regional variation without making every change a new texture. Godot’s documentation notes that low-poly models with plain colors can use vertex colors instead of textures. A practical split is to keep recognizable markings in a small texture and use vertex colors for large color fields or baked-looking shade changes.

Vertex colors also survive texture changes cleanly. You can recolor a prop or shift a scene’s palette while keeping the same UV layout, which is helpful when testing several mood variants.

Rank #3
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter | 85W Max PD, 2 USB 3.0 & 1 USBC Data Ports, SD/TF Card Reader, for Laptops/Mac and Other Type C Devices (Charger Not Included)
  • Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
  • Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
  • Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
  • Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
  • What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.

Build the PSX shader pipeline

Vertex snapping in screen space

Snap projected vertex positions to a coarser grid before rasterization. The coarser the grid, the more the model appears to wobble as its position changes. Start with a subtle amount and increase it while watching the asset at gameplay distance. A value that looks exciting in an editor close-up may make a distant character vibrate constantly.

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

Use separate settings for major categories when your material system allows it. Player characters, interactive items, and text-bearing signs usually need gentler snapping than background architecture.

Affine texture mapping

Enable the shader’s affine-mapping path to reproduce the perspective shortcuts associated with the original hardware. At oblique angles, the texture will not remain perfectly locked to the surface; it may appear to slide or bow. That instability is part of the style, but it must be managed with edge loops and UV layout.

If the effect makes a surface unreadable, first subdivide the affected polygon. If that is not enough, reduce the affine contribution for that material or disable it on a specific asset. Mighty Duke’s documentation explicitly presents affine mapping as an artistic control: disabling it removes the floaty effect, while subdivision lets you keep the character without allowing the distortion to dominate.

Color-depth reduction and dithering

Limit the number of available color values after texture and lighting are combined. The shader or post-process can perform this reduction consistently across the frame, while posterized source textures give you more local control.

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.
Rank #4
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray | Data transfer & Fast charging for MacBook, iPhone 17/16/15, iPad, Samsung Galaxy, Apple Watch
  • Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
  • Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
  • Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
  • Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
  • Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft

Add dithering after color reduction so neighboring pixels can imply an intermediate tone. Keep the pattern stable enough that it does not turn into crawling noise during camera movement. Compare flat areas, gradients, and skin tones separately: dithering that looks convincing in a sky can make a face look dirty.

Fog and vertex fog

Distance fog hides detail in the same way many early 3D scenes used draw-distance limits. A short, color-matched fog range also prevents distant geometry from competing with the foreground. The Godot PSX Style Demo and the PS1 / PSX Visuals asset both list fog or vertex fog among their style features.

Use fog as part of composition, not as a blanket blur. Set the near distance far enough away that the player’s feet, enemies, and interaction cues remain clear, then let the far distance merge toward the sky or background color.

Render at a deliberately small internal resolution

The Godot PSX Style Demo identifies 256×240, 320×240, and 512×240 as common reference resolutions. These numbers describe the internal image, not necessarily the monitor output. You can present the result in widescreen while keeping a similar image height, then upscale without smoothing.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Internal target Useful character Trade-off
256×240 Strongest pixel blocks and most obvious resolution limits Small text, facial features, and narrow geometry can collapse quickly
320×240 Balanced reference for readable gameplay and visible pixel structure Requires more careful art direction because extra detail can tempt modern rendering choices
512×240 Wider horizontal detail while preserving a 240-pixel image height Horizontal features may look cleaner than expected unless textures and geometry remain restrained

Choose one target before tuning the shader. Changing the internal size later changes how much snapping, texture detail, and dithering are visible. Upscale with nearest-style sampling or an equivalent point-resampling path; a smoothing filter will erase the block structure you created.

Best Value
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display | 85W Max PD, 1 Powered USB-C 5Gbps & 2 Powered USB-A 3.0 5Gbps Data Ports, for MacBook Pro, MacBook Air, Dell and More (Black)
  • 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
  • Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
  • Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
  • HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
  • What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.

Always inspect the scene at its intended gameplay size. A shader can look perfect when the editor camera is close to a model and fail when that model occupies only a few dozen pixels on screen.

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

A complete Godot workflow

  1. Block out the scene. Build the level and key props from simple meshes. Establish the camera, player scale, and major silhouettes before painting detail.
  2. Set a polygon budget by function. Keep broad surfaces simple, then add geometry where it improves a silhouette or reduces severe affine distortion.
  3. UV unwrap deliberately. Give faces that must remain legible enough texel area. Avoid extremely thin islands for important markings because they will be unstable at a small internal resolution.
  4. Paint compact textures. Use broad, posterized color groups. Reserve high-contrast marks for features that must read during play.
  5. Add vertex colors. Use them for broad color variation, simple lighting cues, or materials that do not need a texture.
  6. Configure texture import. Disable filtering and mipmaps for the PS1 treatment. For pixel-art textures in 3D, disable VRAM compression as recommended in Godot’s documentation, then reimport and verify the settings on the actual resource.
  7. Add a PSX shader or visual plugin. Enable vertex snapping, affine texture mapping, color-depth limitation, dithering, and fog. The Godot Asset Library’s PS1 / PSX Visuals entry lists these features along with Gouraud shading and vertex fog; it was submitted by snotbane on 2026-05-01.
  8. Tune one effect at a time. Turn off dithering while setting snapping, then inspect affine mapping on oblique surfaces, then choose the palette reduction and fog range. Isolating controls makes it clear which setting caused a readability problem.
  9. Subdivide only failing surfaces. Add edge loops or split large polygons where texture swimming is distracting. Recheck the silhouette after every change.
  10. Set the internal resolution. Test 256×240, 320×240, or 512×240 as appropriate for the game’s camera and text requirements. Upscale without smoothing.
  11. Strip back modern lighting. Use a small number of simple lights and let vertex colors, texture blocks, and fog carry much of the mood. Complex physically based lighting can overpower the early-3D illusion.
  12. Playtest at distance. Walk through the scene, rotate around characters, and look at signs or pickups while moving. Tune per asset instead of applying one aggressive setting globally.

How to tune the controls without losing playability

Symptom Likely control Adjustment
The whole model vibrates while standing still Vertex snapping is too coarse for the object’s screen size Use a finer snap grid or a lower amount on that material; preserve stronger snapping for background props.
A floor texture slides dramatically at an angle Large polygons combined with affine mapping Add an edge loop or split the surface before reducing the affine effect.
Faces look muddy after palette reduction Too few tones or low-contrast source texture Raise the color-depth level slightly and repaint the key value boundaries.
Flat gradients show harsh bands Color reduction without enough dithering Enable a restrained dither pass and check whether its pattern flickers during movement.
Textures look soft or smeared Filtering, mipmaps, or an upscaling filter is active Disable those paths in the texture import and final upscale settings, then reimport.
Compressed textures contain unexpected speckles VRAM compression is altering pixel-art colors Disable VRAM compression for the affected 3D pixel-art textures.
Distant objects compete with the player Fog starts too far away or lighting is too detailed Move the fog start nearer, reduce distant contrast, and simplify lighting.
Characters become hard to identify Snapping, dithering, or low resolution is overwhelming the silhouette Reduce snapping on characters, simplify the dither in their materials, or allocate more internal resolution.

Choosing an implementation in Godot

You can write a custom shader, use a visual plugin, or begin with an open-source demonstration project. Compare implementations on the properties that affect the final image rather than on a feature-count list.

Decision axis What to verify
Vertex precision Whether snapping occurs in screen space and whether its grid or strength is adjustable per material.
Affine mapping Whether perspective correction can be enabled or disabled and whether the implementation exposes a usable control for oblique surfaces.
Dithering and palette Whether color-depth reduction and dithering are separate controls, and whether they can be tuned without changing source textures.
Texture import behavior Whether the setup documents filtering, mipmaps, and compression requirements for 3D pixel-art textures.
Godot compatibility Which engine versions and rendering back ends the current package supports. Confirm this in the live listing before committing a project.
Customization Whether parameters are exposed for individual assets or only as a global effect.
License and redistribution The PS1 / PSX Visuals Asset Library entry is listed under the Unlicense, while the Godot PSX Style Demo identifies an MIT license. Read the current license text and preserve required notices before shipping.

A plugin is convenient when you want a working set of controls quickly. A custom shader is preferable when you need unusual material exceptions, a different snapping rule for characters, or tight control over how the effect interacts with your project’s render pipeline. An example project is useful for understanding the individual passes, but its defaults may not match your camera, resolution, or art direction.

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.

Lighting, fog, and post-processing choices

Keep lighting legible and economical. One broad key light, a restrained fill, and vertex-color variation often communicate form better than several modern dynamic lights. Hard transitions can be part of the style, but ensure the player can still distinguish walkable surfaces, hazards, and interactable objects.

Fog should support the palette. A blue-gray scene can fade toward a blue-gray horizon; a warm interior can fade toward its wall color. If the fog color is unrelated, it reads as a separate modern effect rather than a draw-distance limit.

Delay CRT curvature, scanlines, chromatic aberration, and film noise until the geometry and sampling already look correct. Those effects can disguise a weak PSX pipeline, reduce text clarity, and make debugging difficult. If you add them, apply them after the low-resolution upscale and provide a way to disable them during development.

Production checklist

  • Silhouettes are readable at the intended gameplay distance.
  • Polygon density is concentrated on outlines and surfaces that need affine control.
  • Large oblique polygons have edge loops where texture swimming is distracting.
  • Textures are small, posterized where appropriate, and imported without filtering or mipmaps.
  • VRAM compression is disabled for 3D pixel-art textures that need exact color blocks.
  • Vertex colors handle broad color variation instead of forcing every change into a texture.
  • Screen-space vertex snapping is visible but does not destroy character readability.
  • Affine mapping is enabled where its instability adds character and reduced where it harms clarity.
  • Color reduction and dithering are tuned together, with faces and text checked separately from gradients.
  • Internal rendering uses a deliberate target near a 240-pixel image height and upscales without smoothing.
  • Lighting remains simple, and fog controls distant contrast without obscuring gameplay cues.
  • Modern post-processing is optional and does not carry the style by itself.
  • Plugin or shader licenses and current Godot compatibility have been verified before redistribution.

Why the effects must be balanced

Authenticity is not the same as maximizing every artifact. Vertex snapping, affine warping, palette reduction, dithering, and low resolution all remove information. Applied together at full strength, they can erase the very silhouettes and landmarks the player needs. The strongest results use a stable base: clear geometry, deliberate texture blocks, and a consistent palette. Jitter and warping then provide motion and period character in the places where they help rather than compete with the game.

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

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.

affine texture mappingditheringGodotlow-poly modelingPlayStation stylePS1 graphicsvertex snapping

Leave a Reply

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

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

Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
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.