GithubHelp home page GithubHelp logo

ascii-raycaster's Introduction

Ascii Raycaster

A 3d raycaster that renders to ASCII text.

Purple Thing

Blue and green things

Controls

  • i and k to move forward and back
  • j and l to look left and right
  • o and u to look up and down

That's all.

Why render to ASCII?

Because it's cool.

In all seriousness, I decided to make this because my brother was playing around with raycasting. I stumbled across a roguelike thread debating the merits of tilesets vs ASCII, and one point was that ASCII was easily identifiable. The two ideas just collided in my head and here we are.

One side effect of using ASCII is that the number of "characters" that I have to raycast is significantly reduced. You would get the same effect with larger pixels, but when I add game objects that need to be discerned from each other, ASCII should let me use a lower resolution.

Future Plans

  • Move to custom "grid-of-text" renderer

Links that I used

http://lodev.org/cgtutor/raycasting.html

http://9bitscience.blogspot.com/2013/07/raymarching-distance-fields_14.html

http://permadi.com/1996/05/ray-casting-tutorial-table-of-contents/

Wikipedia. Lots of wikipedia, on vectors, rotation, and matrices.

Voxel Quest

ascii-raycaster's People

Contributors

leroycep avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ascii-raycaster's Issues

Use Signed Distance Functions

Signed Distance Function allow you to create a renderable by composing functions together. These functions easy to parallelize on the GPU, because they are just a set of calculations to make, not a bunch of if-then rules.

  • Implement a signed distance function shader
  • Create algorithm that converts a minecraft-like world into SDFs
  • Generate GLSL programs from the SDFs

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.