Сделать интенсивность пикселей в зависимости от расстояния от мыши - PullRequest
1 голос
/ 24 октября 2019

Я рендерил свою сцену на холсте 512x512, моя цель - изменить интенсивность пикселя в зависимости от того, насколько далеко пиксель находится от курсора мыши. Но, похоже, ничего не изменится. Я пытаюсь умножить на большое число, тогда это все белое.

    var ico = new THREE.Mesh(new THREE.IcosahedronGeometry(0.3,0), light_mat);
    ico.position.x = 0;
    ico.position.y = 0;
    ico.position.z = -3;
    scene.add(ico);


        var render = function() {
        vec.set(
        ( mouse_x / 512 ) * 2 - 1,
        - ( mouse_y / 512 ) * 2 + 1,
        0.5 );

        vec.unproject( camera );

        vec.sub( camera.position ).normalize();

        var distance = (ico.position.z-camera.position.z ) / vec.z;

        pos.copy( camera.position ).add( vec.multiplyScalar( distance ) );
        console.log(pos.x+":"+pos.y+":"+pos.z);

         ico.material.uniforms.mouse.value = pos;
         requestAnimationFrame(render);
         renderer.render(scene, camera);
        };

...

<script type="x-shader/x-vertex" id="light_f">
varying vec3 pos;
varying vec2 uv_pos;
varying vec3 norm;
uniform vec3 mouse;
void main() {
    vec4 tex = vec4(1.0,1.0,1.0,1.0);
    float ang = dot(mouse,norm);
    float dis = 0.1*distance(mouse,pos);
    gl_FragColor = tex*dis; 
}
</script>
<script type="x-shader/x-vertex" id="light_v">
uniform vec3 mouse;
varying vec2 uv_pos;
varying vec3 norm;
varying vec3 pos;
void main() {
    uv_pos = uv;
    norm = normal;
    pos = position;
    gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
}
</script>

Любая помощь приветствуется.

...