From 2e650bae26be8f16f58e7ae8adc050d5a2de4529 Mon Sep 17 00:00:00 2001 From: "Daniele Verducci (Slimpenguin)" Date: Wed, 11 Jan 2023 10:07:11 +0100 Subject: [PATCH] Textures --- assets/texture_wall1.png | Bin 24541 -> 0 bytes assets/texture_wall2.png | Bin 11437 -> 0 bytes ...xture_wall3.png => texture_wall_brick.png} | Bin assets/texture_wall_brick_door_center.png | Bin 0 -> 21145 bytes assets/texture_wall_brick_door_left.png | Bin 0 -> 24825 bytes assets/texture_wall_brick_door_right.png | Bin 0 -> 24510 bytes v3/raycaster.py | 429 ++++++++++++++++++ 7 files changed, 429 insertions(+) delete mode 100644 assets/texture_wall1.png delete mode 100644 assets/texture_wall2.png rename assets/{texture_wall3.png => texture_wall_brick.png} (100%) create mode 100644 assets/texture_wall_brick_door_center.png create mode 100644 assets/texture_wall_brick_door_left.png create mode 100644 assets/texture_wall_brick_door_right.png create mode 100755 v3/raycaster.py diff --git a/assets/texture_wall1.png b/assets/texture_wall1.png deleted file mode 100644 index b4a13f59475733c438c9965bedde96755acb3cb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24541 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�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 T*5g8&00000NkvXXu0mjfru+M$ literal 0 HcmV?d00001 diff --git a/assets/texture_wall_brick_door_left.png b/assets/texture_wall_brick_door_left.png new file mode 100644 index 0000000000000000000000000000000000000000..b4e5ec0f7566c5db9c8ea7a0a2ce9857163cc17d GIT binary patch literal 24825 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 IM6N<$f+Y?bf&c&j literal 0 HcmV?d00001 diff --git a/assets/texture_wall_brick_door_right.png b/assets/texture_wall_brick_door_right.png new file mode 100644 index 0000000000000000000000000000000000000000..f650c6969cdd11e26b2ba19651691ea3cdf7ee8d GIT binary patch literal 24510 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 MAP_WIN_WIDTH: + self.player_position["x"] = MAP_WIN_WIDTH + if self.player_position["y"] < 0: + self.player_position["y"] = 0 + if self.player_position["y"] > MAP_WIN_HEIGHT: + self.player_position["y"] = MAP_WIN_HEIGHT + if self.player_position["r"] > 2*math.pi: + self.player_position["r"] = 0 + if self.player_position["r"] < 0: + self.player_position["r"] = 2*math.pi + + self.draw() + if not MAP_HIDDEN: + self.mapWindow.refresh() + self.raycastWindow.refresh() + + # Calculate FPS + frames = frames + 1 + if time.time() - lastFpsCalcTime > 1: + fps = frames/(time.time() - lastFpsCalcTime) + print(int(fps)) + frames = 0 + lastFpsCalcTime = time.time() + + return 0 + + def movePlayerRelative(self, player_delta_x, player_delta_y): + # Prevent player from going into walls (X axis) + newPlayerX = int(self.player_position["x"] + player_delta_x) + mapX = int(newPlayerX / MAP_SCALE) + mapY = int(self.player_position["y"] / MAP_SCALE) + mapArrayPosition = mapY * MAP_SIZE + mapX + if mapArrayPosition >= 0 and mapArrayPosition < MAP_SIZE*MAP_SIZE-1 and MAP[mapArrayPosition] == 0: + # Move player (X) + self.player_position["x"] = newPlayerX + + # Prevent player from going into walls (Y axis) + newPlayerY = int(self.player_position["y"] + player_delta_y) + mapX = int(self.player_position["x"] / MAP_SCALE) + mapY = int(newPlayerY / MAP_SCALE) + mapArrayPosition = mapY * MAP_SIZE + mapX + if mapArrayPosition >= 0 and mapArrayPosition < MAP_SIZE*MAP_SIZE-1 and MAP[mapArrayPosition] == 0: + # Move player (Y) + self.player_position["y"] = newPlayerY + + def draw(self): + if not MAP_HIDDEN: + self.draw2Dmap() + self.drawPlayer() + self.drawRays() + + def drawPlayer(self): + # Player in 2D map + sdl2.ext.draw.fill(self.mapSurface, sdl2.ext.Color(0,255,0,255), (self.player_position["x"] - 2, self.player_position["y"] - 2, 4, 4)) + # Player line of sight in 2D map + ray = { + "x": int(self.player_position["x"] + math.cos(self.player_position["r"]) * 50), # deltaX + playerX + "y": int(self.player_position["y"] + math.sin(self.player_position["r"]) * 50) # deltaY + playerY + } + sdl2.ext.draw.line(self.mapSurface, sdl2.ext.Color(255,0,0,255), (self.player_position["x"], self.player_position["y"], ray["x"], ray["y"])) + + + def draw2Dmap(self): + # 2D map + sdl2.ext.draw.fill(self.mapSurface, sdl2.ext.Color(0,0,0,255)) # Clears map screen + for i in range(len(MAP)): + posX = i % MAP_SIZE * MAP_SCALE + posY = math.floor(i / MAP_SIZE) * MAP_SCALE + color = 0 + if MAP[i] > 0: + color = 255 + sdl2.ext.draw.fill(self.mapSurface, sdl2.ext.Color(color,color,color,255), (posX, posY, MAP_SCALE - 1, MAP_SCALE - 1)) + + def drawRays(self): + sdl2.ext.draw.fill(self.raycastSurface, CEILING_COLOR, (0, 0, RAYCAST_WIN_WIDTH, RAYCAST_WIN_HEIGHT/2)) # Clears upper raycast screen (draws ceiling) + sdl2.ext.draw.fill(self.raycastSurface, FLOOR_COLOR, (0, RAYCAST_WIN_HEIGHT/2, RAYCAST_WIN_WIDTH, RAYCAST_WIN_HEIGHT/2)) # Clears upper raycast screen (draws floor) + + # Casts rays for raycasting + playerAngle = self.player_position["r"] + + # Cast one ray for every window pixel, from -0,5 rads to +0,5 rads (about 60° viewing angle) + for i in range(RAYCAST_RENDER_WIDTH): + rayAngle = playerAngle + (i/RAYCAST_RENDER_WIDTH) - 0.5 + if rayAngle < 0: + rayAngle = math.pi * 2 + rayAngle + if rayAngle > math.pi * 2: + rayAngle = rayAngle - math.pi * 2 + + # Which map wall tiles have been hit by rayX and rayY + mapBlockHitX = 0 + mapBlockHitY = 0 + + # Check horizontal lines + dof = 0 # Depth of field + if rayAngle == 0 or rayAngle == math.pi: + # Looking left or right (ray will never intersect parallel lines) + rayY = self.player_position["y"] + rayX = self.player_position["x"] + DOF * MAP_SCALE + dof = DOF # Set depth of field to maximum to avoid unneeded checks + elif rayAngle > math.pi: + # Looking up + aTan = -1/math.tan(rayAngle) + rayY = (int(self.player_position["y"] / MAP_SCALE) * MAP_SCALE) - 0.00001 + rayX = (self.player_position["y"] - rayY) * aTan + self.player_position["x"] + yOffset = -MAP_SCALE + xOffset = -yOffset * aTan + else: + # Looking down + aTan = -1/math.tan(rayAngle) + rayY = (int(self.player_position["y"] / MAP_SCALE) * MAP_SCALE) + MAP_SCALE + rayX = (self.player_position["y"] - rayY) * aTan + self.player_position["x"] + yOffset = MAP_SCALE + xOffset = -yOffset * aTan + + # Check if we reached a wall + while dof < DOF: + mapX = int(rayX / MAP_SCALE) + mapY = int(rayY / MAP_SCALE) + mapArrayPosition = mapY * MAP_SIZE + mapX + if mapArrayPosition >= 0 and mapArrayPosition < MAP_SIZE*MAP_SIZE and MAP[mapArrayPosition] != 0: + dof = DOF # Hit the wall: we are done, no need to do other checks + mapBlockHitY = MAP[mapArrayPosition] # Save which map wall tile we reached + else: + # Didn't hit the wall: check successive horizontal line + rayX = rayX + xOffset + rayY = rayY + yOffset + dof = dof + 1 + + # Save horyzontal probe rays for later comparison with vertical + horizRayX = rayX + horizRayY = rayY + + # Check vertical lines + dof = 0 # Depth of field + nTan = -math.tan(rayAngle) + xOffset = 0 + yOffset = 0 + if rayAngle == math.pi * 0.5 or rayAngle == math.pi * 1.5: + #if rayAngle == 0 or rayAngle == math.pi: + # Looking up or down (ray will never intersect vertical lines) + rayX = self.player_position["x"] + rayY = self.player_position["y"] + DOF * MAP_SCALE + dof = DOF # Set depth of field to maximum to avoid unneeded checks + elif rayAngle > math.pi * 0.5 and rayAngle < math.pi * 1.5: + # Looking left + rayX = (int(self.player_position["x"] / MAP_SCALE) * MAP_SCALE) - 0.00001 + rayY = (self.player_position["x"] - rayX) * nTan + self.player_position["y"] + xOffset = -MAP_SCALE + yOffset = -xOffset * nTan + else: + # Looking right + rayX = (int(self.player_position["x"] / MAP_SCALE) * MAP_SCALE) + MAP_SCALE + rayY = (self.player_position["x"] - rayX) * nTan + self.player_position["y"] + xOffset = MAP_SCALE + yOffset = -xOffset * nTan + + # Check if we reached a wall + while dof < DOF: + mapX = int(rayX / MAP_SCALE) + mapY = int(rayY / MAP_SCALE) + mapArrayPosition = mapY * MAP_SIZE + mapX + if mapArrayPosition >= 0 and mapArrayPosition < MAP_SIZE*MAP_SIZE-1 and MAP[mapArrayPosition] != 0: + dof = DOF # Hit the wall: we are done, no need to do other checks + mapBlockHitX = MAP[mapArrayPosition] # Save which map wall tile we reached + else: + # Didn't hit the wall: check successive horizontal line + rayX = rayX + xOffset + rayY = rayY + yOffset + dof = dof + 1 + + horizDist = self.dist(self.player_position["x"], self.player_position["y"], horizRayX, horizRayY) + vertDist = self.dist(self.player_position["x"], self.player_position["y"], rayX, rayY) + shortestDist = vertDist + if vertDist > horizDist: + rayX = horizRayX + rayY = horizRayY + shortestDist = horizDist + + if not MAP_HIDDEN: + # Draw rays in 2D view + sdl2.ext.draw.line(self.mapSurface, sdl2.ext.Color(0,0,255,255), (self.player_position["x"], self.player_position["y"], rayX, rayY)) + + + # ------ Draw 3D view ------ + + # Calculate line height based on distance + lineHeight = MAP_SCALE * RAYCAST_RENDER_HEIGHT / shortestDist + # Center line vertically in window + lineOffset = RAYCAST_RENDER_HEIGHT / 2 - lineHeight / 2 + + # Draw pixels vertically from top to bottom to obtain a line + textureSegmentEnd = 0 + for textureColumnPixel in range(0, TEXTURE_SIZE): + # Calc texture segment length on screen + textureSegmentLength = lineHeight / TEXTURE_SIZE + if textureSegmentEnd == 0: + # First iteration: calculate segment start + textureSegmentStart = lineOffset + textureColumnPixel * textureSegmentLength + else: + # Next iterations: use the previous segment end (avoids rounding errors) + textureSegmentStart = textureSegmentEnd + textureSegmentEnd = textureSegmentStart + textureSegmentLength + # Obtain texture value in the pixel representing the current segment and calculate shading + if vertDist > horizDist: + texIndex = mapBlockHitY - 1 # The texture covering the selected map tile (0 is no texture, 1 is texture at self.textures[0] etc) + texColumn = int(rayX / (MAP_SCALE / TEXTURE_SIZE) % TEXTURE_SIZE) + shading = True + else: + texIndex = mapBlockHitX - 1 # The texture covering the selected map tile + texColumn = int(rayY / (MAP_SCALE / TEXTURE_SIZE) % TEXTURE_SIZE) + shading = False + + # Obtain texture pixel color + color = self.textures[texIndex][texColumn + textureColumnPixel * TEXTURE_SIZE] + # Calculate color resulting from texture pixel value + shading + if shading: + color = self.shade(color) + + # Clipping + lineEnd = textureSegmentEnd + if lineEnd > RAYCAST_RENDER_HEIGHT: + lineEnd = RAYCAST_RENDER_HEIGHT + lineStart = textureSegmentStart + if lineStart < 0: + lineStart = 0 + if lineEnd < lineStart: + continue + + # Upscaling + lineStart = lineStart * RAYCAST_RESOLUTION_SCALING + lineEnd = lineEnd * RAYCAST_RESOLUTION_SCALING + + # Draw segment + for repeat in range(1, RAYCAST_RESOLUTION_SCALING + 1): + x = i * RAYCAST_RESOLUTION_SCALING + repeat + self.drawVline(self.raycastSurface, color, x, int(lineStart), int(lineEnd)) + + def drawVline(self, surface, color, x, startY, endY): + if x < 0 or x > RAYCAST_WIN_WIDTH or startY < 0 or endY > RAYCAST_WIN_HEIGHT or endY < startY: + print("Trying to write outside bounds: vertical line with x {} from y {} to y {}".format(x, startY, endY)) + return + + startIdx = startY * RAYCAST_WIN_WIDTH + x + for idx in range(startIdx, endY * RAYCAST_WIN_WIDTH + x, RAYCAST_WIN_WIDTH): + self.raycast_u32_pixels[idx] = color + + def shade(self, color): + # Obtain channels + b = color & 0b000000000000000011111111 + g = color >> 8 & 0b000000000000000011111111 + r = color >> 16 & 0b000000000000000011111111 + # Dim channels (and limit to 255, because python doesn't have a fixed byte length) + b = (b >> 1) + g = (g >> 1) + r = (r >> 1) + # Compose color + return b + (g << 8) + (r << 16) + + def dist(self, ax, ay, bx, by): + return math.sqrt((bx-ax)*(bx-ax) + (by-ay)*(by-ay)) + + def loadTexture(self, pngFilePath): + # Loads a texture from png file and converts to sdl2-friendly format + reader = png.Reader(filename=pngFilePath) + w, h, pixels, metadata = reader.read_flat() + if w != TEXTURE_SIZE or h != TEXTURE_SIZE: + raise ValueError("Texture {} is not {}x{}, but {}x{}".format(pngFilePath, TEXTURE_SIZE, TEXTURE_SIZE, w, h)) + color_length = 3 # RGB + if metadata['alpha']: + color_length = 4 # RGBA (but alpha is ignored) + # Convert to sdl2-friendly format + converted = [] + for i in range(0, len(pixels), color_length): + # PNG is RGB, SDL surface is BGR + converted.append(pixels[i+2] + (pixels[i+1] << 8) + (pixels[i] << 16)) # BGR + return converted + + + +if __name__ == '__main__': + try: + main = Main() + main.run() + except KeyboardInterrupt: + exit(0)