RayTracing Requirements
To create a environment for raytracing:
- floating-point variables, used in position of player, distance calculation and mathematics equations.
- sin/cos functions, to determine the angles and fov
- vertical scanlines is the best option as you write segments in columns.
- each column will have a ceiling, center and floor. ceiling is governed by the distance from the player. floor is the inverse of the ceiling.
choosing floating-point type. Modern systems use at least a 32bit float, however systems like HLSL do still use half-precision floats a.k.a. 16bit floats. each constists of a [SIGN 1bit][EXPONENT 5/8bit][FRACTION 10/23bit]. To use on a GameBoy a custom type / struct has to be defined or a UINT32/UINT16 has to be specified in a way that it can be used. Defining a Macro can ease the use of matching method to fill the struct by splitting (for ex.) the sign bit if a signed field is used to check if a value is lower than zero or check if the last bit is set.
(int)val < 0 || val >> 16 == 0x01
to create a 32bit float:
- define struct:
- int sign : 1; int exponent : 8; int fraction : 32;
- define methods:
- ADD
- SUBtract
- CMPare
- MULtiply
- DIVide
- additional methods:
- floatToInt() ret UINT32 (default floor)
- setFloat32(UINT32/CUST_STRUCT ref, UINT32 significant, UINT32 base)
- ref = existing global/variable
- significant = number without decimal
- base = decimal point position
- ref = existing global/variable
- setFloat32(UINT32/CUST_STRUCT ref, UINT16 value, UINT16 precision)
- ref = existing global/variable
- value = numbers before decimal point
- precision = numbers after decimal point
- ref = existing global/variable
Files
gammu.gb 32 kB
Sep 28, 2021
gammu-master-0.1.zip 9.8 kB
Sep 28, 2021
Get [GameBoy] Technical Demo - Vertical Scanlines/RayCasting
Download NowName your own price
[GameBoy] Technical Demo - Vertical Scanlines/RayCasting
Prototyping a FPS: writing from CPU to VRAM (DMA) and RayTracing like "X" or "Faceball 2000"
More posts
- Dynamically creating tiles - GBDKSep 28, 2021
Leave a comment
Log in with itch.io to leave a comment.