您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
3D effect for arras.io and diep.io. No performance issues!
- // ==UserScript==
- // @name Arras.IO/Diep.IO 3D Effect
- // @namespace http://tampermonkey.net/
- // @version 0.0.1
- // @description 3D effect for arras.io and diep.io. No performance issues!
- // @author Zertalious (Zert)
- // @match *://diep.io/*
- // @match *://arras.io/*
- // @icon https://www.google.com/s2/favicons?domain=diep.io
- // @grant none
- // @require https://unpkg.com/three@latest/build/three.min.js
- // @run-at document-end
- // ==/UserScript==
- window.Image = new Proxy( window.Image, {
- construct() {
- const result = Reflect.construct( ...arguments );
- result.crossOrigin = 'anonymous';
- return result;
- }
- } );
- const canvas = document.getElementById( 'canvas' );
- canvas.style.opacity = '0';
- const renderer = new THREE.WebGLRenderer( { alpha: true } );
- renderer.setPixelRatio( window.devicePixelRatio );
- renderer.setSize( window.innerWidth, window.innerHeight );
- renderer.domElement.style.position = 'absolute';
- renderer.domElement.style.left = '0';
- renderer.domElement.style.top = '0';
- renderer.domElement.style.pointerEvents = 'none';
- canvas.parentNode.insertBefore( renderer.domElement, canvas );
- const scene = new THREE.Scene();
- scene.background = new THREE.Color( 'red' );
- const camera = new THREE.PerspectiveCamera( 60, 1, 0.1, 1000 );
- camera.position.z = Math.sin( Math.PI / 3 ) * 2;
- const texture = new THREE.CanvasTexture( canvas );
- texture.minFilter = texture.magFilter = THREE.LinearFilter;
- const material = new THREE.RawShaderMaterial( {
- vertexShader: `
- attribute vec3 position;
- varying vec3 vPosition;
- void main() {
- vPosition = position;
- gl_Position = vec4( position, 1.0 );
- }
- `,
- fragmentShader: `
- precision mediump float;
- uniform sampler2D mainTexture;
- uniform float depth;
- uniform mat4 modelViewMatrix;
- uniform mat4 projectionMatrix;
- varying vec3 vPosition;
- void main() {
- vec3 groundColor = vec3( 0.803921568627451, 0.803921568627451, 0.803921568627451 );
- vec3 red = vec3( 0.8666666666666667, 0.6745098039215687, 0.6784313725490196 );
- vec4 a, b;
- const int count = 20;
- for ( int i = 0; i <= count; i ++ ) {
- vec3 position = vec3( vPosition.xy, float( i ) / float( count ) * depth );
- vec4 transformed = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
- vec2 uv = transformed.xy / transformed.w * 0.5 + 0.5;
- if ( uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0 ) {
- b = vec4( groundColor, 1.0 );
- } else {
- b = texture2D( mainTexture, uv );
- }
- if ( length( b.rgb - groundColor ) < 0.22 || length( b.rgb - red ) < 0.1 ) {
- if ( i != count ) {
- b.a = 0.0;
- }
- } else if ( i != 0 ) {
- b.rgb = groundColor * 0.8;
- }
- a.rgb = a.rgb * a.a + b.rgb * b.a * ( 1.0 - a.a );
- a.a = a.a + b.a * ( 1.0 - a.a );
- }
- gl_FragColor = a;
- }
- `,
- uniforms: {
- mainTexture: { value: texture },
- depth: { value: 0.2 }
- }
- } );
- const geometry = new THREE.PlaneGeometry( 2, 2 );
- const mesh = new THREE.Mesh( geometry, material );
- scene.add( mesh );
- window.addEventListener( 'resize', function () {
- renderer.setSize( window.innerWidth, window.innerHeight );
- }, false );
- function animate() {
- texture.needsUpdate = true;
- renderer.render( scene, camera );
- window.requestAnimationFrame( animate );
- }
- animate();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址