簡體   English   中英

如何使用GLSL組合兩個沒有alpha混合的紋理

[英]How to combine two textures without alpha blending using GLSL

我正在嘗試在opengl es 2.0中使用着色器組合兩個紋理

在此輸入圖像描述

正如你在屏幕截圖中看到的那樣,我正在嘗試使用動態環境映射在后向對象上創建針反射。 但是,針的反射看起來是半透明的,它與我的環境貼圖混合在一起。

這是我的片段着色器;

varying highp vec4 R;

uniform samplerCube cube_map1;
uniform samplerCube cube_map2;

void main()
{
    mediump vec3 output_color1;
    mediump vec3 output_color2;

    output_color1 = textureCube(cube_map1 , R.xyz).rgb;
    output_color2 = textureCube(cube_map2 , R.xyz).rgb;

    gl_FragColor = mix(vec4(output_color1,1.0),vec4(output_color2,1.0),0.5);  
}

但是,“mix”方法會導致混合兩個紋理。

我也檢查了Texture Combiners示例,但它也沒有幫助。

有沒有辦法組合兩個紋理而不相互混合。

謝謝。

從評論來看,我的猜測是你想在風景畫面上畫針。 我只是將它渲染為疊加層,但由於你想在着色器中進行渲染,這可能會起作用:

void main()
{
    mediump vec3 output_color1;
    mediump vec3 output_color2;

    output_color1 = textureCube(cube_map1 , R.xyz).rgb;
    output_color2 = textureCube(cube_map2 , R.xyz).rgb;

    if ( length( output_color1 ) > 0.0 )
         gl_FragColor = vec4(output_color1,1.0);
    else 
         gl_FragColor = vec4(output_color2,1.0);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM