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
- There isn't much documentation yet, but see the canvas Wiki for information on creating custom shaders: https://github.com/grondag/canvas/wiki
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.
Hummmm......I want to develop shader with canvas, but I found that I can't understand how does it works.Is there any course to teach how to write a canvas shader?
In reply to Huajijun114514:
SpiralHalo who authored the Lumi Lights pipeline made a tutorial here: https://github.com/spiralhalo/CanvasTutorial/wiki.
I also recommend joining the discord. Quite a bit of information in the backlog there.
More material will be available when Canvas is ready for release.
In reply to GrondagTheBarbarian:
I see it, thanks
Forgive me if this sounds stupid but wouldn't it be possible to make Canvas compatible with Sodium by making a version with the rendering engine removed
My PC runs significantly worse on Canvas without Sodium and it would be really helpful if there could be some work around to make them both work together
In reply to yabadabapoop:
Canvas and Sodium both replace the Minecraft rendering pipeline. It's not a meaningful proposition to "make them compatible." Canvas development pre-dates Sodium and JellySquid and I did very briefly discuss the possibility of combining efforts somehow and concluded the mods serve different purposes. (Even so, we do occasionally compare notes.)
In the most recent Canvas build with Basic Pipeline enabled, Canvas's performance is almost as good as Sodium, depending on hardware. But the extra features available in standard pipeline or a 3rd-party pipeline like LumiLights are not free and will impact frame rate.
Can you PLEASE leave the lava as it is, don't make it HD, looks ugly.
In reply to PlasmaFox256:
Can you PLEASE not enable the extras resource pack which is deliberately made separate so that people don't have to use it. It's also very not finished.
In reply to GrondagTheBarbarian:
Everything goes black without it...
In reply to PlasmaFox256:
Have you reported that as an issue yet?
is there any onther way to make my minecraft not so laggy?
In reply to christiana_n:
The build posted today should be significantly faster, or you can try Sodium instead. Sodium doesn't have as many features but is more focused on optimization. Starlight or Phosphor + Lithium are also helpful for performance.
I like this a lot better than Optifine. Nothing crazy but works extremely well without additional texture packs.
How do i get shaders for Canvas?
In reply to Bob_da_floof:
From the description:
I suggest reading the descriptions of things before asking, just in case it's been covered. The author might get annoyed with the same question over and over, especially if they've already answered it, hence why it's probably answered in the description in the first place lol
In reply to sparrowofsong:
sorry
In reply to Bob_da_floof:
You're probably good, just wanted to let you know in case someone else in the future wouldn't be nice about it
In reply to Bob_da_floof:
Yes you can get one resource pack for Canvas called LumiLights that acts as a shader. I suggest getting cloth config api and mod menu to edit the config in game instead of looking at a config file and finding what you need to change. You have to set up in canvas settings for it to work by changing the pipeline settings from Canvas standard/basic/dev to LumiLights, then it should work. You can also get a mod called Respackopts to get a config editor in game for resource packs. Then you can edit the few settings that LumiLights has in game as well.
how do i access my post history i think i was hacked
When I install this I get huge lag spikes every second, but as soon as I press alt+f3 to pull up the performance graph they immediately vanish (although playing with the full menu from BetterF3 and the frame time graph 24/7 isn't exactly desirable). Is there any known fix for this?
In reply to SCOTT0852:
Never seen this. Would need to have a full log to know versions and which mods are present. Sounds like it may be a mod interaction.