/** * @file config.h * @brief Configuration constants for ASCII 3D Renderer * @author ASCII3D Project * @version 2.0.0 */ #ifndef ASCII3D_CONFIG_H #define ASCII3D_CONFIG_H #ifdef __cplusplus extern "C" { #endif /*============================================================================ * SCREEN CONFIGURATION *============================================================================*/ #define SCREEN_WIDTH 120 #define SCREEN_HEIGHT 45 /*============================================================================ * RENDERING QUALITY SETTINGS *============================================================================*/ /* Depth buffer initialization value */ #define DEPTH_BUFFER_INIT 1e9f /* Character extrusion depth (3D thickness) */ #define EXTRUSION_DEPTH 4.0f /* Base character scale */ #define CHAR_SCALE 2.0f /* Camera settings */ #define CAMERA_DISTANCE 30.0f #define FIELD_OF_VIEW 50.0f #define NEAR_PLANE 0.1f #define FAR_PLANE 100.0f /* Sub-pixel sampling for anti-aliasing (NxN samples per pixel) */ #define AA_SAMPLES 2 /* Voxel rendering step (smaller = higher quality, slower) */ #define VOXEL_STEP 0.15f /* Surface smoothing iterations */ #define SMOOTH_PASSES 1 /*============================================================================ * ANIMATION PARAMETERS *============================================================================*/ #define TARGET_FPS 60 #define FRAME_TIME_US (1000000 / TARGET_FPS) /*============================================================================ * FONT CONFIGURATION *============================================================================*/ /* Standard 5x7 font */ #define FONT_WIDTH 5 #define FONT_HEIGHT 7 #define FONT_CHAR_SPACING 2 /*============================================================================ * LIGHTING CONFIGURATION *============================================================================*/ /* Ambient light intensity (0.0 - 1.0) */ #define AMBIENT_INTENSITY 0.15f /* Diffuse light intensity */ #define DIFFUSE_INTENSITY 0.70f /* Specular light intensity */ #define SPECULAR_INTENSITY 0.40f /* Specular shininess exponent */ #define SPECULAR_POWER 32.0f /* Number of light sources */ #define MAX_LIGHTS 3 /*============================================================================ * ASCII SHADING PALETTES *============================================================================*/ /* Standard gradient (10 levels) */ #define SHADE_CHARS_STANDARD " .:-=+*#%@" #define SHADE_COUNT_STANDARD 10 /* Extended gradient (16 levels) - more detail */ #define SHADE_CHARS_EXTENDED " .'`^\",:;Il!i><~+_-?][}{1)(|/tfjrxnuvczXYUJCLQ0OZmwqpdbkhao*#MW&8%B@$" #define SHADE_COUNT_EXTENDED 70 /* Block characters for solid look */ #define SHADE_CHARS_BLOCK " ░▒▓█" #define SHADE_COUNT_BLOCK 5 /* Minimal gradient */ #define SHADE_CHARS_MINIMAL " .:+#@" #define SHADE_COUNT_MINIMAL 6 /* Default palette */ #define SHADE_CHARS SHADE_CHARS_EXTENDED #define SHADE_COUNT SHADE_COUNT_EXTENDED /*============================================================================ * RENDER MODES *============================================================================*/ typedef enum RenderMode { RENDER_MODE_SOLID = 0, /* Filled solid rendering */ RENDER_MODE_WIREFRAME, /* Edge-only wireframe */ RENDER_MODE_POINTS, /* Point cloud */ RENDER_MODE_SHADED, /* Full Phong shading */ RENDER_MODE_COUNT } RenderMode; /*============================================================================ * COLOR MODES *============================================================================*/ typedef enum ColorMode { COLOR_MODE_MONO = 0, /* Monochrome ASCII */ COLOR_MODE_ANSI_16, /* 16-color ANSI */ COLOR_MODE_ANSI_256, /* 256-color ANSI */ COLOR_MODE_TRUECOLOR, /* 24-bit RGB */ COLOR_MODE_COUNT } ColorMode; /*============================================================================ * ANSI COLOR CODES *============================================================================*/ #define ANSI_RESET "\033[0m" #define ANSI_BOLD "\033[1m" #define ANSI_DIM "\033[2m" /* Foreground colors */ #define ANSI_FG_BLACK "\033[30m" #define ANSI_FG_RED "\033[31m" #define ANSI_FG_GREEN "\033[32m" #define ANSI_FG_YELLOW "\033[33m" #define ANSI_FG_BLUE "\033[34m" #define ANSI_FG_MAGENTA "\033[35m" #define ANSI_FG_CYAN "\033[36m" #define ANSI_FG_WHITE "\033[37m" /* Bright foreground colors */ #define ANSI_FG_BRIGHT_BLACK "\033[90m" #define ANSI_FG_BRIGHT_RED "\033[91m" #define ANSI_FG_BRIGHT_GREEN "\033[92m" #define ANSI_FG_BRIGHT_YELLOW "\033[93m" #define ANSI_FG_BRIGHT_BLUE "\033[94m" #define ANSI_FG_BRIGHT_MAGENTA "\033[95m" #define ANSI_FG_BRIGHT_CYAN "\033[96m" #define ANSI_FG_BRIGHT_WHITE "\033[97m" /* Background colors */ #define ANSI_BG_BLACK "\033[40m" #define ANSI_BG_RED "\033[41m" #define ANSI_BG_GREEN "\033[42m" #define ANSI_BG_YELLOW "\033[43m" #define ANSI_BG_BLUE "\033[44m" #define ANSI_BG_MAGENTA "\033[45m" #define ANSI_BG_CYAN "\033[46m" #define ANSI_BG_WHITE "\033[47m" #ifdef __cplusplus } #endif #endif /* ASCII3D_CONFIG_H */