Git Product home page Git Product logo

tipsy's Introduction

tipsy

tipsy (tiny playstationy) is a PS1-like software renderer written in ~500 lines of C99.
Features all the charm of the original PS1, like:

  • low resolution display (320x240)
  • no texture filtering (pixelated textures)
  • affine texture mapping (warped textures)
  • no anti-aliasing (chunky edges)
  • lack of subpixel rasterization (polygon jittering/wobble)
  • old shading techniques (flat & Gouraud)
demo.mp4

building

Building requires C99 compiler & OpenGL. Supported platforms & building prerequisites are provided below:

  • Linux

    # ubuntu 22.04
    sudo apt install -y build-essential libglu1-mesa-dev
    
  • MacOS

    Install Xcode. MacOS Monterey ships with (now deprecated) OpenGL by default.

  • Windows (untested)

Get the source & run:

make

usage

./tipsy path/to/wavefront.obj

Hold down the left mouse button and drag to rotate.

Keybindings:

  • Left/Right: rotate horizontally
  • Up/Down: rotate vertically
  • W: toggle wireframe drawing
  • Z: toggle z-buffering
  • P: toggle perspective correct texture mapping (default = off)
  • C: toggle back/front face culling (default = back)
  • J: toggle jittering (default = on)
  • F: toggle vertical flip
  • R: reset model position
  • 1: switch off shading (default)
  • 2: switch to flat shading
  • 3: switch to gouraud shading

credits

  • Building a PS1 style retro 3D renderer article by David Colson.
    Polygon jittering imitation technique was taken from there.
  • Playstation Architecture article by Rodrigo Copetti.
    Provides a good overview of the PSX architecture.
  • gel by Gustav Louw. Similar project with the same spirit.
  • tigr by Erik Agsjö. The graphics library the project relies on.

tipsy's People

Contributors

kdridi avatar nkanaev 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.