Sponza рэндэрлэх оролдлого 14, FBO, ping-pong, gaussian blur

Өмнөх постуудад FBO болон post-processing ийн талаар дурдсан билээ. Тэнд дурдсан ping-pong механизмын дагуу FBO attachment-үүд хооронд guassian blur алгоритмыг GPU дээр ажиллуулснаар дараах үр дүнд хүрж байна.
Гэхдээ кодонд маань Assimp-тай холбоотой bug байсаар л байна засагдах байлгүй дээ. Sponza рэндэрлэх цувралаар зөвхөн гарч байгаа прогрессээ тэмдэглэл маягаар хөтлөөд, хэрэглэгдсэн техник аргачлалуудыгаа тусад нь пост маягаар бичээд явбал зүгээр санагдаж байна. Ямартаа ч GITHUB дээрхи кодыг харах боломжтой.

Энд нэмэлтээр хоёр ширхэг shader үүсгэсэн. Нэг нь FBO-оор рэндэрлэж хадгалсан эцсийн үр дүн болсон текстурыг програмын цонхны дэлгэцтэй зэрэгцүүлж харуулах, нөгөөх нь FBO-ийн текстурыг Gaussian algorithm ашиглаж бүрсийлгэх зориулалттай.

FBO бүтэц маань
    - 24 битийн depth дээр нь нэмээд 8 битийн stencil бүхий depth+stencil хоёрыг pack хийж хадгалсан нэг текстур
    - RGBA8 буюу 32 битийн гүнтэй өнгө хадгалах зориулалттай хоёр ширхэг текстур

Яагаад хоёр ширхэг өнгөний текстур үүсгэсэн бэ гэхээр энэ хоёрын хооронд ping-pong механизм хэрэгжүүлэх зорилготой юм. Gaussian kernel ажиллахдаа эхний текстурыг uniform байдлаар авч боловсруулаад хоёрдугаар текстур дээр хадгална. Мөн дахин gaussian kernel-ийг хоёрдугаар текстур дээр дуудаж ажиллуулаад эхний текстур дээр хадгална. Ингээд FBO-ийн эхний үндсэн текстур маань gaussian-ий ажиллагааны үр дүнд бүрсгэр текстур болно. Энэ явцыг арван удаа дуудаж ажиллуулахад дараах зураг үүсч байна.


Popular posts from this blog

Apache Spark + Cassandra. Hello World