mirror of
https://git.coom.tech/drummyfish/raycastlib.git
synced 2024-11-22 20:39:57 +01:00
Update
This commit is contained in:
parent
74af704656
commit
0005f40264
5 changed files with 40 additions and 29 deletions
29
README.md
29
README.md
|
@ -48,18 +48,19 @@ features
|
|||
- **Pure C99**, tested to run as C++ as well.
|
||||
- Optional framework **functions that handle the whole rendering**.
|
||||
- Still **flexible** -- pixels are left for you to draw in any way you want.
|
||||
- **Tested on multiple platforms**:
|
||||
- **Tested on many platforms**:
|
||||
- PC (little endian, 64bit GNU)
|
||||
- compilers: gcc, clang
|
||||
- Emscripten (web browser, JavaScript transpile)
|
||||
- Arduboy
|
||||
- Pokitto
|
||||
- Gamebuino META
|
||||
- Arduboy (only experimental)
|
||||
- Pokitto (32bit resource-limited embedded ARM)
|
||||
- Gamebuino META (32bit resource-limited embedded ARM)
|
||||
- TODO:
|
||||
- PowerPC emulator (big endian)
|
||||
- Android
|
||||
- Windows
|
||||
- **Many compile-time options** to tune the performance vs quality.
|
||||
- **Well commented** and formatted code. Automatic documentation (comments + provided Doxyfile).
|
||||
- **Well commented** and formatted code, with examples. Automatic documentation (comments + provided Doxyfile).
|
||||
- Completely **free of legal restrictions**, do literally anything you want.
|
||||
|
||||
**NOTE**: Backwards compatibility isn't a goal of this libraray. It is meant to
|
||||
|
@ -72,17 +73,14 @@ how to use
|
|||
|
||||
**Don't forget to compile with -O3!** This drastically improves performance.
|
||||
|
||||
For start take a look at the [testTerminal.c](https://gitlab.com/drummyfish/raycastlib/blob/master/programs/testTerminal.c) program.
|
||||
It is only a little bit more complex than a simple hello world.
|
||||
|
||||
For more examples see the other files, plus my [Pokitto demos](https://gitlab.com/drummyfish/Pokitto-Raycasting) repository,
|
||||
which contains some better documented example code, including a [very simple hello world](https://gitlab.com/drummyfish/Pokitto-Raycasting/blob/master/helloRay.cpp).
|
||||
For start take a look at the [helloWorld.c](https://gitlab.com/drummyfish/raycastlib/blob/master/programs/helloWorld.c) program and other examples.
|
||||
For more examples see my [Pokitto demos](https://gitlab.com/drummyfish/Pokitto-Raycasting) repository.
|
||||
|
||||
Also see **the library code itself**, it is meant to be self-documenting -- you'll find the description of a lot of things at the start of the file.
|
||||
|
||||
The basic philosophy is:
|
||||
|
||||
- The library implements only a rendering back-end, it doesn't perform any drawing to the actual screen,
|
||||
- The library implements only a **rendering back-end**, it doesn't perform any drawing to the actual screen,
|
||||
hence there is no dependency on any library such as OpenGL or SDL. It just calls your front-end function
|
||||
and tells you which pixels you should write. How you do it is up to you.
|
||||
- Before including the header, define `RCL_PIXEL_FUNCTION` to the name of a function you will use to
|
||||
|
@ -101,15 +99,6 @@ The basic philosophy is:
|
|||
has a side length of `RCL_UNITS_PER_SQUARE` units. Numbers are normalized by this constant, so e.g.
|
||||
the sin function returns a value from `-RCL_UNITS_PER_SQUARE` to `RCL_UNITS_PER_SQUARE`.
|
||||
|
||||
TODO
|
||||
----
|
||||
|
||||
- Transparency (conditional ray passing through).
|
||||
- Doors in the middle of squares.
|
||||
- Rolling doors for `RCL_renderComplex`.
|
||||
- Possibly merge all rendering functions into one.
|
||||
- Fix rendering bug that happens at the boundary of positive and negative square coords.
|
||||
|
||||
license
|
||||
-------
|
||||
|
||||
|
|
|
@ -1,8 +1,27 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Make script for raycastlib programs.
|
||||
# by drummyfish
|
||||
# released under CC0 1.0, public domain
|
||||
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "ERROR: expecting one argument, the name of program without extension (e.g. \"helloWorld\")"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
clear; clear; g++ -x c -g -fmax-errors=5 -pedantic -Wall -Wextra -o $1 $1.c -lSDL2 2>&1 >/dev/null && ./$1
|
||||
link=""
|
||||
|
||||
if [ "$1" = "testSDL" ]; then
|
||||
link="-lSDL2"
|
||||
fi
|
||||
|
||||
clear
|
||||
clear
|
||||
|
||||
flags="-x c -g -O3 -pedantic -Wall -Wextra -o $1 $1.c ${link}"
|
||||
compiler=gcc
|
||||
#compiler=clang
|
||||
|
||||
echo "making:" ${compiler} ${flags}
|
||||
|
||||
${compiler} ${flags} > /dev/null 2>&1 && ./$1
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/**
|
||||
Tests for raycastlib.
|
||||
General tests for raycastlib, use to test new version, different platforms
|
||||
etc.
|
||||
|
||||
license: CC0
|
||||
*/
|
||||
|
@ -477,7 +478,7 @@ int main()
|
|||
RCL_Unit scaled = RCL_perspectiveScaleHorizontal(size,distance);
|
||||
RCL_Unit distance2 = RCL_perspectiveScaleHorizontalInverse(size,scaled);
|
||||
|
||||
if (RCL_absVal(distance - distance2 > 2))
|
||||
if (RCL_abs(distance - distance2 > 2))
|
||||
printf("ERROR: distance: %d, distance inverse: %d\n",distance,distance2);
|
||||
}
|
||||
|
||||
|
@ -552,9 +553,6 @@ int main()
|
|||
t = measureTime(benchmarkRender);
|
||||
printf("render 100 times: %ld ms\n",t);
|
||||
|
||||
printf("\n");
|
||||
printProfile();
|
||||
|
||||
printf("\n===== all OK =====\n");
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
Raycasting terminal test.
|
||||
Raycasting terminal test. Renders a raycasted animation in the terminal as
|
||||
ASCII.
|
||||
|
||||
author: Miloslav Ciz
|
||||
license: CC0 1.0, public domain
|
||||
|
@ -79,8 +80,7 @@ void pixelFunc(RCL_PixelInfo *p)
|
|||
switch (p->hit.direction)
|
||||
{
|
||||
case 0: shade += 2;
|
||||
case 1: shade += p->texCoords.y / 512;
|
||||
c = asciiShades[shade];
|
||||
case 1: c = asciiShades[shade];
|
||||
break;
|
||||
case 2: c = 'o'; break;
|
||||
case 3:
|
||||
|
|
5
todo.txt
Normal file
5
todo.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
- Transparency (conditional ray passing through).
|
||||
- Doors in the middle of squares.
|
||||
- Rolling doors for `RCL_renderComplex`. Or perhaps remove rolling doors (KISS)
|
||||
- Possibly merge all rendering functions into one.
|
||||
- Fix rendering bug that happens at the boundary of positive and negative square coords.
|
Loading…
Reference in a new issue