У меня есть самолет со следующими шейдеры:Shader игнорирование позиции переменной
<script type="x-shader/x-vertex" id="vertexshader">
varying vec3 col;
void main()
{
col = vec3(position.z, position.z, 1);
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
</script>
<script type="x-shader/x-fragment" id="fragmentshader">
varying vec3 col;
void main()
{
// set color for the current vertex
gl_FragColor = vec4(col, 1);
}
</script>
Я переезжаю самолет в сторону от камеры, как это:
function renderFrame()
{
cube.position.z -= 1;
requestAnimationFrame(renderFrame);
renderer.render(scene, camera);
};
Проблема заключается в том, что я бы предположить, поскольку куб движется, значение позиции шейдеров фрагмента будет меняться, но это не так. Разве переменная 'position' не передает текущее местоположение объектов в 3D пространстве? Если нет, как я могу определить его местоположение и поворот, или мне придется передавать эту информацию вручную в шейдер, используя единую переменную?
Рабочий пример: http://webgl.demised.net/experiments/003_Shaders.php
Кроме того, не шейдеры выполнить один раз при инициализации или на каждом кадре?
Большое спасибо за объяснение! – user3578847