2016-12-30 8 views
0

Vigenette Shaderを適用するOpenGLシェーダを作成しようとしています。しかし、私が直面している問題は、あなたが正しいイメージで見ることができるように、サークルを表示することです。AndroidのOpenGL Vignette Shaderでの問題

私は自分のコードで間違っているはずのものを見つけたいと思っています。

以下のコードも貼り付けました。

enter image description here

コード助けを事前にマイVigenetteシェーダ

precision mediump float; 
uniform sampler2D u_Texture; 
uniform sampler2D u_Vigenette; 
uniform sampler2D u_Map; 

varying vec2 v_TexCoordinate; 


void main() 
{ 
vec3 texel = texture2D(u_Texture, v_TexCoordinate).rgb; 
texel.r = (texel.r == 1.0)?.9961:texel.r; 
texel.g = (texel.g == 1.0)?.9961:texel.g; 
texel.b = (texel.b == 1.0)?.9961:texel.b; 

texel = vec3(
        texture2D(u_Map, vec2(texel.r, .16666)).r, 
        texture2D(u_Map, vec2(texel.g, .5)).g, 
        texture2D(u_Map, vec2(texel.b, .83333)).b); 

texel.r = (texel.r == 1.0)?.9961:texel.r; 
texel.g = (texel.g == 1.0)?.9961:texel.g; 
texel.b = (texel.b == 1.0)?.9961:texel.b; 

vec2 tc = (2.0 * v_TexCoordinate) - 1.0; 
float d = dot(tc, tc); 
vec2 lookup = vec2(d, texel.r); 
texel.r = texture2D(u_Vigenette, lookup).r; 
lookup.y = texel.g; 
texel.g = texture2D(u_Vigenette, lookup).g; 
lookup.y = texel.b; 
texel.b = texture2D(u_Vigenette, lookup).b; 

gl_FragColor = vec4(texel, 1.0); 

}

ありがとう。推測の

答えて

0

ビットが必ずするのに十分な情報がないのですが、私はあなたのコードは、範囲0〜1であることを

float d = dot(tc, tc); 

の結果を期待していると思いますが、それが範囲内に実際にありますので、 0〜2

おそらく、再スケールするか、おそらくu_Vigenetteテクスチャがクランプからエッジの代わりに繰り返すように設定されています。

+0

どのような追加情報を提供する必要がありますか? – shubhamagg