diff --git a/nx2navi.ini.example b/nx2navi.ini.example index cae47bd6..8ba031bd 100644 --- a/nx2navi.ini.example +++ b/nx2navi.ini.example @@ -545,11 +545,11 @@ # dlaa_objmv = 1 # Motion vectors of Link's own for DLSS, FSR 3.1 and frame generation (game 1.1.1): Link and the equipment attached to him are # drawn a second time with last frame's pose, so fast turns, attacks and jumps move by their real motion instead of an -# estimate from colour and depth. 0, the default: the estimate, as before. 1: on, to try; it reads the player's -# equipment from the game's memory at every submission and has not been played on this version yet. Read at start. +# estimate from colour and depth. 1, the default; 0: the estimate, as before 0.10.0. It reads the player's equipment +# from the game's memory at every submission. Read at start. # motion_guard_degrees (35, 45 or 60, the default): a part that turns more than this in one frame is checked against # last frame's depth before its vector is written. -# selective_motion = 0 +# selective_motion = 1 # Characters' trails: where a character, animal or held item moves without motion vectors of its own (all of them with # dlaa_objmv = 0), DLSS can drag a faint copy of it. The G-buffer marks those objects; on them and where they were the # frame before, DLSS is told to favour the current frame by this percentage (0, 35, 65 or 100; 0 off). Higher removes diff --git a/runtime/motion_owner.c b/runtime/motion_owner.c index d3435f72..aff90b5e 100644 --- a/runtime/motion_owner.c +++ b/runtime/motion_owner.c @@ -32,11 +32,11 @@ static int owner_on; static void owner_init(void *unused) { (void)unused; - // NX2NAVI_SELECTIVE_MOTION (selective_motion; default 0, 1 on): off until it has been played. On, every guest + // NX2NAVI_SELECTIVE_MOTION (selective_motion; default 1, 0 off: the estimate from colour and depth). On, every guest // submission walks the player's actor, equipment and models in guest memory (motion_owner_capture), each scene // draw is looked up in that list (vk_fg_pose.inc pose_owner), and the player's meshes are drawn a second time // into the motion vectors DLSS, FSR 3.1 and frame generation read. - owner_on = RT_V111 && rt_knob("SELECTIVE_MOTION", "0"); + owner_on = RT_V111 && rt_knob("SELECTIVE_MOTION", "1"); } int motion_owner_enabled(void) { plat_once(&owner_once, owner_init, NULL); @@ -259,7 +259,7 @@ void motion_owner_capture(MotionOwnerSnapshot *out) { capture_model_buffers(out); O.nbindings=out->count; memcpy(O.bindings,out->bindings,out->count*sizeof *O.bindings); - if(O.captures%720==0) rt_log("motion direct: %u shape bindings from %u models",out->count,O.count); + if(O.captures%43200==0) rt_log("motion direct: %u shape bindings from %u models",out->count,O.count); plat_mutex_unlock(&owner_lock); qsort(out->bindings, out->count, sizeof *out->bindings, binding_address_order); } @@ -268,7 +268,7 @@ void motion_owner_present(void) { if (!motion_owner_enabled()) return; plat_mutex_lock(&owner_lock); ++O.producer_frame; - if (O.producer_frame % 120 == 0) + if (O.producer_frame % 7200 == 0) // on by default: a line every minute or two, not every two seconds rt_log("motion ownership: %u models, %llu captures, %llu owned/%llu other queries, " "%llu conflicts, %llu capacity misses, %u attachment rejections", O.count, (unsigned long long)O.captures, (unsigned long long)O.owned_queries,