apply graphic setting

This commit is contained in:
Le Duc Anh
2026-05-16 11:50:40 +07:00
parent 2d8d200d9b
commit 375ffe8b9c
14 changed files with 133 additions and 60 deletions
@@ -14,23 +14,23 @@ MonoBehaviour:
m_EditorClassIdentifier:
viewDistanceCfg:
- title: Config 1
fShow: 200
fHide: 400
fShow: 100
fHide: 150
- title: Config 2
fShow: 400
fHide: 600
fShow: 150
fHide: 200
- title: Config 3
fShow: 600
fHide: 800
fShow: 200
fHide: 250
- title: Config 4
fShow: 800
fHide: 1000
fShow: 250
fHide: 300
- title: Config 5
fShow: 1000
fHide: 1200
fShow: 300
fHide: 350
- title: Config 6
fShow: 1200
fHide: 1400
fShow: 350
fHide: 400
viewDistanceNPCCfg:
- title: Config 1
fShow: 25
@@ -0,0 +1,48 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2231146345831581285
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1787898784501235526}
- component: {fileID: 7110842102777986025}
m_Layer: 0
m_Name: InGameGraphicOption
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1787898784501235526
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2231146345831581285}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &7110842102777986025
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2231146345831581285}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cfa24c9da248b9d4aa36c50fb688c146, type: 3}
m_Name:
m_EditorClassIdentifier:
_renderPipelineAsset: {fileID: 11400000, guid: 5e6cbd92db86f4b18aec3ed561671858, type: 2}
_cinemachineVirtualCamera: {fileID: 0}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d38fe8448215a1842bfa3d094f3d307a
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+16 -16
View File
@@ -2515,7 +2515,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &2089140126047700709
RectTransform:
m_ObjectHideFlags: 0
@@ -2531,10 +2531,10 @@ RectTransform:
- {fileID: 581815824710635089}
m_Father: {fileID: 8038141400472399988}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 103.69825, y: -174}
m_SizeDelta: {x: 200, y: 70}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &453846082467036817
CanvasRenderer:
@@ -3423,7 +3423,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &6804777851036107864
RectTransform:
m_ObjectHideFlags: 0
@@ -3439,10 +3439,10 @@ RectTransform:
- {fileID: 4206321553251368956}
m_Father: {fileID: 8038141400472399988}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 103.69825, y: -104}
m_SizeDelta: {x: 200, y: 70}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5720369861187438293
CanvasRenderer:
@@ -6399,7 +6399,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "Giao di\u1EC7n"
m_text: "\u0110\u1ED3 h\u1ECDa"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
m_sharedMaterial: {fileID: 9092487103257209053, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
@@ -7205,7 +7205,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &5725138947417197620
RectTransform:
m_ObjectHideFlags: 0
@@ -7222,10 +7222,10 @@ RectTransform:
- {fileID: 8978764815918038982}
m_Father: {fileID: 8859678125751154879}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 86.35, y: -47.22}
m_SizeDelta: {x: 172.7, y: 66.44}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &7259619490849805827
MonoBehaviour:
+2 -2
View File
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5caea7b0b45c434cbea3545800922c7604e8773fe7cbcf675b091934c7c39505
size 306512
oid sha256:f2b5c4c3dc1914bf0df35a1c4cd95ea98efb036377ac98143600246db5d4ae49
size 312235
+2 -2
View File
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:133267e461382e8feb9da7fa610607c52255abb519753fb55dab36ddd758f54d
size 114097
oid sha256:3105731ad4156d02d8b41374a80252c3abe294e5e221dd917303e3cc99c247b4
size 111490
@@ -19,12 +19,6 @@ namespace BrewMonster
DontDestroyOnLoad(gameObject);
}
private IEnumerator Start()
{
yield return null;
EC_Game.InitSettingAudio();
}
void OnDestroy()
{
BMLogger.Log("AutoInitializer: OnDestroy called, disposing auto initializers");
@@ -1,4 +1,5 @@
using BrewMonster;
using BrewMonster.Scripts;
using BrewMonster.Scripts.Task;
using CSNetwork;
using CSNetwork.GPDataType;
@@ -662,6 +663,10 @@ namespace BrewMonster.Network
m_viewDistanceNPC = GameRunConfigSO.GetViewDistanceNPCCfg[index - 1];
index = PlayerPrefs.GetInt(keySettingViewDistanceEP, defaultValue: 6);
m_viewDistanceEP = GameRunConfigSO.GetViewDistanceEPCfg[index - 1];
SetSettingActiveFog(GetSettingActiveFog());
SetSettingActiveFullResolution(GetSettingActiveFullResolution());
SetSettingActiveShadow(GetSettingActiveShadow());
}
public static void InitSettingAudio()
@@ -708,14 +713,8 @@ namespace BrewMonster.Network
public static void SetSettingActiveFullResolution(bool value)
{
PlayerPrefs.SetInt(keySettingActiveFullResolution, value ? 1 : 0);
if (value)
{
}
else
{
}
InGameGraphicOption.Instance.SetRenderScale(value ? 1f : 0.7f);
InGameGraphicOption.Instance.SetMSAA(value ? 4 : 1);
}
public static void SetSettingActiveFog(bool value)
@@ -728,6 +727,7 @@ namespace BrewMonster.Network
{
PlayerPrefs.SetInt(keySettingViewDistance, value);
m_viewDistance = GameRunConfigSO.GetViewDistanceCfg[value - 1];
InGameGraphicOption.Instance.SetRenderDistance(m_viewDistance.fHide);
}
public static void SetSettingViewDistanceNPC(int value)
@@ -1,13 +1,14 @@
using Unity.Cinemachine;
using UnityEngine;
using UnityEngine.Experimental.GlobalIllumination;
using UnityEngine.Rendering.Universal;
namespace BrewMonster.Scripts
{
public class InGameOptionManager : MonoSingleton<InGameOptionManager>
public class InGameGraphicOption : MonoSingleton<InGameGraphicOption>
{
[SerializeField] private UniversalRenderPipelineAsset _renderPipelineAsset;
[SerializeField] private CinemachineVirtualCamera _cinemachineVirtualCamera;
[SerializeField] private CinemachineCamera _cinemachineVirtualCamera;
#region public functions
@@ -17,7 +18,7 @@ namespace BrewMonster.Scripts
public void SetRenderDistance(float distance)
{
distance = Mathf.Clamp(distance, 50f, 500f);
_cinemachineVirtualCamera.m_Lens.FarClipPlane = distance;
_cinemachineVirtualCamera.Lens.FarClipPlane = distance;
}
/// <summary>
@@ -39,6 +40,13 @@ namespace BrewMonster.Scripts
_renderPipelineAsset.msaaSampleCount = msaaLevel;
}
//TODO: figure out a solution for this.
public void SetActiveShadow(bool active)
{
}
#endregion
}
}
@@ -24,17 +24,17 @@ namespace BrewMonster.Scripts
private void SetLowQuality()
{
InGameOptionManager.Instance.SetRenderDistance(200f);
InGameOptionManager.Instance.SetRenderScale(0.6f);
InGameOptionManager.Instance.SetMSAA(0);
InGameGraphicOption.Instance.SetRenderDistance(200f);
InGameGraphicOption.Instance.SetRenderScale(0.6f);
InGameGraphicOption.Instance.SetMSAA(0);
_isHighQuality = false;
}
private void SetHighQuality()
{
InGameOptionManager.Instance.SetRenderDistance(500f);
InGameOptionManager.Instance.SetRenderScale(1f);
InGameOptionManager.Instance.SetMSAA(4);
InGameGraphicOption.Instance.SetRenderDistance(500f);
InGameGraphicOption.Instance.SetRenderScale(1f);
InGameGraphicOption.Instance.SetMSAA(4);
_isHighQuality = true;
}
}
@@ -20,7 +20,6 @@ public class AudioManager : MonoBehaviour
if (Instance == null)
{
Instance = this;
DontDestroyOnLoad(gameObject);
}
else
{
@@ -29,6 +28,9 @@ public class AudioManager : MonoBehaviour
}
DiscoverAudioSources();
// set the audio settings after all the audio sources are discovered
BrewMonster.Network.EC_Game.InitSettingAudio();
}
private void DiscoverAudioSources()
@@ -16,9 +16,9 @@ public class LitModelHolder : MonoSingleton<LitModelHolder>
[Header("Distance Streaming")]
[Tooltip("The distance from the host player to the object to be loaded immediately.")]
[SerializeField] private float _loadImmediateDistance => EC_Game.GetSettingViewDistance().fShow; // 200f
[SerializeField] private float _loadImmediateDistance; // 200f
[Tooltip("Objects need to go outside of this distance to be unloaded.")]
[SerializeField] private float _unloadDistance => EC_Game.GetSettingViewDistance().fHide; // 400f
[SerializeField] private float _unloadDistance; // 400f
[Header("Performance")]
[SerializeField] private float _checkIntervalSeconds = 0.25f;
@@ -226,6 +226,13 @@ public class LitModelHolder : MonoSingleton<LitModelHolder>
_hasLastHostPos = true;
_lastHostPosOxz = _currentHostPosOxz;
_loadImmediateDistance = EC_Game.GetSettingViewDistance().fShow;
_unloadDistance = EC_Game.GetSettingViewDistance().fHide;
immediateSqr = _loadImmediateDistance * _loadImmediateDistance;
paddingSqr = _unloadDistance * _unloadDistance;
TickStreaming(_currentHostPosOxz, immediateSqr, paddingSqr, destroyToken);
@@ -17,8 +17,8 @@ namespace BrewMonster
public class TerrainHolder : MonoBehaviour
{
[SerializeField] private AddressableObject[] _addressableObjects;
[SerializeField] private float _loadImmediateDistance => EC_Game.GetSettingViewDistance().fShow; //150f;
[SerializeField] private float _unloadDistance => EC_Game.GetSettingViewDistance().fHide; //300f;
[SerializeField] private float _loadImmediateDistance; //150f;
[SerializeField] private float _unloadDistance; //300f;
[SerializeField] private float _minHostMoveToUpdate = 5f;
private List<AddressableObject> _candidatesForLoading = new List<AddressableObject>();
@@ -103,6 +103,8 @@ namespace BrewMonster
//if (_unloadDistance < _loadImmediateDistance)
// _unloadDistance = _loadImmediateDistance;
float immediateSqr = _loadImmediateDistance * _loadImmediateDistance;
float paddingSqr = _unloadDistance * _unloadDistance;
float minMoveSqr = _minHostMoveToUpdate * _minHostMoveToUpdate;
@@ -127,6 +129,11 @@ namespace BrewMonster
_hasLastHostPos = true;
_lastHostPosOxz = _currentHostPosOxz;
_loadImmediateDistance = EC_Game.GetSettingViewDistance().fShow;
_unloadDistance = EC_Game.GetSettingViewDistance().fHide;
immediateSqr = _loadImmediateDistance * _loadImmediateDistance;
paddingSqr = _unloadDistance * _unloadDistance;
TickStreaming(_currentHostPosOxz, immediateSqr, paddingSqr);
}