diff options
Diffstat (limited to 'serve')
| -rw-r--r-- | serve/index.html | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/serve/index.html b/serve/index.html index 46b6c60..5314a89 100644 --- a/serve/index.html +++ b/serve/index.html @@ -1692,7 +1692,7 @@ bigPlanet(28, 0x98a0ba, -0.7, 0.42, -0.7, 1000, 0.25); // Полужопие const _sunWorld = new THREE.Vector3(); // ---------- god rays (радиальный пост-эффект от солнца) ---------- -let rtScene = new THREE.WebGLRenderTarget(innerWidth, innerHeight); +let rtScene = new THREE.WebGLRenderTarget(Math.floor(innerWidth * renderer.getPixelRatio()), Math.floor(innerHeight * renderer.getPixelRatio())); // device-разрешение, иначе мыло на hi-DPI const grScene = new THREE.Scene(), grCam = new THREE.OrthographicCamera(-1, 1, 1, -1, 0, 1); const grMat = new THREE.ShaderMaterial({ uniforms: { tScene: { value: null }, sunPos: { value: new THREE.Vector2(0.5, 0.8) }, intensity: { value: 0.0 }, res: { value: new THREE.Vector2(innerWidth, innerHeight) } }, @@ -2113,7 +2113,7 @@ function tick(now) { _sunWorld.copy(sunDir).multiplyScalar(1150).add(camera.position); // sun world pos -> screen for god rays _sunProj.copy(_sunWorld).project(camera); grMat.uniforms.sunPos.value.set(_sunProj.x * 0.5 + 0.5, _sunProj.y * 0.5 + 0.5); - grMat.uniforms.res.value.set(innerWidth, innerHeight); + grMat.uniforms.res.value.set(innerWidth * renderer.getPixelRatio(), innerHeight * renderer.getPixelRatio()); grMat.uniforms.intensity.value = (_sunProj.z < 1) ? 0.55 : 0.0; renderer.setRenderTarget(rtScene); renderer.render(scene, camera); renderer.setRenderTarget(null); grMat.uniforms.tScene.value = rtScene.texture; @@ -2223,7 +2223,7 @@ if (('ontouchstart' in window) || navigator.maxTouchPoints > 0) { dp.style.right = '8px'; dp.style.padding = '5px 8px'; } -addEventListener('resize', () => { camera.aspect = innerWidth / innerHeight; camera.updateProjectionMatrix(); renderer.setSize(innerWidth, innerHeight); rtScene.setSize(innerWidth, innerHeight); }); +addEventListener('resize', () => { camera.aspect = innerWidth / innerHeight; camera.updateProjectionMatrix(); renderer.setSize(innerWidth, innerHeight); rtScene.setSize(Math.floor(innerWidth * renderer.getPixelRatio()), Math.floor(innerHeight * renderer.getPixelRatio())); }); try { window.PZ = { THREE, scene, camera, S, groundH, WATER_Y, herd, herdMeshes, MAP, MAPS: PZ_MAPS }; } catch(e) {} requestAnimationFrame(tick); })(); |
