LINUX.ORG.RU

Помогите разобраться

 ,


0

1

Читаю «webGl Up and running», которая, вроде как, вообще для веб-разработчиков, но как только дошло до шейдеров, всё равно почти перестал что-либо понимать, кроме того, что в gpu лучше не создавать псевдослучайные величины, а грузить их туда специальной текстурой:

uniform float time;
uniform sampler2D texture1;
uniform sampler2D texture2;
varying vec2 texCoord;
void main( void ) {
	vec4 noise = texture2D( texture1, texCoord ); //get rgba from point of first texture(uv coords)				
	vec2 T1 = texCoord + vec2( 1.5, -1.5 ) * time  * 0.01;//2 random values based on uv and time
	vec2 T2 = texCoord + vec2( -0.5, 2.0 ) * time *  0.01;//а вот дальше уже ничего не понятно - зачем именно такие цифры?
	T1.x -= noise.r * 2.0;
	T1.y += noise.g * 4.0;
	T2.x += noise.g * 0.2;
	T2.y += noise.b * 0.2;
	float p = texture2D( texture1, T1 * 2.0 ).a + 0.25;
	vec4 color = texture2D( texture2, T2 );
	vec4 temp = color * 2.0 * ( vec4( p, p, p, p ) ) + ( color * color );
	gl_FragColor = temp;
}

★★★★
Ответ на: комментарий от note173

ещё раз перечитал - появилось ложное ощущение, что понимаю: первая текстура для цвета, но он должен расплываться пятнами, перемещающимися в зависимости от времени(поэтому берётся не очень большое случайное смещение от полученных координат), во второй -градация от чёрного к белому тоже через смещение интерпретируется как альфа-канал финального цвета. Но как это происходит, всё равно не ясно. В общем, надо писать свой «штриховочный» шейдер, только так будет ясно, что именно не понимаю

wingear ★★★★
() автор топика
Ответ на: комментарий от wingear

А что именно непонятно? Здесь просто какие-то операции над цветом. Можно убрать все строчки, кроме первой, собрать из нее gl_FragColor и посмотреть, что будет на этом шаге. И продолжать.

note173 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.