[英]How can I improve the performance of my custom OpenGL ES 2.0 depth texture generation?
[英]How can I colour things in OpenGL ES 2.0 based on their depth?
我正在編寫一個OpenGL ES 2.0游戲(在iOS上)。 如何創建着色器(因為我假設在着色器中這樣做更簡單),因此距離原點(在Z軸上)的幾何體看起來更暗?
這張照片中的水說明了我的想法
(來源: bytecellar.com )
如果您只想使用幾何體的Z位置,這很簡單。 您可以使用如下的頂點着色器:
attribute vec4 position;
varying float zDepth;
uniform mat4 modelViewProjMatrix;
void main()
{
vec4 newPosition = modelViewProjMatrix * position;
gl_Position = newPosition;
zDepth = (2.0 - (1.0 + newPosition.z))/2.0;
}
和片段着色器一樣
varying highp float zDepth;
void main()
{
gl_FragColor = vec4(zDepth, zDepth, 0.0, 1.0);
}
這將產生以下外觀:
我在為我的OpenGL ES 2.0類組裝的這個iPad示例代碼中有一個這樣的例子。
我用@brad提供了一個相當有趣的測試。 我只是改變了這條線:
gl_FragColor = vec4(1.0, 1.0, 0.0, zDepth);
阿爾法沒有任何事情發生。 這是我還是Alpha
缺少其他東西?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.