2016-03-23 16 views
-1

Bu benim vertex shader'ım ve ondan beklediğim şey bir dokudan doğru bir yer değiştirmesi. Ama ne yapar ben varying ile konumumu ve uv değişken bildirmek zorundaglsl cinsinden bir dokudan taşınma

uniform sampler2D clouds  
void main() 
{ 
    vec4 position = gl_Vertex; 
    vec2 uv = gl_MultiTexCoord0.st; 
    position.z = position.z + texture(clouds, uv.st); 
    gl_Position = gl_ModelViewProjectionMatrix * position; 
} 
+0

için programlama GLSL adanmış this wikibook bulundu. Nasıl çalıştığını görmek yardımcı olur. –

+0

Fragman gölgelendiricisinde aynı resmi (gri tonlamalı bulutlar) kullanıyorum ve düzlemin rengi düz bir grimsi olarak değişir, bu, sorunun doku koordinatları ile ilgili olabileceği anlamına gelebilir mi? Bence bağlayıcı bir problem yok. – Yvain

+0

Olduğu gibi geliyor. Dokuyu renklendirirseniz ve herhangi bir değişiklik görmüyorsanız, aynı verileri başka şekillerde kullanarak herhangi bir değişiklik olmaz. –

cevap

0

aynı seviyeye yukarı benim uçağın her köşeleri alarak ve sadece benim doku itibaren bir kanal eklemek için gereklidir ' Position değişkenimin z 'bileşeni.

vertex_shader = """ 

varying vec4 Position; 
varying vec2 TexCoord; 
uniform sampler2D clouds; 

void main() 
{ 
    Position = gl_Vertex; 
    TexCoord = gl_MultiTexCoord0; 
    Position.z += texture2D(clouds, TexCoord.st).a; 
    gl_Position = gl_ModelViewProjectionMatrix * Position; 
} 
""" 

Ben Bu doku koordinatları ile bağlayıcı bir arıza veya sorun gösterebilir Blender3D

+0

Hayır, değişiklik olarak kullanmadığınız değişkenler için farklılık bildirmeniz gerekmez. Özgün kodunuz, sözdizimi hatası aldığından ve gölgelendiricinin derleme günlüğünü kontrol ettiğinden dolayı işe yaramadı. – derhass

+0

Düzeltme için teşekkürler – Yvain