From 8baae4c77ff85e6fb1cacd428162804080998069 Mon Sep 17 00:00:00 2001 From: aap Date: Tue, 19 Jan 2021 11:38:51 +0100 Subject: [PATCH] PSP rendering and shader cleanup --- src/core/Frontend.cpp | 2 +- src/core/re3.cpp | 16 ++- src/extras/custompipes.h | 2 + src/extras/custompipes_d3d9.cpp | 119 +++++++++-------- src/extras/custompipes_gl.cpp | 118 ++++++++--------- src/extras/postfx.cpp | 12 +- src/extras/screendroplets.cpp | 6 +- src/extras/shaders/Makefile | 121 ------------------ ...dsVehicle_blend.frag => leedsDefault.frag} | 24 +++- src/extras/shaders/leedsDefault.vert | 51 ++++++++ ...cle_add_PS.hlsl => leedsDefault_PS_x.hlsl} | 25 +++- ...Vehicle_VS.hlsl => leedsDefault_VS_x.hlsl} | 29 ++++- src/extras/shaders/leedsVehicle.vert | 27 ---- src/extras/shaders/leedsVehicle_add.frag | 32 ----- src/extras/shaders/leedsVehicle_add_PS.cso | Bin 496 -> 0 bytes src/extras/shaders/leedsVehicle_add_PS.inc | 44 ------- src/extras/shaders/leedsVehicle_add_gl.inc | 34 ----- src/extras/shaders/leedsVehicle_blend_PS.cso | Bin 572 -> 0 bytes src/extras/shaders/leedsVehicle_blend_PS.hlsl | 33 ----- src/extras/shaders/leedsVehicle_blend_PS.inc | 50 -------- src/extras/shaders/leedsVehicle_mobile_PS.cso | Bin 728 -> 0 bytes .../shaders/leedsVehicle_mobile_PS.hlsl | 6 +- src/extras/shaders/leedsVehicle_vs_gl.inc | 29 ----- src/extras/shaders/make.cmd | 3 - src/extras/shaders/make_glsl.sh | 9 ++ src/extras/shaders/make_hlsl.cmd | 7 + src/extras/shaders/makeinc_glsl.sh | 6 + .../shaders/{makeinc.sh => makeinc_hlsl.sh} | 1 + .../shaders/{ => obj}/colourfilterLCS_PS.cso | Bin .../shaders/{ => obj}/colourfilterLCS_PS.inc | 0 .../colourfilterLCS_frag.inc} | 0 src/extras/shaders/{ => obj}/contrastPS.cso | Bin src/extras/shaders/{ => obj}/contrastPS.inc | 0 .../contrast_frag.inc} | 0 .../shaders/{ => obj}/default_UV2_VS.cso | Bin .../shaders/{ => obj}/default_UV2_VS.inc | 0 .../default_UV2_vert.inc} | 0 .../im2d_UV2_vert.inc} | 0 .../{im2d_gl.inc => obj/im2d_vert.inc} | 0 .../shaders/{ => obj}/leedsBuilding_VS.cso | Bin .../shaders/{ => obj}/leedsBuilding_VS.inc | 0 .../{ => obj}/leedsBuilding_mobile_VS.cso | Bin .../{ => obj}/leedsBuilding_mobile_VS.inc | 0 .../leedsBuilding_mobile_vert.inc} | 0 .../leedsBuilding_vert.inc} | 0 .../shaders/obj/leedsDefault_ADD_PS.cso | Bin 0 -> 532 bytes .../shaders/obj/leedsDefault_ADD_PS.inc | 47 +++++++ .../shaders/obj/leedsDefault_BLEND_PS.cso | Bin 0 -> 608 bytes .../shaders/obj/leedsDefault_BLEND_PS.inc | 53 ++++++++ .../leedsDefault_ENV_VS.cso} | Bin .../leedsDefault_ENV_VS.inc} | 2 +- .../leedsDefault_frag.inc} | 26 +++- src/extras/shaders/obj/leedsDefault_vert.inc | 53 ++++++++ .../shaders/obj/leedsVehicle_mobile_PS.cso | Bin 0 -> 728 bytes .../{ => obj}/leedsVehicle_mobile_PS.inc | 20 +-- .../{ => obj}/leedsVehicle_mobile_VS.cso | Bin .../{ => obj}/leedsVehicle_mobile_VS.inc | 0 .../leedsVehicle_mobile_frag.inc} | 0 .../leedsVehicle_mobile_vert.inc} | 0 src/extras/shaders/{ => obj}/neoGloss_PS.cso | Bin src/extras/shaders/{ => obj}/neoGloss_PS.inc | 0 src/extras/shaders/{ => obj}/neoGloss_VS.cso | Bin src/extras/shaders/{ => obj}/neoGloss_VS.inc | 0 .../neoGloss_frag.inc} | 0 .../neoGloss_vert.inc} | 0 .../shaders/{ => obj}/neoRimSkin_VS.cso | Bin .../shaders/{ => obj}/neoRimSkin_VS.inc | 0 .../neoRimSkin_vert.inc} | 0 src/extras/shaders/{ => obj}/neoRim_VS.cso | Bin src/extras/shaders/{ => obj}/neoRim_VS.inc | 0 .../{neoRim_gl.inc => obj/neoRim_vert.inc} | 0 .../shaders/{ => obj}/neoVehicle_PS.cso | Bin .../shaders/{ => obj}/neoVehicle_PS.inc | 0 .../shaders/{ => obj}/neoVehicle_VS.cso | Bin .../shaders/{ => obj}/neoVehicle_VS.inc | 0 .../neoVehicle_frag.inc} | 0 .../neoVehicle_vert.inc} | 0 .../shaders/{ => obj}/neoWorldVC_PS.cso | Bin .../shaders/{ => obj}/neoWorldVC_PS.inc | 0 .../neoWorldVC_frag.inc} | 0 src/extras/shaders/{ => obj}/scale_PS.cso | Bin 368 -> 348 bytes src/extras/shaders/{ => obj}/scale_PS.inc | 14 +- .../{scale_fs_gl.inc => obj/scale_frag.inc} | 1 + .../shaders/{ => obj}/screenDroplet_PS.cso | Bin .../shaders/{ => obj}/screenDroplet_PS.inc | 0 .../screenDroplet_frag.inc} | 0 .../{simple_fs_gl.inc => obj/simple_frag.inc} | 0 src/extras/shaders/scale.frag | 1 + src/extras/shaders/scale_PS.hlsl | 4 +- vendor/librw | 2 +- 90 files changed, 475 insertions(+), 554 deletions(-) delete mode 100644 src/extras/shaders/Makefile rename src/extras/shaders/{leedsVehicle_blend.frag => leedsDefault.frag} (61%) create mode 100644 src/extras/shaders/leedsDefault.vert rename src/extras/shaders/{leedsVehicle_add_PS.hlsl => leedsDefault_PS_x.hlsl} (59%) rename src/extras/shaders/{leedsVehicle_VS.hlsl => leedsDefault_VS_x.hlsl} (56%) delete mode 100644 src/extras/shaders/leedsVehicle.vert delete mode 100644 src/extras/shaders/leedsVehicle_add.frag delete mode 100644 src/extras/shaders/leedsVehicle_add_PS.cso delete mode 100644 src/extras/shaders/leedsVehicle_add_PS.inc delete mode 100644 src/extras/shaders/leedsVehicle_add_gl.inc delete mode 100644 src/extras/shaders/leedsVehicle_blend_PS.cso delete mode 100644 src/extras/shaders/leedsVehicle_blend_PS.hlsl delete mode 100644 src/extras/shaders/leedsVehicle_blend_PS.inc delete mode 100644 src/extras/shaders/leedsVehicle_mobile_PS.cso delete mode 100644 src/extras/shaders/leedsVehicle_vs_gl.inc delete mode 100644 src/extras/shaders/make.cmd create mode 100644 src/extras/shaders/make_glsl.sh create mode 100644 src/extras/shaders/make_hlsl.cmd create mode 100644 src/extras/shaders/makeinc_glsl.sh rename src/extras/shaders/{makeinc.sh => makeinc_hlsl.sh} (93%) rename src/extras/shaders/{ => obj}/colourfilterLCS_PS.cso (100%) rename src/extras/shaders/{ => obj}/colourfilterLCS_PS.inc (100%) rename src/extras/shaders/{colourfilterLCS_fs_gl.inc => obj/colourfilterLCS_frag.inc} (100%) rename src/extras/shaders/{ => obj}/contrastPS.cso (100%) rename src/extras/shaders/{ => obj}/contrastPS.inc (100%) rename src/extras/shaders/{contrast_fs_gl.inc => obj/contrast_frag.inc} (100%) rename src/extras/shaders/{ => obj}/default_UV2_VS.cso (100%) rename src/extras/shaders/{ => obj}/default_UV2_VS.inc (100%) rename src/extras/shaders/{default_UV2_gl.inc => obj/default_UV2_vert.inc} (100%) rename src/extras/shaders/{im2d_UV2_gl.inc => obj/im2d_UV2_vert.inc} (100%) rename src/extras/shaders/{im2d_gl.inc => obj/im2d_vert.inc} (100%) rename src/extras/shaders/{ => obj}/leedsBuilding_VS.cso (100%) rename src/extras/shaders/{ => obj}/leedsBuilding_VS.inc (100%) rename src/extras/shaders/{ => obj}/leedsBuilding_mobile_VS.cso (100%) rename src/extras/shaders/{ => obj}/leedsBuilding_mobile_VS.inc (100%) rename src/extras/shaders/{leedsBuilding_mobile_vs_gl.inc => obj/leedsBuilding_mobile_vert.inc} (100%) rename src/extras/shaders/{leedsBuilding_vs_gl.inc => obj/leedsBuilding_vert.inc} (100%) create mode 100644 src/extras/shaders/obj/leedsDefault_ADD_PS.cso create mode 100644 src/extras/shaders/obj/leedsDefault_ADD_PS.inc create mode 100644 src/extras/shaders/obj/leedsDefault_BLEND_PS.cso create mode 100644 src/extras/shaders/obj/leedsDefault_BLEND_PS.inc rename src/extras/shaders/{leedsVehicle_VS.cso => obj/leedsDefault_ENV_VS.cso} (100%) rename src/extras/shaders/{leedsVehicle_VS.inc => obj/leedsDefault_ENV_VS.inc} (99%) rename src/extras/shaders/{leedsVehicle_blend_gl.inc => obj/leedsDefault_frag.inc} (59%) create mode 100644 src/extras/shaders/obj/leedsDefault_vert.inc create mode 100644 src/extras/shaders/obj/leedsVehicle_mobile_PS.cso rename src/extras/shaders/{ => obj}/leedsVehicle_mobile_PS.inc (86%) rename src/extras/shaders/{ => obj}/leedsVehicle_mobile_VS.cso (100%) rename src/extras/shaders/{ => obj}/leedsVehicle_mobile_VS.inc (100%) rename src/extras/shaders/{leedsVehicle_mobile_fs_gl.inc => obj/leedsVehicle_mobile_frag.inc} (100%) rename src/extras/shaders/{leedsVehicle_mobile_vs_gl.inc => obj/leedsVehicle_mobile_vert.inc} (100%) rename src/extras/shaders/{ => obj}/neoGloss_PS.cso (100%) rename src/extras/shaders/{ => obj}/neoGloss_PS.inc (100%) rename src/extras/shaders/{ => obj}/neoGloss_VS.cso (100%) rename src/extras/shaders/{ => obj}/neoGloss_VS.inc (100%) rename src/extras/shaders/{neoGloss_fs_gl.inc => obj/neoGloss_frag.inc} (100%) rename src/extras/shaders/{neoGloss_vs_gl.inc => obj/neoGloss_vert.inc} (100%) rename src/extras/shaders/{ => obj}/neoRimSkin_VS.cso (100%) rename src/extras/shaders/{ => obj}/neoRimSkin_VS.inc (100%) rename src/extras/shaders/{neoRimSkin_gl.inc => obj/neoRimSkin_vert.inc} (100%) rename src/extras/shaders/{ => obj}/neoRim_VS.cso (100%) rename src/extras/shaders/{ => obj}/neoRim_VS.inc (100%) rename src/extras/shaders/{neoRim_gl.inc => obj/neoRim_vert.inc} (100%) rename src/extras/shaders/{ => obj}/neoVehicle_PS.cso (100%) rename src/extras/shaders/{ => obj}/neoVehicle_PS.inc (100%) rename src/extras/shaders/{ => obj}/neoVehicle_VS.cso (100%) rename src/extras/shaders/{ => obj}/neoVehicle_VS.inc (100%) rename src/extras/shaders/{neoVehicle_fs_gl.inc => obj/neoVehicle_frag.inc} (100%) rename src/extras/shaders/{neoVehicle_vs_gl.inc => obj/neoVehicle_vert.inc} (100%) rename src/extras/shaders/{ => obj}/neoWorldVC_PS.cso (100%) rename src/extras/shaders/{ => obj}/neoWorldVC_PS.inc (100%) rename src/extras/shaders/{neoWorldVC_fs_gl.inc => obj/neoWorldVC_frag.inc} (100%) rename src/extras/shaders/{ => obj}/scale_PS.cso (69%) rename src/extras/shaders/{ => obj}/scale_PS.inc (76%) rename src/extras/shaders/{scale_fs_gl.inc => obj/scale_frag.inc} (89%) rename src/extras/shaders/{ => obj}/screenDroplet_PS.cso (100%) rename src/extras/shaders/{ => obj}/screenDroplet_PS.inc (100%) rename src/extras/shaders/{screenDroplet_fs_gl.inc => obj/screenDroplet_frag.inc} (100%) rename src/extras/shaders/{simple_fs_gl.inc => obj/simple_frag.inc} (100%) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 62e2e65f..613d56fe 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -65,7 +65,7 @@ const CRGBA SCROLLBAR_COLOR = LABEL_COLOR; #define MIN_BRIGHTNESS 180 #define MAX_BRIGHTNESS 700 #else -// PS2 +// PS2, also PSP probably // 8 bars (32 step) #define DEFAULT_BRIGHTNESS 0x120 #define MIN_BRIGHTNESS 0x80 diff --git a/src/core/re3.cpp b/src/core/re3.cpp index efb6ec3b..bbc02d26 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -87,19 +87,21 @@ CustomFrontendOptionsPopulate(void) // These work only if we have neo folder, so they're dynamically added #ifdef EXTENDED_PIPELINES - const char *vehPipelineNames[] = { "FED_MFX", "FED_NEO" }; + const char *pipelineNames[] = { "FED_PSP", "FED_PS2","FED_MOB" }; const char *off_on[] = { "FEM_OFF", "FEM_ON" }; int fd = CFileMgr::OpenFile("neo/neo.txd","r"); if (fd) { #ifdef GRAPHICS_MENU_OPTIONS FrontendOptionSetCursor(MENUPAGE_GRAPHICS_SETTINGS, -3, false); - FrontendOptionAddSelect("FED_VPL", 0, 0, MENUALIGN_LEFT, vehPipelineNames, ARRAY_SIZE(vehPipelineNames), (int8*)&CustomPipes::VehiclePipeSwitch, false, nil, "VehiclePipeline"); + FrontendOptionAddSelect("FED_VPL", 0, 0, MENUALIGN_LEFT, pipelineNames, ARRAY_SIZE(pipelineNames), (int8*)&CustomPipes::VehiclePipeSwitch, false, nil, "VehiclePipeline"); + FrontendOptionAddSelect("FED_WPL", 0, 0, MENUALIGN_LEFT, pipelineNames, ARRAY_SIZE(pipelineNames), (int8*)&CustomPipes::WorldPipeSwitch, false, nil, "WorldPipeline"); FrontendOptionAddSelect("FED_PRM", 0, 0, MENUALIGN_LEFT, off_on, 2, (int8*)&CustomPipes::RimlightEnable, false, nil, "NeoRimLight"); FrontendOptionAddSelect("FED_WLM", 0, 0, MENUALIGN_LEFT, off_on, 2, (int8*)&CustomPipes::LightmapEnable, false, nil, "NeoLightMaps"); FrontendOptionAddSelect("FED_RGL", 0, 0, MENUALIGN_LEFT, off_on, 2, (int8*)&CustomPipes::GlossEnable, false, nil, "NeoRoadGloss"); #else FrontendOptionSetCursor(MENUPAGE_DISPLAY_SETTINGS, -3, false); - FrontendOptionAddSelect("FED_VPL", 0, 0, MENUALIGN_LEFT, vehPipelineNames, ARRAY_SIZE(vehPipelineNames), (int8*)&CustomPipes::VehiclePipeSwitch, false, nil, "VehiclePipeline"); + FrontendOptionAddSelect("FED_VPL", 0, 0, MENUALIGN_LEFT, pipelineNames, ARRAY_SIZE(pipelineNames), (int8*)&CustomPipes::VehiclePipeSwitch, false, nil, "VehiclePipeline"); + FrontendOptionAddSelect("FED_WPL", 0, 0, MENUALIGN_LEFT, pipelineNames, ARRAY_SIZE(pipelineNames), (int8*)&CustomPipes::WorldPipeSwitch, false, nil, "WorldPipeline"); FrontendOptionAddSelect("FED_PRM", 0, 0, MENUALIGN_LEFT, off_on, 2, (int8*)&CustomPipes::RimlightEnable, false, nil, "NeoRimLight"); FrontendOptionAddSelect("FED_WLM", 0, 0, MENUALIGN_LEFT, off_on, 2, (int8*)&CustomPipes::LightmapEnable, false, nil, "NeoLightMaps"); FrontendOptionAddSelect("FED_RGL", 0, 0, MENUALIGN_LEFT, off_on, 2, (int8*)&CustomPipes::GlossEnable, false, nil, "NeoRoadGloss"); @@ -661,13 +663,13 @@ extern bool gbRenderWorld2; DebugMenuAddVarBool8("Render", "Occlusion debug", &bDispayOccDebugStuff, nil); #endif #ifdef EXTENDED_PIPELINES - static const char *worldpipenames[] = { "PS2", "Mobile" }; + static const char *worldpipenames[] = { "PSP", "PS2", "Mobile" }; e = DebugMenuAddVar("Render", "World Rendering", &CustomPipes::WorldPipeSwitch, nil, - 1, CustomPipes::WORLDPIPE_PS2, CustomPipes::WORLDPIPE_MOBILE, worldpipenames); + 1, CustomPipes::WORLDPIPE_PSP, CustomPipes::WORLDPIPE_MOBILE, worldpipenames); DebugMenuEntrySetWrap(e, true); - static const char *vehpipenames[] = { "PS2", "Mobile", "Neo" }; + static const char *vehpipenames[] = { "PSP", "PS2", "Mobile" }; e = DebugMenuAddVar("Render", "Vehicle Pipeline", &CustomPipes::VehiclePipeSwitch, nil, - 1, CustomPipes::VEHICLEPIPE_PS2, CustomPipes::VEHICLEPIPE_MOBILE, vehpipenames); + 1, CustomPipes::VEHICLEPIPE_PSP, CustomPipes::VEHICLEPIPE_MOBILE, vehpipenames); DebugMenuEntrySetWrap(e, true); DebugMenuAddVarBool8("Render", "Glass Cars cheat", &CustomPipes::gGlassCarsCheat, nil); extern bool gbRenderDebugEnvMap; diff --git a/src/extras/custompipes.h b/src/extras/custompipes.h index e83201ff..3c779e31 100644 --- a/src/extras/custompipes.h +++ b/src/extras/custompipes.h @@ -86,6 +86,7 @@ extern int16 QuadIndices[6]; void EnvMapRender(void); enum { + VEHICLEPIPE_PSP, VEHICLEPIPE_PS2, VEHICLEPIPE_MOBILE, @@ -106,6 +107,7 @@ void AttachVehiclePipe(rw::Atomic *atomic); void AttachVehiclePipe(rw::Clump *clump); enum { + WORLDPIPE_PSP, WORLDPIPE_PS2, WORLDPIPE_MOBILE }; diff --git a/src/extras/custompipes_d3d9.cpp b/src/extras/custompipes_d3d9.cpp index 9a02f874..551d1a74 100644 --- a/src/extras/custompipes_d3d9.cpp +++ b/src/extras/custompipes_d3d9.cpp @@ -45,12 +45,11 @@ enum { VSLOC_ambient, VSLOC_viewMat, // only vehicle - PSLOC_colorscale = 1, - // Leeds vehicle PS2 VSLOC_texMat = rw::d3d::VSLOC_afterLights, - PSLOC_shininess = 1, + PSLOC_colorscale = 1, + PSLOC_shininess, PSLOC_skyTop, PSLOC_skyBot }; @@ -124,6 +123,9 @@ leedsVehicleRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) SetRenderState(SRCBLEND, BLENDONE); + float colorscale[4]; + colorscale[3] = 1.0f; + InstanceData *inst = header->inst; for(rw::uint32 i = 0; i < header->numMeshes; i++){ Material *m = inst->material; @@ -140,6 +142,13 @@ leedsVehicleRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) setMaterial(m->color, m->surfaceProps); + float cs = 1.0f; + // how does the PS2 handle this actually? probably scaled material color? + if(VehiclePipeSwitch == VEHICLEPIPE_PSP && m->texture) + cs = 2.0f; + colorscale[0] = colorscale[1] = colorscale[2] = cs; + d3ddevice->SetPixelShaderConstantF(PSLOC_colorscale, colorscale, 1); + if(m->texture) d3d::setTexture(0, m->texture); else @@ -154,6 +163,24 @@ leedsVehicleRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) SetRenderState(SRCBLEND, BLENDSRCALPHA); } +void +uploadWorldLights(void) +{ + using namespace rw; + using namespace rw::d3d; + using namespace rw::d3d9; + + RGBAf amb, emiss; + amb.red = CTimeCycle::GetAmbientRed(); + amb.green = CTimeCycle::GetAmbientGreen(); + amb.blue = CTimeCycle::GetAmbientBlue(); + amb.alpha = 1.0f; + emiss = pAmbient->color; + + d3ddevice->SetVertexShaderConstantF(VSLOC_ambient, (float*)&amb, 1); + d3ddevice->SetVertexShaderConstantF(VSLOC_emissive, (float*)&emiss, 1); +} + void leedsVehicleRenderCB_mobile(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) { @@ -172,15 +199,7 @@ leedsVehicleRenderCB_mobile(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *he setVertexShader(leedsVehicle_mobile_VS); setPixelShader(leedsVehicle_mobile_PS); - RGBAf amb, emiss; - amb.red = CTimeCycle::GetAmbientRed(); - amb.green = CTimeCycle::GetAmbientGreen(); - amb.blue = CTimeCycle::GetAmbientBlue(); - amb.alpha = 1.0f; - emiss = pAmbient->color; - - d3ddevice->SetVertexShaderConstantF(VSLOC_ambient, (float*)&amb, 1); - d3ddevice->SetVertexShaderConstantF(VSLOC_emissive, (float*)&emiss, 1); + uploadWorldLights(); RGBAf skyTop, skyBot; skyTop.red = CTimeCycle::GetSkyTopRed()/255.0f; @@ -265,7 +284,7 @@ vehicleRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) using namespace rw::d3d9; // TODO: make this less of a kludge - if(VehiclePipeSwitch == VEHICLEPIPE_PS2){ + if(VehiclePipeSwitch == VEHICLEPIPE_PSP || VehiclePipeSwitch == VEHICLEPIPE_PS2){ leedsVehicleRenderCB(atomic, header); // matFXGlobals.pipelines[rw::platform]->render(atomic); return; @@ -337,31 +356,31 @@ CreateVehiclePipe(void) // fp = ReadTweakValueTable(fp, SpecColor); // } -#include "shaders/neoVehicle_VS.inc" +#include "shaders/obj/neoVehicle_VS.inc" neoVehicle_VS = rw::d3d::createVertexShader(neoVehicle_VS_cso); assert(neoVehicle_VS); -#include "shaders/neoVehicle_PS.inc" +#include "shaders/obj/neoVehicle_PS.inc" neoVehicle_PS = rw::d3d::createPixelShader(neoVehicle_PS_cso); assert(neoVehicle_PS); -#include "shaders/leedsVehicle_VS.inc" - leedsVehicle_VS = rw::d3d::createVertexShader(leedsVehicle_VS_cso); +#include "shaders/obj/leedsDefault_ENV_VS.inc" + leedsVehicle_VS = rw::d3d::createVertexShader(leedsDefault_ENV_VS_cso); assert(leedsVehicle_VS); -#include "shaders/leedsVehicle_mobile_VS.inc" +#include "shaders/obj/leedsVehicle_mobile_VS.inc" leedsVehicle_mobile_VS = rw::d3d::createVertexShader(leedsVehicle_mobile_VS_cso); assert(leedsVehicle_mobile_VS); -#include "shaders/leedsVehicle_blend_PS.inc" - leedsVehicle_blend_PS = rw::d3d::createPixelShader(leedsVehicle_blend_PS_cso); +#include "shaders/obj/leedsDefault_BLEND_PS.inc" + leedsVehicle_blend_PS = rw::d3d::createPixelShader(leedsDefault_BLEND_PS_cso); assert(leedsVehicle_blend_PS); -#include "shaders/leedsVehicle_add_PS.inc" - leedsVehicle_add_PS = rw::d3d::createPixelShader(leedsVehicle_add_PS_cso); +#include "shaders/obj/leedsDefault_ADD_PS.inc" + leedsVehicle_add_PS = rw::d3d::createPixelShader(leedsDefault_ADD_PS_cso); assert(leedsVehicle_add_PS); -#include "shaders/leedsVehicle_mobile_PS.inc" +#include "shaders/obj/leedsVehicle_mobile_PS.inc" leedsVehicle_mobile_PS = rw::d3d::createPixelShader(leedsVehicle_mobile_PS_cso); assert(leedsVehicle_mobile_PS); @@ -424,15 +443,7 @@ worldRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) uploadMatrices(atomic->getFrame()->getLTM()); - RGBAf amb, emiss; - amb.red = CTimeCycle::GetAmbientRed(); - amb.green = CTimeCycle::GetAmbientGreen(); - amb.blue = CTimeCycle::GetAmbientBlue(); - amb.alpha = 1.0f; - emiss = pAmbient->color; - - d3ddevice->SetVertexShaderConstantF(VSLOC_ambient, (float*)&amb, 1); - d3ddevice->SetVertexShaderConstantF(VSLOC_emissive, (float*)&emiss, 1); + uploadWorldLights(); float colorscale[4]; colorscale[3] = 1.0f; @@ -442,7 +453,7 @@ worldRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) Material *m = inst->material; float cs = 1.0f; - if(WorldPipeSwitch == WORLDPIPE_PS2 && m->texture) + if(WorldPipeSwitch != WORLDPIPE_MOBILE && m->texture) cs = 255/128.0f; colorscale[0] = colorscale[1] = colorscale[2] = cs; d3ddevice->SetPixelShaderConstantF(PSLOC_colorscale, colorscale, 1); @@ -469,13 +480,13 @@ CreateWorldPipe(void) // else // ReadTweakValueTable((char*)work_buff, WorldLightmapBlend); -#include "shaders/leedsBuilding_VS.inc" +#include "shaders/obj/leedsBuilding_VS.inc" leedsBuilding_VS = rw::d3d::createVertexShader(leedsBuilding_VS_cso); assert(leedsBuilding_VS); -#include "shaders/leedsBuilding_mobile_VS.inc" +#include "shaders/obj/leedsBuilding_mobile_VS.inc" leedsBuilding_mobile_VS = rw::d3d::createVertexShader(leedsBuilding_mobile_VS_cso); assert(leedsBuilding_mobile_VS); -#include "shaders/scale_PS.inc" +#include "shaders/obj/scale_PS.inc" scale_PS = rw::d3d::createPixelShader(scale_PS_cso); assert(scale_PS); @@ -559,11 +570,11 @@ glossRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) void CreateGlossPipe(void) { -#include "shaders/neoGloss_VS.inc" +#include "shaders/obj/neoGloss_VS.inc" neoGloss_VS = rw::d3d::createVertexShader(neoGloss_VS_cso); assert(neoGloss_VS); -#include "shaders/neoGloss_PS.inc" +#include "shaders/obj/neoGloss_PS.inc" neoGloss_PS = rw::d3d::createPixelShader(neoGloss_PS_cso); assert(neoGloss_PS); @@ -725,11 +736,11 @@ CreateRimLightPipes(void) } -#include "shaders/neoRim_VS.inc" +#include "shaders/obj/neoRim_VS.inc" neoRim_VS = rw::d3d::createVertexShader(neoRim_VS_cso); assert(neoRim_VS); -#include "shaders/neoRimSkin_VS.inc" +#include "shaders/obj/neoRimSkin_VS.inc" neoRimSkin_VS = rw::d3d::createVertexShader(neoRimSkin_VS_cso); assert(neoRimSkin_VS); @@ -850,15 +861,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass) setPixelShader(CustomPipes::scale_PS); d3ddevice->SetVertexShaderConstantF(VSLOC_combined, (float*)&building->combinedMat, 4); - RGBAf amb, emiss; - amb.red = CTimeCycle::GetAmbientRed(); - amb.green = CTimeCycle::GetAmbientGreen(); - amb.blue = CTimeCycle::GetAmbientBlue(); - amb.alpha = 1.0f; - emiss = pAmbient->color; - - d3ddevice->SetVertexShaderConstantF(CustomPipes::VSLOC_ambient, (float*)&amb, 1); - d3ddevice->SetVertexShaderConstantF(CustomPipes::VSLOC_emissive, (float*)&emiss, 1); + CustomPipes::uploadWorldLights(); colorscale[3] = 1.0f; @@ -866,14 +869,14 @@ AtomicFirstPass(RpAtomic *atomic, int pass) } float cs = 1.0f; - if(CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_PS2 && m->texture) + if(CustomPipes::WorldPipeSwitch != CustomPipes::WORLDPIPE_MOBILE && m->texture) cs = 255/128.0f; colorscale[0] = colorscale[1] = colorscale[2] = cs; d3ddevice->SetPixelShaderConstantF(CustomPipes::PSLOC_colorscale, colorscale, 1); d3d::setTexture(0, m->texture); - setMaterial(m->color, m->surfaceProps, 0.5f); + setMaterial(m->color, m->surfaceProps, CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_PS2 ? 0.5f : 1.0f); drawInst(building->instHeader, inst); } @@ -913,15 +916,7 @@ RenderBlendPass(int pass) setVertexShader(CustomPipes::leedsBuilding_VS); setPixelShader(CustomPipes::scale_PS); - RGBAf amb, emiss; - amb.red = CTimeCycle::GetAmbientRed(); - amb.green = CTimeCycle::GetAmbientGreen(); - amb.blue = CTimeCycle::GetAmbientBlue(); - amb.alpha = 1.0f; - emiss = pAmbient->color; - - d3ddevice->SetVertexShaderConstantF(CustomPipes::VSLOC_ambient, (float*)&amb, 1); - d3ddevice->SetVertexShaderConstantF(CustomPipes::VSLOC_emissive, (float*)&emiss, 1); + CustomPipes::uploadWorldLights(); float colorscale[4]; colorscale[3] = 1.0f; @@ -944,7 +939,7 @@ RenderBlendPass(int pass) continue; // already done this one float cs = 1.0f; - if(CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_PS2 && m->texture) + if(CustomPipes::WorldPipeSwitch != CustomPipes::WORLDPIPE_MOBILE && m->texture) cs = 255/128.0f; colorscale[0] = colorscale[1] = colorscale[2] = cs; d3ddevice->SetPixelShaderConstantF(CustomPipes::PSLOC_colorscale, colorscale, 1); @@ -953,7 +948,7 @@ RenderBlendPass(int pass) rw::RGBA color = m->color; color.alpha = (color.alpha * building->fadeAlpha)/255; - setMaterial(color, m->surfaceProps, 0.5f); + setMaterial(color, m->surfaceProps, CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_PS2 ? 0.5f : 1.0f); drawInst(building->instHeader, inst); } diff --git a/src/extras/custompipes_gl.cpp b/src/extras/custompipes_gl.cpp index eeb62b8d..46efdd8a 100644 --- a/src/extras/custompipes_gl.cpp +++ b/src/extras/custompipes_gl.cpp @@ -132,6 +132,9 @@ leedsVehicleRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) SetRenderState(SRCBLEND, BLENDONE); + float colorscale[4]; + colorscale[3] = 1.0f; + while(n--){ m = inst->material; @@ -147,6 +150,13 @@ leedsVehicleRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) setMaterial(m->color, m->surfaceProps); + float cs = 1.0f; + // how does the PS2 handle this actually? probably scaled material color? + if(VehiclePipeSwitch == VEHICLEPIPE_PSP && m->texture) + cs = 2.0f; + colorscale[0] = colorscale[1] = colorscale[2] = cs; + glUniform4fv(U(u_colorscale), 1, colorscale); + setTexture(0, m->texture); drawInst(header, inst); @@ -162,6 +172,23 @@ leedsVehicleRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) #endif } +void +uploadWorldLights(void) +{ + using namespace rw; + using namespace rw::gl3; + + RGBAf amb, emiss; + amb.red = CTimeCycle::GetAmbientRed(); + amb.green = CTimeCycle::GetAmbientGreen(); + amb.blue = CTimeCycle::GetAmbientBlue(); + amb.alpha = 1.0f; + emiss = pAmbient->color; + + glUniform4fv(U(CustomPipes::u_amb), 1, (float*)&amb); + glUniform4fv(U(CustomPipes::u_emiss), 1, (float*)&emiss); +} + static void leedsVehicleRenderCB_mobile(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) { @@ -186,15 +213,7 @@ leedsVehicleRenderCB_mobile(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *hea leedsVehicleShader_mobile->use(); - RGBAf amb, emiss; - amb.red = CTimeCycle::GetAmbientRed(); - amb.green = CTimeCycle::GetAmbientGreen(); - amb.blue = CTimeCycle::GetAmbientBlue(); - amb.alpha = 1.0f; - emiss = pAmbient->color; - - glUniform4fv(U(u_amb), 1, (float*)&amb); - glUniform4fv(U(u_emiss), 1, (float*)&emiss); + uploadWorldLights(); RGBAf skyTop, skyBot; skyTop.red = CTimeCycle::GetSkyTopRed()/255.0f; @@ -276,7 +295,7 @@ vehicleRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) using namespace rw::gl3; // TODO: make this less of a kludge - if(VehiclePipeSwitch == VEHICLEPIPE_PS2){ + if(VehiclePipeSwitch == VEHICLEPIPE_PSP || VehiclePipeSwitch == VEHICLEPIPE_PS2){ leedsVehicleRenderCB(atomic, header); // matFXGlobals.pipelines[rw::platform]->render(atomic); return; @@ -361,8 +380,8 @@ CreateVehiclePipe(void) { -#include "shaders/neoVehicle_fs_gl.inc" -#include "shaders/neoVehicle_vs_gl.inc" +#include "shaders/obj/neoVehicle_frag.inc" +#include "shaders/obj/neoVehicle_vert.inc" const char *vs[] = { shaderDecl, header_vert_src, neoVehicle_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, neoVehicle_frag_src, nil }; neoVehicleShader = Shader::create(vs, fs); @@ -370,12 +389,11 @@ CreateVehiclePipe(void) } { -#include "shaders/leedsVehicle_add_gl.inc" -#include "shaders/leedsVehicle_blend_gl.inc" -#include "shaders/leedsVehicle_vs_gl.inc" - const char *vs[] = { shaderDecl, header_vert_src, leedsVehicle_vert_src, nil }; - const char *fs_add[] = { shaderDecl, header_frag_src, leedsVehicle_add_frag_src, nil }; - const char *fs_blend[] = { shaderDecl, header_frag_src, leedsVehicle_blend_frag_src, nil }; +#include "shaders/obj/leedsDefault_vert.inc" +#include "shaders/obj/leedsDefault_frag.inc" + const char *vs[] = { shaderDecl, header_vert_src, "#define ENVMAP\n", leedsDefault_vert_src, nil }; + const char *fs_add[] = { shaderDecl, header_frag_src, "#define PASS_ADD\n", leedsDefault_frag_src, nil }; + const char *fs_blend[] = { shaderDecl, header_frag_src, "#define PASS_BLEND\n", leedsDefault_frag_src, nil }; leedsVehicleShader_add = Shader::create(vs, fs_add); assert(leedsVehicleShader_add); leedsVehicleShader_blend = Shader::create(vs, fs_blend); @@ -383,8 +401,8 @@ CreateVehiclePipe(void) } { -#include "shaders/leedsVehicle_mobile_fs_gl.inc" -#include "shaders/leedsVehicle_mobile_vs_gl.inc" +#include "shaders/obj/leedsVehicle_mobile_frag.inc" +#include "shaders/obj/leedsVehicle_mobile_vert.inc" const char *vs[] = { shaderDecl, header_vert_src, leedsVehicle_mobile_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, leedsVehicle_mobile_frag_src, nil }; leedsVehicleShader_mobile = Shader::create(vs, fs); @@ -453,15 +471,7 @@ worldRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) else CustomPipes::leedsWorldShader->use(); - RGBAf amb, emiss; - amb.red = CTimeCycle::GetAmbientRed(); - amb.green = CTimeCycle::GetAmbientGreen(); - amb.blue = CTimeCycle::GetAmbientBlue(); - amb.alpha = 1.0f; - emiss = pAmbient->color; - - glUniform4fv(U(u_amb), 1, (float*)&amb); - glUniform4fv(U(u_emiss), 1, (float*)&emiss); + uploadWorldLights(); float colorscale[4]; colorscale[3] = 1.0f; @@ -470,14 +480,14 @@ worldRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) m = inst->material; float cs = 1.0f; - if(WorldPipeSwitch == WORLDPIPE_PS2 && m->texture) + if(WorldPipeSwitch != WORLDPIPE_MOBILE && m->texture) cs = 255/128.0f; colorscale[0] = colorscale[1] = colorscale[2] = cs; glUniform4fv(U(u_colorscale), 1, colorscale); setTexture(0, m->texture); - setMaterial(m->color, m->surfaceProps, 0.5f); + setMaterial(m->color, m->surfaceProps, CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_PS2 ? 0.5f : 1.0f); rw::SetRenderState(VERTEXALPHA, inst->vertexAlpha || m->color.alpha != 0xFF); @@ -501,9 +511,9 @@ CreateWorldPipe(void) // ReadTweakValueTable((char*)work_buff, WorldLightmapBlend); { -#include "shaders/scale_fs_gl.inc" -#include "shaders/leedsBuilding_vs_gl.inc" -#include "shaders/leedsBuilding_mobile_vs_gl.inc" +#include "shaders/obj/scale_frag.inc" +#include "shaders/obj/leedsBuilding_vert.inc" +#include "shaders/obj/leedsBuilding_mobile_vert.inc" const char *vs[] = { shaderDecl, header_vert_src, leedsBuilding_vert_src, nil }; const char *vs_mobile[] = { shaderDecl, header_vert_src, leedsBuilding_mobile_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, scale_frag_src, nil }; @@ -610,8 +620,8 @@ CreateGlossPipe(void) using namespace rw::gl3; { -#include "shaders/neoGloss_fs_gl.inc" -#include "shaders/neoGloss_vs_gl.inc" +#include "shaders/obj/neoGloss_frag.inc" +#include "shaders/obj/neoGloss_vert.inc" const char *vs[] = { shaderDecl, header_vert_src, neoGloss_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, neoGloss_frag_src, nil }; neoGlossShader = Shader::create(vs, fs); @@ -782,8 +792,8 @@ CreateRimLightPipes(void) } { -#include "shaders/simple_fs_gl.inc" -#include "shaders/neoRimSkin_gl.inc" +#include "shaders/obj/simple_frag.inc" +#include "shaders/obj/neoRimSkin_vert.inc" const char *vs[] = { shaderDecl, header_vert_src, neoRimSkin_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, simple_frag_src, nil }; neoRimSkinShader = Shader::create(vs, fs); @@ -791,8 +801,8 @@ CreateRimLightPipes(void) } { -#include "shaders/simple_fs_gl.inc" -#include "shaders/neoRim_gl.inc" +#include "shaders/obj/simple_frag.inc" +#include "shaders/obj/neoRim_vert.inc" const char *vs[] = { shaderDecl, header_vert_src, neoRim_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, simple_frag_src, nil }; neoRimShader = Shader::create(vs, fs); @@ -936,25 +946,17 @@ AtomicFirstPass(RpAtomic *atomic, int pass) setAttribPointers(building->instHeader->attribDesc, building->instHeader->numAttribs); #endif - RGBAf amb, emiss; - amb.red = CTimeCycle::GetAmbientRed(); - amb.green = CTimeCycle::GetAmbientGreen(); - amb.blue = CTimeCycle::GetAmbientBlue(); - amb.alpha = 1.0f; - emiss = pAmbient->color; - - glUniform4fv(U(CustomPipes::u_amb), 1, (float*)&amb); - glUniform4fv(U(CustomPipes::u_emiss), 1, (float*)&emiss); + CustomPipes::uploadWorldLights(); colorscale[3] = 1.0f; setupDone = true; } - setMaterial(m->color, m->surfaceProps, 0.5f); + setMaterial(m->color, m->surfaceProps, CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_PS2 ? 0.5f : 1.0f); float cs = 1.0f; - if(CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_PS2 && m->texture) + if(CustomPipes::WorldPipeSwitch != CustomPipes::WORLDPIPE_MOBILE && m->texture) cs = 255/128.0f; colorscale[0] = colorscale[1] = colorscale[2] = cs; glUniform4fv(U(CustomPipes::u_colorscale), 1, colorscale); @@ -999,15 +1001,7 @@ RenderBlendPass(int pass) else CustomPipes::leedsWorldShader->use(); - RGBAf amb, emiss; - amb.red = CTimeCycle::GetAmbientRed(); - amb.green = CTimeCycle::GetAmbientGreen(); - amb.blue = CTimeCycle::GetAmbientBlue(); - amb.alpha = 1.0f; - emiss = pAmbient->color; - - glUniform4fv(U(CustomPipes::u_amb), 1, (float*)&amb); - glUniform4fv(U(CustomPipes::u_emiss), 1, (float*)&emiss); + CustomPipes::uploadWorldLights(); float colorscale[4]; colorscale[3] = 1.0f; @@ -1035,10 +1029,10 @@ RenderBlendPass(int pass) rw::RGBA color = m->color; color.alpha = (color.alpha * building->fadeAlpha)/255; - setMaterial(color, m->surfaceProps, 0.5f); + setMaterial(color, m->surfaceProps, CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_PS2 ? 0.5f : 1.0f); float cs = 1.0f; - if(CustomPipes::WorldPipeSwitch == CustomPipes::WORLDPIPE_PS2 && m->texture) + if(CustomPipes::WorldPipeSwitch != CustomPipes::WORLDPIPE_MOBILE && m->texture) cs = 255/128.0f; colorscale[0] = colorscale[1] = colorscale[2] = cs; glUniform4fv(U(CustomPipes::u_colorscale), 1, colorscale); diff --git a/src/extras/postfx.cpp b/src/extras/postfx.cpp index b07b5426..360b4f7a 100644 --- a/src/extras/postfx.cpp +++ b/src/extras/postfx.cpp @@ -143,17 +143,17 @@ CPostFX::Open(RwCamera *cam) #ifdef RW_D3D9 -#include "shaders/colourfilterLCS_PS.inc" +#include "shaders/obj/colourfilterLCS_PS.inc" colourfilterLCS_PS = rw::d3d::createPixelShader(colourfilterLCS_PS_cso); -#include "shaders/contrastPS.inc" +#include "shaders/obj/contrastPS.inc" contrast_PS = rw::d3d::createPixelShader(contrastPS_cso); #endif #ifdef RW_OPENGL using namespace rw::gl3; { -#include "shaders/im2d_gl.inc" -#include "shaders/colourfilterLCS_fs_gl.inc" +#include "shaders/obj/im2d_vert.inc" +#include "shaders/obj/colourfilterLCS_frag.inc" const char *vs[] = { shaderDecl, header_vert_src, im2d_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, colourfilterLCS_frag_src, nil }; colourFilterLCS = Shader::create(vs, fs); @@ -161,8 +161,8 @@ CPostFX::Open(RwCamera *cam) } { -#include "shaders/im2d_gl.inc" -#include "shaders/contrast_fs_gl.inc" +#include "shaders/obj/im2d_vert.inc" +#include "shaders/obj/contrast_frag.inc" const char *vs[] = { shaderDecl, header_vert_src, im2d_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, contrast_frag_src, nil }; contrast = Shader::create(vs, fs); diff --git a/src/extras/screendroplets.cpp b/src/extras/screendroplets.cpp index ac3a17b2..963b7624 100644 --- a/src/extras/screendroplets.cpp +++ b/src/extras/screendroplets.cpp @@ -112,14 +112,14 @@ ScreenDroplets::InitDraw(void) openim2d_uv2(); #ifdef RW_D3D9 -#include "shaders/screenDroplet_PS.inc" +#include "shaders/obj/screenDroplet_PS.inc" screenDroplet_PS = rw::d3d::createPixelShader(screenDroplet_PS_cso); #endif #ifdef RW_GL3 using namespace rw::gl3; { -#include "shaders/im2d_UV2_gl.inc" -#include "shaders/screenDroplet_fs_gl.inc" +#include "shaders/obj/im2d_UV2_vert.inc" +#include "shaders/obj/screenDroplet_frag.inc" const char *vs[] = { shaderDecl, header_vert_src, im2d_UV2_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, screenDroplet_frag_src, nil }; screenDroplet = Shader::create(vs, fs); diff --git a/src/extras/shaders/Makefile b/src/extras/shaders/Makefile deleted file mode 100644 index 393ab660..00000000 --- a/src/extras/shaders/Makefile +++ /dev/null @@ -1,121 +0,0 @@ -all: im2d_gl.inc simple_fs_gl.inc default_UV2_gl.inc \ - colourfilterLCS_fs_gl.inc contrast_fs_gl.inc \ - neoRim_gl.inc neoRimSkin_gl.inc \ - neoWorldVC_fs_gl.inc neoGloss_vs_gl.inc neoGloss_fs_gl.inc \ - neoVehicle_vs_gl.inc neoVehicle_fs_gl.inc \ - im2d_UV2_gl.inc screenDroplet_fs_gl.inc \ - leedsBuilding_vs_gl.inc leedsBuilding_mobile_vs_gl.inc scale_fs_gl.inc \ - leedsVehicle_vs_gl.inc leedsVehicle_add_gl.inc leedsVehicle_blend_gl.inc \ - leedsVehicle_mobile_vs_gl.inc leedsVehicle_mobile_fs_gl.inc - -im2d_gl.inc: im2d.vert - (echo 'const char *im2d_vert_src =';\ - sed 's/..*/"&\\n"/' im2d.vert;\ - echo ';') >im2d_gl.inc - -colourfilterLCS_fs_gl.inc: colourfilterLCS.frag - (echo 'const char *colourfilterLCS_frag_src =';\ - sed 's/..*/"&\\n"/' colourfilterLCS.frag;\ - echo ';') >colourfilterLCS_fs_gl.inc -simple_fs_gl.inc: simple.frag - (echo 'const char *simple_frag_src =';\ - sed 's/..*/"&\\n"/' simple.frag;\ - echo ';') >simple_fs_gl.inc - -default_UV2_gl.inc: default_UV2.vert - (echo 'const char *default_UV2_vert_src =';\ - sed 's/..*/"&\\n"/' default_UV2.vert;\ - echo ';') >default_UV2_gl.inc - - - -contrast_fs_gl.inc: contrast.frag - (echo 'const char *contrast_frag_src =';\ - sed 's/..*/"&\\n"/' contrast.frag;\ - echo ';') >contrast_fs_gl.inc - - -neoRim_gl.inc: neoRim.vert - (echo 'const char *neoRim_vert_src =';\ - sed 's/..*/"&\\n"/' neoRim.vert;\ - echo ';') >neoRim_gl.inc - -neoRimSkin_gl.inc: neoRimSkin.vert - (echo 'const char *neoRimSkin_vert_src =';\ - sed 's/..*/"&\\n"/' neoRimSkin.vert;\ - echo ';') >neoRimSkin_gl.inc - -neoWorldVC_fs_gl.inc: neoWorldVC.frag - (echo 'const char *neoWorldVC_frag_src =';\ - sed 's/..*/"&\\n"/' neoWorldVC.frag;\ - echo ';') >neoWorldVC_fs_gl.inc - -neoGloss_fs_gl.inc: neoGloss.frag - (echo 'const char *neoGloss_frag_src =';\ - sed 's/..*/"&\\n"/' neoGloss.frag;\ - echo ';') >neoGloss_fs_gl.inc - -neoGloss_vs_gl.inc: neoGloss.vert - (echo 'const char *neoGloss_vert_src =';\ - sed 's/..*/"&\\n"/' neoGloss.vert;\ - echo ';') >neoGloss_vs_gl.inc - -neoVehicle_vs_gl.inc: neoVehicle.vert - (echo 'const char *neoVehicle_vert_src =';\ - sed 's/..*/"&\\n"/' neoVehicle.vert;\ - echo ';') >neoVehicle_vs_gl.inc - -neoVehicle_fs_gl.inc: neoVehicle.frag - (echo 'const char *neoVehicle_frag_src =';\ - sed 's/..*/"&\\n"/' neoVehicle.frag;\ - echo ';') >neoVehicle_fs_gl.inc - -im2d_UV2_gl.inc: im2d_UV2.vert - (echo 'const char *im2d_UV2_vert_src =';\ - sed 's/..*/"&\\n"/' im2d_UV2.vert;\ - echo ';') >im2d_UV2_gl.inc - -screenDroplet_fs_gl.inc: screenDroplet.frag - (echo 'const char *screenDroplet_frag_src =';\ - sed 's/..*/"&\\n"/' screenDroplet.frag;\ - echo ';') >screenDroplet_fs_gl.inc - -leedsBuilding_vs_gl.inc: leedsBuilding.vert - (echo 'const char *leedsBuilding_vert_src =';\ - sed 's/..*/"&\\n"/' leedsBuilding.vert;\ - echo ';') >leedsBuilding_vs_gl.inc - -leedsBuilding_mobile_vs_gl.inc: leedsBuilding_mobile.vert - (echo 'const char *leedsBuilding_mobile_vert_src =';\ - sed 's/..*/"&\\n"/' leedsBuilding_mobile.vert;\ - echo ';') >leedsBuilding_mobile_vs_gl.inc - -scale_fs_gl.inc: scale.frag - (echo 'const char *scale_frag_src =';\ - sed 's/..*/"&\\n"/' scale.frag;\ - echo ';') >scale_fs_gl.inc - -leedsVehicle_vs_gl.inc: leedsVehicle.vert - (echo 'const char *leedsVehicle_vert_src =';\ - sed 's/..*/"&\\n"/' leedsVehicle.vert;\ - echo ';') >leedsVehicle_vs_gl.inc - -leedsVehicle_add_gl.inc: leedsVehicle_add.frag - (echo 'const char *leedsVehicle_add_frag_src =';\ - sed 's/..*/"&\\n"/' leedsVehicle_add.frag;\ - echo ';') >leedsVehicle_add_gl.inc - -leedsVehicle_blend_gl.inc: leedsVehicle_blend.frag - (echo 'const char *leedsVehicle_blend_frag_src =';\ - sed 's/..*/"&\\n"/' leedsVehicle_blend.frag;\ - echo ';') >leedsVehicle_blend_gl.inc - -leedsVehicle_mobile_vs_gl.inc: leedsVehicle_mobile.vert - (echo 'const char *leedsVehicle_mobile_vert_src =';\ - sed 's/..*/"&\\n"/' leedsVehicle_mobile.vert;\ - echo ';') >leedsVehicle_mobile_vs_gl.inc - -leedsVehicle_mobile_fs_gl.inc: leedsVehicle_mobile.frag - (echo 'const char *leedsVehicle_mobile_frag_src =';\ - sed 's/..*/"&\\n"/' leedsVehicle_mobile.frag;\ - echo ';') >leedsVehicle_mobile_fs_gl.inc diff --git a/src/extras/shaders/leedsVehicle_blend.frag b/src/extras/shaders/leedsDefault.frag similarity index 61% rename from src/extras/shaders/leedsVehicle_blend.frag rename to src/extras/shaders/leedsDefault.frag index a3fab072..3955e6a5 100644 --- a/src/extras/shaders/leedsVehicle_blend.frag +++ b/src/extras/shaders/leedsDefault.frag @@ -2,29 +2,45 @@ uniform sampler2D tex0; uniform sampler2D tex1; uniform float u_fxparams; +uniform vec4 u_colorscale; #define shininess (u_fxparams) FSIN vec4 v_color; FSIN vec2 v_tex0; +#if defined(PASS_BLEND) || defined(PASS_ADD) FSIN vec2 v_tex1; +#endif FSIN float v_fog; void main(void) { - vec4 pass1 = v_color*texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y)); + vec4 pass1 = v_color*texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y))*u_colorscale; + pass1.rgb = clamp(pass1.rgb, 0.0, 1.0); + pass1.rgb = mix(u_fogColor.rgb, pass1.rgb, v_fog); + + vec4 color; +#if defined(PASS_BLEND) || defined(PASS_ADD) vec4 pass2 = texture(tex1, vec2(v_tex1.x, 1.0-v_tex1.y)); pass2.a *= shininess; - - pass1.rgb = mix(u_fogColor.rgb, pass1.rgb, v_fog); pass2.rgb = mix(vec3(0.0, 0.0, 0.0), pass2.rgb, v_fog); // We simulate drawing this in two passes. +#if defined(PASS_ADD) + // First pass with standard blending, second with addition + // We premultiply alpha so render state should be one. + color.rgb = pass1.rgb*pass1.a + pass2.rgb*pass2.a; + color.a = pass1.a; +#elif defined(PASS_BLEND) // We premultiply alpha so render state should be one. - vec4 color; color.rgb = pass1.rgb*pass1.a*(1.0-pass2.a) + pass2.rgb*pass2.a; color.a = pass1.a*(1.0-pass2.a) + pass2.a; +#endif + +#else + color = pass1; +#endif DoAlphaTest(color.a); diff --git a/src/extras/shaders/leedsDefault.vert b/src/extras/shaders/leedsDefault.vert new file mode 100644 index 00000000..9cb18a66 --- /dev/null +++ b/src/extras/shaders/leedsDefault.vert @@ -0,0 +1,51 @@ +#ifdef ENVMAP +uniform mat4 u_texMatrix; +#endif +#ifdef SKIN +uniform mat4 u_boneMatrices[64]; +#endif + +VSIN(ATTRIB_POS) vec3 in_pos; + +VSOUT vec4 v_color; +VSOUT vec2 v_tex0; +#ifdef ENVMAP +VSOUT vec2 v_tex1; +#endif +VSOUT float v_fog; + +void +main(void) +{ +#ifdef SKIN + vec3 SkinVertex = vec3(0.0, 0.0, 0.0); + vec3 SkinNormal = vec3(0.0, 0.0, 0.0); + for(int i = 0; i < 4; i++){ + SkinVertex += (u_boneMatrices[int(in_indices[i])] * vec4(in_pos, 1.0)).xyz * in_weights[i]; + SkinNormal += (mat3(u_boneMatrices[int(in_indices[i])]) * in_normal) * in_weights[i]; + } + + vec4 Vertex = u_world * vec4(SkinVertex, 1.0); + gl_Position = u_proj * u_view * Vertex; + vec3 Normal = mat3(u_world) * SkinNormal; +#else + vec4 Vertex = u_world * vec4(in_pos, 1.0); + gl_Position = u_proj * u_view * Vertex; + vec3 Normal = mat3(u_world) * in_normal; +#endif + + v_tex0 = in_tex0; +#ifdef ENVMAP + v_tex1 = (u_texMatrix * vec4(Normal, 1.0)).xy; +#endif + + v_color = in_color; + v_color.rgb += u_ambLight.rgb*surfAmbient; + v_color.rgb += DoDynamicLight(Vertex.xyz, Normal)*surfDiffuse; + // PS2 clamps before material color + // PSP clamps after...maybe another constant for this? + v_color = clamp(v_color, 0.0, 1.0); + v_color *= u_matColor; + + v_fog = DoFog(gl_Position.w); +} diff --git a/src/extras/shaders/leedsVehicle_add_PS.hlsl b/src/extras/shaders/leedsDefault_PS_x.hlsl similarity index 59% rename from src/extras/shaders/leedsVehicle_add_PS.hlsl rename to src/extras/shaders/leedsDefault_PS_x.hlsl index 943926cf..0b546523 100644 --- a/src/extras/shaders/leedsVehicle_add_PS.hlsl +++ b/src/extras/shaders/leedsDefault_PS_x.hlsl @@ -1,7 +1,9 @@ struct VS_out { float4 Position : POSITION; float3 TexCoord0 : TEXCOORD0; +#if defined(PASS_BLEND) || defined(PASS_ADD) float2 TexCoord1 : TEXCOORD1; +#endif float4 Color : COLOR0; }; @@ -10,25 +12,38 @@ sampler2D envTex : register(s1); float4 fogColor : register(c0); -float4 fxparams : register(c1); +float4 colorscale : register(c1); +float4 fxparams : register(c2); #define shininess (fxparams.x) float4 main(VS_out input) : COLOR { - float4 pass1 = input.Color*tex2D(diffTex, input.TexCoord0.xy); + float4 pass1 = input.Color*tex2D(diffTex, input.TexCoord0.xy)*colorscale; + pass1.rgb = clamp(pass1.rgb, 0.0, 1.0); + pass1.rgb = lerp(fogColor.rgb, pass1.rgb, input.TexCoord0.z); + + float4 color; +#if defined(PASS_BLEND) || defined(PASS_ADD) float4 pass2 = tex2D(envTex, input.TexCoord1.xy); pass2.a *= shininess; - - pass1.rgb = lerp(fogColor.rgb, pass1.rgb, input.TexCoord0.z); pass2.rgb = lerp(float3(0.0, 0.0, 0.0), pass2.rgb, input.TexCoord0.z); // We simulate drawing this in two passes. +#if defined(PASS_ADD) // First pass with standard blending, second with addition // We premultiply alpha so render state should be one. - float4 color; color.rgb = pass1.rgb*pass1.a + pass2.rgb*pass2.a; color.a = pass1.a; +#elif defined(PASS_BLEND) + // We premultiply alpha so render state should be one. + color.rgb = pass1.rgb*pass1.a*(1.0-pass2.a) + pass2.rgb*pass2.a; + color.a = pass1.a*(1.0-pass2.a) + pass2.a; +#endif + +#else + color = pass1; +#endif return color; } diff --git a/src/extras/shaders/leedsVehicle_VS.hlsl b/src/extras/shaders/leedsDefault_VS_x.hlsl similarity index 56% rename from src/extras/shaders/leedsVehicle_VS.hlsl rename to src/extras/shaders/leedsDefault_VS_x.hlsl index eb53313a..58bee097 100644 --- a/src/extras/shaders/leedsVehicle_VS.hlsl +++ b/src/extras/shaders/leedsDefault_VS_x.hlsl @@ -1,6 +1,11 @@ #include "standardConstants.h" +#ifdef ENVMAP float4x4 texMat : register(c41); +#endif +#ifdef SKIN +float4x3 boneMatrices[64] : register(c41); +#endif struct VS_in { @@ -8,12 +13,18 @@ struct VS_in float3 Normal : NORMAL; float2 TexCoord : TEXCOORD0; float4 Prelight : COLOR0; +#ifdef SKIN + float4 Weights : BLENDWEIGHT; + int4 Indices : BLENDINDICES; +#endif }; struct VS_out { float4 Position : POSITION; float3 TexCoord0 : TEXCOORD0; // also fog +#ifdef ENVMAP float2 TexCoord1 : TEXCOORD1; +#endif float4 Color : COLOR0; }; @@ -22,12 +33,27 @@ VS_out main(in VS_in input) { VS_out output; +#ifdef SKIN + int j; + float3 SkinVertex = float3(0.0, 0.0, 0.0); + float3 SkinNormal = float3(0.0, 0.0, 0.0); + for(j = 0; j < 4; j++){ + SkinVertex += mul(input.Position, boneMatrices[input.Indices[j]]).xyz * input.Weights[j]; + SkinNormal += mul(input.Normal, (float3x3)boneMatrices[input.Indices[j]]).xyz * input.Weights[j]; + } + output.Position = mul(combinedMat, SkinVertex); +// float3 V = mul(worldMat, SkinVertex).xyz; + float3 N = mul(normalMat, SkinNormal); +#else output.Position = mul(combinedMat, input.Position); - float3 V = mul(worldMat, input.Position).xyz; +// float3 V = mul(worldMat, input.Position).xyz; float3 N = mul(normalMat, input.Normal); +#endif output.TexCoord0.xy = input.TexCoord; +#ifdef ENVMAP output.TexCoord1 = mul(texMat, float4(N, 1.0)).xy; +#endif output.Color = input.Prelight; output.Color.rgb += ambientLight.rgb * surfAmbient; @@ -36,6 +62,7 @@ VS_out main(in VS_in input) for(i = 0; i < numDirLights; i++) output.Color.xyz += DoDirLight(lights[i+firstDirLight], N)*surfDiffuse; // PS2 clamps before material color + // PSP clamps after...maybe another constant for this? output.Color = clamp(output.Color, 0.0, 1.0); output.Color *= matCol; diff --git a/src/extras/shaders/leedsVehicle.vert b/src/extras/shaders/leedsVehicle.vert deleted file mode 100644 index b93c7ea0..00000000 --- a/src/extras/shaders/leedsVehicle.vert +++ /dev/null @@ -1,27 +0,0 @@ -uniform mat4 u_texMatrix; - -VSIN(ATTRIB_POS) vec3 in_pos; - -VSOUT vec4 v_color; -VSOUT vec2 v_tex0; -VSOUT vec2 v_tex1; -VSOUT float v_fog; - -void -main(void) -{ - vec4 Vertex = u_world * vec4(in_pos, 1.0); - gl_Position = u_proj * u_view * Vertex; - vec3 Normal = mat3(u_world) * in_normal; - - v_tex0 = in_tex0; - v_tex1 = (u_texMatrix * vec4(Normal, 1.0)).xy; - - v_color = in_color; - v_color.rgb += u_ambLight.rgb*surfAmbient; - v_color.rgb += DoDynamicLight(Vertex.xyz, Normal)*surfDiffuse; - v_color = clamp(v_color, 0.0, 1.0); - v_color *= u_matColor; - - v_fog = DoFog(gl_Position.w); -} diff --git a/src/extras/shaders/leedsVehicle_add.frag b/src/extras/shaders/leedsVehicle_add.frag deleted file mode 100644 index e9bcef74..00000000 --- a/src/extras/shaders/leedsVehicle_add.frag +++ /dev/null @@ -1,32 +0,0 @@ -uniform sampler2D tex0; -uniform sampler2D tex1; - -uniform float u_fxparams; - -#define shininess (u_fxparams) - -FSIN vec4 v_color; -FSIN vec2 v_tex0; -FSIN vec2 v_tex1; -FSIN float v_fog; - -void -main(void) -{ - vec4 pass1 = v_color*texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y)); - vec4 pass2 = texture(tex1, vec2(v_tex1.x, 1.0-v_tex1.y)); - pass2.a *= shininess; - - pass1.rgb = mix(u_fogColor.rgb, pass1.rgb, v_fog); - pass2.rgb = mix(vec3(0.0, 0.0, 0.0), pass2.rgb, v_fog); - - // We simulate drawing this in two passes. - // We premultiply alpha so render state should be one. - vec4 color; - color.rgb = pass1.rgb*pass1.a + pass2.rgb*pass2.a; - color.a = pass1.a; - - DoAlphaTest(color.a); - - FRAGCOLOR(color); -} diff --git a/src/extras/shaders/leedsVehicle_add_PS.cso b/src/extras/shaders/leedsVehicle_add_PS.cso deleted file mode 100644 index 11db8b0eadbbe198b3a07144e5263766db701ae5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 496 zcmZ8dF;2rk5S+Uh;sVJZK*A+77B-?t2T4N_8j?PWNDPq@E^;E2(gh`jA3za06gMu@ z((w?#gJbS&gTzYf-I<-8wGLA2Z+(T{@Va{p;EM@z4vWDMz$eR`*|Jb#&1&L>*`h$; z5U-X2-dH75@cU77d&^b2hMUadcsSj_!I5>~85`55XG7=z`B**l)LbRV^IX`g4)>~v zH_LG{UaYWOjiS*xZfEz2TB&&LpWdDMH~m51A3TmH)5Pzo#d0=h(+Q$Z(7B9)i!cn0 z=SlV3DbOyOo_BtGz{_ergX?XZUa;@lr}0vOvJh@*v4BUfvHLImT$q{8BWgThW4p-KXl6k-@_;^@#1aHyN1OGj5X zKcwGbJ@>U};!98OIj8rY*SjkqQM4G0`>{{bo zx%~CQ3%&Ugi{+?2I>y!XHVl@5zj6<6j@--spzjXuz40V;d%=7$oso2!?M}0E+HRh- zS}n=E2I?A40z_w3tSJZO=R`mw+j8#z%K;~@{1~>AY`G%unj>>Kn`f|dqZOP;Q7dYm zF|UR^j|r)7bu(j=7lQb&XOmSuN!cTF(vwG`6?2$Ny~#vt*wh7qgwPtwaLH5EGybP1 f!n}t?Px53&6MO8lm?^x>&1IgkPGoVPq5ysXwX0}+ diff --git a/src/extras/shaders/leedsVehicle_blend_PS.hlsl b/src/extras/shaders/leedsVehicle_blend_PS.hlsl deleted file mode 100644 index e32970b2..00000000 --- a/src/extras/shaders/leedsVehicle_blend_PS.hlsl +++ /dev/null @@ -1,33 +0,0 @@ -struct VS_out { - float4 Position : POSITION; - float3 TexCoord0 : TEXCOORD0; - float2 TexCoord1 : TEXCOORD1; - float4 Color : COLOR0; -}; - -sampler2D diffTex : register(s0); -sampler2D envTex : register(s1); - -float4 fogColor : register(c0); - -float4 fxparams : register(c1); - -#define shininess (fxparams.x) - -float4 main(VS_out input) : COLOR -{ - float4 pass1 = input.Color*tex2D(diffTex, input.TexCoord0.xy); - float4 pass2 = tex2D(envTex, input.TexCoord1.xy); - pass2.a *= shininess; - - pass1.rgb = lerp(fogColor.rgb, pass1.rgb, input.TexCoord0.z); - pass2.rgb = lerp(float3(0.0, 0.0, 0.0), pass2.rgb, input.TexCoord0.z); - - // We simulate drawing this in two passes. - // We premultiply alpha so render state should be one. - float4 color; - color.rgb = pass1.rgb*pass1.a*(1.0-pass2.a) + pass2.rgb*pass2.a; - color.a = pass1.a*(1.0-pass2.a) + pass2.a; - - return color; -} diff --git a/src/extras/shaders/leedsVehicle_blend_PS.inc b/src/extras/shaders/leedsVehicle_blend_PS.inc deleted file mode 100644 index 94fb000c..00000000 --- a/src/extras/shaders/leedsVehicle_blend_PS.inc +++ /dev/null @@ -1,50 +0,0 @@ -static unsigned char leedsVehicle_blend_PS_cso[] = { - 0x00, 0x02, 0xff, 0xff, 0xfe, 0xff, 0x40, 0x00, 0x43, 0x54, 0x41, 0x42, - 0x1c, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xff, - 0x04, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0xc1, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x02, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, - 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xa8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x06, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x69, 0x66, 0x66, 0x54, 0x65, 0x78, 0x00, 0x04, 0x00, 0x0c, 0x00, - 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x65, 0x6e, 0x76, 0x54, 0x65, 0x78, 0x00, 0xab, 0x04, 0x00, 0x0c, 0x00, - 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0xab, 0xab, 0xab, - 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x66, 0x78, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x00, 0x70, 0x73, 0x5f, 0x32, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, - 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, - 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, - 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, 0x2e, 0x32, 0x39, 0x2e, - 0x39, 0x35, 0x32, 0x2e, 0x33, 0x31, 0x31, 0x31, 0x00, 0xab, 0xab, 0xab, - 0x51, 0x00, 0x00, 0x05, 0x02, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x07, 0xb0, - 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x03, 0xb0, - 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, - 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, - 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x01, 0x08, 0x0f, 0xa0, - 0x42, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xb0, - 0x00, 0x08, 0xe4, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x01, 0x00, 0x0f, 0x80, - 0x01, 0x00, 0xe4, 0xb0, 0x01, 0x08, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x00, 0x00, 0xe4, 0x80, - 0x00, 0x00, 0xe4, 0xa1, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0x80, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x90, 0x04, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xaa, 0xb0, 0x00, 0x00, 0xe4, 0x80, - 0x00, 0x00, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, - 0x01, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xaa, 0xb0, - 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x08, 0x80, 0x01, 0x00, 0xff, 0x80, - 0x01, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x80, - 0x01, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x08, 0x80, - 0x01, 0x00, 0xff, 0x80, 0x02, 0x00, 0x00, 0x81, 0x02, 0x00, 0x00, 0xa0, - 0x04, 0x00, 0x00, 0x04, 0x03, 0x00, 0x08, 0x80, 0x00, 0x00, 0xff, 0x80, - 0x01, 0x00, 0xff, 0x80, 0x02, 0x00, 0xff, 0x80, 0x12, 0x00, 0x00, 0x04, - 0x03, 0x00, 0x07, 0x80, 0x02, 0x00, 0xff, 0x80, 0x01, 0x00, 0xe4, 0x80, - 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80, - 0x03, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00 -}; diff --git a/src/extras/shaders/leedsVehicle_mobile_PS.cso b/src/extras/shaders/leedsVehicle_mobile_PS.cso deleted file mode 100644 index 04ffcf8e8d8ae1bec38489bf0937fad175e3a0c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 728 zcmZ9JJx{_=6o%h^@DXEZ;^bf=qb>w64lI7a;(!AJGa*8i2$ldbxYd8a;ONkqI&^S% z@dp@xfdh-1zrgyQ+m;w_b9&Et?t4zpJ%t{IKVbv4)@gMIKu+U}EX_?~FwW2(=^853 z@g$tALW}k{hx`cfxCfPZB$2tbg(z$J{S#Mz5t^OP)Hp%6Q zR{!=+u>YUi&Q;ABIurQ5uc_|Lb&fqBcPHJ^6w{mgsxu>(?~6r?xaEv7o_5NeBF+bw z6KCq!v;5x0e*Uc9tmm88-Clo^uQ{XfU`VG@C|3%V!*b!ER4T!504Woe2e`+y*SIW% zrxY)qkRK&{HyV}82?vSKe%8MJ#|NxMtXUvyd5N#luc}{TvCb+$cIC+!HDp`^E06!e z5MRUUL1%0NChJNZm@58I`8q6@=dQ+l(MXPtw&+xyEiyx~rDCk>rdZoRmO2DtQM^rk zs7&g}xx_s4QfSkn9AT^<=R_Lztn+a diff --git a/src/extras/shaders/leedsVehicle_mobile_PS.hlsl b/src/extras/shaders/leedsVehicle_mobile_PS.hlsl index da09b872..a343b32f 100644 --- a/src/extras/shaders/leedsVehicle_mobile_PS.hlsl +++ b/src/extras/shaders/leedsVehicle_mobile_PS.hlsl @@ -14,9 +14,9 @@ sampler2D envTex : register(s1); float4 fogColor : register(c0); -float4 fxparams : register(c1); -float3 skyTop : register(c2); -float3 skyBot : register(c3); +float4 fxparams : register(c2); +float3 skyTop : register(c3); +float3 skyBot : register(c4); #define shininess (fxparams.x) diff --git a/src/extras/shaders/leedsVehicle_vs_gl.inc b/src/extras/shaders/leedsVehicle_vs_gl.inc deleted file mode 100644 index eb36b6e9..00000000 --- a/src/extras/shaders/leedsVehicle_vs_gl.inc +++ /dev/null @@ -1,29 +0,0 @@ -const char *leedsVehicle_vert_src = -"uniform mat4 u_texMatrix;\n" - -"VSIN(ATTRIB_POS) vec3 in_pos;\n" - -"VSOUT vec4 v_color;\n" -"VSOUT vec2 v_tex0;\n" -"VSOUT vec2 v_tex1;\n" -"VSOUT float v_fog;\n" - -"void\n" -"main(void)\n" -"{\n" -" vec4 Vertex = u_world * vec4(in_pos, 1.0);\n" -" gl_Position = u_proj * u_view * Vertex;\n" -" vec3 Normal = mat3(u_world) * in_normal;\n" - -" v_tex0 = in_tex0;\n" -" v_tex1 = (u_texMatrix * vec4(Normal, 1.0)).xy;\n" - -" v_color = in_color;\n" -" v_color.rgb += u_ambLight.rgb*surfAmbient;\n" -" v_color.rgb += DoDynamicLight(Vertex.xyz, Normal)*surfDiffuse;\n" -" v_color = clamp(v_color, 0.0, 1.0);\n" -" v_color *= u_matColor;\n" - -" v_fog = DoFog(gl_Position.w);\n" -"}\n" -; diff --git a/src/extras/shaders/make.cmd b/src/extras/shaders/make.cmd deleted file mode 100644 index 8404ac6c..00000000 --- a/src/extras/shaders/make.cmd +++ /dev/null @@ -1,3 +0,0 @@ -@echo off -for %%f in (*PS.hlsl) do "%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T ps_2_0 /nologo /E main /Fo %%~nf.cso %%f -for %%f in (*VS.hlsl) do "%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T vs_2_0 /nologo /E main /Fo %%~nf.cso %%f diff --git a/src/extras/shaders/make_glsl.sh b/src/extras/shaders/make_glsl.sh new file mode 100644 index 00000000..0af98961 --- /dev/null +++ b/src/extras/shaders/make_glsl.sh @@ -0,0 +1,9 @@ +#!sh +for i in *.vert; do + echo $i + ./makeinc_glsl.sh $i +done +for i in *.frag; do + echo $i + ./makeinc_glsl.sh $i +done diff --git a/src/extras/shaders/make_hlsl.cmd b/src/extras/shaders/make_hlsl.cmd new file mode 100644 index 00000000..ae3aacb9 --- /dev/null +++ b/src/extras/shaders/make_hlsl.cmd @@ -0,0 +1,7 @@ +@echo off +for %%f in (*PS.hlsl) do "%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T ps_2_0 /nologo /E main /Fo obj\%%~nf.cso %%f +for %%f in (*VS.hlsl) do "%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T vs_2_0 /nologo /E main /Fo obj\%%~nf.cso %%f + +"%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T vs_2_0 /nologo /E main /DENVMAP /Fo obj\leedsDefault_ENV_VS.cso leedsDefault_VS_x.hlsl +"%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T ps_2_0 /nologo /E main /DPASS_ADD /Fo obj\leedsDefault_ADD_PS.cso leedsDefault_PS_x.hlsl +"%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T ps_2_0 /nologo /E main /DPASS_BLEND /Fo obj\leedsDefault_BLEND_PS.cso leedsDefault_PS_x.hlsl diff --git a/src/extras/shaders/makeinc_glsl.sh b/src/extras/shaders/makeinc_glsl.sh new file mode 100644 index 00000000..2bc6a387 --- /dev/null +++ b/src/extras/shaders/makeinc_glsl.sh @@ -0,0 +1,6 @@ +#!sh +ext=${1##*.} +name=${1%.*} +(echo "const char *${name}_${ext}_src =";\ +sed 's/..*/"&\\n"/' $1;\ +echo ';') > obj/${name}_${ext}.inc diff --git a/src/extras/shaders/makeinc.sh b/src/extras/shaders/makeinc_hlsl.sh similarity index 93% rename from src/extras/shaders/makeinc.sh rename to src/extras/shaders/makeinc_hlsl.sh index a649af33..a5b12867 100644 --- a/src/extras/shaders/makeinc.sh +++ b/src/extras/shaders/makeinc_hlsl.sh @@ -1,4 +1,5 @@ #!sh +cd obj for i in *cso; do (echo -n 'static ' xxd -i $i | grep -v '_len = ') > ${i%cso}inc diff --git a/src/extras/shaders/colourfilterLCS_PS.cso b/src/extras/shaders/obj/colourfilterLCS_PS.cso similarity index 100% rename from src/extras/shaders/colourfilterLCS_PS.cso rename to src/extras/shaders/obj/colourfilterLCS_PS.cso diff --git a/src/extras/shaders/colourfilterLCS_PS.inc b/src/extras/shaders/obj/colourfilterLCS_PS.inc similarity index 100% rename from src/extras/shaders/colourfilterLCS_PS.inc rename to src/extras/shaders/obj/colourfilterLCS_PS.inc diff --git a/src/extras/shaders/colourfilterLCS_fs_gl.inc b/src/extras/shaders/obj/colourfilterLCS_frag.inc similarity index 100% rename from src/extras/shaders/colourfilterLCS_fs_gl.inc rename to src/extras/shaders/obj/colourfilterLCS_frag.inc diff --git a/src/extras/shaders/contrastPS.cso b/src/extras/shaders/obj/contrastPS.cso similarity index 100% rename from src/extras/shaders/contrastPS.cso rename to src/extras/shaders/obj/contrastPS.cso diff --git a/src/extras/shaders/contrastPS.inc b/src/extras/shaders/obj/contrastPS.inc similarity index 100% rename from src/extras/shaders/contrastPS.inc rename to src/extras/shaders/obj/contrastPS.inc diff --git a/src/extras/shaders/contrast_fs_gl.inc b/src/extras/shaders/obj/contrast_frag.inc similarity index 100% rename from src/extras/shaders/contrast_fs_gl.inc rename to src/extras/shaders/obj/contrast_frag.inc diff --git a/src/extras/shaders/default_UV2_VS.cso b/src/extras/shaders/obj/default_UV2_VS.cso similarity index 100% rename from src/extras/shaders/default_UV2_VS.cso rename to src/extras/shaders/obj/default_UV2_VS.cso diff --git a/src/extras/shaders/default_UV2_VS.inc b/src/extras/shaders/obj/default_UV2_VS.inc similarity index 100% rename from src/extras/shaders/default_UV2_VS.inc rename to src/extras/shaders/obj/default_UV2_VS.inc diff --git a/src/extras/shaders/default_UV2_gl.inc b/src/extras/shaders/obj/default_UV2_vert.inc similarity index 100% rename from src/extras/shaders/default_UV2_gl.inc rename to src/extras/shaders/obj/default_UV2_vert.inc diff --git a/src/extras/shaders/im2d_UV2_gl.inc b/src/extras/shaders/obj/im2d_UV2_vert.inc similarity index 100% rename from src/extras/shaders/im2d_UV2_gl.inc rename to src/extras/shaders/obj/im2d_UV2_vert.inc diff --git a/src/extras/shaders/im2d_gl.inc b/src/extras/shaders/obj/im2d_vert.inc similarity index 100% rename from src/extras/shaders/im2d_gl.inc rename to src/extras/shaders/obj/im2d_vert.inc diff --git a/src/extras/shaders/leedsBuilding_VS.cso b/src/extras/shaders/obj/leedsBuilding_VS.cso similarity index 100% rename from src/extras/shaders/leedsBuilding_VS.cso rename to src/extras/shaders/obj/leedsBuilding_VS.cso diff --git a/src/extras/shaders/leedsBuilding_VS.inc b/src/extras/shaders/obj/leedsBuilding_VS.inc similarity index 100% rename from src/extras/shaders/leedsBuilding_VS.inc rename to src/extras/shaders/obj/leedsBuilding_VS.inc diff --git a/src/extras/shaders/leedsBuilding_mobile_VS.cso b/src/extras/shaders/obj/leedsBuilding_mobile_VS.cso similarity index 100% rename from src/extras/shaders/leedsBuilding_mobile_VS.cso rename to src/extras/shaders/obj/leedsBuilding_mobile_VS.cso diff --git a/src/extras/shaders/leedsBuilding_mobile_VS.inc b/src/extras/shaders/obj/leedsBuilding_mobile_VS.inc similarity index 100% rename from src/extras/shaders/leedsBuilding_mobile_VS.inc rename to src/extras/shaders/obj/leedsBuilding_mobile_VS.inc diff --git a/src/extras/shaders/leedsBuilding_mobile_vs_gl.inc b/src/extras/shaders/obj/leedsBuilding_mobile_vert.inc similarity index 100% rename from src/extras/shaders/leedsBuilding_mobile_vs_gl.inc rename to src/extras/shaders/obj/leedsBuilding_mobile_vert.inc diff --git a/src/extras/shaders/leedsBuilding_vs_gl.inc b/src/extras/shaders/obj/leedsBuilding_vert.inc similarity index 100% rename from src/extras/shaders/leedsBuilding_vs_gl.inc rename to src/extras/shaders/obj/leedsBuilding_vert.inc diff --git a/src/extras/shaders/obj/leedsDefault_ADD_PS.cso b/src/extras/shaders/obj/leedsDefault_ADD_PS.cso new file mode 100644 index 0000000000000000000000000000000000000000..db862fdb5824572b1b03183f8ea8a954dacd5e21 GIT binary patch literal 532 zcmZ9IF;Bu!6ot<#RT^W`#KpzLj=B(wabOe%9dHqL(m<;uU`cBXV}F1HKfr;(i7p)+ z{RytFPWU%`p8IHt@g*nkp6|YU@^WEm{iCnY>0h>w0DMy*+uWoMW;{&dG>#sOutLz+{9$2OJc3(m<;uU`cBXW8EG200#yqx^!^# z6I@-L>Tg)jeYC{*lAC+Zx%Zy;-i49pKlueZ{qy!dfNut9IMjHl`AdH6Y#6zOAi^cl-jK;p-_vWy$ zquop0yMGip`LFxIZAa|j&u4DvP9w~sL3417tMM=lqQHM}4sVW}%Wkjh^zPh|7do9_ zIvY<2TJ>hD-a2j8Pa2H|lH?kwn6Q`J!ddYgoetLDih*icV!nHW0eeyC3)Jjoi4}2M zug>OdmZFwvu3*QCT# z#Ro7xfkPKJpTPQ^+tR_?eC;{Ed(PM1Q&@5Q8=s=yI;w2|SXI1{<@t~t%$KMqhPFv9 zJPYS~p==f?mu8N2LxUaLESgB5bQ zlGVMv7aacQo_|&M`~C=F7%Jl>??{$68FogU!5HJ4hnjy!F7Fa0i@4$VnKTW>{S6hg*V!zZ#kA=3>8J{&W+pw8o^wl|f+bFOOb5WA7 zYa6kV_{hHG+zWDOQ%R37`lmff4L!_0&njmTO&8yicp9eVTR1cB&*ThJ$8*5qTqM?U G4EzDN8GVBQ literal 0 HcmV?d00001 diff --git a/src/extras/shaders/leedsVehicle_mobile_PS.inc b/src/extras/shaders/obj/leedsVehicle_mobile_PS.inc similarity index 86% rename from src/extras/shaders/leedsVehicle_mobile_PS.inc rename to src/extras/shaders/obj/leedsVehicle_mobile_PS.inc index ab8cc048..946b1c7a 100644 --- a/src/extras/shaders/leedsVehicle_mobile_PS.inc +++ b/src/extras/shaders/obj/leedsVehicle_mobile_PS.inc @@ -7,11 +7,11 @@ static unsigned char leedsVehicle_mobile_PS_cso[] = { 0xac, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xd0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x06, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x0e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x0a, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x12, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x0a, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x69, 0x66, 0x66, 0x54, 0x65, 0x78, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x6e, 0x76, 0x54, 0x65, 0x78, 0x00, 0xab, @@ -27,7 +27,7 @@ static unsigned char leedsVehicle_mobile_PS_cso[] = { 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x39, 0x2e, 0x32, 0x39, 0x2e, 0x39, 0x35, 0x32, 0x2e, 0x33, 0x31, 0x31, 0x31, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, - 0x04, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0xbf, + 0x01, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x05, 0x05, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x30, 0x40, 0x00, 0x00, 0x80, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, @@ -38,13 +38,13 @@ static unsigned char leedsVehicle_mobile_PS_cso[] = { 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x01, 0x08, 0x0f, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xb0, 0x00, 0x08, 0xe4, 0xa0, - 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x03, 0x00, 0xe4, 0xa0, + 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x80, 0x04, 0x00, 0xe4, 0xa0, 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, 0x01, 0x00, 0xe4, 0x81, - 0x02, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x03, 0x80, - 0x01, 0x00, 0xe4, 0xb0, 0x04, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0xd2, 0xa0, + 0x03, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x03, 0x80, + 0x01, 0x00, 0xe4, 0xb0, 0x01, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0xd2, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x02, 0x00, 0x0f, 0x80, 0x02, 0x00, 0xe4, 0x80, 0x01, 0x08, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0x80, - 0x02, 0x00, 0x55, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, + 0x02, 0x00, 0x55, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x04, 0x00, 0xe4, 0xa0, 0x12, 0x00, 0x00, 0x04, 0x03, 0x00, 0x07, 0x80, 0x02, 0x00, 0xaa, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x03, 0x03, 0x00, 0x08, 0x80, 0x02, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, 0xb0, @@ -53,7 +53,7 @@ static unsigned char leedsVehicle_mobile_PS_cso[] = { 0x03, 0x00, 0xff, 0x80, 0x05, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x55, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x03, 0x00, 0x08, 0x80, 0x03, 0x00, 0xff, 0x80, 0x02, 0x00, 0x55, 0xb0, 0x05, 0x00, 0x00, 0x03, 0x03, 0x00, 0x08, 0x80, - 0x03, 0x00, 0xff, 0x80, 0x01, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x03, + 0x03, 0x00, 0xff, 0x80, 0x02, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0x80, 0x03, 0x00, 0xff, 0x80, 0x03, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x12, 0x00, 0x00, 0x04, diff --git a/src/extras/shaders/leedsVehicle_mobile_VS.cso b/src/extras/shaders/obj/leedsVehicle_mobile_VS.cso similarity index 100% rename from src/extras/shaders/leedsVehicle_mobile_VS.cso rename to src/extras/shaders/obj/leedsVehicle_mobile_VS.cso diff --git a/src/extras/shaders/leedsVehicle_mobile_VS.inc b/src/extras/shaders/obj/leedsVehicle_mobile_VS.inc similarity index 100% rename from src/extras/shaders/leedsVehicle_mobile_VS.inc rename to src/extras/shaders/obj/leedsVehicle_mobile_VS.inc diff --git a/src/extras/shaders/leedsVehicle_mobile_fs_gl.inc b/src/extras/shaders/obj/leedsVehicle_mobile_frag.inc similarity index 100% rename from src/extras/shaders/leedsVehicle_mobile_fs_gl.inc rename to src/extras/shaders/obj/leedsVehicle_mobile_frag.inc diff --git a/src/extras/shaders/leedsVehicle_mobile_vs_gl.inc b/src/extras/shaders/obj/leedsVehicle_mobile_vert.inc similarity index 100% rename from src/extras/shaders/leedsVehicle_mobile_vs_gl.inc rename to src/extras/shaders/obj/leedsVehicle_mobile_vert.inc diff --git a/src/extras/shaders/neoGloss_PS.cso b/src/extras/shaders/obj/neoGloss_PS.cso similarity index 100% rename from src/extras/shaders/neoGloss_PS.cso rename to src/extras/shaders/obj/neoGloss_PS.cso diff --git a/src/extras/shaders/neoGloss_PS.inc b/src/extras/shaders/obj/neoGloss_PS.inc similarity index 100% rename from src/extras/shaders/neoGloss_PS.inc rename to src/extras/shaders/obj/neoGloss_PS.inc diff --git a/src/extras/shaders/neoGloss_VS.cso b/src/extras/shaders/obj/neoGloss_VS.cso similarity index 100% rename from src/extras/shaders/neoGloss_VS.cso rename to src/extras/shaders/obj/neoGloss_VS.cso diff --git a/src/extras/shaders/neoGloss_VS.inc b/src/extras/shaders/obj/neoGloss_VS.inc similarity index 100% rename from src/extras/shaders/neoGloss_VS.inc rename to src/extras/shaders/obj/neoGloss_VS.inc diff --git a/src/extras/shaders/neoGloss_fs_gl.inc b/src/extras/shaders/obj/neoGloss_frag.inc similarity index 100% rename from src/extras/shaders/neoGloss_fs_gl.inc rename to src/extras/shaders/obj/neoGloss_frag.inc diff --git a/src/extras/shaders/neoGloss_vs_gl.inc b/src/extras/shaders/obj/neoGloss_vert.inc similarity index 100% rename from src/extras/shaders/neoGloss_vs_gl.inc rename to src/extras/shaders/obj/neoGloss_vert.inc diff --git a/src/extras/shaders/neoRimSkin_VS.cso b/src/extras/shaders/obj/neoRimSkin_VS.cso similarity index 100% rename from src/extras/shaders/neoRimSkin_VS.cso rename to src/extras/shaders/obj/neoRimSkin_VS.cso diff --git a/src/extras/shaders/neoRimSkin_VS.inc b/src/extras/shaders/obj/neoRimSkin_VS.inc similarity index 100% rename from src/extras/shaders/neoRimSkin_VS.inc rename to src/extras/shaders/obj/neoRimSkin_VS.inc diff --git a/src/extras/shaders/neoRimSkin_gl.inc b/src/extras/shaders/obj/neoRimSkin_vert.inc similarity index 100% rename from src/extras/shaders/neoRimSkin_gl.inc rename to src/extras/shaders/obj/neoRimSkin_vert.inc diff --git a/src/extras/shaders/neoRim_VS.cso b/src/extras/shaders/obj/neoRim_VS.cso similarity index 100% rename from src/extras/shaders/neoRim_VS.cso rename to src/extras/shaders/obj/neoRim_VS.cso diff --git a/src/extras/shaders/neoRim_VS.inc b/src/extras/shaders/obj/neoRim_VS.inc similarity index 100% rename from src/extras/shaders/neoRim_VS.inc rename to src/extras/shaders/obj/neoRim_VS.inc diff --git a/src/extras/shaders/neoRim_gl.inc b/src/extras/shaders/obj/neoRim_vert.inc similarity index 100% rename from src/extras/shaders/neoRim_gl.inc rename to src/extras/shaders/obj/neoRim_vert.inc diff --git a/src/extras/shaders/neoVehicle_PS.cso b/src/extras/shaders/obj/neoVehicle_PS.cso similarity index 100% rename from src/extras/shaders/neoVehicle_PS.cso rename to src/extras/shaders/obj/neoVehicle_PS.cso diff --git a/src/extras/shaders/neoVehicle_PS.inc b/src/extras/shaders/obj/neoVehicle_PS.inc similarity index 100% rename from src/extras/shaders/neoVehicle_PS.inc rename to src/extras/shaders/obj/neoVehicle_PS.inc diff --git a/src/extras/shaders/neoVehicle_VS.cso b/src/extras/shaders/obj/neoVehicle_VS.cso similarity index 100% rename from src/extras/shaders/neoVehicle_VS.cso rename to src/extras/shaders/obj/neoVehicle_VS.cso diff --git a/src/extras/shaders/neoVehicle_VS.inc b/src/extras/shaders/obj/neoVehicle_VS.inc similarity index 100% rename from src/extras/shaders/neoVehicle_VS.inc rename to src/extras/shaders/obj/neoVehicle_VS.inc diff --git a/src/extras/shaders/neoVehicle_fs_gl.inc b/src/extras/shaders/obj/neoVehicle_frag.inc similarity index 100% rename from src/extras/shaders/neoVehicle_fs_gl.inc rename to src/extras/shaders/obj/neoVehicle_frag.inc diff --git a/src/extras/shaders/neoVehicle_vs_gl.inc b/src/extras/shaders/obj/neoVehicle_vert.inc similarity index 100% rename from src/extras/shaders/neoVehicle_vs_gl.inc rename to src/extras/shaders/obj/neoVehicle_vert.inc diff --git a/src/extras/shaders/neoWorldVC_PS.cso b/src/extras/shaders/obj/neoWorldVC_PS.cso similarity index 100% rename from src/extras/shaders/neoWorldVC_PS.cso rename to src/extras/shaders/obj/neoWorldVC_PS.cso diff --git a/src/extras/shaders/neoWorldVC_PS.inc b/src/extras/shaders/obj/neoWorldVC_PS.inc similarity index 100% rename from src/extras/shaders/neoWorldVC_PS.inc rename to src/extras/shaders/obj/neoWorldVC_PS.inc diff --git a/src/extras/shaders/neoWorldVC_fs_gl.inc b/src/extras/shaders/obj/neoWorldVC_frag.inc similarity index 100% rename from src/extras/shaders/neoWorldVC_fs_gl.inc rename to src/extras/shaders/obj/neoWorldVC_frag.inc diff --git a/src/extras/shaders/scale_PS.cso b/src/extras/shaders/obj/scale_PS.cso similarity index 69% rename from src/extras/shaders/scale_PS.cso rename to src/extras/shaders/obj/scale_PS.cso index d7f7374ca56a40314173d452b93f4dedceb53d2b..7d8e07340b7e69464ee468650159ecc8875ce73d 100644 GIT binary patch delta 76 zcmeysbcbn!1fvTh!;=N93=GT+4EzlY3{OCK0wV(h6C;B-m@mY@z{0@54rH&|08|SS QTL6-0;DD(A|DS;Y0J_W)tpET3 delta 96 zcmcb^^nq!E1Y-mP!;=Y&3=B++4D1a+_5v0L1|R~n8yJCnAZ}!3U|?os-~h`12a5d% atAVIrwE?IHtPf-c0|!4yPs9KJ3=9BUV;9l@ diff --git a/src/extras/shaders/scale_PS.inc b/src/extras/shaders/obj/scale_PS.inc similarity index 76% rename from src/extras/shaders/scale_PS.inc rename to src/extras/shaders/obj/scale_PS.inc index 5f711ac8..e8f42e38 100644 --- a/src/extras/shaders/scale_PS.inc +++ b/src/extras/shaders/obj/scale_PS.inc @@ -22,12 +22,10 @@ static unsigned char scale_PS_cso[] = { 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x90, 0x00, 0x08, 0x0f, 0xa0, 0x42, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xb0, 0x00, 0x08, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, - 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90, 0x01, 0x00, 0x00, 0x02, - 0x01, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xe4, 0xa0, - 0x01, 0x00, 0xe4, 0x81, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x08, 0x80, - 0x00, 0x00, 0xff, 0x80, 0x01, 0x00, 0xff, 0xa0, 0x04, 0x00, 0x00, 0x04, - 0x01, 0x00, 0x07, 0x80, 0x00, 0x00, 0xaa, 0xb0, 0x00, 0x00, 0xe4, 0x80, - 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x08, 0x0f, 0x80, - 0x01, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00 + 0x00, 0x00, 0xe4, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0x90, + 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x17, 0x80, 0x00, 0x00, 0xe4, 0x80, + 0x12, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xaa, 0xb0, + 0x01, 0x00, 0xe4, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x01, 0x00, 0x00, 0x02, + 0x00, 0x08, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00 }; diff --git a/src/extras/shaders/scale_fs_gl.inc b/src/extras/shaders/obj/scale_frag.inc similarity index 89% rename from src/extras/shaders/scale_fs_gl.inc rename to src/extras/shaders/obj/scale_frag.inc index 8d9563e2..14082bb9 100644 --- a/src/extras/shaders/scale_fs_gl.inc +++ b/src/extras/shaders/obj/scale_frag.inc @@ -11,6 +11,7 @@ const char *scale_frag_src = "{\n" " vec4 color;\n" " color = v_color*texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y))*u_colorscale;\n" +" color.rgb = clamp(color.rgb, 0.0, 1.0);\n" " color.rgb = mix(u_fogColor.rgb, color.rgb, v_fog);\n" " DoAlphaTest(color.a);\n" diff --git a/src/extras/shaders/screenDroplet_PS.cso b/src/extras/shaders/obj/screenDroplet_PS.cso similarity index 100% rename from src/extras/shaders/screenDroplet_PS.cso rename to src/extras/shaders/obj/screenDroplet_PS.cso diff --git a/src/extras/shaders/screenDroplet_PS.inc b/src/extras/shaders/obj/screenDroplet_PS.inc similarity index 100% rename from src/extras/shaders/screenDroplet_PS.inc rename to src/extras/shaders/obj/screenDroplet_PS.inc diff --git a/src/extras/shaders/screenDroplet_fs_gl.inc b/src/extras/shaders/obj/screenDroplet_frag.inc similarity index 100% rename from src/extras/shaders/screenDroplet_fs_gl.inc rename to src/extras/shaders/obj/screenDroplet_frag.inc diff --git a/src/extras/shaders/simple_fs_gl.inc b/src/extras/shaders/obj/simple_frag.inc similarity index 100% rename from src/extras/shaders/simple_fs_gl.inc rename to src/extras/shaders/obj/simple_frag.inc diff --git a/src/extras/shaders/scale.frag b/src/extras/shaders/scale.frag index 29165154..7d9d1ff4 100644 --- a/src/extras/shaders/scale.frag +++ b/src/extras/shaders/scale.frag @@ -10,6 +10,7 @@ main(void) { vec4 color; color = v_color*texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y))*u_colorscale; + color.rgb = clamp(color.rgb, 0.0, 1.0); color.rgb = mix(u_fogColor.rgb, color.rgb, v_fog); DoAlphaTest(color.a); diff --git a/src/extras/shaders/scale_PS.hlsl b/src/extras/shaders/scale_PS.hlsl index 92466e94..54da9c82 100644 --- a/src/extras/shaders/scale_PS.hlsl +++ b/src/extras/shaders/scale_PS.hlsl @@ -12,8 +12,8 @@ float4 colorscale : register(c1); float4 main(VS_out input) : COLOR { float4 color = input.Color; - color *= tex2D(tex0, input.TexCoord0.xy); - color *= colorscale; + color *= tex2D(tex0, input.TexCoord0.xy)*colorscale; + color.rgb = clamp(color.rgb, 0.0, 1.0); color.rgb = lerp(fogColor.rgb, color.rgb, input.TexCoord0.z); return color; } diff --git a/vendor/librw b/vendor/librw index 61b288a9..78d540fc 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit 61b288a9fe72ae4073c0ac5fd2a5815ed510c8c8 +Subproject commit 78d540fce0ca090b07377cee40d73eadfb7a699d