Use RGBA for the uint32_t color pixels. Closes #49.

master
Zed A. Shaw 2 days ago
parent ab1a415b55
commit cad51f4908
  1. 10
      raycaster.cpp

@ -22,7 +22,7 @@ union ColorConv {
uint8_t b; uint8_t b;
uint8_t a; uint8_t a;
} as_color; } as_color;
uint32_t as_int; RGBA as_int;
}; };
// from: https://permadi.com/1996/05/ray-casting-tutorial-19/ // from: https://permadi.com/1996/05/ray-casting-tutorial-19/
@ -40,7 +40,7 @@ union ColorConv {
* and I guess the compiler can handle it better than shifting * and I guess the compiler can handle it better than shifting
* bits around. * bits around.
*/ */
inline uint32_t lighting_calc(uint32_t pixel, float dist, int level) { inline RGBA lighting_calc(RGBA pixel, float dist, int level) {
ColorConv conv{.as_int=pixel}; ColorConv conv{.as_int=pixel};
if(conv.as_color.b < GLOW_LIMIT if(conv.as_color.b < GLOW_LIMIT
@ -327,8 +327,8 @@ void Raycaster::draw_ceiling_floor() {
constexpr static const int texture_height = TEXTURE_HEIGHT; constexpr static const int texture_height = TEXTURE_HEIGHT;
auto &lights = $level.lights->lighting(); auto &lights = $level.lights->lighting();
size_t surface_i = 0; size_t surface_i = 0;
const uint32_t *floor_texture = textures::get_surface(surface_i); const RGBA *floor_texture = textures::get_surface(surface_i);
const uint32_t *ceiling_texture = textures::get_ceiling(surface_i); const RGBA *ceiling_texture = textures::get_ceiling(surface_i);
for(int y = $height / 2 + 1; y < $height; ++y) { for(int y = $height / 2 + 1; y < $height; ++y) {
// rayDir for leftmost ray (x=0) and rightmost (x = w) // rayDir for leftmost ray (x=0) and rightmost (x = w)
@ -375,7 +375,7 @@ void Raycaster::draw_ceiling_floor() {
floor_y += floor_step_y; floor_y += floor_step_y;
// now get the pixel from the texture // now get the pixel from the texture
uint32_t color; RGBA color;
// this uses the previous ty/tx fractional parts of // this uses the previous ty/tx fractional parts of
// floor_x cell_x to find the texture x/y. How? // floor_x cell_x to find the texture x/y. How?
int map_x = int(floor_x); int map_x = int(floor_x);

Loading…
Cancel
Save