diff --git a/Minecraft.Client/Common/App_Defines.h b/Minecraft.Client/Common/App_Defines.h index 7e96896c9..53d0904f3 100644 --- a/Minecraft.Client/Common/App_Defines.h +++ b/Minecraft.Client/Common/App_Defines.h @@ -104,6 +104,8 @@ enum EGameHostOptionWorldSize #define GAMESETTING_ANIMATEDCHARACTER 0x00008000 #define GAMESETTING_PS3EULAREAD 0x00010000 #define GAMESETTING_PSVITANETWORKMODEADHOC 0x00020000 +#define GAMESETTING_FANCYGRAPHICS 0x01000000 +#define GAMESETTING_AMBIENTOCCLUSION 0x02000000 // defines for languages diff --git a/Minecraft.Client/Common/App_enums.h b/Minecraft.Client/Common/App_enums.h index 15a179787..2f6cfef75 100644 --- a/Minecraft.Client/Common/App_enums.h +++ b/Minecraft.Client/Common/App_enums.h @@ -145,6 +145,8 @@ enum eGameSetting eGameSetting_ControlSouthPaw, eGameSetting_SplitScreenVertical, eGameSetting_GamertagsVisible, + eGameSetting_FancyGraphics, + eGameSetting_AmbientOcclusion, // Interim TU 1.6.6 eGameSetting_Autosave, eGameSetting_DisplaySplitscreenGamertags, diff --git a/Minecraft.Client/Common/Consoles_App.cpp b/Minecraft.Client/Common/Consoles_App.cpp index 43cf73e15..dd408ab14 100644 --- a/Minecraft.Client/Common/Consoles_App.cpp +++ b/Minecraft.Client/Common/Consoles_App.cpp @@ -853,6 +853,9 @@ int CMinecraftApp::SetDefaultOptions(C_4JProfile::PROFILESETTINGS *pSettings,con SetGameSettings(iPad,eGameSetting_SplitScreenVertical,0); SetGameSettings(iPad,eGameSetting_GamertagsVisible,1); + SetGameSettings(iPad,eGameSetting_FancyGraphics,1); + SetGameSettings(iPad,eGameSetting_AmbientOcclusion,1); + // Interim TU 1.6.6 SetGameSettings(iPad,eGameSetting_Sensitivity_InMenu,100); SetGameSettings(iPad,eGameSetting_DisplaySplitscreenGamertags,1); @@ -1291,7 +1294,9 @@ int CMinecraftApp::OldProfileVersionCallback(LPVOID pParam,unsigned char *pucDat pGameSettings->usBitmaskValues|=0x8000; //eGameSetting_Tooltips - on pGameSettings->uiBitmaskValues=0L; // reset + pGameSettings->uiBitmaskValues|=GAMESETTING_FANCYGRAPHICS; //eGameSetting_FancyGraphics - on pGameSettings->uiBitmaskValues|=GAMESETTING_CLOUDS; //eGameSetting_Clouds - on + pGameSettings->uiBitmaskValues|=GAMESETTING_AMBIENTOCCLUSION; //eGameSetting_AmbientOcclusion - on pGameSettings->uiBitmaskValues|=GAMESETTING_ONLINE; //eGameSetting_GameSetting_Online - on //eGameSetting_GameSetting_Invite - off pGameSettings->uiBitmaskValues|=GAMESETTING_FRIENDSOFFRIENDS; //eGameSetting_GameSetting_FriendsOfFriends - on @@ -1343,6 +1348,9 @@ void CMinecraftApp::ApplyGameSettingsChanged(int iPad) ActionGameSettings(iPad,eGameSetting_SplitScreenVertical); ActionGameSettings(iPad,eGameSetting_GamertagsVisible); + ActionGameSettings(iPad,eGameSetting_FancyGraphics); + ActionGameSettings(iPad,eGameSetting_AmbientOcclusion); + // Interim TU 1.6.6 ActionGameSettings(iPad,eGameSetting_Sensitivity_InMenu ); ActionGameSettings(iPad,eGameSetting_DisplaySplitscreenGamertags); @@ -1549,6 +1557,24 @@ void CMinecraftApp::ActionGameSettings(int iPad,eGameSetting eVal) case eGameSetting_Clouds: //nothing to do here break; + case eGameSetting_FancyGraphics: + { + if (pMinecraft && pMinecraft->options) + pMinecraft->options->fancyGraphics = GetGameSettings(iPad, eGameSetting_FancyGraphics) != 0; + + if (pMinecraft && pMinecraft->levelRenderer && pMinecraft->level) + pMinecraft->levelRenderer->allChanged(); + } + break; + case eGameSetting_AmbientOcclusion: + { + if (pMinecraft && pMinecraft->options) + pMinecraft->options->ambientOcclusion = GetGameSettings(iPad, eGameSetting_AmbientOcclusion) != 0; + + if (pMinecraft && pMinecraft->levelRenderer && pMinecraft->level) + pMinecraft->levelRenderer->allChanged(); + } + break; case eGameSetting_Online: //nothing to do here break; @@ -2095,6 +2121,40 @@ void CMinecraftApp::SetGameSettings(int iPad,eGameSetting eVal,unsigned char ucV break; + case eGameSetting_FancyGraphics: + if(((GameSettingsA[iPad]->uiBitmaskValues & GAMESETTING_FANCYGRAPHICS) != 0) != ((ucVal & 0x01) != 0)) + { + if(ucVal==1) + { + GameSettingsA[iPad]->uiBitmaskValues|=GAMESETTING_FANCYGRAPHICS; + } + else + { + GameSettingsA[iPad]->uiBitmaskValues&=~GAMESETTING_FANCYGRAPHICS; + } + ActionGameSettings(iPad,eVal); + GameSettingsA[iPad]->bSettingsChanged=true; + } + + break; + + case eGameSetting_AmbientOcclusion: + if(((GameSettingsA[iPad]->uiBitmaskValues & GAMESETTING_AMBIENTOCCLUSION) != 0) != ((ucVal & 0x01) != 0)) + { + if(ucVal==1) + { + GameSettingsA[iPad]->uiBitmaskValues|=GAMESETTING_AMBIENTOCCLUSION; + } + else + { + GameSettingsA[iPad]->uiBitmaskValues&=~GAMESETTING_AMBIENTOCCLUSION; + } + ActionGameSettings(iPad,eVal); + GameSettingsA[iPad]->bSettingsChanged=true; + } + + break; + case eGameSetting_Online: if((GameSettingsA[iPad]->uiBitmaskValues&GAMESETTING_ONLINE)!=(ucVal&0x01)<<1) { @@ -2395,6 +2455,12 @@ unsigned char CMinecraftApp::GetGameSettings(int iPad,eGameSetting eVal) case eGameSetting_Clouds: return (GameSettingsA[iPad]->uiBitmaskValues&GAMESETTING_CLOUDS); break; + case eGameSetting_FancyGraphics: + return (GameSettingsA[iPad]->uiBitmaskValues & GAMESETTING_FANCYGRAPHICS) >> 24; + break; + case eGameSetting_AmbientOcclusion: + return (GameSettingsA[iPad]->uiBitmaskValues & GAMESETTING_AMBIENTOCCLUSION) >> 25; + break; case eGameSetting_Online: return (GameSettingsA[iPad]->uiBitmaskValues&GAMESETTING_ONLINE)>>1; break; diff --git a/Minecraft.Client/Common/Media/MediaWindows64.arc b/Minecraft.Client/Common/Media/MediaWindows64.arc index 6ce552c53..96b587e75 100644 Binary files a/Minecraft.Client/Common/Media/MediaWindows64.arc and b/Minecraft.Client/Common/Media/MediaWindows64.arc differ diff --git a/Minecraft.Client/Common/Media/SettingsGraphicsMenu1080.swf b/Minecraft.Client/Common/Media/SettingsGraphicsMenu1080.swf index f6866abf1..2af51bf7a 100644 Binary files a/Minecraft.Client/Common/Media/SettingsGraphicsMenu1080.swf and b/Minecraft.Client/Common/Media/SettingsGraphicsMenu1080.swf differ diff --git a/Minecraft.Client/Common/Media/SettingsGraphicsMenu720.swf b/Minecraft.Client/Common/Media/SettingsGraphicsMenu720.swf index 418b1ba2b..1485a6a1b 100644 Binary files a/Minecraft.Client/Common/Media/SettingsGraphicsMenu720.swf and b/Minecraft.Client/Common/Media/SettingsGraphicsMenu720.swf differ diff --git a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp index 423c8f4b2..9a4da6cab 100644 --- a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp @@ -58,7 +58,9 @@ UIScene_SettingsGraphicsMenu::UIScene_SettingsGraphicsMenu(int iPad, void *initD m_bNotInGame=(Minecraft::GetInstance()->level==NULL); + m_checkboxFancyGraphics.init(L"Fancy Graphics " ,eControl_FancyGraphics,(app.GetGameSettings(m_iPad,eGameSetting_FancyGraphics)!=0)); m_checkboxClouds.init(app.GetString(IDS_CHECKBOX_RENDER_CLOUDS),eControl_Clouds,(app.GetGameSettings(m_iPad,eGameSetting_Clouds)!=0)); + m_checkboxAmbientOcclusion.init(L"Ambient Occlusion " ,eControl_AmbientOcclusion,(app.GetGameSettings(m_iPad,eGameSetting_AmbientOcclusion)!=0)); m_checkboxBedrockFog.init(app.GetString(IDS_CHECKBOX_RENDER_BEDROCKFOG),eControl_BedrockFog,(app.GetGameSettings(m_iPad,eGameSetting_BedrockFog)!=0)); m_checkboxCustomSkinAnim.init(app.GetString(IDS_CHECKBOX_CUSTOM_SKIN_ANIM),eControl_CustomSkinAnim,(app.GetGameSettings(m_iPad,eGameSetting_CustomSkinAnim)!=0)); @@ -161,7 +163,9 @@ void UIScene_SettingsGraphicsMenu::handleInput(int iPad, int key, bool repeat, b if(pressed) { // check the checkboxes + app.SetGameSettings(m_iPad,eGameSetting_FancyGraphics,m_checkboxFancyGraphics.IsChecked()?1:0); app.SetGameSettings(m_iPad,eGameSetting_Clouds,m_checkboxClouds.IsChecked()?1:0); + app.SetGameSettings(m_iPad,eGameSetting_AmbientOcclusion,m_checkboxAmbientOcclusion.IsChecked()?1:0); app.SetGameSettings(m_iPad,eGameSetting_BedrockFog,m_checkboxBedrockFog.IsChecked()?1:0); app.SetGameSettings(m_iPad,eGameSetting_CustomSkinAnim,m_checkboxCustomSkinAnim.IsChecked()?1:0); diff --git a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.h b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.h index 99022c83f..a6b8f3ec8 100644 --- a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.h +++ b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.h @@ -9,7 +9,9 @@ class UIScene_SettingsGraphicsMenu : public UIScene private: enum EControls { + eControl_FancyGraphics, eControl_Clouds, + eControl_AmbientOcclusion, eControl_BedrockFog, eControl_CustomSkinAnim, eControl_RenderDistance, @@ -18,10 +20,12 @@ private: eControl_InterfaceOpacity }; - UIControl_CheckBox m_checkboxClouds, m_checkboxBedrockFog, m_checkboxCustomSkinAnim; // Checkboxes + UIControl_CheckBox m_checkboxFancyGraphics, m_checkboxClouds, m_checkboxAmbientOcclusion, m_checkboxBedrockFog, m_checkboxCustomSkinAnim; // Checkboxes UIControl_Slider m_sliderRenderDistance, m_sliderGamma, m_sliderFOV, m_sliderInterfaceOpacity; // Sliders UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene) + UI_MAP_ELEMENT( m_checkboxFancyGraphics, "FancyGraphics") UI_MAP_ELEMENT( m_checkboxClouds, "Clouds") + UI_MAP_ELEMENT( m_checkboxAmbientOcclusion, "AmbientOcclusion") UI_MAP_ELEMENT( m_checkboxBedrockFog, "BedrockFog") UI_MAP_ELEMENT( m_checkboxCustomSkinAnim, "CustomSkinAnim") UI_MAP_ELEMENT( m_sliderRenderDistance, "RenderDistance") diff --git a/Minecraft.Client/Extrax64Stubs.cpp b/Minecraft.Client/Extrax64Stubs.cpp index da9fe12eb..79f442461 100644 --- a/Minecraft.Client/Extrax64Stubs.cpp +++ b/Minecraft.Client/Extrax64Stubs.cpp @@ -536,7 +536,9 @@ void C_4JProfile::Initialise(DWORD dwTitleID, pGameSettings->usBitmaskValues |= 0x1000; //eGameSetting_Autosave - 2 pGameSettings->usBitmaskValues |= 0x8000; //eGameSetting_Tooltips - on pGameSettings->uiBitmaskValues = 0L; // reset + pGameSettings->uiBitmaskValues |= GAMESETTING_FANCYGRAPHICS; //eGameSetting_FancyGraphics - on pGameSettings->uiBitmaskValues |= GAMESETTING_CLOUDS; //eGameSetting_Clouds - on + pGameSettings->uiBitmaskValues |= GAMESETTING_AMBIENTOCCLUSION; //eGameSetting_AmbientOcclusion - on pGameSettings->uiBitmaskValues |= GAMESETTING_ONLINE; //eGameSetting_GameSetting_Online - on pGameSettings->uiBitmaskValues |= GAMESETTING_FRIENDSOFFRIENDS; //eGameSetting_GameSetting_FriendsOfFriends - on pGameSettings->uiBitmaskValues |= GAMESETTING_DISPLAYUPDATEMSG; //eGameSetting_DisplayUpdateMessage (counter) diff --git a/Minecraft.Client/GameRenderer.cpp b/Minecraft.Client/GameRenderer.cpp index 5790bea26..ad5c8f0dc 100644 --- a/Minecraft.Client/GameRenderer.cpp +++ b/Minecraft.Client/GameRenderer.cpp @@ -1533,7 +1533,7 @@ void GameRenderer::renderLevel(float a, int64_t until) // 4J - have changed this fancy rendering option to work with our command buffers. The original used to use frame buffer flags to disable // writing to colour when doing the z-only pass, but that value gets obliterated by our command buffers. Using alpha blend function instead // to achieve the same effect. - if (true) // (mc->options->fancyGraphics) + if (mc->options->fancyGraphics) { if (mc->options->ambientOcclusion) { diff --git a/Minecraft.Client/TileRenderer.cpp b/Minecraft.Client/TileRenderer.cpp index 4735b9416..d220a08e8 100644 --- a/Minecraft.Client/TileRenderer.cpp +++ b/Minecraft.Client/TileRenderer.cpp @@ -4896,7 +4896,7 @@ bool TileRenderer::tesselateBlockInWorld( Tile* tt, int x, int y, int z ) b = cb; } - if ( Tile::lightEmission[tt->id] == 0 )//4J - TODO/remove (Minecraft::useAmbientOcclusion()) + if (Tile::lightEmission[tt->id] == 0 && Minecraft::useAmbientOcclusion()) { return tesselateBlockInWorldWithAmbienceOcclusionTexLighting(tt, x, y, z, r, g, b, 0, smoothShapeLighting); } @@ -4925,7 +4925,7 @@ bool TileRenderer::tesselateBlockInWorld( Tile* tt, int x, int y, int z, int fac b = cb; } - if ( Tile::lightEmission[tt->id] == 0 )//4J - TODO/remove (Minecraft::useAmbientOcclusion()) + if (Tile::lightEmission[tt->id] == 0 && Minecraft::useAmbientOcclusion()) { return tesselateBlockInWorldWithAmbienceOcclusionTexLighting( tt, x, y, z, r, g, b, faceFlags, smoothShapeLighting ); }