mirror of
https://github.com/tangerineturtle1/NX2navi.git
synced 2026-11-15 19:19:58 -04:00
Add the Texture detail row to the settings menu's Screen tab, in the four menu languages.
The row offers Automatic, Full, Reduced and Low, names the level Automatic picks on this card, and notes that a change takes effect after a restart. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
This commit is contained in:
@@ -144,7 +144,9 @@ beside the game.
|
||||
"Preparing shaders" once while the driver rebuilds them. With a driver that has Vulkan's graphics pipeline library
|
||||
it lasts at most about 20 seconds once the shaders are translated, and the remaining pipelines are built in the
|
||||
background while you play.
|
||||
- **Screen** in the menu has Texture filtering (anisotropic, up to 16x, at once), Upscaling (DLSS on NVIDIA RTX cards,
|
||||
- **Screen** in the menu has Texture filtering (anisotropic, up to 16x, at once), Texture detail (Reduced and Low
|
||||
leave out the largest versions of the big surface textures so that the game fits the video memory of 6 and 8 GB
|
||||
cards; Automatic picks by the card), Upscaling (DLSS on NVIDIA RTX cards,
|
||||
FSR 3.1 on any card where `amd_fidelityfx_vk.dll` loads), Frame generation (NVIDIA DLSS on RTX 40 and 50 cards, with
|
||||
a DLSS multiplier of 2x, or 3x and 4x on RTX 50 cards; FSR 3.1 on any card where it loads; it needs DLSS or FSR 3.1
|
||||
upscaling on, and the frame limit then counts the frames on screen; with no limit chosen it is the display's refresh
|
||||
|
||||
@@ -71,6 +71,7 @@ int vk_ngxfg_wanted(void); // vk_dlaa.c: DLSS's frame generation th
|
||||
int vk_ngxfg_max(void); // ... and how many frames it may generate per rendered one (0: it cannot)
|
||||
int vk_ffx_available(void); // vk_ffx.cpp: FSR 3.1 upscaling can run (asked without loading the library)
|
||||
int vk_ffx_framegen_available(void); // ... and FSR 3.1 frame generation
|
||||
int vk_texture_detail_auto(void); // vk_texture.c: the texture detail auto picks on this card, 0 full to 2 low
|
||||
double frame_step_limit_hz(void);
|
||||
int frame_limit_follows_display(void);
|
||||
int frame_limit_adjustable(void);
|
||||
@@ -672,6 +673,19 @@ static void row_shadow_res(void) {
|
||||
opt_choice_list("NX2NAVI_SHADOW_RES", UI_MENU_SHADOW_RES, vals, names, N, UI_MENU_SHADOW_RES_DESC);
|
||||
}
|
||||
|
||||
// Texture detail (vk_texture.c "texture detail"): large surface textures made without their largest one or two mip
|
||||
// levels. Read when the first texture is made, so the row notes the restart. The automatic entry names the level it
|
||||
// picks on this card.
|
||||
static void row_texture_detail(void) {
|
||||
static const char *const vals[] = {"auto", "full", "reduced", "low"};
|
||||
static const UiTextId level[] = {UI_MENU_TEX_DETAIL_FULL, UI_MENU_TEX_DETAIL_REDUCED, UI_MENU_TEX_DETAIL_LOW};
|
||||
static char picked[96]; // the row keeps the pointer for the frame
|
||||
int a = vk_texture_detail_auto();
|
||||
snprintf(picked, sizeof picked, menu_text(UI_MENU_TEX_DETAIL_AUTO), menu_text(level[a < 0 || a > 2 ? 0 : a]));
|
||||
const char *names[] = {picked, menu_text(level[0]), menu_text(level[1]), menu_text(level[2])};
|
||||
opt_choice_list("NX2NAVI_TEXTURE_DETAIL", UI_MENU_TEX_DETAIL, vals, names, 4, UI_MENU_TEX_DETAIL_DESC);
|
||||
}
|
||||
|
||||
static void row_shadow_scale(void) {
|
||||
static const char *const vals[] = {"1", "2", "3", "4"};
|
||||
static const char *const names[] = {"960 (1x)", "1920 (2x)", "2880 (3x)", "3840 (4x)"};
|
||||
@@ -1061,6 +1075,7 @@ static void tab_screen(float scale) {
|
||||
static const char *const aniso[] = {"game", "2", "4", "8", "16"};
|
||||
const char *aniso_names[] = {menu_text(UI_MENU_ANISO_GAME), "2x", "4x", "8x", "16x"};
|
||||
opt_choice_list("NX2NAVI_ANISO", UI_MENU_ANISO, aniso, aniso_names, 5, UI_MENU_ANISO_DESC);
|
||||
row_texture_detail();
|
||||
opt_end();
|
||||
}
|
||||
|
||||
|
||||
@@ -84,6 +84,10 @@ static const char *const text_en[UI_TEXT_COUNT] = {
|
||||
[UI_MENU_ANISO] = "Texture filtering",
|
||||
[UI_MENU_ANISO_DESC] = "Anisotropic filtering of surface textures: ground, roads and walls seen at a shallow angle stay sharp into the distance instead of blurring. Game: the level the game asks for, as on the Switch.",
|
||||
[UI_MENU_ANISO_GAME] = "Game",
|
||||
[UI_MENU_TEX_DETAIL] = "Texture detail",
|
||||
[UI_MENU_TEX_DETAIL_DESC] = "Sharpness of large surface textures. Reduced and Low leave out their largest versions, so that an area fits the video memory of 6 and 8 GB cards; only surfaces seen up close look softer. Automatic picks by the card's video memory.",
|
||||
[UI_MENU_TEX_DETAIL_AUTO] = "Automatic: %s",
|
||||
[UI_MENU_TEX_DETAIL_FULL] = "Full", [UI_MENU_TEX_DETAIL_REDUCED] = "Reduced", [UI_MENU_TEX_DETAIL_LOW] = "Low",
|
||||
[UI_MENU_FPS_BOOST] = "Experimental FPS boost",
|
||||
[UI_MENU_FPS_BOOST_DESC] = "What the game's shaders write into its memory is copied back from the video card only "
|
||||
"when the game's own code needs it, instead of after every step of a frame. About a "
|
||||
@@ -648,6 +652,10 @@ static const char *const text_ru[UI_TEXT_COUNT] = {
|
||||
[UI_MENU_ANISO] = "Фильтрация текстур",
|
||||
[UI_MENU_ANISO_DESC] = "Анизотропная фильтрация текстур поверхностей: земля, дороги и стены под острым углом остаются чёткими вдали, а не размываются. Игра: уровень, который запрашивает игра, как на Switch.",
|
||||
[UI_MENU_ANISO_GAME] = "Игра",
|
||||
[UI_MENU_TEX_DETAIL] = "Детализация текстур",
|
||||
[UI_MENU_TEX_DETAIL_DESC] = "Чёткость больших текстур поверхностей. «Сниженная» и «Низкая» не загружают их самые крупные версии, чтобы область помещалась в видеопамять карт на 6 и 8 ГБ; мягче выглядят только поверхности вблизи. «Авто» выбирает по объёму видеопамяти.",
|
||||
[UI_MENU_TEX_DETAIL_AUTO] = "Авто: %s",
|
||||
[UI_MENU_TEX_DETAIL_FULL] = "Полная", [UI_MENU_TEX_DETAIL_REDUCED] = "Сниженная", [UI_MENU_TEX_DETAIL_LOW] = "Низкая",
|
||||
[UI_MENU_FPS_BOOST] = "Экспериментальное ускорение FPS",
|
||||
[UI_MENU_FPS_BOOST_DESC] = "То, что шейдеры игры записывают в её память, копируется с видеокарты обратно только "
|
||||
"тогда, когда это нужно коду самой игры, а не после каждого этапа кадра. Примерно на "
|
||||
@@ -1458,6 +1466,13 @@ static const char *const text_pt_br[UI_TEXT_COUNT] = {
|
||||
"ângulo raso continuam nítidos ao longe em vez de borrar. Jogo: o nível que o jogo pede, "
|
||||
"como no Switch.",
|
||||
[UI_MENU_ANISO_GAME] = "Jogo",
|
||||
[UI_MENU_TEX_DETAIL] = "Detalhe das texturas",
|
||||
[UI_MENU_TEX_DETAIL_DESC] = "Nitidez das texturas grandes de superfície. Reduzido e Baixo deixam de fora as versões "
|
||||
"maiores delas, para que uma área caiba na memória de vídeo de placas de 6 e 8 GB; só as "
|
||||
"superfícies vistas de perto ficam mais suaves. Automático escolhe pela memória de vídeo "
|
||||
"da placa.",
|
||||
[UI_MENU_TEX_DETAIL_AUTO] = "Automático: %s",
|
||||
[UI_MENU_TEX_DETAIL_FULL] = "Completo", [UI_MENU_TEX_DETAIL_REDUCED] = "Reduzido", [UI_MENU_TEX_DETAIL_LOW] = "Baixo",
|
||||
[UI_MENU_FPS_BOOST] = "Aumento de FPS experimental",
|
||||
[UI_MENU_FPS_BOOST_DESC] = "O que os shaders do jogo escrevem na memória dele só é copiado de volta da placa de "
|
||||
"vídeo quando o próprio código do jogo precisa, em vez de após cada etapa do quadro. "
|
||||
@@ -2142,6 +2157,10 @@ static const char *const text_zh_hans[UI_TEXT_COUNT] = {
|
||||
[UI_MENU_ANISO] = "纹理过滤",
|
||||
[UI_MENU_ANISO_DESC] = "表面纹理的各向异性过滤:以小角度看到的地面、道路和墙壁在远处依然清晰,而不会模糊。游戏:使用游戏请求的级别,与 Switch 上相同。",
|
||||
[UI_MENU_ANISO_GAME] = "游戏",
|
||||
[UI_MENU_TEX_DETAIL] = "纹理细节",
|
||||
[UI_MENU_TEX_DETAIL_DESC] = "大型表面纹理的清晰度。“降低”和“低”不加载它们最大的版本,使一个区域能放进 6 GB 和 8 GB 显卡的显存;只有近处的表面看起来略微柔和。“自动”根据显卡的显存选择。",
|
||||
[UI_MENU_TEX_DETAIL_AUTO] = "自动:%s",
|
||||
[UI_MENU_TEX_DETAIL_FULL] = "完整", [UI_MENU_TEX_DETAIL_REDUCED] = "降低", [UI_MENU_TEX_DETAIL_LOW] = "低",
|
||||
[UI_MENU_FPS_BOOST] = "实验性帧率提升",
|
||||
[UI_MENU_FPS_BOOST_DESC] = "游戏着色器写入其内存的数据,只有在游戏自身的代码需要时才从显卡复制回来,而不是在每帧的每个阶段之后都"
|
||||
"复制。在大型开放区域中帧率提高约三分之一。实验性功能:开启后个别帧可能闪烁。默认关闭。",
|
||||
|
||||
@@ -41,6 +41,9 @@ typedef enum {
|
||||
UI_MENU_FOV, UI_MENU_FOV_DESC,
|
||||
UI_MENU_SHADOW_RES, UI_MENU_SHADOW_RES_DESC, UI_MENU_SHADOW_RES_GAME,
|
||||
UI_MENU_ANISO, UI_MENU_ANISO_DESC, UI_MENU_ANISO_GAME,
|
||||
UI_MENU_TEX_DETAIL, UI_MENU_TEX_DETAIL_DESC,
|
||||
UI_MENU_TEX_DETAIL_AUTO, // "Automatic: %s", %s the level it picks on this card
|
||||
UI_MENU_TEX_DETAIL_FULL, UI_MENU_TEX_DETAIL_REDUCED, UI_MENU_TEX_DETAIL_LOW,
|
||||
UI_MENU_FPS_BOOST, UI_MENU_FPS_BOOST_DESC,
|
||||
UI_MENU_SHARPNESS, UI_MENU_SHARPNESS_DESC, UI_MENU_SHARPNESS_NEEDS_FSR,
|
||||
UI_MENU_COLOR, // group heading over the colour rows
|
||||
|
||||
Reference in New Issue
Block a user