{"id":31884,"date":"2025-10-15T06:01:17","date_gmt":"2025-10-15T03:01:17","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/"},"modified":"2025-10-15T06:01:17","modified_gmt":"2025-10-15T03:01:17","slug":"uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/","title":{"rendered":"UE&#8217;de Minyat\u00fcr DoF Etkisi: HLSL ile \u00d6zel Alan Derinli\u011fi Nas\u0131l Olu\u015fturulur?"},"content":{"rendered":"<p><body><\/p>\n<style>\n        body {\n            font-family: Arial, sans-serif;\n            line-height: 1.6;\n            color: #333;\n            max-width: 900px;\n            margin: 0 auto;\n            padding: 20px;\n        }\n        h2, h3 {\n            color: #2c3e50;\n            margin-top: 30px;\n            margin-bottom: 15px;\n        }\n        p {\n            margin-bottom: 15px;\n        }\n        ul, ol {\n            margin-bottom: 15px;\n            padding-left: 25px;\n        }\n        li {\n            margin-bottom: 8px;\n        }\n        pre {\n            background-color: #ecf0f1;\n            padding: 15px;\n            border-radius: 5px;\n            overflow-x: auto;\n            margin-bottom: 20px;\n        }\n        code {\n            font-family: 'Courier New', Courier, monospace;\n            font-size: 0.9em;\n            color: #27ae60;\n        }\n        table {\n            width: 100%;\n            border-collapse: collapse;\n            margin-bottom: 20px;\n        }\n        th, td {\n            border: 1px solid #ddd;\n            padding: 10px;\n            text-align: left;\n        }\n        th {\n            background-color: #f2f2f2;\n        }\n        .expert-tip {\n            background-color: #d9edf7;\n            border-left: 5px solid #3498db;\n            padding: 15px;\n            margin-bottom: 20px;\n            border-radius: 4px;\n            font-style: italic;\n        }\n        .faq-question {\n            font-weight: bold;\n            color: #2c3e50;\n        }\n        .faq-answer {\n            margin-left: 20px;\n            margin-bottom: 10px;\n        }<\/p>\n<p>        \/* Mobil Uyumlu Tasar\u0131m \u0130\u00e7in Media Query \u00d6rne\u011fi *\/\n        @media (max-width: 768px) {\n            body {\n                padding: 15px;\n            }\n            h2 {\n                font-size: 1.8em;\n            }\n            h3 {\n                font-size: 1.4em;\n            }\n            pre {\n                font-size: 0.8em;\n            }\n        }\n        @media (max-width: 480px) {\n            h2 {\n                font-size: 1.5em;\n            }\n            h3 {\n                font-size: 1.2em;\n            }\n        }\n    <\/style>\n<p>Oyun ve g\u00f6rselle\u015ftirme d\u00fcnyas\u0131nda, basit bir kamera efektinin bile projenizin atmosferini k\u00f6kten de\u011fi\u015ftirebilece\u011fini biliyor muydunuz? Bu makale, Unreal Engine&#8217;de HLSL kullanarak kendi minyat\u00fcr tarz\u0131 Alan Derinli\u011fi (DoF) efektinizi ad\u0131m ad\u0131m nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 a\u00e7\u0131kl\u0131yor.<\/p>\n<p>Dijital oyunlar ve interaktif deneyimler, g\u00f6rsel \u00e7ekicilikleriyle kullan\u0131c\u0131y\u0131 i\u00e7ine \u00e7ekme g\u00fcc\u00fcne sahiptir. Ancak, \u00e7o\u011fu zaman standart grafik ayarlar\u0131 veya haz\u0131r efektler, projenin arzu edilen sanatsal vizyonunu tam olarak yans\u0131tmayabilir. \u00d6zellikle, bir sahneye &#8220;minyat\u00fcr&#8221; veya &#8220;oyuncak&#8221; benzeri bir g\u00f6r\u00fcn\u00fcm kazand\u0131rmak istedi\u011fimizde, standart Alan Derinli\u011fi (Depth of Field &#8211; DoF) efektleri yetersiz kalabilir. Peki, bu durumda ne yapmal\u0131y\u0131z?<\/p>\n<p>Minyat\u00fcr tarz\u0131 DoF, ger\u00e7ek d\u00fcnyadaki tilt-shift foto\u011fraf\u00e7\u0131l\u0131k tekni\u011finden ilham al\u0131r. Bu teknik, belirli bir odak d\u00fczlemi d\u0131\u015f\u0131ndaki her \u015feyi bulan\u0131kla\u015ft\u0131rarak, izleyicide sahnenin k\u00fc\u00e7\u00fck bir maket oldu\u011fu izlenimini yarat\u0131r. Odaklan\u0131lan alan\u0131n keskinli\u011fi korunurken, yak\u0131n ve uzak mesafelerdeki objelerin bulan\u0131kla\u015fmas\u0131, sanki minyat\u00fcr bir d\u00fcnyay\u0131 yukar\u0131dan izliyormu\u015fuz gibi bir alg\u0131 olu\u015fturur. Bu, sadece estetik bir tercih olman\u0131n \u00f6tesinde, oyunun veya g\u00f6rselle\u015ftirmenin hikaye anlat\u0131m\u0131na da \u00f6nemli katk\u0131lar sa\u011flayabilir.<\/p>\n<p>\u00d6rne\u011fin, bir strateji oyununda oyuncunun belirli bir b\u00f6lgeye odaklanmas\u0131n\u0131 sa\u011flamak veya bir bulmaca oyununda \u00f6nemli ipu\u00e7lar\u0131n\u0131 vurgulamak i\u00e7in minyat\u00fcr DoF kullan\u0131labilir. Ayn\u0131 zamanda, sanatsal bir stil yaratmak isteyen ba\u011f\u0131ms\u0131z geli\u015ftiriciler i\u00e7in de g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Unreal Engine gibi g\u00fc\u00e7l\u00fc bir platformda, bu t\u00fcr bir efekti do\u011frudan HLSL (High-Level Shading Language) kullanarak \u00f6zel olarak geli\u015ftirmek, bize hem esneklik hem de performans \u00fczerinde tam kontrol sa\u011flar. Bu, haz\u0131r \u00e7\u00f6z\u00fcmlerin sunamad\u0131\u011f\u0131 ince ayarlar ve sanatsal y\u00f6nlendirmeler i\u00e7in vazge\u00e7ilmezdir. Dolay\u0131s\u0131yla, sadece g\u00f6rsel bir \u015f\u00f6len sunmakla kalmay\u0131p, ayn\u0131 zamanda oyunun genel deneyimini zenginle\u015ftiren bir ara\u00e7t\u0131r. Bu makale boyunca, bu b\u00fcy\u00fcleyici efekti kendi projelerinizde nas\u0131l uygulayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz.<\/p>\n<p>Ger\u00e7ek d\u00fcnya senaryolar\u0131nda, mimari g\u00f6rselle\u015ftirmelerde binalar\u0131n bir maket gibi g\u00f6r\u00fcnmesini sa\u011flamak ya da \u00fcr\u00fcn tan\u0131t\u0131mlar\u0131nda ana objeyi vurgulay\u0131p geri kalan\u0131 minyat\u00fcrle\u015ftirmek i\u00e7in de bu teknik yayg\u0131n olarak kullan\u0131l\u0131r. Bu, izleyicinin dikkatini do\u011frudan belirli bir noktaya \u00e7ekmenin ve alg\u0131lanan \u00f6l\u00e7e\u011fi manip\u00fcle etmenin etkili bir yoludur. Haz\u0131r \u00e7\u00f6z\u00fcmlerin sundu\u011fu s\u0131n\u0131rlamalar\u0131n aksine, HLSL ile s\u0131f\u0131rdan bir DoF efekti olu\u015fturmak, geli\u015ftiricilere piksel d\u00fczeyinde kontrol imkan\u0131 sunar ve b\u00f6ylece g\u00f6rsel hedeflere \u00e7ok daha hassas bir \u015fekilde ula\u015f\u0131lmas\u0131n\u0131 sa\u011flar.<\/p>\n<h2>Alan Derinli\u011fi (DoF) Nedir ve Nas\u0131l \u00c7al\u0131\u015f\u0131r? Temel Bilgiler<\/h2>\n<p>Bir kamera veya g\u00f6z\u00fcm\u00fcz, asl\u0131nda belirli bir mesafedeki objeleri net bir \u015fekilde g\u00f6r\u00fcrken, bu odak d\u00fczleminin \u00f6n\u00fcndeki veya arkas\u0131ndaki objeleri giderek daha bulan\u0131k g\u00f6sterir. \u0130\u015fte bu netlik aral\u0131\u011f\u0131na Alan Derinli\u011fi (Depth of Field &#8211; DoF) denir. Peki, bu olgu dijital grafiklerde nas\u0131l taklit edilir ve neden bu kadar \u00f6nemlidir?<\/p>\n<p>DoF, temel olarak \u00fc\u00e7 ana fakt\u00f6re ba\u011fl\u0131d\u0131r: odak uzakl\u0131\u011f\u0131 (focal length), diyafram a\u00e7\u0131kl\u0131\u011f\u0131 (aperture\/f-stop) ve objenin kameraya olan uzakl\u0131\u011f\u0131. Geni\u015f bir diyafram (d\u00fc\u015f\u00fck f-stop de\u011feri) veya uzun bir odak uzakl\u0131\u011f\u0131, daha s\u0131\u011f bir alan derinli\u011fi (yani daha bulan\u0131k bir arka plan) yarat\u0131rken, dar bir diyafram (y\u00fcksek f-stop de\u011feri) veya k\u0131sa odak uzakl\u0131\u011f\u0131, daha geni\u015f bir netlik alan\u0131 sunar. Ger\u00e7ek d\u00fcnya opti\u011finde, bir noktadan gelen \u0131\u015f\u0131k, sens\u00f6re veya filme odakland\u0131\u011f\u0131nda net bir &#8220;nokta&#8221; olarak g\u00f6r\u00fcn\u00fcr. Odak d\u0131\u015f\u0131 kalan noktalardan gelen \u0131\u015f\u0131k ise bir &#8220;bulan\u0131kl\u0131k dairesi&#8221; (Circle of Confusion &#8211; CoC) olarak yay\u0131l\u0131r. CoC&#8217;nin boyutu ne kadar b\u00fcy\u00fck olursa, bulan\u0131kl\u0131k da o kadar belirgin olur.<\/p>\n<p>Ger\u00e7ek zamanl\u0131 grafiklerde DoF olu\u015fturmak, genellikle post-processing efektleri arac\u0131l\u0131\u011f\u0131yla yap\u0131l\u0131r. Ekran g\u00f6r\u00fcnt\u00fcs\u00fc ve derinlik bilgisi al\u0131n\u0131r ve her piksel i\u00e7in bir bulan\u0131kl\u0131k de\u011feri hesaplan\u0131r. Unreal Engine gibi oyun motorlar\u0131, genellikle g\u00fc\u00e7l\u00fc yerle\u015fik DoF \u00e7\u00f6z\u00fcmleri sunar. Ancak, bu \u00e7\u00f6z\u00fcmler genellikle performans veya sanatsal kontrol a\u00e7\u0131s\u0131ndan belirli s\u0131n\u0131rlamalara sahiptir. \u00d6rne\u011fin, yerle\u015fik DoF efektleri bazen belirli bulan\u0131kl\u0131k \u015fekillerini (bokeh) veya minyat\u00fcr tarz\u0131 odaklama modellerini tam olarak desteklemeyebilir, ya da performans maliyetleri y\u00fcksek olabilir.<\/p>\n<p>\u0130\u015fte bu noktada HLSL (High-Level Shading Language) devreye girer. HLSL, Microsoft taraf\u0131ndan DirectX API&#8217;si i\u00e7in geli\u015ftirilmi\u015f bir shader dilidir ve GPU \u00fczerinde do\u011frudan \u00e7al\u0131\u015ft\u0131r\u0131lan programlar yazman\u0131za olanak tan\u0131r. Bir shader, genellikle bir pikselin rengini veya bir vertex&#8217;in konumunu belirlemek gibi g\u00f6revleri yerine getirir. \u00d6zel bir DoF efekti olu\u015fturmak i\u00e7in, ekran\u0131n her pikseli i\u00e7in derinlik bilgisini okuyacak, CoC de\u011ferini hesaplayacak ve bu de\u011fere g\u00f6re pikselleri bulan\u0131kla\u015ft\u0131racak bir piksel shader&#8217;\u0131 yazmam\u0131z gerekir. Bu sayede, standart DoF \u00e7\u00f6z\u00fcmlerinin \u00f6tesine ge\u00e7erek, tamamen \u00f6zelle\u015ftirilebilir, performans odakl\u0131 ve sanatsal vizyonunuza uygun bir Alan Derinli\u011fi efekti yaratabiliriz. Bu yakla\u015f\u0131m, sadece g\u00f6rsel kaliteyi art\u0131rmakla kalmaz, ayn\u0131 zamanda projenizin benzersizli\u011fini de vurgular. HLSL ile \u00e7al\u0131\u015fmak, grafik boru hatt\u0131 \u00fczerinde derinlemesine bir anlay\u0131\u015f geli\u015ftirmenize de yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<p>Bu temel prensipleri anlamak, \u00f6zel bir DoF shader&#8217;\u0131 geli\u015ftirirken size rehberlik edecektir. Her bir pikselin derinlik de\u011feri, odak noktas\u0131na olan uzakl\u0131\u011f\u0131na g\u00f6re bir CoC de\u011feriyle e\u015fle\u015ftirilecek ve bu CoC de\u011feri, nihai bulan\u0131kl\u0131k miktar\u0131n\u0131 belirleyecektir. Bu karma\u015f\u0131k s\u00fcrecin her a\u015famas\u0131n\u0131 HLSL kodlar\u0131yla kontrol etmek, geli\u015ftiricilere rakipsiz bir esneklik sunar.<\/p>\n<h2>UE ve HLSL Ortam\u0131nda \u00d6zel DoF Shader&#8217;\u0131 Geli\u015ftirmeye Ba\u015flarken<\/h2>\n<p>Unreal Engine&#8217;de \u00f6zel bir post-processing efekti olu\u015fturman\u0131n en yayg\u0131n yolu, Post-Process Material kullanmakt\u0131r. Ancak, daha fazla kontrol ve do\u011frudan GPU eri\u015fimi i\u00e7in HLSL tabanl\u0131 Custom Node&#8217;lar\u0131 veya Global Shader&#8217;lar\u0131 tercih edebiliriz. Minyat\u00fcr tarz\u0131 bir DoF efekti i\u00e7in, ekran derinli\u011fini okuyup \u00f6zel bulan\u0131kl\u0131k hesaplamalar\u0131 yapaca\u011f\u0131m\u0131z bir Custom Node en iyi ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<p>\u0130lk ad\u0131m olarak, Unreal Engine projenizde yeni bir Materyal (Material) olu\u015fturun ve bu materyalin &#8220;Material Domain&#8221; \u00f6zelli\u011fini &#8220;Post Process&#8221; olarak ayarlay\u0131n. Bu materyal, sahnede renderlendikten sonra t\u00fcm g\u00f6r\u00fcnt\u00fcye uygulanacakt\u0131r. Materyal edit\u00f6r\u00fcnde, ana nodunuza (Result) bir &#8220;Custom&#8221; d\u00fc\u011f\u00fcm\u00fc ekleyin. Bu d\u00fc\u011f\u00fcm, HLSL kodumuzu yazaca\u011f\u0131m\u0131z yerdir.<\/p>\n<p>Custom d\u00fc\u011f\u00fcm\u00fcn\u00fcn &#8220;Code&#8221; alan\u0131na HLSL kodumuzu yazaca\u011f\u0131z. Ayr\u0131ca, shader&#8217;a d\u0131\u015far\u0131dan veri aktarabilmek i\u00e7in &#8220;Inputs&#8221; b\u00f6l\u00fcm\u00fcnde parametreler tan\u0131mlamam\u0131z gerekecek. Ba\u015flang\u0131\u00e7 olarak, ekran rengini ve derinli\u011fini almal\u0131y\u0131z. Unreal Engine&#8217;de, sahne derinli\u011fine &#8220;SceneDepth&#8221; d\u00fc\u011f\u00fcm\u00fc arac\u0131l\u0131\u011f\u0131yla eri\u015filebilir. Ekran rengine ise &#8220;SceneTexture&#8221; d\u00fc\u011f\u00fcm\u00fc ve &#8220;PostProcessInput0&#8221; veya &#8220;SceneColor&#8221; ile eri\u015febiliriz. Bu giri\u015fleri Custom d\u00fc\u011f\u00fcm\u00fcne ba\u011flamam\u0131z gerekecektir.<\/p>\n<pre><code>\n\/\/ Unreal Engine Custom Node i\u00e7inde temel HLSL yap\u0131s\u0131\n\n\/\/ Giri\u015f parametreleri\n\/\/ Default: SceneTexture:PostProcessInput0\nfloat4 SceneColorInput; \n\/\/ Default: SceneDepth\nfloat SceneDepthInput; \n\/\/ Odak mesafesi (\u00f6rne\u011fin, 1000.0 birim)\nfloat FocalDistance; \n\/\/ Odak geni\u015fli\u011fi (netlik alan\u0131, \u00f6rne\u011fin, 100.0 birim)\nfloat FocalRange; \n\/\/ Maksimum bulan\u0131kl\u0131k miktar\u0131\nfloat MaxBlurAmount; \n\n\/\/ Fragment pozisyonunu al\u0131n (0-1 aral\u0131\u011f\u0131nda UV koordinatlar\u0131)\nfloat2 UV = GetScreenPosition().xy \/ GetScreenPosition().w;\n\n\/\/ Pikselin ger\u00e7ek d\u00fcnya derinli\u011fini al\u0131n\nfloat PixelDepth = CalcSceneDepth(UV); \/\/ Veya do\u011frudan SceneDepthInput kullan\u0131n\n\n\/\/ Odak d\u00fczlemine olan mesafeyi hesaplay\u0131n\nfloat DistanceToFocus = abs(PixelDepth - FocalDistance);\n\n\/\/ Bulan\u0131kl\u0131k miktar\u0131n\u0131 belirlemek i\u00e7in CoC benzeri bir de\u011fer hesaplay\u0131n\n\/\/ FocalRange i\u00e7inde olanlar net, d\u0131\u015far\u0131dakiler bulan\u0131kla\u015f\u0131r.\nfloat CoC = saturate((DistanceToFocus - FocalRange \/ 2.0f) \/ (FocalRange \/ 2.0f));\nCoC *= MaxBlurAmount; \/\/ Maksimum bulan\u0131kl\u0131k miktar\u0131n\u0131 uygulay\u0131n\n\n\/\/ \u015eimdilik sadece CoC'yi renk olarak g\u00f6rselle\u015ftirelim\n\/\/ K\u0131rm\u0131z\u0131 kanal bulan\u0131kl\u0131k miktar\u0131n\u0131 g\u00f6stersin\n\/\/ return float4(CoC, CoC, CoC, 1.0);\n\n\/\/ Hen\u00fcz bulan\u0131kl\u0131k uygulamazsak, sadece orijinal rengi d\u00f6nd\u00fcr\nreturn SceneColorInput;\n\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki HLSL kodu, Custom d\u00fc\u011f\u00fcm\u00fc i\u00e7inde kullan\u0131labilir. Bu kodda, <code>FocalDistance<\/code> ve <code>FocalRange<\/code> gibi de\u011fi\u015fkenleri materyal parametreleri olarak tan\u0131mlayarak d\u0131\u015far\u0131dan kontrol edebiliriz. <code>CalcSceneDepth(UV)<\/code> fonksiyonu veya do\u011frudan <code>SceneDepthInput<\/code> ile pikselin derinli\u011fini al\u0131r\u0131z. Daha sonra, bu derinli\u011fin <code>FocalDistance<\/code>'a ne kadar yak\u0131n oldu\u011funa bakarak bir <code>CoC<\/code> (Circle of Confusion) de\u011feri hesapl\u0131yoruz. <code>saturate<\/code> fonksiyonu, de\u011feri 0 ile 1 aras\u0131na s\u0131k\u0131\u015ft\u0131r\u0131r. Ba\u015flang\u0131\u00e7ta, sadece <code>CoC<\/code> de\u011ferini g\u00f6rselle\u015ftirerek hangi b\u00f6lgelerin bulan\u0131kla\u015faca\u011f\u0131n\u0131 g\u00f6rebiliriz. Bu, hata ay\u0131klama i\u00e7in harika bir yoldur. Ayr\u0131ca, bu a\u015famada materyal \u00e7\u0131kt\u0131s\u0131n\u0131 <code>SceneColorInput<\/code> olarak b\u0131rakarak, efekti uygulamadan \u00f6nce t\u00fcm ayarlar\u0131n do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olabiliriz.<\/p>\n<p>Materyal i\u00e7indeki bu Custom Node'u ayarlad\u0131ktan sonra, Post-Process Volume'unuza bu materyali eklemeniz gerekir. Bunun i\u00e7in Post-Process Volume detaylar\u0131nda \"Rendering Features\" alt\u0131nda \"Post Process Materials\" b\u00f6l\u00fcm\u00fcn\u00fc bulun, yeni bir Array \u00f6\u011fesi ekleyin ve \"Asset Reference\" olarak olu\u015fturdu\u011funuz materyali se\u00e7in. \u0130\u015fte bu noktada, temel bir minyat\u00fcr DoF efekti i\u00e7in ilk ad\u0131mlar\u0131 atm\u0131\u015f olursunuz. Materyal parametrelerini de\u011fi\u015ftirerek odak noktas\u0131n\u0131 ve bulan\u0131kl\u0131k \u015fiddetini kolayca ayarlayabilirsiniz. Bu ad\u0131mlar, efektin temelini olu\u015fturur ve ileride daha karma\u015f\u0131k bulan\u0131kl\u0131k algoritmalar\u0131 ve optimizasyonlar i\u00e7in sa\u011flam bir zemin haz\u0131rlar.<\/p>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: Custom d\u00fc\u011f\u00fcm\u00fcnde \u00e7al\u0131\u015f\u0131rken kodunuzu derlemek i\u00e7in her de\u011fi\u015fiklikten sonra materyali kaydetmeniz gerekir. Hata ay\u0131klama s\u00fcrecini h\u0131zland\u0131rmak i\u00e7in sadece CoC de\u011ferini (\u00f6rne\u011fin, <code>return float4(CoC, CoC, CoC, 1.0);<\/code>) d\u00f6nd\u00fcrerek bulan\u0131kl\u0131k maskenizi g\u00f6rselle\u015ftirebilirsiniz. Bu, odaklama alan\u0131n\u0131n do\u011fru ayarlan\u0131p ayarlanmad\u0131\u011f\u0131n\u0131 kontrol etmenin h\u0131zl\u0131 bir yoludur.\n    <\/div>\n<p>Bu b\u00f6l\u00fcm, Unreal Engine'in materyal edit\u00f6r\u00fc ve HLSL aras\u0131ndaki k\u00f6pr\u00fcy\u00fc kurarak \u00f6zel bir post-processing efekti geli\u015ftirmeye ba\u015flaman\u0131n ilk pratik ad\u0131mlar\u0131n\u0131 sunar. Bu temel kurulum, daha karma\u015f\u0131k algoritmalar\u0131 ve optimizasyonlar\u0131 entegre etmek i\u00e7in g\u00fc\u00e7l\u00fc bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<h2>HLSL ile Alan Derinli\u011fi Hesaplamalar\u0131n\u0131n Matematiksel Temelleri<\/h2>\n<p>Minyat\u00fcr DoF efektinin kalbinde, her bir pikselin ne kadar bulan\u0131k olmas\u0131 gerekti\u011fini belirleyen matematiksel hesaplamalar yatar. Bu hesaplamalar, ger\u00e7ek d\u00fcnya kameralar\u0131n\u0131n \u00e7al\u0131\u015fma prensiplerini taklit eder ve Alan Derinli\u011fi'nin temelini olu\u015fturan Bulan\u0131kl\u0131k Dairesi (Circle of Confusion - CoC) kavram\u0131na dayan\u0131r. CoC'nin boyutu, bir pikselin odak d\u00fczleminden ne kadar uzakta oldu\u011funa ba\u011fl\u0131 olarak de\u011fi\u015fir.<\/p>\n<p>Bir pikselin CoC de\u011ferini hesaplamak i\u00e7in, \u00f6nce kamera parametrelerini anlamam\u0131z gerekir. Genellikle \u015funlara ihtiya\u00e7 duyar\u0131z:<\/p>\n<ul>\n<li><strong>Focal Distance (Odak Mesafesi):<\/strong> Kameran\u0131n net oldu\u011fu mesafe.<\/li>\n<li><strong>Focal Length (Odak Uzakl\u0131\u011f\u0131):<\/strong> Kameran\u0131n lensinin odak uzakl\u0131\u011f\u0131. (Genellikle UE'de PostProcess materyalleri i\u00e7in bu de\u011fer dahili olarak kullan\u0131l\u0131r veya bir parametre olarak sa\u011flan\u0131r.)<\/li>\n<li><strong>Aperture\/f-stop (Diyafram A\u00e7\u0131kl\u0131\u011f\u0131):<\/strong> Lensin \u0131\u015f\u0131k ge\u00e7irme kapasitesi; k\u00fc\u00e7\u00fck de\u011ferler daha s\u0131\u011f DoF anlam\u0131na gelir.<\/li>\n<li><strong>Sensor Size:<\/strong> Kameran\u0131n sens\u00f6r boyutu.<\/li>\n<li><strong>Pixel Depth (Piksel Derinli\u011fi):<\/strong> Renderlanan sahnedeki her pikselin kameradan olan uzakl\u0131\u011f\u0131.<\/li>\n<\/ul>\n<p>Basitle\u015ftirilmi\u015f bir CoC hesaplamas\u0131 genellikle \u015fu \u015fekilde ifade edilebilir:<\/p>\n<pre><code>\n\/\/ CoC = abs(PixelDepth - FocalDistance) * (FocalLength * FocalLength) \/ (Aperture * (FocalDistance - FocalLength) * PixelDepth);\n<\/pre>\n<p><\/code><\/p>\n<p>Ancak, ger\u00e7ek zamanl\u0131 shader'larda genellikle bu form\u00fcl daha da basitle\u015ftirilir veya sanatsal kontrole odaklan\u0131l\u0131r. Bizim minyat\u00fcr tarz\u0131 DoF'umuz i\u00e7in, odak d\u00fczlemine olan uzakl\u0131\u011fa dayal\u0131 daha sezgisel bir yakla\u015f\u0131m kullanabiliriz. Ama\u00e7, belirli bir \"netlik aral\u0131\u011f\u0131\" d\u0131\u015f\u0131ndaki pikselleri bulan\u0131kla\u015ft\u0131rmakt\u0131r.<\/p>\n<p>\u00d6nceki b\u00f6l\u00fcmde ba\u015flatt\u0131\u011f\u0131m\u0131z HLSL kodunu geli\u015ftirerek, CoC'yi daha ger\u00e7ek\u00e7i bir \u015fekilde hesaplayabiliriz:<\/p>\n<pre><code>\n\/\/ Unreal Engine Custom Node i\u00e7inde HLSL CoC hesaplamas\u0131\n\n\/\/ Giri\u015f parametreleri\nfloat4 SceneColorInput; \nfloat SceneDepthInput; \nfloat FocalDistance;     \/\/ Kamera odak mesafesi\nfloat FocalLength;       \/\/ Kamera odak uzakl\u0131\u011f\u0131 (\u00f6rne\u011fin, 50mm i\u00e7in 0.05)\nfloat Aperture;          \/\/ Diyafram (f-stop de\u011feri, \u00f6rne\u011fin, f\/2.8 i\u00e7in 2.8)\nfloat MaxCoCRadius;      \/\/ Maksimum CoC yar\u0131\u00e7ap\u0131 (piksel cinsinden)\n\nfloat2 UV = GetScreenPosition().xy \/ GetScreenPosition().w;\nfloat PixelDepth = CalcSceneDepth(UV);\n\n\/\/ CoC'yi hesaplama (basit versiyon)\n\/\/ Bu form\u00fcl, bir pikselin odak d\u00fczlemine olan uzakl\u0131\u011f\u0131na g\u00f6re CoC'yi belirler\n\/\/ Minyat\u00fcr etkisi i\u00e7in \u00f6zellikle \"Odak Mesafesi\" ve \"Aperture\" \u00f6nemlidir.\nfloat DepthRatio = (FocalDistance * FocalLength) \/ (Aperture * (PixelDepth - FocalDistance));\nfloat CoC = abs(DepthRatio);\n\n\/\/ CoC'yi normalize etme ve maksimum yar\u0131\u00e7ap ile s\u0131n\u0131rlama\nCoC = min(CoC, MaxCoCRadius);\n\n\/\/ CoC de\u011ferini g\u00f6rselle\u015ftirin\n\/\/ return float4(CoC \/ MaxCoCRadius, CoC \/ MaxCoCRadius, CoC \/ MaxCoCRadius, 1.0);\n\n\/\/ Hen\u00fcz bulan\u0131kl\u0131k uygulamazsak, sadece orijinal rengi d\u00f6nd\u00fcr\nreturn SceneColorInput;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kod blo\u011funda, <code>FocalLength<\/code> ve <code>Aperture<\/code> gibi de\u011ferleri materyal parametreleri olarak tan\u0131mlayarak d\u0131\u015far\u0131dan kontrol edebiliriz. <code>MaxCoCRadius<\/code> ise uygulayaca\u011f\u0131m\u0131z maksimum bulan\u0131kl\u0131k miktar\u0131n\u0131 kontrol eder. CoC de\u011ferini hesaplad\u0131ktan sonra, onu <code>MaxCoCRadius<\/code> ile kar\u015f\u0131la\u015ft\u0131rarak bir \u00fcst limit getiriyoruz. Bu, \u00e7ok uzak veya \u00e7ok yak\u0131n objelerin a\u015f\u0131r\u0131 bulan\u0131kla\u015fmas\u0131n\u0131 engeller ve daha estetik bir kontrol sa\u011flar.<\/p>\n<p>Minyat\u00fcr tarz\u0131 DoF i\u00e7in, \u00f6zellikle belirgin bir odak d\u00fczlemi ve bu d\u00fczlemin h\u0131zla d\u0131\u015f\u0131na \u00e7\u0131kan bulan\u0131kl\u0131k isteriz. Bu nedenle, CoC de\u011ferini, odak d\u00fczleminin etraf\u0131nda belirli bir \"netlik band\u0131\" olu\u015fturacak \u015fekilde manip\u00fcle etmek \u00f6nemlidir. Yani, odak mesafesine \u00e7ok yak\u0131n pikseller i\u00e7in CoC s\u0131f\u0131ra yak\u0131nken, odak mesafesinden uzakla\u015ft\u0131k\u00e7a CoC h\u0131zla artar. Bu matematiksel temel, bir sonraki ad\u0131mda bulan\u0131kl\u0131\u011f\u0131 ger\u00e7ekte nas\u0131l uygulayaca\u011f\u0131m\u0131z\u0131 belirleyecektir. Her pikselin CoC de\u011feri, ka\u00e7 \u00f6rnekleme noktas\u0131n\u0131n al\u0131naca\u011f\u0131n\u0131 veya bulan\u0131kl\u0131k filtresinin boyutunu do\u011frudan etkileyecektir.<\/p>\n<p>\u00d6te yandan, bu basit form\u00fcller genellikle ideal lens modelleri i\u00e7in ge\u00e7erlidir. Ger\u00e7ek d\u00fcnyada lens kusurlar\u0131 (bokeh \u015fekli, renk sapmalar\u0131) DoF efektini daha da karma\u015f\u0131kla\u015ft\u0131r\u0131r. Ancak, minyat\u00fcr tarz\u0131 bir etki i\u00e7in, CoC'yi basitle\u015ftirilmi\u015f bir yakla\u015f\u0131mla hesaplamak genellikle yeterli ve daha performansl\u0131d\u0131r. Esas olan, odaklanm\u0131\u015f alana h\u0131zl\u0131 ge\u00e7i\u015fli, belirgin bir bulan\u0131kl\u0131k e\u011frisi yakalamakt\u0131r.<\/p>\n<h2>Minyat\u00fcr Stili i\u00e7in Odaklama ve Bulan\u0131kl\u0131k Uygulamas\u0131<\/h2>\n<p>CoC de\u011ferini hesaplad\u0131\u011f\u0131m\u0131za g\u00f6re, art\u0131k bu bilgiyi kullanarak pikselleri nas\u0131l bulan\u0131kla\u015ft\u0131raca\u011f\u0131m\u0131z\u0131 g\u00f6rme zaman\u0131. Minyat\u00fcr tarz\u0131 bir DoF efekti i\u00e7in, bulan\u0131kl\u0131\u011f\u0131n yumu\u015fak ve do\u011fal g\u00f6r\u00fcnmesi, ancak ayn\u0131 zamanda keskin bir ge\u00e7i\u015fle odaklanm\u0131\u015f alan\u0131 vurgulamas\u0131 \u00f6nemlidir. Bu, genellikle \u00e7evredeki piksellerden \u00f6rnekleme yaparak ve bu \u00f6rnekleri CoC de\u011ferine g\u00f6re a\u011f\u0131rl\u0131kland\u0131rarak elde edilir.<\/p>\n<p>Bulan\u0131kl\u0131k uygulamak i\u00e7in birden fazla strateji vard\u0131r: basit kutu bulan\u0131kl\u0131k (box blur), Gaussian bulan\u0131kl\u0131k (Gaussian blur) veya daha geli\u015fmi\u015f, bokeh efektleri \u00fcretebilen disk\/alt\u0131gen tabanl\u0131 bulan\u0131kl\u0131k. Minyat\u00fcr tarz\u0131 bir efekt i\u00e7in, hafif bir Gaussian veya basit bir disk bulan\u0131kl\u0131\u011f\u0131 genellikle yeterli ve performans dostudur. Temel fikir, bir pikselin CoC de\u011feri ne kadar b\u00fcy\u00fckse, o kadar geni\u015f bir alandan \u00f6rnek al\u0131p ortalamalar\u0131n\u0131 almakt\u0131r.<\/p>\n<p>A\u015fa\u011f\u0131daki HLSL kodu, CoC de\u011ferine dayal\u0131 basit bir disk bulan\u0131kl\u0131\u011f\u0131 uygulaman\u0131n temelini g\u00f6sterir. <code>MaxBlurAmount<\/code> parametresi, bulan\u0131kl\u0131\u011f\u0131n ne kadar geni\u015f bir alana yay\u0131laca\u011f\u0131n\u0131 kontrol eder.<\/p>\n<pre><code>\n\/\/ Unreal Engine Custom Node i\u00e7inde bulan\u0131kl\u0131k uygulama\n\n\/\/ Giri\u015f parametreleri\nfloat4 SceneColorInput; \nfloat SceneDepthInput; \nfloat FocalDistance;     \nfloat FocalLength;       \nfloat Aperture;          \nfloat MaxCoCRadius;      \/\/ Maksimum CoC yar\u0131\u00e7ap\u0131 (piksel cinsinden)\nfloat SampleCount;       \/\/ Bulan\u0131kl\u0131k i\u00e7in al\u0131nacak \u00f6rnek say\u0131s\u0131 (\u00f6rne\u011fin, 8 veya 16)\nfloat2 TextureSize;      \/\/ Ekran doku boyutu (\u00f6rne\u011fin, 1920, 1080)\n\nfloat2 UV = GetScreenPosition().xy \/ GetScreenPosition().w;\nfloat PixelDepth = CalcSceneDepth(UV);\n\n\/\/ CoC hesaplamas\u0131 (\u00f6nceki b\u00f6l\u00fcmden)\nfloat DepthRatio = (FocalDistance * FocalLength) \/ (Aperture * (PixelDepth - FocalDistance));\nfloat CoC = abs(DepthRatio);\nCoC = min(CoC, MaxCoCRadius);\n\n\/\/ CoC 0'a yak\u0131nsa (yani odak i\u00e7inde), bulan\u0131kl\u0131k yok\nif (CoC < 0.01f) \/\/ E\u015fik de\u011feri\n{\n    return SceneColorInput;\n}\n\n\/\/ Bulan\u0131kl\u0131k uygulamas\u0131: Disk veya halka \u015feklinde \u00f6rnekleme\nfloat4 BlurredColor = float4(0,0,0,0);\nfloat TotalWeight = 0.0f;\n\n\/\/ \u00d6rnekleme yar\u0131\u00e7ap\u0131n\u0131 CoC de\u011ferine g\u00f6re ayarla\nfloat SampleRadius = CoC \/ TextureSize.x; \/\/ UV uzay\u0131nda CoC\nfloat AngleStep = (2.0f * PI) \/ SampleCount;\n\nfor (int i = 0; i < SampleCount; ++i)\n{\n    float Angle = AngleStep * i;\n    float2 SampleOffset = float2(cos(Angle), sin(Angle)) * SampleRadius;\n    float2 SampleUV = UV + SampleOffset;\n\n    \/\/ S\u0131n\u0131r kontrol\u00fc (iste\u011fe ba\u011fl\u0131, kenarlarda bozulmay\u0131 \u00f6nler)\n    if (SampleUV.x >= 0.0f && SampleUV.x <= 1.0f &#038;&#038;\n        SampleUV.y >= 0.0f && SampleUV.y <= 1.0f)\n    {\n        float4 SampleColor = SceneTextureLookup(SampleUV, 0); \/\/ SceneTexture (PostProcessInput0)\n        \n        \/\/ Basit a\u011f\u0131rl\u0131kland\u0131rma (iste\u011fe ba\u011fl\u0131)\n        \/\/ float SampleDepth = CalcSceneDepth(SampleUV);\n        \/\/ float SampleCoC = abs((FocalDistance * FocalLength) \/ (Aperture * (SampleDepth - FocalDistance)));\n        \/\/ float Weight = 1.0f - saturate(abs(CoC - SampleCoC) \/ MaxCoCRadius); \/\/ Bulan\u0131kl\u0131k uyumu\n        float Weight = 1.0f; \/\/ \u015eimdilik e\u015fit a\u011f\u0131rl\u0131k\n\n        BlurredColor += SampleColor * Weight;\n        TotalWeight += Weight;\n    }\n}\n\nif (TotalWeight > 0.0f)\n{\n    return BlurredColor \/ TotalWeight;\n}\nelse\n{\n    return SceneColorInput; \/\/ E\u011fer \u00f6rnekleme yap\u0131lamazsa orijinal rengi d\u00f6nd\u00fcr\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kod blo\u011fu, <code>SampleCount<\/code> kadar \u00e7evresel pikselden \u00f6rnek al\u0131r ve bunlar\u0131 toplayarak bulan\u0131k bir renk elde eder. <code>SampleRadius<\/code>, CoC de\u011ferine g\u00f6re belirlenir, b\u00f6ylece bulan\u0131kl\u0131k miktar\u0131 dinamik olarak de\u011fi\u015fir. <code>SceneTextureLookup<\/code> fonksiyonu, <code>PostProcessInput0<\/code> olarak tan\u0131mlanan ana sahne dokusundan renk \u00f6rneklemesi yapar. \u00d6rnek UV koordinatlar\u0131n\u0131 hesaplarken, <code>TextureSize<\/code> de\u011ferini kullanarak CoC'yi piksel biriminden UV birimine d\u00f6n\u00fc\u015ft\u00fcrd\u00fc\u011f\u00fcm\u00fczden emin olmal\u0131y\u0131z. <code>PI<\/code> de\u011feri ise <code>3.14159<\/code> olarak tan\u0131mlanmal\u0131d\u0131r (HLSL'de genellikle <code>PI<\/code> sabiti yoktur, kendiniz tan\u0131mlayabilirsiniz).<\/p>\n<p>Bu y\u00f6ntem, her piksel i\u00e7in ba\u011f\u0131ms\u0131z bulan\u0131kl\u0131k hesaplamalar\u0131 yapt\u0131\u011f\u0131 i\u00e7in performans\u0131 optimize etmek kritik \u00f6neme sahiptir. \u00d6zellikle <code>SampleCount<\/code> de\u011feri, performans\u0131 do\u011frudan etkiler. Daha d\u00fc\u015f\u00fck de\u011ferler daha az bulan\u0131kl\u0131k ancak daha iyi performans sunar. Ger\u00e7ek minyat\u00fcr tarz\u0131 DoF efekti i\u00e7in, bulan\u0131kl\u0131\u011f\u0131n sadece odak d\u00fczleminin d\u0131\u015f\u0131nda ve belirgin bir e\u011friyle artmas\u0131 gerekti\u011fini unutmay\u0131n.<\/p>\n<p>Bu temel bulan\u0131kl\u0131k algoritmas\u0131, efektin kalitesini art\u0131rmak i\u00e7in daha da geli\u015ftirilebilir. \u00d6rne\u011fin, bokeh \u015fekillerini sim\u00fcle etmek i\u00e7in \u00f6rnekleme desenleri de\u011fi\u015ftirilebilir veya bulan\u0131kl\u0131\u011f\u0131 daha da iyile\u015ftirmek i\u00e7in iki ge\u00e7i\u015fli (separable) bulan\u0131kl\u0131k teknikleri kullan\u0131labilir. Ancak, bu basit disk bulan\u0131kl\u0131\u011f\u0131 bile minyat\u00fcr etkisi i\u00e7in olduk\u00e7a yeterli bir ba\u015flang\u0131\u00e7 noktas\u0131 sunar. \u00d6zellikle minyat\u00fcr esteti\u011fi i\u00e7in, bulan\u0131kl\u0131\u011f\u0131n p\u00fcr\u00fczs\u00fcz ve \"oyuncak\" gibi g\u00f6r\u00fcnmesi hedeflenir, bu da \u00e7ok y\u00fcksek kaliteli bokeh efektlerinden ziyade genel bir bulan\u0131kl\u0131k hissini \u00f6ne \u00e7\u0131kar\u0131r.<\/p>\n<h2>Performans Optimizasyonu ve \u0130leri D\u00fczey Minyat\u00fcr DoF Efektleri<\/h2>\n<p>\u00d6zel bir DoF shader'\u0131 olu\u015fturmak heyecan verici olsa da, ger\u00e7ek zamanl\u0131 uygulamalarda performans kritik bir fakt\u00f6rd\u00fcr. \u00d6zellikle y\u00fcksek \u00e7\u00f6z\u00fcn\u00fcrl\u00fcklerde veya mobil platformlarda, her piksel i\u00e7in birden fazla \u00f6rnekleme yapmak GPU \u00fczerinde \u00f6nemli bir y\u00fck olu\u015fturabilir. Minyat\u00fcr DoF efektimizin kalitesini art\u0131r\u0131rken performans\u0131 nas\u0131l koruyabiliriz? Ayr\u0131ca, daha ileri d\u00fczeyde g\u00f6rsel \u00e7ekicilik i\u00e7in neler ekleyebiliriz?<\/p>\n<h3>Performans Optimizasyonu Stratejileri:<\/h3>\n<ol>\n<li><strong>Downsampling (A\u015fa\u011f\u0131 \u00d6rnekleme):<\/strong> En etkili y\u00f6ntemlerden biridir. Bulan\u0131kl\u0131k efektini, sahnenin daha d\u00fc\u015f\u00fck \u00e7\u00f6z\u00fcn\u00fcrl\u00fckl\u00fc bir kopyas\u0131 \u00fczerinde uygulay\u0131p, daha sonra y\u00fcksek \u00e7\u00f6z\u00fcn\u00fcrl\u00fckl\u00fc \u00e7\u0131kt\u0131ya y\u00fckseltmektir. \u00d6rne\u011fin, bulan\u0131kl\u0131\u011f\u0131 yar\u0131 \u00e7\u00f6z\u00fcn\u00fcrl\u00fckte hesaplayarak, piksel \u00f6rnekleme say\u0131s\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde azaltabiliriz. Bu, genellikle iki a\u015famal\u0131 bir yakla\u015f\u0131mla yap\u0131l\u0131r: ilk ge\u00e7i\u015fte sahne renk ve derinlik tamponlar\u0131 downsample edilir, ikinci ge\u00e7i\u015fte bu downsample edilmi\u015f verilere bulan\u0131kl\u0131k uygulan\u0131r.<\/li>\n<li><strong>Separable Blur (Ay\u0131r\u0131labilir Bulan\u0131kl\u0131k):<\/strong> \u00d6zellikle Gaussian bulan\u0131kl\u0131k i\u00e7in kullan\u0131lan bu teknikte, bulan\u0131kl\u0131k yatay ve dikey olmak \u00fczere iki ayr\u0131 ge\u00e7i\u015fte uygulan\u0131r. Bu, N \u00f6rneklemeli bir bulan\u0131kl\u0131\u011f\u0131n karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 N*N'den 2N'e d\u00fc\u015f\u00fcrerek performans\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde art\u0131r\u0131r. Minyat\u00fcr DoF efektlerinde, CoC'ye dayal\u0131 olarak bulan\u0131kl\u0131k geni\u015fli\u011fi de\u011fi\u015fti\u011fi i\u00e7in uygulamas\u0131 biraz daha karma\u015f\u0131k olsa da, genel bir bulan\u0131kl\u0131k pass'\u0131 olarak kullan\u0131labilir.<\/li>\n<li><strong>Compute Shader'lar:<\/strong> Daha karma\u015f\u0131k bulan\u0131kl\u0131k algoritmalar\u0131 veya dinamik CoC tabanl\u0131 \u00f6rnekleme desenleri i\u00e7in Compute Shader'lar g\u00fc\u00e7l\u00fc bir alternatif sunar. Compute Shader'lar, GPU'nun genel i\u015flem birimlerini kullanarak paralel hesaplamalar yapabilir ve b\u00f6ylece piksel shader'lar\u0131n s\u0131n\u0131rlamalar\u0131n\u0131 a\u015fabilir. Bu, \u00f6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli ve y\u00fcksek kaliteli bokeh efektleri i\u00e7in idealdir.<\/li>\n<li><strong>Sadece Gerekli Alanlar\u0131 Bulan\u0131kla\u015ft\u0131rma:<\/strong> CoC de\u011feri s\u0131f\u0131ra yak\u0131n olan (yani odaklanm\u0131\u015f) pikseller i\u00e7in bulan\u0131kl\u0131k hesaplamalar\u0131n\u0131 atlay\u0131n. Kodumuzda zaten basit bir <code>if (CoC < 0.01f)<\/code> kontrol\u00fc bulunuyor. Bu, gereksiz GPU d\u00f6ng\u00fclerinden tasarruf sa\u011flar.<\/li>\n<\/ol>\n<h3>\u0130leri D\u00fczey Efektler ve Kalite Art\u0131r\u0131m\u0131:<\/h3>\n<ol>\n<li><strong>Bokeh Efektleri:<\/strong> Ger\u00e7ek kamera lenslerindeki diyafram \u015feklini (genellikle alt\u0131gen veya sekizgen) taklit eden parlak bulan\u0131kl\u0131k noktalar\u0131d\u0131r. Bunu elde etmek i\u00e7in, bulan\u0131kl\u0131k \u00f6rnekleme desenini disk yerine alt\u0131gen bir desene g\u00f6re ayarlayabilir veya daha geli\u015fmi\u015f teknikler (\u00f6rne\u011fin, splatting tabanl\u0131 bokeh) kullanabiliriz.<\/li>\n<li><strong>Chromatic Aberration (Renksel Sapma):<\/strong> Lens kusurlar\u0131n\u0131n bir taklidi olarak, bulan\u0131kla\u015fan b\u00f6lgelerin kenarlar\u0131nda renk ayr\u0131\u015fmalar\u0131 eklemek, efektin ger\u00e7ek\u00e7ili\u011fini art\u0131rabilir. Genellikle, farkl\u0131 renk kanallar\u0131n\u0131 (R, G, B) biraz farkl\u0131 ofsetlerle \u00f6rnekleyerek elde edilir.<\/li>\n<li><strong>Foreground\/Background Blur Ayr\u0131m\u0131:<\/strong> Odak d\u00fczleminin \u00f6n\u00fcndeki objeler genellikle daha b\u00fcy\u00fck ve farkl\u0131 bir bulan\u0131kl\u0131k karakteristi\u011fine sahip olabilir. Daha geli\u015fmi\u015f DoF sistemleri, \u00f6n plan ve arka plan bulan\u0131kl\u0131\u011f\u0131n\u0131 ayr\u0131 ayr\u0131 i\u015fleyerek bu ayr\u0131mlar\u0131 yapabilir. Bu, derinlik tamponunun dikkatli bir \u015fekilde analiz edilmesini gerektirir.<\/li>\n<li><strong>Temporal AA ile Entegrasyon:<\/strong> DoF efektleri genellikle jaggies (t\u0131rt\u0131kl\u0131 kenarlar) ve titremelerle sonu\u00e7lanabilir. Temporal Anti-Aliasing (TAA) ile entegrasyon, bu g\u00f6rsel kusurlar\u0131 gidermeye yard\u0131mc\u0131 olabilir ve daha p\u00fcr\u00fczs\u00fcz bir sonu\u00e7 verir.<\/li>\n<\/ol>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: Performans testleri yaparken, farkl\u0131 \u00e7\u00f6z\u00fcn\u00fcrl\u00fcklerde ve farkl\u0131 donan\u0131mlarda test yapmay\u0131 unutmay\u0131n. GPU Profiler gibi ara\u00e7lar, shader'\u0131n\u0131zdaki darbo\u011fazlar\u0131 tespit etmek i\u00e7in kritik \u00f6neme sahiptir. Downsampling ve separable blur gibi teknikleri do\u011fru uygulamak, genellikle en b\u00fcy\u00fck performans kazanc\u0131n\u0131 sa\u011flar.\n    <\/div>\n<h3>Vaka Analizi: Sanatsal Bir Yakla\u015f\u0131m<\/h3>\n<p>Bir\u00e7ok ba\u011f\u0131ms\u0131z oyun ve sanat projesi, minyat\u00fcr tarz\u0131 DoF'u benzersiz bir estetik yaratmak i\u00e7in kullan\u0131r. \u00d6rne\u011fin, belirli strateji oyunlar\u0131 veya sim\u00fclasyon oyunlar\u0131 (\u00f6rne\u011fin, \"Cities: Skylines\" veya \"Mini Motorways\" gibi), genel g\u00f6r\u00fcn\u00fcmlerini bir masa \u00fcst\u00fc model veya oyuncak setine benzetmek i\u00e7in bu efekti benimser. Bu oyunlarda, DoF sadece bir kamera efekti olmaktan \u00e7\u0131kar, ayn\u0131 zamanda oyunun \u00f6l\u00e7ek alg\u0131s\u0131n\u0131 ve kullan\u0131c\u0131 deneyimini do\u011frudan etkileyen bir sanatsal ara\u00e7 haline gelir. \"The Witness\" gibi oyunlar da belirli alanlara odaklanmak ve oyuncunun dikkatini y\u00f6nlendirmek i\u00e7in DoF'u ak\u0131ll\u0131ca kullan\u0131r, ancak bu oyunlar\u0131n DoF'u genellikle minyat\u00fcrden ziyade sinematik bir stile sahiptir. Bizim \"minyat\u00fcr\" hedefimiz i\u00e7in, daha belirgin ve agresif bir CoC e\u011frisi ile, odaklanm\u0131\u015f alan\u0131n hemen d\u0131\u015f\u0131nda h\u0131zl\u0131 bir bulan\u0131kl\u0131k art\u0131\u015f\u0131 ar\u0131yoruz. Bu, izleyicide ger\u00e7ek d\u00fcnyadaki bir maket foto\u011fraf\u0131 hissini uyand\u0131r\u0131r.<\/p>\n<p>Mobil uyumluluk i\u00e7in, yukar\u0131da belirtilen optimizasyon teknikleri daha da hayati hale gelir. Mobil cihazlar\u0131n s\u0131n\u0131rl\u0131 GPU g\u00fcc\u00fc nedeniyle, y\u00fcksek <code>SampleCount<\/code> de\u011ferlerinden ka\u00e7\u0131nmak ve her zaman downsampling gibi agresif optimizasyonlar\u0131 kullanmak gerekir. CSS media query \u00f6rne\u011fimiz makalenin genel g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc mobil cihazlara uyarlasa da, HLSL shader'\u0131n\u0131z\u0131n kendisi i\u00e7in de benzer \"seviye d\u00fc\u015f\u00fcrme\" stratejileri d\u00fc\u015f\u00fcnmelisiniz: d\u00fc\u015f\u00fck kaliteli cihazlarda daha az \u00f6rnekleme, daha basit bulan\u0131kl\u0131k algoritmalar\u0131 ve hatta DoF'u tamamen devre d\u0131\u015f\u0131 b\u0131rakma gibi se\u00e7enekler sunulabilir.<\/p>\n<h2>Minyat\u00fcr DoF ile G\u00f6rsel Hikaye Anlat\u0131m\u0131n\u0131z\u0131 G\u00fc\u00e7lendirin<\/h2>\n<p>Unreal Engine ve HLSL kullanarak \u00f6zel minyat\u00fcr tarz\u0131 bir Alan Derinli\u011fi (DoF) efekti olu\u015fturma yolculu\u011fumuzun sonuna geldik. Bu s\u00fcre\u00e7 boyunca, genel DoF kavramlar\u0131ndan, HLSL ile temel matematiksel hesaplamalar\u0131n nas\u0131l yap\u0131laca\u011f\u0131na ve son olarak bulan\u0131kl\u0131k uygulama ve performans optimizasyonlar\u0131na kadar geni\u015f bir yelpazeyi ele ald\u0131k. G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, haz\u0131r \u00e7\u00f6z\u00fcmlerin \u00f6tesine ge\u00e7mek, size projenizin g\u00f6rsel kalitesi ve sanatsal y\u00f6n\u00fc \u00fczerinde e\u015fsiz bir kontrol sa\u011flar.<\/p>\n<p>Minyat\u00fcr DoF, sadece teknik bir ba\u015far\u0131 olman\u0131n \u00f6tesinde, oyunlar\u0131n\u0131za veya g\u00f6rselle\u015ftirmelerinize benzersiz bir karakter katma potansiyeli ta\u015f\u0131r. Bir sahneyi k\u00fc\u00e7\u00fck bir maket veya oyuncak gibi g\u00f6stermek, izleyicinin alg\u0131s\u0131n\u0131 manip\u00fcle ederek hikaye anlat\u0131m\u0131n\u0131za derinlik katar. Oyuncunun dikkatini belirli bir noktaya \u00e7ekebilir, sahnenin \u00f6l\u00e7e\u011fiyle oynayabilir veya sadece g\u00f6rsel olarak \u00e7arp\u0131c\u0131 bir estetik yaratabilirsiniz. Unutmay\u0131n, bu t\u00fcr \u00f6zel efektler, projenizin ak\u0131lda kal\u0131c\u0131l\u0131\u011f\u0131n\u0131 art\u0131rarak onu rakiplerinden ay\u0131rabilir.<\/p>\n<p>\u00d6zel bir shader geli\u015ftirmek, ilk ba\u015fta karma\u015f\u0131k g\u00f6r\u00fcnebilir, ancak temel prensipleri anlad\u0131\u011f\u0131n\u0131zda, s\u0131n\u0131rs\u0131z yarat\u0131c\u0131 olas\u0131l\u0131klar sunar. Kendi CoC hesaplaman\u0131z\u0131, bulan\u0131kl\u0131k algoritman\u0131z\u0131 ve optimizasyon stratejilerinizi belirleyerek, tam olarak istedi\u011finiz g\u00f6rsel \u00e7\u0131kt\u0131y\u0131 elde edebilirsiniz. Deney yapmaktan \u00e7ekinmeyin! Farkl\u0131 <code>FocalDistance<\/code>, <code>Aperture<\/code> ve <code>MaxCoCRadius<\/code> de\u011ferleri ile oynayarak, projenize en uygun minyat\u00fcr esteti\u011fi bulmak i\u00e7in \u00e7e\u015fitli kombinasyonlar deneyin.<\/p>\n<p>Bu s\u00fcre\u00e7, sadece bir efekt olu\u015fturmakla kalmaz, ayn\u0131 zamanda Unreal Engine'in rendering pipeline'\u0131n\u0131 ve GPU programlamas\u0131n\u0131 daha derinlemesine anlaman\u0131za da yard\u0131mc\u0131 olur. Elde etti\u011finiz bu bilgi, gelecekteki projelerinizde kar\u015f\u0131la\u015faca\u011f\u0131n\u0131z di\u011fer g\u00f6rsel zorluklar\u0131n \u00fcstesinden gelmeniz i\u00e7in g\u00fc\u00e7l\u00fc bir temel olu\u015fturacakt\u0131r. Yarat\u0131c\u0131l\u0131\u011f\u0131n\u0131z\u0131 serbest b\u0131rak\u0131n ve kendi k\u00fc\u00e7\u00fck d\u00fcnyalar\u0131n\u0131z\u0131 in\u015fa edin!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<div class=\"faq-section\">\n<p class=\"faq-question\">1. Neden Unreal Engine'in kendi DoF efektini kullanmak yerine \u00f6zel bir HLSL shader yazmal\u0131y\u0131m?<\/p>\n<p class=\"faq-answer\">\u00d6zel bir HLSL shader, size efekt \u00fczerinde tam kontrol sa\u011flar. Unreal Engine'in yerle\u015fik DoF'u genellikle genel kullan\u0131m i\u00e7in tasarlanm\u0131\u015ft\u0131r ve minyat\u00fcr tarz\u0131 \u00f6zel bir bulan\u0131kl\u0131k e\u011frisi, performans optimizasyonlar\u0131 veya benzersiz bokeh efektleri gibi ince ayarlar i\u00e7in yeterli esnekli\u011fi sunmayabilir. \u00d6zel shader ile, piksel d\u00fczeyinde istedi\u011finiz g\u00f6rsel stili ve performans\u0131 elde edebilirsiniz.<\/p>\n<p class=\"faq-question\">2. Minyat\u00fcr DoF efekti performans a\u00e7\u0131s\u0131ndan a\u011f\u0131r m\u0131d\u0131r?<\/p>\n<p class=\"faq-answer\">Evet, bir DoF efekti (\u00f6zellikle bulan\u0131kl\u0131k i\u00e7in \u00e7ok say\u0131da \u00f6rnekleme yap\u0131l\u0131yorsa) GPU \u00fczerinde yo\u011fun bir y\u00fcke neden olabilir. Ancak, makalede bahsedilen downsampling, separable blur, odak d\u0131\u015f\u0131 b\u00f6lgelerde \u00f6rneklemeyi atlama gibi optimizasyon teknikleri kullan\u0131larak performans\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131labilir. Mobil cihazlar i\u00e7in bu optimizasyonlar hayati \u00f6neme sahiptir.<\/p>\n<p class=\"faq-question\">3. HLSL kodunu Unreal Engine'e nas\u0131l entegre edebilirim?<\/p>\n<p class=\"faq-answer\">HLSL kodunu, Unreal Engine'deki bir Post-Process Materyal i\u00e7inde bir \"Custom\" d\u00fc\u011f\u00fcm\u00fc kullanarak entegre edebilirsiniz. Bu d\u00fc\u011f\u00fcm\u00fcn \"Code\" alan\u0131na HLSL kodunuzu yazars\u0131n\u0131z ve gerekli giri\u015fleri (sahne rengi, derinlik, kamera parametreleri) Materyal edit\u00f6r\u00fcndeki di\u011fer d\u00fc\u011f\u00fcmlerle ba\u011flars\u0131n\u0131z. Materyali kaydetti\u011finizde kod derlenir ve do\u011frudan GPU'da \u00e7al\u0131\u015f\u0131r.<\/p>\n<p class=\"faq-question\">4. Bulan\u0131kl\u0131k dairesi (CoC) hesaplamas\u0131nda hangi parametreler en etkilidir?<\/p>\n<p class=\"faq-answer\">CoC hesaplamas\u0131nda en etkili parametreler <code>FocalDistance<\/code> (odak mesafesi), <code>Aperture<\/code> (diyafram a\u00e7\u0131kl\u0131\u011f\u0131) ve <code>PixelDepth<\/code> (pikselin derinli\u011fi) dir. <code>FocalDistance<\/code>, hangi mesafenin net olaca\u011f\u0131n\u0131 belirlerken, <code>Aperture<\/code> s\u0131\u011f veya geni\u015f alan derinli\u011fini kontrol eder. <code>PixelDepth<\/code>, her pikselin odak d\u00fczlemine olan uzakl\u0131\u011f\u0131n\u0131 kar\u015f\u0131la\u015ft\u0131rmak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p class=\"faq-question\">5. Minyat\u00fcr DoF, t\u00fcm oyun t\u00fcrleri i\u00e7in uygun mudur?<\/p>\n<p class=\"faq-answer\">Minyat\u00fcr DoF, \u00f6zellikle belirli bir sanatsal stil veya \u00f6l\u00e7ek manip\u00fclasyonu hedeflenen oyunlar i\u00e7in \u00e7ok uygundur (\u00f6rne\u011fin, strateji oyunlar\u0131, \u015fehir kurma sim\u00fclasyonlar\u0131, bulmaca oyunlar\u0131 veya sanatsal indie oyunlar). Ancak, h\u0131zl\u0131 tempolu aksiyon oyunlar\u0131 veya hiper-ger\u00e7ek\u00e7i sim\u00fclasyonlar gibi baz\u0131 t\u00fcrlerde, oyuncunun g\u00f6r\u00fc\u015f\u00fcn\u00fc k\u0131s\u0131tlayabilece\u011fi veya istenmeyen bir estetik yaratabilece\u011fi i\u00e7in dikkatli kullan\u0131lmal\u0131d\u0131r. Her zaman projenizin genel g\u00f6rsel hedefleriyle uyumlu oldu\u011fundan emin olun.<\/p>\n<\/p><\/div>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Oyun ve g\u00f6rselle\u015ftirme d\u00fcnyas\u0131nda, basit bir kamera efektinin bile projenizin atmosferini k\u00f6kten de\u011fi\u015ftirebilece\u011fini biliyor muydunuz? Bu makale, Unreal&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-31884","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>UE&#039;de Minyat\u00fcr DoF Etkisi: HLSL ile \u00d6zel Alan Derinli\u011fi Nas\u0131l Olu\u015fturulur?<\/title>\n<meta name=\"description\" content=\"Oyun ve g\u00f6rselle\u015ftirme d\u00fcnyas\u0131nda, basit bir kamera efektinin bile projenizin atmosferini k\u00f6kten de\u011fi\u015ftirebilece\u011fini biliyor muydunuz? Bu makale, Unreal Engine&#039;de HLSL kullanarak kendi minyat\u00fcr tarz\u0131 Alan Derinli\u011fi (DoF) efektinizi ad\u0131m ad\u0131m nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 a\u00e7\u0131kl\u0131yor.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"UE&#039;de Minyat\u00fcr DoF Etkisi: HLSL ile \u00d6zel Alan Derinli\u011fi Nas\u0131l Olu\u015fturulur?\" \/>\n<meta property=\"og:description\" content=\"Oyun ve g\u00f6rselle\u015ftirme d\u00fcnyas\u0131nda, basit bir kamera efektinin bile projenizin atmosferini k\u00f6kten de\u011fi\u015ftirebilece\u011fini biliyor muydunuz? Bu makale, Unreal Engine&#039;de HLSL kullanarak kendi minyat\u00fcr tarz\u0131 Alan Derinli\u011fi (DoF) efektinizi ad\u0131m ad\u0131m nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 a\u00e7\u0131kl\u0131yor.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-15T03:01:17+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"24 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"UE&#8217;de Minyat\u00fcr DoF Etkisi: HLSL ile \u00d6zel Alan Derinli\u011fi Nas\u0131l Olu\u015fturulur?\",\"datePublished\":\"2025-10-15T03:01:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/\"},\"wordCount\":4219,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/\",\"name\":\"UE'de Minyat\u00fcr DoF Etkisi: HLSL ile \u00d6zel Alan Derinli\u011fi Nas\u0131l Olu\u015fturulur?\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-15T03:01:17+00:00\",\"description\":\"Oyun ve g\u00f6rselle\u015ftirme d\u00fcnyas\u0131nda, basit bir kamera efektinin bile projenizin atmosferini k\u00f6kten de\u011fi\u015ftirebilece\u011fini biliyor muydunuz? Bu makale, Unreal Engine'de HLSL kullanarak kendi minyat\u00fcr tarz\u0131 Alan Derinli\u011fi (DoF) efektinizi ad\u0131m ad\u0131m nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 a\u00e7\u0131kl\u0131yor.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"UE&#8217;de Minyat\u00fcr DoF Etkisi: HLSL ile \u00d6zel Alan Derinli\u011fi Nas\u0131l Olu\u015fturulur?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"UE'de Minyat\u00fcr DoF Etkisi: HLSL ile \u00d6zel Alan Derinli\u011fi Nas\u0131l Olu\u015fturulur?","description":"Oyun ve g\u00f6rselle\u015ftirme d\u00fcnyas\u0131nda, basit bir kamera efektinin bile projenizin atmosferini k\u00f6kten de\u011fi\u015ftirebilece\u011fini biliyor muydunuz? Bu makale, Unreal Engine'de HLSL kullanarak kendi minyat\u00fcr tarz\u0131 Alan Derinli\u011fi (DoF) efektinizi ad\u0131m ad\u0131m nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 a\u00e7\u0131kl\u0131yor.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/","og_locale":"tr_TR","og_type":"article","og_title":"UE'de Minyat\u00fcr DoF Etkisi: HLSL ile \u00d6zel Alan Derinli\u011fi Nas\u0131l Olu\u015fturulur?","og_description":"Oyun ve g\u00f6rselle\u015ftirme d\u00fcnyas\u0131nda, basit bir kamera efektinin bile projenizin atmosferini k\u00f6kten de\u011fi\u015ftirebilece\u011fini biliyor muydunuz? Bu makale, Unreal Engine'de HLSL kullanarak kendi minyat\u00fcr tarz\u0131 Alan Derinli\u011fi (DoF) efektinizi ad\u0131m ad\u0131m nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 a\u00e7\u0131kl\u0131yor.","og_url":"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-15T03:01:17+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"24 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"UE&#8217;de Minyat\u00fcr DoF Etkisi: HLSL ile \u00d6zel Alan Derinli\u011fi Nas\u0131l Olu\u015fturulur?","datePublished":"2025-10-15T03:01:17+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/"},"wordCount":4219,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/","url":"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/","name":"UE'de Minyat\u00fcr DoF Etkisi: HLSL ile \u00d6zel Alan Derinli\u011fi Nas\u0131l Olu\u015fturulur?","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-15T03:01:17+00:00","description":"Oyun ve g\u00f6rselle\u015ftirme d\u00fcnyas\u0131nda, basit bir kamera efektinin bile projenizin atmosferini k\u00f6kten de\u011fi\u015ftirebilece\u011fini biliyor muydunuz? Bu makale, Unreal Engine'de HLSL kullanarak kendi minyat\u00fcr tarz\u0131 Alan Derinli\u011fi (DoF) efektinizi ad\u0131m ad\u0131m nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 a\u00e7\u0131kl\u0131yor.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/uede-minyatur-dof-etkisi-hlsl-ile-ozel-alan-derinligi-nasil-olusturulur\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"UE&#8217;de Minyat\u00fcr DoF Etkisi: HLSL ile \u00d6zel Alan Derinli\u011fi Nas\u0131l Olu\u015fturulur?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31884","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=31884"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31884\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31884"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31884"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}