Глыбіня рэзкасці фатаграфічнага эфекту, выкліканага дыяфрагмы і фокуснай адлегласці. Вельмі цікавая артыкул на гэтую тэму была апублікаваная ў istockphoto.com . Яна забяспечвае надзейную глыбіню кія для двухмерных, прагназуемы матэрыялу. Іншымі словамі: Гэта робіць фатаграфіі выглядаюць 3D, пакуль яны яшчэ 2D праекцыі.
У цяперашняе пакаленне апаратнай графікі, можна зрабіць шмат фантазіі эфекты пост-апрацоўкі - акрамя мяккія цені і размытасць малюнка, глыбіню рэзкасці (DOF), можа быць адным з самых часта выкарыстоўваецца эфект для павышэння візуальнай якасці. Існуе вялікая пакрыцця на розных тэхнік стварэння эфектаў прыемным DOF - простыя Google за "глыбіню рэзкасці шэйдараў" дала мне каля 74,000 хітоў. Для дэма я хацеў напісаць, я вырашыў выкарыстоўваць просты, альфа-канал падыход, таму што гэта проста, хутка і выглядае добра.
Ідэя простая: калі ў вас ужо ёсць шэйдараў, які робіць такія рэчы, як на піксель асвятлення, проста змесціце інфармацыю аб глыбіні ў альфа-канала ў выніковы колер. Усё, што павінна быць зроблена ў другім праходзе: зрабіць здымак і размыць малюнак з прыдатным ядром. Як ядро, я выбраў Пуасона-Disc-фільтра з CPU-предвычисленными дадзеныя - гэта менш за "зубчастыя", чым пры выкарыстанні квадратычнай ядра, што дае лепшае візуальнае якасць менш узораў. Каб прадухіліць непрыемны арэол вакол краёў абласцей, якія маюць высокую глыбіню адрозненняў, то вынік будзе не проста размытае малюнак, але фокусным адлегласцю таксама кантралюе, колькі размытыя дадзеныя выявы трапіць у канчатковы вынік.
vec4 vColor = Texture2D (sceneMap, gl_TexCoord [0] ху.); плаваць fBlurAmount = ABS (vColor.a * 2.0-1.0); плаваць fTexel = 16.0/mapSize; vec4 vResult; для (INT = 0; I <16; + + I) { vResult + = Texture2D (blurMap, gl_TexCoord [0] ху + fBlurAmount * fTexel * Пуасона [I] ху * Пуасона [I] Z. ..); } vResult / = 16,0; gl_FragColor = сумесі (vColor, vResult, fBlurAmount);
Я ведаю, што такі падыход вельмі абмежаваны - як толькі альфа-канала неабходныя для іншых эфектаў (напрыклад, свячэнне частот або хуткасці), ён не можа быць выкарыстаны, як гэта. Але ў любым выпадку, я задаволены вынікамі. ![]()
| |

















































