Comments (6)
I would be open to an alternative implementation of the gfx
module which solely used OpenGL 2.0 (or even 1.x) features. It would be tricky to do palette/colormap lookup without shaders (plain palette lookup would be easy, but the colormap stuff makes it trickier). The only constraint I'd put on such an implementation: it should be safe code exclusively (this may mean writing a glium-like library for OpenGL 1.x and linking into that).
I think realistically, the better way to do this is using an SDL2 based software renderer. This may require further optimisations like frustum and some occluder-based culling to prevent it from being prohibitively slow (currently the renderer just draws everything relying on the stupid amount of silicon GPUs have these days).
When all is said and done, I think this would be really cool, but a lot of work. Currently my roadmap is still focused on features, but if you want to try your hand at a flag protected software renderer, I'd be happy to review and merge such a change, as well as help with any refactoring needed to decouple rendering better.
from rust-doom.
What's the outlook here?
from rust-doom.
Hi @petevine, sorry for being so unresponsive, and I do appreciate the interest! It's just that, unless it's a small feature or bugfix, I tend to work on this project in bursts (on holidays etc.)
I'd be open to implementing or accepting a PR for a shaderless implementation or a software renderer as mentioned in my previous comment at some point, but it's not going to happen soon.
I'd like to keep this issue open though, to allow me to reference it when some big refactor or other piece of work may lead up to the possibility.
from rust-doom.
I remember playing Doom on my first PC (386DX 40MHz) so I'm puzzled why a 2D game can't can't be drawn purely in SDL (regardless of the backend) similar to what rustzx is doing.
from rust-doom.
@cristicbz If you really think there are actionable items here I'd appreciate if you could open a more focused issue and close this one.
from rust-doom.
@petevine this project was originally designed as an exercise around the lines of: imagine you're a Rust game dev from 2016 (or 2014 at the time) told to write a renderer from these assets provided by the art department in some fixed format. I wanted to see what a modern, retained mode implementation (in a modern language) of a Doom renderer would like.
That said, I think a pluggable SDL2-only renderer should be possible and again, I'm open to it. I'd like to open some focused issues, but even that takes bandwidth I don't currently have.
I wouldn't want to close this issue as 'wontfix' when I fully agree with the intent behind the issue and hope to provide a solution eventually. I'd rather I close it a six months as "fixed by SDL2 renderer implemented in PR #999" or whatever :).
If you'd rather this issue was just closed for whatever reason (you don't want to have anything to do with this project any more), then you may close it and I won't open it again. I am grateful for your input regardless.
from rust-doom.
Related Issues (20)
- How easy would it be to turn this into a proper DooM source port? HOT 2
- clippy warnings (more) HOT 2
- Use of unstable library feature 'ord_max_min' HOT 2
- Cannot move (mouse on mac) HOT 4
- Illegal hardware instruction HOT 2
- Mark `Id` as thread-safe HOT 1
- Keyboard input does not work on Mac
- Dependency Does Not Compile HOT 1
- Can't start doom HOT 3
- Signed distance of Line2 HOT 4
- SIGABRT when using Wayland
- cargo crate registry error: 'SDL' linked with two different versions. HOT 5
- Typo in Cargo.toml HOT 1
- Rare jumpy view rotation with left-right keyboard HOT 2
- Build fails on OS X 10.11.4 HOT 2
- Unreachable code branch HOT 3
- [meta] clippy warnings HOT 3
- Feature: "screenshot map" command HOT 1
- Cargo: Compilation warnings
- Game Crash when hitting any key HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rust-doom.