907 lines
32 KiB
HTML
907 lines
32 KiB
HTML
<!DOCTYPE html>
|
||
<html lang=" en-us "class="has-navbar-fixed-top">
|
||
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
|
||
<meta name="theme-color" content="#404040">
|
||
|
||
<meta property="og:title" content="New Feature Release - Texture Cache Rewrite · yuzu" />
|
||
<meta property="og:site_name" content="yuzu" />
|
||
<meta property="og:url" content="https://yuzu-mirror.github.io/entry/yuzu-tcr/" />
|
||
<meta property="og:description" content="Hi yuz-ers! We’re very excited to offer you one of the biggest code rewrites in yuzu’s history: The Texture Cache Rewrite! Now available to our Early Access members, continue reading to learn more." />
|
||
<meta name="description" content="Hi yuz-ers! We’re very excited to offer you one of the biggest code rewrites in yuzu’s history: The Texture Cache Rewrite! Now available to our Early Access members, continue reading to learn more." />
|
||
<meta property="og:type" content="article" />
|
||
<meta property="og:image" content="https://yuzu-mirror.github.io/entry/yuzu-tcr/banner.png" />
|
||
|
||
<link rel="icon" href="https://yuzu-mirror.github.io/favicon.ico" />
|
||
<link rel="shortcut icon" href="https://yuzu-mirror.github.io/favicon.ico" type="image/x-icon" />
|
||
<link rel="canonical" href="https://yuzu-mirror.github.io/entry/yuzu-tcr/">
|
||
|
||
<title>New Feature Release - Texture Cache Rewrite - yuzu</title>
|
||
<link href="https://fonts.googleapis.com/css?family=Ubuntu|Dosis" rel="stylesheet">
|
||
<link href="https://use.fontawesome.com/releases/v6.4.0/css/all.css" rel="stylesheet">
|
||
|
||
<link rel="stylesheet" href="https://yuzu-mirror.github.io/scss/style.min.css" />
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.1/baguetteBox.min.css" type="text/css" />
|
||
|
||
|
||
|
||
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-112443698-1"></script>
|
||
|
||
|
||
<script type="text/javascript">
|
||
window.dataLayer = window.dataLayer || [];
|
||
function gtag() { dataLayer.push(arguments); }
|
||
gtag('js', new Date());
|
||
gtag('config', 'UA-112443698-1');
|
||
</script>
|
||
|
||
|
||
</head>
|
||
|
||
<body>
|
||
<nav class="navbar is-dark is-size-6 is-fixed-top" role="navigation" aria-label="main navigation">
|
||
<div class="container">
|
||
<div class="navbar-brand">
|
||
<a class="navbar-item" href="https://yuzu-mirror.github.io">
|
||
<svg xmlns="http://www.w3.org/2000/svg" class="navbar-logo" viewBox="0 0 515.83 163.11"><defs><style>.cls-1{fill:#fff;}.cls-2{fill:#ff3c28;}.cls-3{fill:#0ab9e6;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M515.83,23.23v73c0,14.5-2.24,25.24-6.84,32.82-5.92,10.15-16.2,15.32-30.53,15.32s-24.62-5.23-30.58-15.57c-4.56-7.64-6.79-18.42-6.79-32.92V23.23a4.51,4.51,0,0,1,4.51-4.51h2.28a4.51,4.51,0,0,1,4.51,4.51v72.5c0,33.53,14.88,37.4,26.07,37.4,12.14,0,26.08-4.17,26.08-36.71V23.23a4.51,4.51,0,0,1,4.51-4.51h2.27A4.51,4.51,0,0,1,515.83,23.23Z"/><path class="cls-1" d="M421.34,144.4H353.45c-2.35,0-4.72-1.88-4.72-6.08a8.32,8.32,0,0,1,1.33-4.49L410.39,29.36H360.8a4.51,4.51,0,0,1-4.51-4.5V23.28a4.51,4.51,0,0,1,4.48-4.51h.81c58.68-.11,59.11,0,59.66.07a5.19,5.19,0,0,1,4,5.8,8.74,8.74,0,0,1-1.32,3.75L363.33,133.17h58a4.51,4.51,0,0,1,4.51,4.51v2.21A4.51,4.51,0,0,1,421.34,144.4Z"/><path class="cls-1" d="M248.45,23.23v82.06c0,26-11.8,38.44-37.12,39.09h-.12a4.51,4.51,0,0,1-4.51-4.51V137.5a4.51,4.51,0,0,1,4.48-4.5c18.49-.15,26-8.23,26-27.9v-2.37a32.34,32.34,0,0,1-3.34,3.28c-6.39,5.5-14.5,8.29-24.07,8.29-22.86,0-35-12.41-35-35.89V23.23a4.52,4.52,0,0,1,4.51-4.51h2.22a4.52,4.52,0,0,1,4.5,4.51v55c0,7.6,1.82,14.22,5,18.18,3.57,4.56,9.17,6.49,18.75,6.49,10.13,0,17.32-3.76,22-11.5,3.61-5.92,5.43-13.66,5.43-23V23.23a4.52,4.52,0,0,1,4.51-4.51h2.22A4.52,4.52,0,0,1,248.45,23.23Z"/><path class="cls-1" d="M338.12,23.23v73c0,14.5-2.24,25.24-6.84,32.82-5.92,10.15-16.2,15.32-30.53,15.32s-24.62-5.23-30.58-15.57c-4.56-7.64-6.79-18.42-6.79-32.92V23.23a4.51,4.51,0,0,1,4.51-4.51h2.28a4.51,4.51,0,0,1,4.51,4.51v72.5c0,33.53,14.88,37.4,26.07,37.4,12.14,0,26.08-4.17,26.08-36.71V23.23a4.51,4.51,0,0,1,4.51-4.51h2.27A4.51,4.51,0,0,1,338.12,23.23Z"/><g id="g823"><g id="right"><g id="g827"><g id="g833"><path id="path835" class="cls-2" d="M81.56,32.62V163.11a65.25,65.25,0,0,0,0-130.49M94.3,46.91a52.54,52.54,0,0,1,0,101.91V46.91"/></g></g></g><g id="left"><g id="g839"><g id="g845"><path id="path847" class="cls-3" d="M65.24,0a65.25,65.25,0,0,0,0,130.49ZM52.5,14.29V116.2A52.52,52.52,0,0,1,28.12,28.12,52.16,52.16,0,0,1,52.5,14.29"/></g></g></g></g></g></g></svg>
|
||
</a>
|
||
|
||
<div class="burger navbar-burger is-dark" data-target="navMenu">
|
||
<span></span>
|
||
<span></span>
|
||
<span></span>
|
||
</div>
|
||
</div>
|
||
<div class="navbar-menu" id="navMenu">
|
||
<div class="navbar-start">
|
||
|
||
<a class="navbar-item px-lg" href="/entry">
|
||
Blog
|
||
</a>
|
||
|
||
<a class="navbar-item px-lg" href="/downloads">
|
||
Download
|
||
</a>
|
||
|
||
<a class="navbar-item px-lg" href="/wiki/faq">
|
||
FAQs
|
||
</a>
|
||
|
||
<a class="navbar-item px-lg" href="/game">
|
||
Compatibility
|
||
</a>
|
||
|
||
<a class="navbar-item px-lg" href="/screenshots">
|
||
Screenshots
|
||
</a>
|
||
|
||
<a class="navbar-item px-lg" href="https://www.patreon.com/yuzuteam">
|
||
Patreon
|
||
</a>
|
||
|
||
<a class="navbar-item px-lg" href="https://profile.yuzu-mirror.github.io">
|
||
Profile
|
||
</a>
|
||
|
||
|
||
<a class="navbar-item px-lg is-hidden-desktop" href="https://discord.gg/u77vRWY" target="_blank">
|
||
<i class="fab fa-discord mr-sm"></i> Discord
|
||
</a>
|
||
<a class="navbar-item px-lg is-hidden-desktop" href="https://twitter.com/yuzuemu" target="_blank">
|
||
<i class="fab fa-twitter mr-sm"></i> Twitter
|
||
</a>
|
||
<a class="navbar-item px-lg is-hidden-desktop" href="https://github.com/yuzu-mirror/yuzu" target="_blank">
|
||
<i class="fab fa-github mr-sm"></i> GitHub
|
||
</a>
|
||
</div>
|
||
|
||
<div class="navbar-end">
|
||
|
||
<a class="navbar-item px-lg is-hidden-touch" href="https://discord.gg/u77vRWY" target="_blank">
|
||
<span class="icon">
|
||
<i class="fab fa-2x fa-discord"></i>
|
||
</span>
|
||
</a>
|
||
<a class="navbar-item px-lg is-hidden-touch" href="https://twitter.com/yuzuemu" target="_blank">
|
||
<span class="icon">
|
||
<i class="fab fa-2x fa-twitter"></i>
|
||
</span>
|
||
</a>
|
||
<a class="navbar-item px-lg is-hidden-touch" href="https://github.com/yuzu-mirror/yuzu" target="_blank">
|
||
<span class="icon">
|
||
<i class="fab fa-2x fa-github"></i>
|
||
</span>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="mb-md blog-entry-header single" style="background-image: url('https://yuzu-mirror.github.io/entry/yuzu-tcr/banner_hu318a2fee22b9a0868003922b935ea81c_1172312_1280x0_resize_q99_bgffffff_box_3.jpg');background-repeat:no-repeat;background-size:contain;background-position:center;"></div>
|
||
<div class="has-text-centered">
|
||
<div>
|
||
<span class="title px-md py-sm">New Feature Release - Texture Cache Rewrite</span>
|
||
</div>
|
||
|
||
|
||
<div>
|
||
<p class="h3 px-md py-sm">
|
||
Written by <a href="https://community.citra-emu.org/u/GoldenX86/summary">GoldenX86</a>
|
||
|
||
|
||
|
||
and <a href="https://community.citra-emu.org/u/bsod_gaming/summary">BSoD Gaming</a>
|
||
|
||
on November 22 2020
|
||
</p>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
<div class="container">
|
||
<div class="columns is-centered">
|
||
<div class="column is-four-fifths">
|
||
|
||
<section class="section content pt-sm">
|
||
<br>
|
||
<p>Hi yuz-ers! We’re very excited to offer you one of the biggest code rewrites in yuzu’s history: The Texture Cache Rewrite! Now available to our Early Access members, continue reading to learn more.</p>
|
||
<h2 id="but-what-is-the-tcr">But what is the TCR?</h2>
|
||
<p>yuzu started as a fork of <a href="https://github.com/citra-emu/citra">Citra</a>, so Citra’s texture cache (or rasterizer cache, as it was called at the time) was used in the early days of yuzu. However, this cache only supported OpenGL, so one of the first efforts when adding support for <a href="https://yuzu-mirror.github.io/entry/yuzu-vulkan/">Vulkan</a> was to make the code more generic, helping in GPU emulation.</p>
|
||
<p>When this was being worked on, we were still learning how the Nintendo Switch’s GPU worked (we still are, but even more so then). Some design decisions taken at the time stuck with the codebase making things harder to change in the future. It was also easier to break with unrelated changes.</p>
|
||
<p>So out with the old, in with the new. The previous implementation was no longer sufficient, so <a href="https://github.com/ReinUsesLisp">Rodrigo</a> started working on a complete rewrite from scratch. This includes but is not limited to:</p>
|
||
<ul>
|
||
<li>Cleaner code. No more virtual calls or shared pointers, this allows for easier maintenance in the future.</li>
|
||
<li>Proper handling for texture swizzling.</li>
|
||
<li>Some operations are now done in the GPU instead of in the CPU, improving performance.</li>
|
||
<li>Control over when to destroy textures.</li>
|
||
<li>Previously, textures were removed from the cache on CPU writes, but now they are flagged as dirty. This allows yuzu to cache already visited image views and render targets, saving time.</li>
|
||
<li>Multiple textures can coexist in the same address now.</li>
|
||
<li>Aliased images are now emulated through copies on demand.</li>
|
||
<li>Rendering to compressed textures is properly emulated.</li>
|
||
<li>3D BC4 textures are emulated with RGBA8.</li>
|
||
<li>Rendering to texture views of different compatible formats is emulated without copies.</li>
|
||
</ul>
|
||
|
||
<div class="columns is-img-preview">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column has-text-centered">
|
||
|
||
<a href="./lain.png" title=" A very detailed explanation from our developer">
|
||
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/lain_hu72a9222a2273035c3fa0d17aeba6bb0c_8280_542x0_resize_q90_bgffffff_box_3.jpg" alt=" A very detailed explanation from our developer"></a>
|
||
|
||
|
||
<p class="has-text-centered is-italic has-text-grey-light"> A very detailed explanation from our developer</p>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<h2 id="ok-but-how-does-this-help">OK, but how does this help?</h2>
|
||
<p>In short: it fixes a lot of graphical bugs, improves performance, and is not limited to any hardware configuration or driver in use. Improvements for everyone, once all parts are finished.</p>
|
||
<p>Before we talk about performance, here are just a few examples of the rendering fixes you can expect to see with this release:</p>
|
||
|
||
|
||
<div class="columns is-img-preview is-bottom-marginless">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./splatoon_2_before_2.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/splatoon_2_before_2_huec3b68ec61adf0a15ec495da37082d50_2525922_800x0_resize_q90_bgffffff_box_3.jpg" alt=""></a>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./Splatoon_2_after_2.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/Splatoon_2_after_2_hu8f3689c651e4d08d7e80af73a7adcc3d_3427593_800x0_resize_q90_bgffffff_box_3.jpg" alt=""></a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="columns is-img-preview is-bottom-marginless">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./Splatoon_2_before.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/Splatoon_2_before_huec3b68ec61adf0a15ec495da37082d50_2353106_800x0_resize_q90_bgffffff_box_3.jpg" alt="Shadows in Splatoon 2 are now rendered correctly, finally allowing us to admire the beautiful cityscape"></a>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./Splatoon_2_after.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/Splatoon_2_after_huec3b68ec61adf0a15ec495da37082d50_3553546_800x0_resize_q90_bgffffff_box_3.jpg" alt="Shadows in Splatoon 2 are now rendered correctly, finally allowing us to admire the beautiful cityscape"></a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<p class="has-text-centered is-italic has-text-grey-light">Shadows in Splatoon 2 are now rendered correctly, finally allowing us to admire the beautiful cityscape</p>
|
||
|
||
|
||
|
||
|
||
<div class="columns is-img-preview is-bottom-marginless">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./LM3_before.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/LM3_before_hucbb5ea835c095620e567a63bb74a2935_2276532_800x0_resize_q90_bgffffff_box_3.jpg" alt="Lighting and stencil shadow corruption is now fixed in Luigi's Mansion 3"></a>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./LM3_After.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/LM3_After_hucbb5ea835c095620e567a63bb74a2935_2342250_800x0_resize_q90_bgffffff_box_3.jpg" alt="Lighting and stencil shadow corruption is now fixed in Luigi's Mansion 3"></a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<p class="has-text-centered is-italic has-text-grey-light">Lighting and stencil shadow corruption is now fixed in Luigi's Mansion 3</p>
|
||
|
||
|
||
|
||
|
||
<div class="columns is-img-preview is-bottom-marginless">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./AC_before_3.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/AC_before_3_huec3b68ec61adf0a15ec495da37082d50_1226964_800x0_resize_q90_bgffffff_box_3.jpg" alt=""></a>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./AC_after_3.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/AC_after_3_huec3b68ec61adf0a15ec495da37082d50_1173085_800x0_resize_q90_bgffffff_box_3.jpg" alt=""></a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="columns is-img-preview is-bottom-marginless">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./AC_Before_2.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/AC_Before_2_hu335e53870fe7489117032877e3fb8c99_2454408_800x0_resize_q90_bgffffff_box_3.jpg" alt="Astral Chain no longer exhibits black texture corruption"></a>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./AC_After_2.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/AC_After_2_hu504fabd7bb110fed7c52a4c1b1f225df_2403640_800x0_resize_q90_bgffffff_box_3.jpg" alt="Astral Chain no longer exhibits black texture corruption"></a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<p class="has-text-centered is-italic has-text-grey-light">Astral Chain no longer exhibits black texture corruption</p>
|
||
|
||
|
||
|
||
|
||
<div class="columns is-img-preview is-bottom-marginless">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./acnh_OLD.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/acnh_OLD_hu335e53870fe7489117032877e3fb8c99_2455751_800x0_resize_q90_bgffffff_box_3.jpg" alt=""></a>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./acnh_NEW.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/acnh_NEW_hu335e53870fe7489117032877e3fb8c99_2557617_800x0_resize_q90_bgffffff_box_3.jpg" alt=""></a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="columns is-img-preview is-bottom-marginless">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./acnh_OLD_2.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/acnh_OLD_2_hu335e53870fe7489117032877e3fb8c99_2611567_800x0_resize_q90_bgffffff_box_3.jpg" alt="Depth of field issues are gone in Animal Crossing: New Horizons"></a>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./acnh_NEW_2.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/acnh_NEW_2_hu335e53870fe7489117032877e3fb8c99_2610005_800x0_resize_q90_bgffffff_box_3.jpg" alt="Depth of field issues are gone in Animal Crossing: New Horizons"></a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<p class="has-text-centered is-italic has-text-grey-light">Depth of field issues are gone in Animal Crossing: New Horizons</p>
|
||
|
||
|
||
|
||
|
||
<div class="columns is-img-preview is-bottom-marginless">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./xc2b.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/xc2b_hud6e9a5f60f9e8ceaee010ec66f07b4b0_3603752_800x0_resize_q90_bgffffff_box_3.jpg" alt="Xenoblade Chronicles 2 is free from vertex explosions on AMD Vulkan drivers"></a>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./xc2f.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/xc2f_hu65bc059f294d47d5090a415d3770f56e_4309355_800x0_resize_q90_bgffffff_box_3.jpg" alt="Xenoblade Chronicles 2 is free from vertex explosions on AMD Vulkan drivers"></a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<p class="has-text-centered is-italic has-text-grey-light">Xenoblade Chronicles 2 is free from vertex explosions on AMD Vulkan drivers</p>
|
||
|
||
|
||
|
||
<div class="columns is-img-preview">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column has-text-centered">
|
||
|
||
<video preload="auto" autoplay="autoplay" muted="muted" loop="loop" webkit-playsinline="">
|
||
<source src="./torna.mp4" type="video/mp4">
|
||
Your browser doesn't support mp4 video. :(
|
||
</video>
|
||
|
||
|
||
<p class="has-text-centered is-italic has-text-grey-light"> Texture swapping & flickering issues are fixed in all Xenoblade Chronicles games</p>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<div class="columns is-img-preview is-bottom-marginless">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./smashb.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/smashb_hu4d442bf71efcad6dcbc3e48f30039935_2402226_800x0_resize_q90_bgffffff_box_3.jpg" alt=""></a>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./smashf.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/smashf_hubcdb3cf48918a9f86aa866b666e14508_2706386_800x0_resize_q90_bgffffff_box_3.jpg" alt=""></a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="columns is-img-preview is-bottom-marginless">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./smashb2.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/smashb2_hu3354340051381dec03edbc4806acaed0_2798583_800x0_resize_q90_bgffffff_box_3.jpg" alt="Jumbotrons now display correctly in Super Smash Bros. Ultimate. Here’s an example running in the radeonsi mesa OpenGL Linux drivers"></a>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./smashf2.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/smashf2_hu9b5f0a5540afbf7043b9e295904292ff_2463165_800x0_resize_q90_bgffffff_box_3.jpg" alt="Jumbotrons now display correctly in Super Smash Bros. Ultimate. Here’s an example running in the radeonsi mesa OpenGL Linux drivers"></a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<p class="has-text-centered is-italic has-text-grey-light">Jumbotrons now display correctly in Super Smash Bros. Ultimate. Here’s an example running in the radeonsi mesa OpenGL Linux drivers</p>
|
||
|
||
|
||
|
||
|
||
<div class="columns is-img-preview is-bottom-marginless">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./sf1b.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/sf1b_hudb89fcc59c9fc9517338b8fae18c5cea_1827468_800x0_resize_q90_bgffffff_box_3.jpg" alt="yuzu now has Multisample anti-aliasing (MSAA) support, as shown in SONIC FORCES here"></a>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./sf1f.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/sf1f_hu602c0c9e4499af6458f7ac89014e3b91_1818361_800x0_resize_q90_bgffffff_box_3.jpg" alt="yuzu now has Multisample anti-aliasing (MSAA) support, as shown in SONIC FORCES here"></a>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./sf2b.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/sf2b_hu1e4eb3885f200cbec502a375b9901806_2735_800x0_resize_q90_bgffffff_box_3.jpg" alt="yuzu now has Multisample anti-aliasing (MSAA) support, as shown in SONIC FORCES here"></a>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column is-bottom-paddingless">
|
||
|
||
<a href="./sf2f.png" title="">
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/sf2f_hub9226f941173d3c8cfa722cbe79ed000_2851_800x0_resize_q90_bgffffff_box_3.jpg" alt="yuzu now has Multisample anti-aliasing (MSAA) support, as shown in SONIC FORCES here"></a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<p class="has-text-centered is-italic has-text-grey-light">yuzu now has Multisample anti-aliasing (MSAA) support, as shown in SONIC FORCES here</p>
|
||
|
||
|
||
|
||
<div class="columns is-img-preview">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column has-text-centered">
|
||
|
||
<video preload="auto" autoplay="autoplay" muted="muted" loop="loop" webkit-playsinline="">
|
||
<source src="./rain.mp4" type="video/mp4">
|
||
Your browser doesn't support mp4 video. :(
|
||
</video>
|
||
|
||
|
||
<p class="has-text-centered is-italic has-text-grey-light"> Slow rainfall fixed in The Legend of Zelda: Breath of the Wild (Requires High GPU accuracy)</p>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<div class="columns is-img-preview">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column has-text-centered">
|
||
|
||
<video preload="auto" autoplay="autoplay" muted="muted" loop="loop" webkit-playsinline="">
|
||
<source src="./botw.mp4" type="video/mp4">
|
||
Your browser doesn't support mp4 video. :(
|
||
</video>
|
||
|
||
|
||
<p class="has-text-centered is-italic has-text-grey-light"> Rune transportation renders just like native hardware in The Legend of Zelda: Breath of the Wild</p>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<h2 id="but-what-about-performance">But what about performance?</h2>
|
||
<p>On top of the rendering improvements, many games show a 10-30% improvement to framerate, with greatly improved frametime stability as demonstrated below:</p>
|
||
|
||
<div class="columns is-img-preview">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column has-text-centered">
|
||
|
||
<video preload="auto" autoplay="autoplay" muted="muted" loop="loop" webkit-playsinline="">
|
||
<source src="./lm3.mp4" type="video/mp4">
|
||
Your browser doesn't support mp4 video. :(
|
||
</video>
|
||
|
||
|
||
<p class="has-text-centered is-italic has-text-grey-light"> Luigi’s Mansion 3 received some huge leaps in rendering accuracy *and* performance, notice the frametime graph</p>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<div class="columns is-img-preview">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column has-text-centered">
|
||
|
||
<video preload="auto" autoplay="autoplay" muted="muted" loop="loop" webkit-playsinline="">
|
||
<source src="./smo.mp4" type="video/mp4">
|
||
Your browser doesn't support mp4 video. :(
|
||
</video>
|
||
|
||
|
||
<p class="has-text-centered is-italic has-text-grey-light"> Super Mario Odyssey</p>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<div class="columns is-img-preview">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column has-text-centered">
|
||
|
||
<video preload="auto" autoplay="autoplay" muted="muted" loop="loop" webkit-playsinline="">
|
||
<source src="./link.mp4" type="video/mp4">
|
||
Your browser doesn't support mp4 video. :(
|
||
</video>
|
||
|
||
|
||
<p class="has-text-centered is-italic has-text-grey-light"> The Legend of Zelda: Breath of the Wild</p>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<div class="columns is-img-preview">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column has-text-centered">
|
||
|
||
<video preload="auto" autoplay="autoplay" muted="muted" loop="loop" webkit-playsinline="">
|
||
<source src="./acnh.mp4" type="video/mp4">
|
||
Your browser doesn't support mp4 video. :(
|
||
</video>
|
||
|
||
|
||
<p class="has-text-centered is-italic has-text-grey-light"> Animal Crossing: New Horizons</p>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<h2 id="current-limitations-and-future-progress">Current limitations and future progress</h2>
|
||
<p>Due to these changes, hardware lacking the <code>VK_EXT_robustness2</code> extension will not produce the optimal experience. In Windows, this includes AMD graphics cards older than Vega (Polaris and older series) and all Intel iGPUs to date. You can check the current support <a href="http://vulkan.gpuinfo.org/listdevicescoverage.php?extension=VK_EXT_robustness2&platform=windows">here</a>. Games requesting this extension on unsupported hardware may behave randomly or crash in rare instances. A fallback code path is being worked on. Make sure to be up to date with your drivers, as the GPU vendor may be able to add support in the future if the hardware allows it.</p>
|
||
<p>Originally, <code>Bindless Texture</code> support was expected to be added, but several difficulties emerged during development. One of the problems is the lack of native hardware support for ASTC texture decoding. If we used uncompressed textures, GPUs with less than 8GB of VRAM would not be able to load all the game assets, and if we recompressed them in another texture format to avoid this problem, image quality would degrade. True bindless texture support can be considered again in the future.</p>
|
||
<p><code>Depth Stencil Blits</code> are not implemented on Vulkan for devices that don’t offer native support (any AMD and Intel GPU).</p>
|
||
<p>Another complication that emerged during development is related to memory management. The idea was to release the Texture Cache Rewrite with what the team calls the <code>Texture Reaper</code>, a way to remove textures from VRAM that have not been used after some time. While this has been almost working in OpenGL during testing, managing to run Luigi’s Mansion 3 in under 300MB of VRAM, Vulkan on the other hand received no benefit.</p>
|
||
<p>Vulkan faces one main problem: it fragments the memory when textures need to be mapped to <em>contiguous</em> video memory. There’s no tolerance for fragmentation, so freeing blocks will not help at all if the next texture doesn’t fit in the new empty space. This will require the development of a VRAM defragmentation routine, work that can take quite some time. So we can say that today marks the day <code>Project Texture Reaper</code> starts.</p>
|
||
<p>A feature that will be added shortly later will be <code>Accelerated Texture Decoding</code>, which will handle any texture format via <code>Compute Shaders</code>, even formats the GPU doesn’t support natively. <a href="https://github.com/ameerj">epicboy</a> is working on the ASTC compute decoder.</p>
|
||
<p>The next project <a href="https://github.com/ReinUsesLisp">Rodrigo</a> is working on is the <code>Buffer Cache Rewrite</code>. This work promises to solve more rendering issues (for example font rendering problems) and seriously improve performance, especially on memory bandwidth starved hardware like integrated GPUs.</p>
|
||
<p>And with that, our overview of the Texture Cache Rewrite is finished! Please report any bugs or problems you face with this new feature on our <a href="https://discord.gg/u77vRWY">Discord server</a> or on our <a href="https://community.citra-emu.org/c/yuzu-support/">Forums.</a></p>
|
||
|
||
<div class="columns is-img-preview">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="column has-text-centered">
|
||
|
||
<a href="./ugg.png" title=" HONK">
|
||
|
||
|
||
<img src="https://yuzu-mirror.github.io/entry/yuzu-tcr/ugg_huf58f67e101014fb38708bdbccb43d91f_2397678_1024x0_resize_q90_bgffffff_box_3.jpg" alt=" HONK"></a>
|
||
|
||
|
||
<p class="has-text-centered is-italic has-text-grey-light"> HONK</p>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<p>
|
||
<h4 style="text-align:center;">
|
||
<b>Please consider supporting us on <a href="https://www.patreon.com/yuzuteam">Patreon</a>!<br>
|
||
If you would like to contribute to this project, check out our <a href="https://github.com/yuzu-emu/yuzu">GitHub</a>!</b>
|
||
</h4>
|
||
</p>
|
||
</section>
|
||
|
||
|
||
<div class="has-text-centered">
|
||
<a class="pagination-next" href="https://community.citra-emu.org/t/328431">Continue the discussion on our forums.</a>
|
||
</div>
|
||
|
||
|
||
|
||
</div>
|
||
<div class="column">
|
||
|
||
|
||
<div class="px-md">
|
||
|
||
<ins class="adsbygoogle"
|
||
style="display:block; margin-left:25px;"
|
||
data-ad-client="ca-pub-4126545610079023"
|
||
data-ad-slot="6276099127"
|
||
data-ad-format="auto"></ins>
|
||
<br>
|
||
<p class="is-size-6 has-text-centered">Advertisement</p>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
<div class="column">
|
||
|
||
|
||
<div class="px-md has-text-centered">
|
||
<p class="is-size-6 has-text-centered">Advertisement</p>
|
||
<br>
|
||
<ins class="adsbygoogle" style="display:inline-block;width:728px;height:100px" data-ad-client="ca-pub-4126545610079023" data-ad-slot="1038554045"></ins>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="container">
|
||
<footer class="footer">
|
||
<div class="content has-text-centered">
|
||
copyright © 2024 yuzu emulator team
|
||
</div>
|
||
</footer>
|
||
</div>
|
||
|
||
|
||
<script src="https://yuzu-mirror.github.io/js/script.min.js"></script>
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.11.1/baguetteBox.min.js" type="text/javascript"></script>
|
||
|
||
<script type="text/javascript">
|
||
window.addEventListener("DOMContentLoaded", function() {
|
||
baguetteBox.run('.is-img-preview');
|
||
});
|
||
</script>
|
||
|
||
<script type="text/javascript">
|
||
for (var i = 0; i < document.getElementsByClassName('adsbygoogle').length; i++) {
|
||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||
}
|
||
</script>
|
||
</body>
|
||
|
||
</html>
|