Git Product home page Git Product logo

nova-renderer's Introduction

Nova Renderer

A complete replacement for Minecraft's renderer

Follow us on Twitter!
Talk to us on Discord!
There's even a blog now!

Development status

The Nova Renderer is currently early in development, so early that I don't think there's anything worth releasing. Yes, you can download the code and try running it yourself, but you have to make some changes to the Minecraft source code to add in hooks for Nova.

If you want to see what we have planned, or what has already been done, check out our Projects.

End Goal

Everything from here on out describes what the Nova Renderer will look like during version 1.0. This doesn't necessarily reflect the current status of the project. Check our Projects. to see the current status of the Nova Renderer.

The Nova Renderer is a complete replacement for Minecraft's default renderer. Minecraft's renderer is nice and all, but it's written in Java (ugh) using the ancient OpenGL 2.1 API. Additionally, the Minecraft Shaders Mod does a number of things in strange ways, and, while incredible, isn't the best-designed code. This mod seeks to fix those problems.

Built to run fast

The Nova Renderer is written in C++ for a couple reasons. First and foremost, I like C++ better than Java. The way I see it, Java treats you like a child, like you'll hurt yourself if left alone too long, while C++ respects you as an adult and trusts you to make your own decisions. Additionally, optimized C++ can run faster than Java since C++ doesn't require the overhead of a virtual machine (Although the JVM is much better than it used to be).

The choice of language is not the only performance-oriented decision I made. The architecture of the code itself also lend itself to speed. I utilize data-oriented-design to design my data structures such that the CPU can deal with them really quickly. I also take full advantage of OpenGL 4.5's features, like the glMultiDrawIndirect function, in order to ensure as little driver overhead as possible.

Full of features

The Nova Renderer has a number of awesome features. Like the Shaders Mod before it, the Nova Renderer allows a user to use shaderpacks, collections of graphics code that alter the way Minecraft looks. Shaderpacks can control every aspect of the rendering process, from water simulation to lighting to post-processing. Shaders can add in shadows, depth of field, physically based rendering, realtime reflections, and a ton of other things. Both Nova and the Shaders Mod support all that.

However, Nova adds in a number of other features, starting with version 1.1. It creates a new shader for block lights, like torches or glowstone, allowing for per-pixel lighting from all light sources and shadows from the closest light sources. Nova adds in a number of new uniform variables, giving shaderpack developers even more power to implement high-quality graphics. Nova brings forth support for tessellation and geometry shaders, allowing for techniques like true displacement mapping and stencil buffer shadows. Nova version 2 will focus on compatibility with existing mods and will provide a way for users to customize the geometry used for each block and entity and define different particle systems. Version 3 brings in compute shaders, allowing for incredibly advanced effects, like order-independent transparency and full scene raytracing. Additionally, Nova will stay up-to-date with the latest versions of OpenGL, bringing cutting-edge features into the hands of shaderpack developers.

Note that the order in which features will be implemented is not set in stone. If lots of people want a particular feature, I'll prioritize that feature and move it to the top of my to-do list.

Installation

Do this

nova-renderer's People

Contributors

dethraid avatar ckissane avatar maximilian-reuter avatar tobiasschulz avatar mdsitton avatar sayomaki avatar lewisdoesstuff avatar sylveonbottle avatar voytechnology avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.