bevyengine / bevyengine/bevy

Simpler shaders for 3D meshes

Open
#19,474 0 comments 3 reactions 0 assignees View on GitHub
A-Rendering C-Feature S-Needs-Design
Dominant language
Rust
Stars
48.2k
Forks
4.8k
Avg merge
3d 22h
Merged PRs (30d)
161

Description

## What problem does this solve or what need does it fill?

One of the things I miss from three.js is the simpler, more basic shaders:

* MeshBasicMaterial
* MeshLambertMaterial
* MeshPhongMaterial

These are documented here: https://threejs.org/docs/#api/en/materials/MeshBasicMaterial

Three.js does have a standard material that is roughly comparable to Bevy's standard material. However for non-photorealistic games, the additional complexity of standard material is often not needed, and the extra parameters are sometimes a distraction.

This is particularly the case when writing extended shaders (via Bevy's ExtendedMaterial) that provide non-photorealistic effects, or even exotic effects like water caustics or procedural gradients. When writing a shader extension, one would sometimes like to be able to incorporate the global post-processing features of the standard shader (like tone mapping), but have the lighting and base color calculations start from a clean slate.

## What solution would you like?

I'd like to see a set of simpler shaders as an alternative to StandardMaterial.

## What alternative(s) have you considered?

What I have done up to this point is either extend StandardMaterial, or write a standalone shader that re-implements the parts of StandardMaterial that I want.

## Additional context

While I have written a number of shaders that extend StandardMaterial, most of my efforts have been trial-and-error, cargo cult programming - meaning that I don't really understand what I am doing, I just keep trying different permutations until I get something that works. This is largely due to the fact that I really don't know how my extension and the existing StandardShader code get combined.

@alice-i-cecile @robtfm

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.