Palworld

Palworld

Not enough ratings
"Max" graphics.
By IchigoMait
Just an engine.ini tweak.

Overall, what it changes:

Ultra wide support is enabled.

Higher view distance for everything.

More detailed shadows.

Lumen reflections, non blurry, check mirrors or water for difference.
Indirect reflections don't work because the game doesn't use raytracing (aka hardware raytracing) it only can use lumen.

Auto exposure and eyeadaption, so overall image brightness won't be too drastic, looking at bright stuff going from a darker view won't try to blind you, same with reverse. Also, you can adjust the overall lighting brightness with r.SkylightIntensityMultiplier, if it's too bright, you can lower with 0.1 increments.

Slight sharpening with r.Tonemapper.Sharpen, you can set it to 0, if you want the original soft look, or increase it to make it even sharper.

If you don't like fog, you can change r.Fog=1 to r.Fog=0. You might want to test it inside the dungeons too, because of Volumetric Fog, it gets disabled alongside fog, so dungeons that use volumetric fog for ambient lighting will be pitch black without a light source.

DX12 is enabled, but you can disable it, software lumen doesn't need dx12, but at the cost of not being able to use use nanites, async compute and virtual shadows.

There is also a graphical bug in the vanilla version of the game (well few), but it's fixable by visiting a dungeon once in a game session, the bug being volumetric clouds are missing on game launch, different from the skybox clouds.
   
Award
Favorite
Favorited
Unfavorite
Installation/Customization
Find the engine.ini in
Users\username\AppData\Local\Pal\Saved\Config\Windows
Copy and paste in the text from 3 parts.
No need to make the file readme only, also if you don't make it readme only, if you overwrote the autogenerated stuff in the engine.ini file, those will be regenerated by the game.

You can also get it from here, including copy paste in one go, instead having in parts.
https://www.nexusmods.com/palworld/mods/147

Change these if you want performance back, but mind that visually most noticeable is Global Illumination.

r.DynamicGlobalIlluminationMethod=1 ; (20-30 fps cost)(1=Lumen)(0 - None. Global Illumination can be baked into Lightmaps but no technique will be used for Dynamic Global Illumination.\n1 - Lumen. Use Lumen Global Illumination for all lights, emissive materials casting light and SkyLight Occlusion. Requires 'Generate Mesh Distance Fields' enabled for Software Ray Tracing and 'Support Hardware Ray Tracing' enabled for Hardware Ray Tracing.\n2 - SSGI. Standalone Screen Space Global Illumination. Low cost, but limited by screen space information.\n3 - RTGI. Ray Traced Global Illumination technique. Deprecated, use Lumen Global Illumination instead.\n4 - Plugin. Use a plugin for Global Illumination)

r.VolumetricFog=1 ; (10 fps cost, works only when Fog is also enabled)(0 Low/Medium 1 High/Epic/Cinematic ShadowQuality)(Whether to allow the volumetric fog feature)

r.ViewDistanceScale=5 ; (10-20 fps cost going from 1 to 5)(0.4 Low 0.6 Medium 0.8 High 1 Epic 10 Cinematic ViewDistanceQuality)(Controls the view distance scale. A primitive's MaxDrawDistance is scaled by this value.\nHigher values will increase view distance but at a performance cost.\nDefault = 1)

r.StaticMeshLODDistanceScale=0.1 ; (5fps cost going from 1 to 0.1)(0.1-1+: 0 breaks, higher number lowers the distance of higher quality lod)(Scale factor for the distance used in computing discrete LOD for static meshes. (defaults to 1))

r.Shadow.Virtual.Enable=1 ; (0 constructor)(0 or 1, works with dx12 only, causes low fps temporarily while inventory/menu characters are visible)(Enable Virtual Shadow Maps)
engine.ini part 1
[ConsoleVariables]
AspectRatioAxisConstraint=AspectRatio_MaintainYFOV
DefaultGraphicsRHI=DefaultGraphicsRHI_DX12
r.AmbientOcclusion.Compute=2 ; (0 default)(If SSAO should use ComputeShader (not available on all platforms) or PixelShader. The [Async] Compute Shader version is WIP, not optimized, requires hardware support (not mobile/DX10/OpenGL3), does not use normals which allows it to run right after EarlyZPass (better performance when used with AyncCompute). AyncCompute is currently only functional on PS4. 0: PixelShader (default); 1: (WIP) Use ComputeShader if possible, otherwise fall back to '0'; 2: (WIP) Use AsyncCompute if efficient, otherwise fall back to '1'; 3: (WIP) Use AsyncCompute if possible, otherwise fall back to '1')
r.AmbientOcclusionLevels=2 ; (-1 scalability)(0 Low 1 Medium 2 High 3 Epic PostProcessQuality)(Defines how many mip level are using during ambient occlusion calculation. This is useful when tweaking the algorithm)
r.AmbientOcclusionStaticFraction=1 ; (-1 constructor)(Allows to override the Ambient Occlusion Static Faction (see post process volume). Factions are between 0 and 1)
r.Bloom.AsyncCompute=1 ; (0 constructor)(Whether to run FFT bloom on async compute)
r.ContactShadows.NonShadowCastingIntensity=1 ; (0 constructor)(Intensity of contact shadows from objects with cast contact shadows disabled. Usually 0(off))
r.DepthOfFieldQuality=4 ; (2 scalability)(0 Low 1 Medium 2 High/Epic 4 Cinematic PostProcessQuality)(Allows to adjust the depth of field quality. Currently only fully affects BokehDOF. GaussianDOF is either 0 for off, otherwise on)
r.DFShadowAsyncCompute=1 ; (0 constructor)(Whether render distance field shadows using async compute if possible)
r.Emitter.FastPoolEnable=1 ; (0 constructor)(Should we use fast pools for emitters.)
r.EnableAsyncComputeTranslucencyLightingVolumeClear=1 ; (0 constructor)(Whether to clear the translucency lighting volume using async compute)
r.DFDistanceScale=10 ; (1 constructor)(Can be very demanding going over 10)(Factor to scale directional light property 'DistanceField Shadows Distance', clamped to [0.0001, 10000])
r.DFFullResolution=1 ; (0 constructor)(1 = full resolution distance field shadowing, 0 = half resolution with bilateral upsample)
r.DynamicGlobalIlluminationMethod=1 ; (0 constructor)(20-30 fps cost)(1=Lumen)(0 - None. Global Illumination can be baked into Lightmaps, but no technique will be used for Dynamic Global Illumination)
r.Filter.SizeScale=2 ; (1 scalability)(0.6 Low 0.7 Medium 0.8 High 1 Epic/Cinematic PostProcessQuality)(Allows to scale down or up the sample count used for bloom and Gaussian depth of field (scale is clamped to give reasonable results))
r.ForceHighestMipOnUITextures=1 ; (0 constructor)(If set to 1, textures in the UI Group will have their highest mip level forced)
r.GBufferFormat=4 ; (1 constructor)(Defines the memory layout used for the GBuffer)
r.LandscapeLOD0DistributionScale=4 ; (1 constructor)(Multiplier for the landscape LOD0DistributionSetting property)
r.LandscapeLODDistributionScale=4 ; (1 constructor)(Multiplier for the landscape LODDistributionSetting property)
r.LensFlareQuality=3 ; (2 scalability)(0 Low/Medium 2 High/Epic 3 Cinematic PostProcessQuality)(0: off but best for performance)
r.Lumen.DiffuseIndirect.AsyncCompute=1 ; (0 constructor)(Whether to run lumen diffuse indirect passes on the compute pipe if possible)
r.Lumen.DiffuseIndirect.SSAO=1 ; (0 constructor)(Whether to render and apply SSAO to Lumen GI, only when r.Lumen.ScreenProbeGather.ScreenSpaceBentNormal is disabled. This is useful for providing short range occlusion when Lumen's Screen Bent Normal is disabled due to scalability, however SSAO settings like screen radius come from the user)
r.Lumen.Reflections.AsyncCompute=1 ; (0 constructor)(Whether to run Lumen reflection passes on the compute pipe if possible)
r.Lumen.Reflections.GGXSamplingBias=100 ; (0.1 constructor)(Seems to make transparent object inside reflective side reflect stuff properly instead of being blurry)(No description)
r.Lumen.Reflections.MaxRoughnessToTrace=0.5 ; (0.4 constructor)(No description)
r.Lumen.Reflections.ScreenSpaceReconstruction.RoughnessScale=0 ; (default 1)
r.Lumen.Reflections.SmoothBias=10 ; (0 constructor)(Values larger than 0 apply a global material roughness bias for Lumen Reflections, where 1 is fully mirror)
r.Lumen.ScreenProbeGather.MaxRoughnessToEvaluateRoughSpecular=1 ; (0.8 constructor)(Maximum roughness value to evaluate rough specular in Screen Probe Gather. Lower values reduce GPU cost of integration, but also lose rough specular)
r.Lumen.ScreenProbeGather.ScreenSpaceBentNormal=0 ; (1 scalability)(Whether to compute screen space direction occlusion to add high frequency occlusion (contact shadows) which Screen Probes lack due to downsampling)
r.Lumen.ScreenProbeGather.Temporal.MaxFramesAccumulated=30 ; (10 constructor)(Lower values cause the temporal filter to propagate lighting changes faster, but also increase filckering from noise)
r.Lumen.ScreenProbeGather.TemporalFilterProbes=1 ; (0 constructor)(Whether to temporally filter probe traces to reduce noise)
r.Lumen.TraceDistanceScale=5 ; (1 constructor)(1 is enough for land shadows, but water reflections need 4-5)(Scales the tracing distance for all tracing methods and Lumen Features, used by scalability)
r.Lumen.TranslucencyReflections.FrontLayer.Enable=1 ; (0 scalability)(Whether to render Lumen Reflections on the fronmost layer of Translucent Surfaces. Other layers will use the lower quality Radiance Cache method that can only produce glossy reflections)
r.LumenScene.Lighting.AsyncCompute=1 ; (0 constructor)(Whether to run LumenSceneLighting on the compute pipe if possible. Only takes effect if r.LumenScene.DirectLighting.ReuseShadowMaps is disabled)
r.LumenScene.Radiosity.HemisphereProbeResolution=8 (default 4)
r.LumenScene.Radiosity.MaxRayIntensity=10 ; (default 40)
r.LumenScene.Radiosity.Temporal.MaxFramesAccumulated=10 ; (default 4)
r.MaxAnisotropy=16 ; (8 scalability)(0 Low 2 Medium 4 High 8 Epic/Cinematic 16 Max TextureQuality)(MaxAnisotropy should range from 1 to 16. Higher values mean better texture quality, when using anisotropic filtering, but at a cost to performance. Default is 4)
r.MotionBlurQuality=0 ; (4 scalability)(0 Low 3 Medium/High 4 Epic/Cinematic PostProcessQuality)(Defines the motion blur method which allows to adjust for quality or performance)
r.PostProcessingColorFormat=1 ; (0 constructor)(Defines the memory layout (RGBA) used for most of the post processing chain buffers)
r.ReflectionCapture.EnableLightFunctions=1 ; (0 constructor)(0. Disable light functions in reflection/sky light capture (default))
r.ReflectionMethod=1 ; (2 constructor)(1=Lumen)(0 - None. Reflections can come from placed Reflection Captures, Planar Reflections and Skylight, but no global reflection method will be used)
r.RefractionQuality=3 ; (2 scalability)(0 Low/Medium 2 High/Epic 3 Cinematic EffectsQuality)(Defines the distortion/refraction quality which allows to adjust for quality or performance)
r.RenderTargetPoolMin=1000 ; (400 scalability)(300 Low 350 Medium 400 High/Epic 1000 Cinematic PostProcessQuality)(If the render target pool size (in MB) is below this number, there is no deallocation of render targets. Default is 200 MB)
r.SceneColorFringe.Max=0 ; (-1 constructor)(-2 on, -1 clamp - Allows to clamp the postprocess setting (in percent, Scene chromatic aberration / color fringe to simulate an artifact that happens in real-world lens, mostly visible in the image corners))
r.SceneColorFringeQuality=0 ; (1 scalability)(0 Low/Medium 1 High to Cinematic PostProcessQuality)(0: off but best for performance)
r.Shadow.CSM.MaxCascades=10 ; (3 scalability)(1 Low/Medium 2 High 4 Epic 10 Cinematic ShadowQuality)(Dynamic shadows, like in vanilla, causes light to bleed through certain textures)(The maximum number of cascades with which to render dynamic directional light shadows)
engine.ini part 2
r.Shadow.CSM.TransitionScale=2 ; (1 scalability)(0 Low 0.25 Medium 0.8 High 1 Epic/Cinematic 2 Max ShadowQuality)(Allows to scale the cascaded shadow map transition region. Clamped within 0..2)
r.Shadow.CSMShadowDistanceFadeoutMultiplier=0 ; (1 constructor)(Multiplier for the CSM distance fade)
r.Shadow.DistanceScale=2 ; (1 scalability)(Scalability option to trade shadow distance versus performance for directional lights (clamped within a reasonable range)
r.Shadow.FilterMethod=2 ; (0 constructor)(2 is more accurate when being close to objects)(Chooses the shadow filtering method)
r.Shadow.MaxCSMResolution=4096 ; (2048 scalability)(512 Low 1024 Medium 2048 High/Epic 4096 Cinematic ShadowQuality)(Can be increased when using r.Shadow.DistanceScale 2, or with 1 can be lower)((Max square dimensions (in texels) allowed for rendering Cascaded Shadow depths. Range 4 to hardware limit. Higher = better quality shadows, but at a performance cost)
r.Shadow.MaxResolution=4096 ; (2048 scalability)(512 Low 1024 Medium to Epic 4096 Cinematic ShadowQuality)(Max square dimensions (in texels) allowed for rendering shadow depths. Range 4 to hardware limit. Higher = better quality shadows, but at a performance cost)
r.Shadow.RadiusThreshold=0 ; (0.01 scalability)(0.06 Low 0.05 Medium 0.04 High 0.01 Epic 0 Cinematic ShadowQuality)(higher than 0 and you cut away certain shadows)(Cull shadow casters if they are too small, value is the minimal screen space bounding spherer radius)
r.Shadow.Virtual.Enable=1 ; (0 constructor)(0 or 1, works with dx12 only, causes low fps temporarily while inventory/menu characters are visible)(Enable Virtual Shadow Maps)
r.Shadow.Virtual.UseFarShadowCulling=0 ; (1 constructor)(0 more distant shadows)(Disabled when forcing only virtual shadow maps)(Switch between implementing the far shadow culling logic for VSMs)
r.Shadow.Virtual.ForceOnlyVirtualShadowMaps=1 ; (0 constructor)(1=all accurate shadows)(When far shadow culling is 0, then only close to mid range shadows change)(If enabled, disallow creation of conventional non-virtual shadow maps for any lights that get a virtual shadow map)
r.Shadow.Virtual.ScreenRayLength=0 ; (0.015 constructor)(Length of the screen space trace (smart shadow bias) before the virtual shadow map lookup)
r.SkeletalMeshLODBias=-1 ; (0 scalability)(2 Low 1 Medium 0 High to Cinematic ViewDistanceQuality)(LOD bias for skeletal meshes (does not affect animation editor viewports))
r.SkyAtmosphereASyncCompute=1 ; (0 constructor)(SkyAtmosphere on async compute (default: false))
r.SSR.MaxRoughness=1 ; (-1 constructor)(Allows to override the post process setting ScreenSpaceReflectionMaxRoughness)
r.SSR.Quality=4 ; (3 scalability)(0 Low to High 1 Epic 4 Cinematic EffectsQuality)(works only when DGIM is 0/2 and ReflectionMethod 1/2 or DGIM 1 and RM 2, same with other SSR settings)(Whether to use screen space reflections and at what quality setting)
r.SSR.Temporal=1 ; (0 constructor(Defines if we use the temporal smoothing for the screen space reflection)
r.StaticMeshLODDistanceScale=0.1 ; (1 constructor)(5fps cost going from 1 to 0.1)(0.1-1+: 0 breaks, higher number lowers the distance of higher quality lod)(Scale factor for the distance used in computing discrete LOD for static meshes. (defaults to 1))
r.Streaming.LimitPoolSizeToVRAM=0 ; (1 projectsetting)(1 Low to High 0 Epic/Cinematic TextureQuality)(If non-zero, texture pool size will be limited to how much GPU mem is available)
r.Streaming.PoolSize=-1 ; (0 project setting)(200 Low 400 Medium 700 High 1000 Epic 3000 Cinematic TextureQuality)(-1: Default texture pool size, otherwise the size in MB)
r.Tonemapper.Sharpen=1 ; (0 constructor)(0 soft look, higher uses sharpening)(Sharpening in the tonemapper (not for mobile), actual implementations is work in progress, clamped at 10)
r.TranslucencyVolumeBlur=0 ; (1 scalability)(0 Low/Medium 1 High to Cinematic EffectsQuality)(Whether to blur the translucent lighting volumes)
r.TSR.AsyncCompute=3 ; (0 constructor)(Whether to run TSR on async compute. Some TSR passes can overlap with previous passe. 0: Disabled (default); 1: Only ClearPrevTextures pass; 2: Only ClearPrevTextures through DecimateHistory passes; 3: All passes)
r.ViewDistanceScale=5 ; (1 scalability)(10-20 fps cost going from 1 to 5)(0.4 Low 0.6 Medium 0.8 High 1 Epic 10 Cinematic ViewDistanceQuality)(Controls the view distance scale. A primitive's MaxDrawDistance is scaled by this value)
r.ViewTextureMipBias.Min=0 ; (-2 constructor)(5 fps cost going from 0 to -2)(same as mipmap, weirdly vanilla uses the more costly variant, microscopic texture sharpness gain going below 0)(Automatic view mip bias's minimum value (default to -2))
r.ViewTextureMipBias.Offset=0 ; (-0.3 constructor)(when Min value is in negative, this one becomes performance costly)(Automatic view mip bias's constant offset (default to -0.3)
r.VolumetricRenderTarget=2 ; (1 constructor)(0/1/3 inaccurate, 2 accurate)(Visit a dungeon to see VolumetricClouds in the sky until closing the game)
r.VolumetricRenderTarget.PreferAsyncCompute=1 ; (0 constructor)(Whether to prefer using async compute to generate volumetric cloud render targets)
r.Water.SingleLayer.DepthPrepass=1 ; (0 constructor)(read only)
r.Water.SingleLayerWater.SupportCloudShadow=1 ; (0 constructor)(read only)(Enables cloud shadows on SingleLayerWater materials)
Side note about using aa and scaling.
If you can use dlss, use tsr, it will look the best, even with auto.

The game doesn't disable AA, it just locks you out from changing it while scaling is in use.

If you want the least amount of aliasing and still get good performance, enable tsr first and then dlss auto.

If you can't use scaling, don't really suggest to use tsr, unless you have a beast of a gpu.
5 Comments
IchigoMait  [author] 1 Feb, 2024 @ 8:14am 
Fixed dungeons having missing textures, nanites + dungeons a no go, prolly didn't even work.
Gained around 40fps back, depends on locations.
IchigoMait  [author] 27 Jan, 2024 @ 12:33pm 
Increased shadowdistance. Disabled lumen directlighting, caused some issues when a fire light source was nearby a building, causing the building to have a lighting seizure inside.
IchigoMait  [author] 26 Jan, 2024 @ 1:50pm 
Pictures were made with default value of r.Lumen.TraceDistanceScale
not sure what it was, but less than what I use now. Basically max distance for reflections now.
IchigoMait  [author] 26 Jan, 2024 @ 1:05pm 
Fixed some shadows issues with shadow distance scale, 0 was good for trees, but worse for everything else, especially close up.
Made shadow filter more accurate.
Increased the mipmaplodbias value by 2, gained around 15-20 fps compared to -1, so it's at 1, should be the same quality, maybe very tiny differences, 2 was easily noticeable being lower quality.

Removed all the streaming stuff, enabling texturestreaming made it worse, loads of stutters when turning around the camera, and then also removed texturestreaming option itself, the games own default setting is as good.
Maschine 25 Jan, 2024 @ 3:45pm 
Great work figuring this out. The game looks even more impressive now!