diff --git a/assets/locales/en/terrarum.json b/assets/locales/en/terrarum.json index 6967c092d..bfb4ffeef 100644 --- a/assets/locales/en/terrarum.json +++ b/assets/locales/en/terrarum.json @@ -33,6 +33,7 @@ "MENU_OPTIONS_DEBUG_CONSOLE": "Debug Console", "MENU_OPTIONS_DITHER": "Dithering", "MENU_OPTIONS_JVM_HEAP_MAX": "Max Heap Memory", + "MENU_OPTIONS_LIGHT_UPDATE_PASSES": "Light Calculation Depth", "MENU_OPTIONS_NOTIFICATION_DISPLAY_DURATION": "Show notification for", "MENU_OPTIONS_PARTICLES": "Particles", "MENU_OPTIONS_PERFORMANCE": "Performance", diff --git a/assets/locales/koKR/terrarum.json b/assets/locales/koKR/terrarum.json index f1f413dd1..00480da80 100644 --- a/assets/locales/koKR/terrarum.json +++ b/assets/locales/koKR/terrarum.json @@ -33,6 +33,7 @@ "MENU_OPTIONS_DEBUG_CONSOLE": "디버그 콘솔", "MENU_OPTIONS_DITHER": "디더링", "MENU_OPTIONS_JVM_HEAP_MAX": "최대 힙 메모리", + "MENU_OPTIONS_LIGHT_UPDATE_PASSES": "빛 계산 반복 횟수", "MENU_OPTIONS_NOTIFICATION_DISPLAY_DURATION": "알림 표시 시간", "MENU_OPTIONS_PARTICLES": "입자 수", "MENU_OPTIONS_PERFORMANCE": "성능", diff --git a/src/net/torvald/terrarum/DefaultConfig.kt b/src/net/torvald/terrarum/DefaultConfig.kt index 68e781843..5f3dee698 100644 --- a/src/net/torvald/terrarum/DefaultConfig.kt +++ b/src/net/torvald/terrarum/DefaultConfig.kt @@ -128,6 +128,8 @@ object DefaultConfig { "bgmvolume" to 1.0, "sfxvolume" to 1.0, + "lightpasses" to 2, + // settings regarding debugger diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIPerformanceControlPanel.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIPerformanceControlPanel.kt index bf0648711..135b748c6 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIPerformanceControlPanel.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIPerformanceControlPanel.kt @@ -31,6 +31,7 @@ class UIPerformanceControlPanel(remoCon: UIRemoCon?) : UICanvas() { arrayOf("notificationshowuptime", { Lang["MENU_OPTIONS_NOTIFICATION_DISPLAY_DURATION"] + " (${Lang["CONTEXT_TIME_SECOND_PLURAL"]})" }, "spinnerimul,2,10,1,1000"), arrayOf("", { Lang["MENU_LABEL_GRAPHICS"] }, "h1"), arrayOf("atlastexsize", { Lang["MENU_OPTIONS_ATLAS_TEXTURE_SIZE"] }, "spinnersel,1024,2048,4096,8192"), + arrayOf("lightpasses", { Lang["MENU_OPTIONS_LIGHT_UPDATE_PASSES"] }, "spinner,2,8,1"), arrayOf("", { Lang["MENU_LABEL_JVM_DNT"] }, "h1"), arrayOf("jvm_xmx", { Lang["MENU_OPTIONS_JVM_HEAP_MAX"] + " (GB)" }, "spinner,2,32,1"), arrayOf("jvm_extra_cmd", { Lang["MENU_LABEL_EXTRA_JVM_ARGUMENTS"] }, "typein"), diff --git a/src/net/torvald/terrarum/worlddrawer/LightmapRenderer.kt b/src/net/torvald/terrarum/worlddrawer/LightmapRenderer.kt index ec06648ba..da21bb78c 100644 --- a/src/net/torvald/terrarum/worlddrawer/LightmapRenderer.kt +++ b/src/net/torvald/terrarum/worlddrawer/LightmapRenderer.kt @@ -341,6 +341,16 @@ object LightmapRenderer { // } // no rendering trickery will eliminate the need of 2nd pass, even the "decay out" } + + App.getConfigInt("lightpasses").let { passcnt -> + if (passcnt > 2) { + for (pass in 3..passcnt) { + App.measureDebugTime("Renderer.LightRuns$pass") { + r1(lightmap);r2(lightmap);r3(lightmap);r4(lightmap) + } + } + } + } } private fun buildLanternAndShadowMap(actorContainer: List) {