• @!!ex © (16.05.07 18:12) [0]
    Подскажите нормальных примеров!
    Откопал один, но он на английском(что в принципе не проблема, но не удобство), да еще к тому же юзает FrameBuffer, который моя карточка дерджать отказалась. :(
  • Sapersky (17.05.07 13:39) [1]
    http://www.cbloom.com/3d/index.html
    :)
    Если серьёзно (у Блума много всякого интересного, но "Блума" вроде нет), то здесь может быть (хотя искать не пытался):
    http://www.delphi3d.net/
  • @!!ex © (19.05.07 18:46) [2]
    Я пытался... есть... Демка на фэйковый HDR c использованием блума.... на frame buffer'e...
  • Jkot © (20.05.07 15:08) [3]
    А если я дам шейдер на GLSL то сойдет?
  • @!!ex © (20.05.07 18:54) [4]
    Давай шейдер...
    Только какой?
    Там надо для размытия шейдер, для свечения шейдер, еще возможно шейдер убирающий не яркие участки.
  • Jkot © (21.05.07 04:51) [5]
    Обычный ни-чего крутого он не далет он смешивает 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);
    }
  • Sapersky (21.05.07 14:55) [6]
    да еще к тому же юзает 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/ )

    первый пункт - это либо копирование, либо повторный рендеринг.
  • Jkot © (21.05.07 15:36) [7]
    Да и для шейдера нужно отрендерить всё в текстуру для начала....
  • @!!ex © (21.05.07 19:05) [8]
    PBuffer
  • Sapersky (22.05.07 13:31) [9]
    Вроде бы 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 прохода.
  • @!!ex © (22.05.07 18:24) [10]
    > Вроде бы PBuffer и FrameBuffer object разные вещи, нет?

    Вот и я говорю, что разные вещи. :)
    PBuffer для этого можно юзать. Но примеров чето не могу найти.
  • имя (12.06.07 10:32) [11]
    Удалено модератором
  • имя (12.06.07 10:33) [12]
    Удалено модератором
  • имя (04.05.08 02:08) [13]
    Удалено модератором
Есть новые Нет новых   [134430   +2][b:0][p:0]