[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:game-dev\u002Fgraphics-rendering":4,"config":233},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":7,"topic_name":7,"spec_key":8,"spec_name":9,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":133,"samples":147},"game-dev","Oyun Geliştirme","","graphics-rendering","Graphics \u002F Rendering","tr",450,2850,[14,15,16],"junior","mid","senior",[18,22,25,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73,76,79,82,85,88,91,94,97,100,103,106,109,112,115,118,121,124,127,130],{"key":19,"name":20,"count":21},"game-ai-pathfinding","Game Ai Pathfinding",75,{"key":23,"name":24,"count":21},"game-input-audio","Game Input Audio",{"key":26,"name":27,"count":21},"game-loop-fundamentals","Game Loop Fundamentals",{"key":29,"name":30,"count":21},"game-networking-multiplayer","Game Networking Multiplayer",{"key":32,"name":33,"count":21},"game-performance-optimization","Game Performance Optimization",{"key":35,"name":36,"count":21},"game-physics-collision","Game Physics Collision",{"key":38,"name":39,"count":21},"game-rendering-pipeline","Game Rendering Pipeline",{"key":41,"name":42,"count":21},"game-state-management","Game State Management",{"key":44,"name":45,"count":21},"gfx-forward-deferred-architectures","Gfx Forward Deferred Architectures",{"key":47,"name":48,"count":21},"gfx-gpu-pipeline-stages","Gfx Gpu Pipeline Stages",{"key":50,"name":51,"count":21},"gfx-post-processing-aa-hdr","Gfx Post Processing Aa Hdr",{"key":53,"name":54,"count":21},"gfx-shading-lighting-pbr","Gfx Shading Lighting Pbr",{"key":56,"name":57,"count":21},"gfx-shadows-depth-precision","Gfx Shadows Depth Precision",{"key":59,"name":60,"count":21},"gfx-textures-sampling-compression","Gfx Textures Sampling Compression",{"key":62,"name":63,"count":21},"gp-ability-cooldown-damage","Gp Ability Cooldown Damage",{"key":65,"name":66,"count":21},"gp-animation-state-locomotion","Gp Animation State Locomotion",{"key":68,"name":69,"count":21},"gp-camera-follow-targeting","Gp Camera Follow Targeting",{"key":71,"name":72,"count":21},"gp-character-controller-movement","Gp Character Controller Movement",{"key":74,"name":75,"count":21},"gp-frame-windows-game-feel","Gp Frame Windows Game Feel",{"key":77,"name":78,"count":21},"gp-interaction-detection-triggers","Gp Interaction Detection Triggers",{"key":80,"name":81,"count":21},"nc-rollback-determinism","Nc Rollback Determinism",{"key":83,"name":84,"count":21},"nc-security-protocol","Nc Security Protocol",{"key":86,"name":87,"count":21},"nc-serialization-bandwidth","Nc Serialization Bandwidth",{"key":89,"name":90,"count":21},"nc-time-sync-tick","Nc Time Sync Tick",{"key":92,"name":93,"count":21},"nc-topology-nat-relay","Nc Topology Nat Relay",{"key":95,"name":96,"count":21},"nc-transport-reliability","Nc Transport Reliability",{"key":98,"name":99,"count":21},"ue-actor-component-lifecycle","Ue Actor Component Lifecycle",{"key":101,"name":102,"count":21},"ue-blueprint-cpp-interop","Ue Blueprint Cpp Interop",{"key":104,"name":105,"count":21},"ue-containers-strings-memory","Ue Containers Strings Memory",{"key":107,"name":108,"count":21},"ue-gameplay-framework-classes","Ue Gameplay Framework Classes",{"key":110,"name":111,"count":21},"ue-modules-build-packaging","Ue Modules Build Packaging",{"key":113,"name":114,"count":21},"ue-uobject-reflection-gc","Ue Uobject Reflection Gc",{"key":116,"name":117,"count":21},"un-csharp-memory-gc-performance","Un Csharp Memory Gc Performance",{"key":119,"name":120,"count":21},"un-gameobject-component-transform","Un Gameobject Component Transform",{"key":122,"name":123,"count":21},"un-jobs-burst-dots-basics","Un Jobs Burst Dots Basics",{"key":125,"name":126,"count":21},"un-monobehaviour-lifecycle-execution-order","Un Monobehaviour Lifecycle Execution Order",{"key":128,"name":129,"count":21},"un-prefabs-instantiate-pooling-addressables","Un Prefabs Instantiate Pooling Addressables",{"key":131,"name":132,"count":21},"un-scriptableobject-serialization","Un Scriptableobject Serialization",[134,137,138,141,144],{"key":135,"name":136,"count":11},"gameplay","Gameplay",{"key":8,"name":9,"count":11},{"key":139,"name":140,"count":11},"multiplayer-netcode","Multiplayer \u002F Netcode",{"key":142,"name":143,"count":11},"unity-csharp","Unity (C#)",{"key":145,"name":146,"count":11},"unreal-cpp","Unreal (C++)",[148,166,180,193,207,220],{"id":149,"topic":45,"difficulty":150,"body":151,"options":152,"correct_key":157,"explanation":165},"01a01705-1e93-7c60-b14b-1fb530b97222",1,"Forward rendering'de hem nesne sayısı hem ışık sayısı arttıkça shading maliyeti kabaca nasıl ölçeklenir?",[153,156,159,162],{"key":154,"text":155},"a","Yalnızca ışık sayısıyla ölçeklenir, nesne sayısından bağımsızdır",{"key":157,"text":158},"b","Nesne sayısı ile ışık sayısının çarpımıyla ölçeklenir",{"key":160,"text":161},"c","Nesne sayısı ile ışık sayısının toplamıyla ölçeklenir",{"key":163,"text":164},"d","Yalnızca nesne sayısıyla ölçeklenir, ışık sayısından bağımsızdır","Forward rendering her nesneyi, onu etkileyen her ışık için ayrı ayrı shade eder; bu yüzden toplam iş nesne sayısı ile ışık sayısının çarpımıyla büyür. İkisini toplamak ya da birini yok saymak, her ek ışığın etkilediği her nesneyi yeniden shade ettiği gerçeğini yansıtmaz.",{"id":167,"topic":45,"difficulty":168,"body":169,"options":170,"correct_key":160,"explanation":179},"01a01705-1eda-715f-b1b3-3b2b7c0b410d",2,"Deferred shading'de ışıklandırma geçişinin maliyeti temelde neyle orantılıdır?",[171,173,175,177],{"key":154,"text":172},"Nesne sayısı ile ışık sayısının çarpımıyla",{"key":157,"text":174},"Vertex aşamasına gönderilen poligon sayısıyla",{"key":160,"text":176},"Ekran piksel sayısı ile ışık sayısının çarpımıyla",{"key":163,"text":178},"Yalnızca nesne sayısıyla, ışık sayısından bağımsız olarak","Deferred shading ışıklandırmayı ekran uzayına taşır: her ışık için shader, o ışığın etkilediği pikselleri işler; bu yüzden maliyet sahnedeki nesne sayısından çok ekran çözünürlüğü ile ışık sayısının çarpımını izler. Poligon sayısı ve nesne sayısı tek başına geometri gönderimini anlatır, ışıklandırma geçişini değil.",{"id":181,"topic":45,"difficulty":168,"body":182,"options":183,"correct_key":163,"explanation":192},"01a01705-1edb-7335-89ff-88be06135660","Deferred shading'i forward rendering'den ayıran temel fikir nedir?",[184,186,188,190],{"key":154,"text":185},"Antialiasing için her nesneyi iki kez daha yüksek çözünürlükte render eder",{"key":157,"text":187},"Derinlik tamponunu görünürlük için stencil tamponuyla değiştirir",{"key":160,"text":189},"Geometri geçişi başlamadan önce tüm dokuları sıkıştırır",{"key":163,"text":191},"Shading'i geometriden ayırıp piksel başına saklanan veriden bir kez shade eder","Deferred shading önce yüzey özelliklerini (albedo, normal, roughness, depth) bir geometri geçişinde tamponlara yazar, sonra saklanan bu veriyi okuyarak ekrandaki her piksel için ışıklandırmayı bir kez hesaplar; o pikselde kaç nesnenin üst üste bindiği önemli değildir. Diğer seçenekler ilgisiz ya da uydurma mekanizmalar tanımlıyor.",{"id":194,"topic":45,"difficulty":195,"body":196,"options":197,"correct_key":154,"explanation":206},"01a01705-1ede-72b7-af80-60760cf53f90",3,"Bir sahnede görece az nesne ama çok sayıda küçük dinamik ışık var. Bu durumu hangi mimari genelde daha iyi kaldırır ve neden?",[198,200,202,204],{"key":154,"text":199},"Deferred, çünkü ışıklandırma maliyeti artık nesne-ışık örtüşmesine bağlı değildir",{"key":157,"text":201},"Forward, çünkü ışık sayısından bağımsız olarak her zaman deferred'dan daha az piksel shade eder",{"key":160,"text":203},"Deferred, çünkü her ışığı ayrı bir tam sahne geçişi olarak render eder",{"key":163,"text":205},"Forward, çünkü ışık verisini shading'den önce bir G-buffer'da saklar","Çok sayıda ışıkta forward'ın nesne-başına-ışık maliyeti hızla büyür, çünkü her ışık dokunduğu her nesne için ayrıca değerlendirilmelidir. Deferred bunun yerine her ışığı ekran pikselleri üzerinde değerlendirir, böylece maliyet nesne-ışık örtüşme sayımına bağlı olmaktan çıkar; bu yüzden burada genelde daha iyi ölçeklenir. Diğer seçenekler mekanizmayı ters çeviriyor ya da uydurma davranış anlatıyor.",{"id":208,"topic":45,"difficulty":150,"body":209,"options":210,"correct_key":160,"explanation":219},"01a01705-1eea-763c-bc84-853974ddc107","Tipik bir G-buffer, piksel başına hangi veri kümesini saklar?",[211,213,215,217],{"key":154,"text":212},"Nihai lit renk, shadow map texel'leri ve aktif ışık listesi",{"key":157,"text":214},"Yalnızca nihai birleştirilmiş renk ve karenin exposure değeri",{"key":160,"text":216},"Albedo, yüzey normali, roughness\u002Fmetallic ve derinlik",{"key":163,"text":218},"Nesne uzayındaki vertex pozisyonları ve tam dönüşüm matrisi yığını","G-buffer, sonradan shade etmek için gereken piksel başına yüzey özelliklerini tutar: albedo (temel renk), normal, roughness\u002Fmetallic ve derinlik. Bu aşamada nihai lit renk henüz yoktur; ham vertex pozisyonları ya da matris yığını da piksel başına saklanan veri değildir.",{"id":221,"topic":45,"difficulty":168,"body":222,"options":223,"correct_key":163,"explanation":232},"01a01705-1eed-7cde-9480-f2473f102ae3","G-buffer kanalında yüzey normalini paketlemek için oktahedral kodlama neden sıkça kullanılır?",[224,226,228,230],{"key":154,"text":225},"Normali maksimum precision için üç ayrı 32-bit float olarak saklar",{"key":157,"text":227},"Normali bir yön yerine bir ışık indeksine çevirir",{"key":160,"text":229},"Shading gürültüsünü azaltmak için normali iki tam kopya halinde çoğaltır",{"key":163,"text":231},"Birim normali iki bileşenle saklar, bant genişliği kazandırır","Oktahedral kodlama, birim uzunluktaki normali 2B bir kareye izdüşürür; böylece yalnızca iki bileşen saklanması yeterlidir, üçüncüsü shader içinde geri hesaplanır. Bu, üç tam bileşen saklamaya kıyasla normalin kapladığı alanı küçültüp G-buffer bant genişliğini doğrudan azaltır. Diğer seçenekler ilgisiz ya da çelişkili şemalar anlatıyor.",{"fields":234,"seniorities":446,"interview_shapes":447,"locales":452,"oauth":454,"question_count":457,"coach_enabled":458,"jd_match_enabled":458},[235,260,280,296,320,333,352,371,393,412,427,437],{"key":236,"name_tr":237,"name_en":237,"sort":150,"specializations":238},"backend","Backend",[239,242,245,248,251,254,257],{"key":240,"name":241,"field":236},"general","Genel",{"key":243,"name":244,"field":236},"go","Go",{"key":246,"name":247,"field":236},"python","Python",{"key":249,"name":250,"field":236},"java","Java",{"key":252,"name":253,"field":236},"csharp","C#\u002F.NET",{"key":255,"name":256,"field":236},"nodejs","Node.js",{"key":258,"name":259,"field":236},"php","PHP",{"key":261,"name_tr":262,"name_en":262,"sort":168,"specializations":263},"frontend","Frontend",[264,265,268,271,274,277],{"key":240,"name":241,"field":261},{"key":266,"name":267,"field":261},"javascript","JavaScript",{"key":269,"name":270,"field":261},"typescript","TypeScript",{"key":272,"name":273,"field":261},"react","React",{"key":275,"name":276,"field":261},"vue","Vue",{"key":278,"name":279,"field":261},"angular","Angular",{"key":281,"name_tr":282,"name_en":282,"sort":195,"specializations":283},"fullstack","Fullstack",[284,285,286,287,288,289,290,291,292,293,294,295],{"key":240,"name":241,"field":281},{"key":243,"name":244,"field":236},{"key":246,"name":247,"field":236},{"key":249,"name":250,"field":236},{"key":252,"name":253,"field":236},{"key":255,"name":256,"field":236},{"key":258,"name":259,"field":236},{"key":266,"name":267,"field":261},{"key":269,"name":270,"field":261},{"key":272,"name":273,"field":261},{"key":275,"name":276,"field":261},{"key":278,"name":279,"field":261},{"key":297,"name_tr":298,"name_en":298,"sort":299,"specializations":300},"devops-cloud","DevOps \u002F Cloud",4,[301,302,305,308,311,314,317],{"key":240,"name":241,"field":297},{"key":303,"name":304,"field":297},"aws","AWS",{"key":306,"name":307,"field":297},"gcp","GCP",{"key":309,"name":310,"field":297},"azure","Azure",{"key":312,"name":313,"field":297},"kubernetes","Kubernetes",{"key":315,"name":316,"field":297},"terraform","Terraform",{"key":318,"name":319,"field":297},"linux","Linux",{"key":321,"name_tr":322,"name_en":322,"sort":323,"specializations":324},"ai-engineer","AI Engineer",5,[325,326,327,330],{"key":240,"name":241,"field":321},{"key":246,"name":247,"field":321},{"key":328,"name":329,"field":321},"llm-rag","LLM\u002FRAG",{"key":331,"name":332,"field":321},"mlops","MLOps",{"key":334,"name_tr":335,"name_en":336,"sort":337,"specializations":338},"database","Veritabanı","Database",6,[339,340,343,346,349],{"key":240,"name":241,"field":334},{"key":341,"name":342,"field":334},"postgresql","PostgreSQL",{"key":344,"name":345,"field":334},"mysql","MySQL",{"key":347,"name":348,"field":334},"mongodb","MongoDB",{"key":350,"name":351,"field":334},"redis","Redis",{"key":353,"name_tr":354,"name_en":355,"sort":356,"specializations":357},"mobile","Mobil","Mobile",7,[358,359,362,365,368],{"key":240,"name":241,"field":353},{"key":360,"name":361,"field":353},"ios-swift","iOS (Swift)",{"key":363,"name":364,"field":353},"android-kotlin","Android (Kotlin)",{"key":366,"name":367,"field":353},"flutter","Flutter",{"key":369,"name":370,"field":353},"react-native","React Native",{"key":372,"name_tr":373,"name_en":374,"sort":375,"specializations":376},"security","Güvenlik","Security",8,[377,378,381,384,387,390],{"key":240,"name":241,"field":372},{"key":379,"name":380,"field":372},"appsec","AppSec",{"key":382,"name":383,"field":372},"offensive-pentest","Offensive \u002F Pentest",{"key":385,"name":386,"field":372},"cloud-security","Cloud Security",{"key":388,"name":389,"field":372},"devsecops","DevSecOps",{"key":391,"name":392,"field":372},"blue-team-incident","Blue Team \u002F Incident",{"key":394,"name_tr":395,"name_en":396,"sort":397,"specializations":398},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[399,400,403,406,409],{"key":240,"name":241,"field":394},{"key":401,"name":402,"field":394},"test-automation","Test Automation",{"key":404,"name":405,"field":394},"sdet","SDET",{"key":407,"name":408,"field":394},"performance-testing","Performance Testing",{"key":410,"name":411,"field":394},"mobile-qa","Mobile QA",{"key":413,"name_tr":414,"name_en":414,"sort":415,"specializations":416},"data-engineer","Data Engineer",10,[417,418,421,424],{"key":240,"name":241,"field":413},{"key":419,"name":420,"field":413},"pipelines-etl","Pipelines \u002F ETL",{"key":422,"name":423,"field":413},"streaming","Streaming",{"key":425,"name":426,"field":413},"warehousing","Warehousing",{"key":5,"name_tr":6,"name_en":428,"sort":429,"specializations":430},"Game Development",11,[431,432,433,434,435,436],{"key":240,"name":241,"field":5},{"key":142,"name":143,"field":5},{"key":145,"name":146,"field":5},{"key":135,"name":136,"field":5},{"key":8,"name":9,"field":5},{"key":139,"name":140,"field":5},{"key":438,"name_tr":439,"name_en":439,"sort":440,"specializations":441},"ml-engineer","ML Engineer",12,[442,443],{"key":240,"name":241,"field":438},{"key":444,"name":445,"field":438},"classical-ml","Classical ML",[14,15,16],{"junior":448,"mid":450,"senior":451},{"questions":449,"median_sec":3},20,{"questions":449,"median_sec":3},{"questions":449,"median_sec":3},[10,453],"en",[455,456],"google","github",27600,true]