Canvas Renderer

Canvas Renderer

202k Downloads

IMPORTANT:  Canvas is in an extended BETA.  Expect missing features and bugs.
All new development is targeting MC 1.17.  No new features or improvements will be added for 1.16.

Visit Grondag's Discord for news, dev snapshot builds, and planned features: Discord: https://discord.gg/7NaqR2e

Help me buy test equipment on Ko-Fi: https://ko-fi.com/grondag

What is Canvas?

When people first hear about Canvas they often ask if it is a performance mod or a replacement for Optifine / shader packs. The answer is "no, but..."

Optifine and shader packs primarily target vanilla Minecraft. They work with modded, often well, but they aren't designed as tools for *mod authors*.

Canvas' main purpose is to give mod authors more control and options for rendering modded blocks. It can also be used for building shader packs, but the design is entirely different than OF and does not yet support all the features needed for a full shader pack implementation. Unlike OF shader packs, Canvas shader packs can be mixed together by adding multiple resource packs.

How is Performance?

Performance-wise, Canvas tries to be be faster than Vanilla with extended features. It is optimized heavily - but the intent of these changes is to make better rendering practical, not to be a general-purpose performance mod. It isn't meant to run on low-end hardware and may or may not make your game run faster overall.

Canvas will try to fully use your hardware and will not be timid about it. It wants at least 4GB and will push both your CPU and GPU. It will stress your cooling system.

If you're looking to max performance with Canvas, the config menu tool tips indicate which features can help. Bloom is especially expensive at high resolutions. But bloom is also fun to look at, so.... your call.

More optimizations will be added after a stable release.

Playing with Canvas

Add Canvas to your mods folder and make sure you have recent versions of Fabric Loader and API, plus at least 4GB of memory allocated to Minecraft. An in-game config menu is available in video options, or via Mod Menu if you have it installed.

Is Canvas Compatible with Sodium?

This question gets asked a lot.  Canvas and Sodium will never be compatible because both mods more or less replace the rendering engine.  Both mods will give you better rendering performance than Vanilla/Indigo but Sodium is significantly faster with most hardware and drivers. 

Sodium and Canvas serve different purposes and audiences.  Sodium is a performance mod that uses shaders to optimize and also offers some nice visual improvements.  Canvas is a shaders mod with enough optimization to give good performance.

Canvas has extensive optimizations and more are being added - but the gains are used to support new features. You could turn off all the aesthetic features of Canvas and it would be an OK optimization mod, but then you'd probably be better off using Sodium.  Sodium's existence has improved Canvas by allowing me to focus on features and not also try to accommodate users who mainly want performance improvement 

If you're playing with mods that use the Fabric rendering API or want the visual improvements that are being added to Canvas then try Canvas.  (Sodium will eventually support the rendering API also.) If you don't need those and want the best possible performance then you should try Sodium.

No matter which renderer you choose, you should definitely be using other optimization mods available from CaffeineMC: Lithium and Phosphor.  Canvas is compatible with both.

Are Optifine shaders be compatible with Canvas?

No. Canvas shaders are more modular and also more tightly integrated with the renderer to provide control for mod authors that want to use shaders for their content. When Canvas is feature complete, some existing shaders could probably be ported with moderate effort.

"Some" and "probably" are in that last sentence because Canvas will necessarily make some choices about the pipeline design that may force a rethink of current approaches, though I aim to make it as flexible as possible.

Does Canvas allow third party shader development?

Yes, third parties are encouraged to write shaders for Canvas. The shaders are just assets. However the structure of the shader code is more modular and the setup is different.

For example, Canvas lets you define materials and assign those to quads either via JAVA or using a JSON block : sprite : material maps. Each material can have separate shader functions. This can be done piece-wise - different mods or resource packs can contribute different/partial shaders and material maps. Canvas invokes the appropriate shader functions automatically for each quad. 

However, I don't expect third-party shaders to be available until Canvas is more feature complete.  Canvas does however come with a default shader pack that currently adds a bloom effect for most emissive blocks and wavy foliage was just added. More is coming soon.

Update: there is now a resource pack that adds support for some Canvas features (bloom, mostly) to other mods:
https://www.curseforge.com/minecraft/texture-packs/more-canvas-compat/screenshots

The Traverse and Terrestria biome mods also support wavy grass.

Mod Authors and Pack Makers

The discord is also a good resource.


Finding Bugs

I test Canvas on OSX, Windows 10 and Ubuntu 18.04.2.  I do not have the means to test on many hardware/OS combinations so bug reports are appreciated. Please include full logs.