diff --git a/drivers/sdl2dev/util.c b/drivers/sdl2dev/util.c index 940652e5..b3e13d54 100644 --- a/drivers/sdl2dev/util.c +++ b/drivers/sdl2dev/util.c @@ -59,7 +59,7 @@ br_error BrSDLUtilResizeBuffers(br_pixelmap *screen, br_pixelmap **colour_buffer *colour_buffer = NULL; } - if((tmp = BrPixelmapMatchTyped(screen, BR_PMMATCH_OFFSCREEN, BR_PMT_RGB_888)) == NULL) + if((tmp = BrPixelmapMatchTyped(screen, BR_PMMATCH_OFFSCREEN, BR_PMT_RGB_565)) == NULL) return BRE_FAIL; *colour_buffer = tmp; diff --git a/drivers/softrend/CMakeLists.txt b/drivers/softrend/CMakeLists.txt index 41565e79..78651b64 100644 --- a/drivers/softrend/CMakeLists.txt +++ b/drivers/softrend/CMakeLists.txt @@ -58,12 +58,16 @@ add_library(softrend template.h timestmp.h zsrmacro.h - - "${CMAKE_CURRENT_BINARY_DIR}/drv.inc" - - ${ASM_FILES} ) +if(WIN32 AND MSVC AND (CMAKE_GENERATOR_PLATFORM STREQUAL "Win32")) + target_sources(softrend PRIVATE + "${CMAKE_CURRENT_BINARY_DIR}/drv.inc" + ${ASM_FILES} + ) + target_compile_definitions(softrend PRIVATE BR_SOFT_ENABLE_SUBDIVISION=1) +endif() + get_target_property(target_type softrend TYPE) if(target_type STREQUAL SHARED_LIBRARY) target_compile_definitions(softrend PRIVATE -DDEFINE_BR_ENTRY_POINT) diff --git a/drivers/softrend/drv.h b/drivers/softrend/drv.h index 96c22eec..454e3be2 100644 --- a/drivers/softrend/drv.h +++ b/drivers/softrend/drv.h @@ -24,6 +24,11 @@ extern "C" { #define BR_GEOMETRY_PRIMITIVES_PRIVATE #define BR_GEOMETRY_LIGHTING_PRIVATE +#ifndef BR_SOFT_ENABLE_SUBDIVISION +#define BR_SOFT_ENABLE_SUBDIVISION 0 +#endif + + #ifndef _BRDDI_H_ #include "brddi.h" #endif diff --git a/drivers/softrend/faceops.c b/drivers/softrend/faceops.c index 3889c6c9..504e6c90 100644 --- a/drivers/softrend/faceops.c +++ b/drivers/softrend/faceops.c @@ -386,7 +386,7 @@ static br_boolean subdivideCheck(brp_vertex *v0, brp_vertex *v1, brp_vertex *v2) } #endif -#if 1 +#if 0 br_scalar z0,z1,z2,zt; /* diff --git a/drivers/softrend/v1model.c b/drivers/softrend/v1model.c index eaf1e400..53781d67 100644 --- a/drivers/softrend/v1model.c +++ b/drivers/softrend/v1model.c @@ -674,6 +674,7 @@ static void GEOMETRY_CALL V1Faces_GeometryFnsUpdate(struct br_geometry *self, st } else PrimBlockAdd(renderer, (brp_render_fn *)OpTriangleClip); +#if BR_SOFT_ENABLE_SUBDIVISION /* * Optional subdivision if the primitive requests it */ @@ -682,6 +683,7 @@ static void GEOMETRY_CALL V1Faces_GeometryFnsUpdate(struct br_geometry *self, st PrimBlockOnScreenAdd(renderer, (brp_render_fn *)OpTriangleSubdivideOnScreen); SubdivideSetThreshold(rend.block->subdivide_tolerance); } +#endif break; } diff --git a/examples/brdemo/brdemo.c b/examples/brdemo/brdemo.c index 5f6e26f1..612e8390 100644 --- a/examples/brdemo/brdemo.c +++ b/examples/brdemo/brdemo.c @@ -5,7 +5,7 @@ #include "brdemo.h" -#define USE_SOFT 0 +#define USE_SOFT 1 /* begin hook */ void _BrBeginHook(void) // NOLINT(*-reserved-identifier) @@ -156,7 +156,6 @@ int BrDemoRun(const char *title, br_uint_16 width, br_uint_16 height, const br_d BRT_WINDOW_NAME_CSTR, title, BRT_HIDPI_B, BR_TRUE, #if !USE_SOFT - BRT_PIXEL_TYPE_U8, BR_PMT_RGB_888, BRT_RESIZABLE_B, BR_TRUE, BRT_OPENGL_B, BR_TRUE, #endif diff --git a/examples/samples/rdemo/dat/earth16.pix b/examples/samples/rdemo/dat/earth16.pix new file mode 100644 index 00000000..446bd300 Binary files /dev/null and b/examples/samples/rdemo/dat/earth16.pix differ diff --git a/examples/samples/rdemo/dat/earth24.pix b/examples/samples/rdemo/dat/earth24.pix new file mode 100644 index 00000000..3533c013 Binary files /dev/null and b/examples/samples/rdemo/dat/earth24.pix differ diff --git a/examples/samples/rdemo/dat/planet16.pix b/examples/samples/rdemo/dat/planet16.pix new file mode 100644 index 00000000..afdb59e9 Binary files /dev/null and b/examples/samples/rdemo/dat/planet16.pix differ diff --git a/examples/samples/rdemo/dat/planet24.pix b/examples/samples/rdemo/dat/planet24.pix new file mode 100644 index 00000000..8b015d8b Binary files /dev/null and b/examples/samples/rdemo/dat/planet24.pix differ diff --git a/examples/samples/rdemo/rdemo.c b/examples/samples/rdemo/rdemo.c index be551253..f169b7d3 100644 --- a/examples/samples/rdemo/rdemo.c +++ b/examples/samples/rdemo/rdemo.c @@ -21,7 +21,8 @@ static br_material *CreateMaterial(const char *identifier) mat->ks = BR_UFRACTION(0.50); mat->power = BR_SCALAR(20); - mat->flags = BR_MATF_GOURAUD | BR_MATF_LIGHT | BR_MATF_DISABLE_COLOUR_KEY; + mat->flags = BR_MATF_GOURAUD | BR_MATF_LIGHT | BR_MATF_DISABLE_COLOUR_KEY | BR_MATF_SUBDIVIDE; + mat->subdivide_tolerance = 1; mat->map_transform = (br_matrix23){ {BR_VECTOR2(1, 0), BR_VECTOR2(0, 1), BR_VECTOR2(0, 0)} }; @@ -123,9 +124,10 @@ br_error ReflectionInit(br_demo *demo) * Complete definition of mirror texture. Note that the colour_map * is a newly allocated pixelmap into which we'll render later. */ - ref->mirror_pm = BrPixelmapMatchTypedSized(demo->colour_buffer, BR_PMMATCH_OFFSCREEN, demo->colour_buffer->type, 256, 256); + ref->mirror_pm = BrPixelmapMatchTypedSized(demo->colour_buffer, BR_PMMATCH_OFFSCREEN, BR_PMT_INDEX_8, 256, 256); ref->mirror_pm->origin_x = (br_int_16)(ref->mirror_pm->width >> 1); ref->mirror_pm->origin_y = (br_int_16)(ref->mirror_pm->height >> 1); + ref->mirror_pm->map = demo->palette; BrMapAdd(ref->mirror_pm); /*