@grisha228

Почему текстура меняет цвет?

Здравствуйте, друзья!
У меня неправильно накладывается текстура на Shader GLSL, цвета в самой текстуры не соответствуют изображению.
Есть следующий код:

fragment.glsl
#pragma glslify: cnoise3 = require(glsl-noise/classic/3d.glsl)
      uniform float time;
      uniform vec3 colorStart;
      uniform vec3 colorEnd;
      uniform sampler2D textureOne;
      varying vec2 vUv;
      varying vec3 vNormal;
      
      void main() {
        vec4 textureOneLoad= texture2D(textureOne,vUv);
        gl_FragColor = textureOneLoad;
      }


vertex.glsl
varying vec2 vUv;
      varying vec3 vNormal;
      void main() {
        vNormal = normal;
        gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
        vUv = uv;
      }


ThreeJS добавление объекта
addObjects(){
    let that = this;
    this.material = new THREE.ShaderMaterial({
        extensions: {
            derivatives: '#extension GL_OES_standard_derivatives : enable'
        },
        uniforms:{
            time: {type: 'f', value:0},
            resolution: {type: 'v4', value: new THREE.Vector4()},
            uvRate1:{value: new THREE.Vector2(1,1)},
            textureOne: {type:'t', value: new THREE.TextureLoader().load(textureOne.src)},
            colorStart: { value: new THREE.Color('#efefef') },
            colorEnd: { value: new THREE.Color('#ffffff') }
        },
        vertexShader: vertex,
        fragmentShader: fragment,
    });

    this.geometry = new THREE.PlaneGeometry(10,10,1,1);
    this.plane = new THREE.Mesh(this.geometry, this.material);
    this.scene.add(this.plane);
}


Текстура:
61a2241eee566316645826.png

Как выглядит Plane:
61a2246d939ba860592839.png
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ответы на вопрос 1
@grisha228 Автор вопроса
Решил изменением fragment.glsl
#pragma glslify: cnoise3 = require(glsl-noise/classic/3d.glsl)
      uniform float time;
      uniform vec3 colorStart;
      uniform vec3 colorEnd;
      uniform sampler2D textureOne;
      varying vec2 vUv;
      varying vec3 vNormal;
      
      void main() {
       vec4 textureOneLoad = vec4(1.0,1.0,1.0,0.1) - texture2D(textureOne,vUv);
        gl_FragColor = textureOneLoad;
      }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы