-
Подскажите нормальных примеров! Откопал один, но он на английском(что в принципе не проблема, но не удобство), да еще к тому же юзает FrameBuffer, который моя карточка дерджать отказалась. :(
-
-
Я пытался... есть... Демка на фэйковый HDR c использованием блума.... на frame buffer'e...
-
А если я дам шейдер на GLSL то сойдет?
-
Давай шейдер... Только какой? Там надо для размытия шейдер, для свечения шейдер, еще возможно шейдер убирающий не яркие участки.
-
Обычный ни-чего крутого он не далет он смешивает 4 пикселя на растоянии Intensity
VP: varying vec2 Texcoord;
void main( void ) { gl_Position = ftransform(); Texcoord = gl_MultiTexCoord0.xy; }
FP: uniform sampler2D colorMap; varying vec2 Texcoord; uniform int Intensity;
#define textureWidth 512.0 #define textureHeight 512.0 #define texel_size_x Intensity / textureWidth #define texel_size_y Intensity / textureHeight vec4 texBlur( sampler2D tex, vec2 uv ) { vec4 Color = texture2D( tex, uv + vec2( 0.0, 0.0 ));
Color = Color+texture2D( tex, uv + vec2( texel_size_x, 0.0 )) ; Color = Color+texture2D( tex, uv - vec2( texel_size_x, 0.0 )) ; Color = Color+texture2D( tex, uv + vec2( 0.0, texel_size_y )) ; Color = Color+texture2D( tex, uv - vec2( 0.0, texel_size_y )) ;
return Color/5; } void main (void) { gl_FragColor = texBlur( colorMap, Texcoord); }
-
да еще к тому же юзает FrameBuffer, который моя карточка дерджать отказаласьСтранно. Если я правильно понимаю, это то же самое, что и render target в терминологии DX, т.е. текстура, в которую можно рендерить. Так вот, эта фича появилась и поддерживалась картами намного раньше шейдеров. Может, демка использует какой-то специфический тип буфера, для копирования картинки с экрана, например? Судя по алгоритму Bloom, который я откопал: 1) Take the current render and downscale it to a reasonable size that is preferably a power of 2 2) Apply a bright-pass filter on the image to keep only high luminance values 3) Apply a Gaussian blur filter of small kernel size several times to get a good blur 4) Additively blend the resulting texture on the screen ( http://harkal.sylphis3d.com/2006/05/20/how-to-do-good-bloom-for-hdr-rendering/ ) первый пункт - это либо копирование, либо повторный рендеринг.
-
Да и для шейдера нужно отрендерить всё в текстуру для начала....
-
PBuffer
-
Вроде бы PBuffer и FrameBuffer object разные вещи, нет? http://download.nvidia.com/developer/presentations/2005/GDC/OpenGL_Day/OpenGL_FrameBuffer_Object.pdfПричём для того же PBuffer есть вроде несколько разных расширений. Пробуй то, другое, третье. Что-нибудь должно заработать - повторяю, render target по нынешним временам древняя технология, она присутствовала, кажется, ещё в DX3, может и раньше. Вряд ли здесь можно ли обойтись без промежуточных буферов. bright-pass filter "на лету" ещё можно сделать, но для качественного размазывания в пространстве сцены (Gaussian blur или другое) нужно установить исходной текстурой уже отрендеренную картинку. Да и собственно Gaussian для сокращения числа чтений текстуры обычно делают в 2 прохода.
-
> Вроде бы PBuffer и FrameBuffer object разные вещи, нет?
Вот и я говорю, что разные вещи. :) PBuffer для этого можно юзать. Но примеров чето не могу найти.
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
|