[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:game-dev\u002Fgfx-gpu-pipeline-stages":4,"config":232},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":9,"spec_key":7,"spec_name":7,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":130,"samples":147},"game-dev","Oyun Geliştirme","","gfx-gpu-pipeline-stages","Gfx Gpu Pipeline Stages","tr",75,2850,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,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],{"key":19,"name":20,"count":11},"game-ai-pathfinding","Game Ai Pathfinding",{"key":22,"name":23,"count":11},"game-input-audio","Game Input Audio",{"key":25,"name":26,"count":11},"game-loop-fundamentals","Game Loop Fundamentals",{"key":28,"name":29,"count":11},"game-networking-multiplayer","Game Networking Multiplayer",{"key":31,"name":32,"count":11},"game-performance-optimization","Game Performance Optimization",{"key":34,"name":35,"count":11},"game-physics-collision","Game Physics Collision",{"key":37,"name":38,"count":11},"game-rendering-pipeline","Game Rendering Pipeline",{"key":40,"name":41,"count":11},"game-state-management","Game State Management",{"key":43,"name":44,"count":11},"gfx-forward-deferred-architectures","Gfx Forward Deferred Architectures",{"key":8,"name":9,"count":11},{"key":47,"name":48,"count":11},"gfx-post-processing-aa-hdr","Gfx Post Processing Aa Hdr",{"key":50,"name":51,"count":11},"gfx-shading-lighting-pbr","Gfx Shading Lighting Pbr",{"key":53,"name":54,"count":11},"gfx-shadows-depth-precision","Gfx Shadows Depth Precision",{"key":56,"name":57,"count":11},"gfx-textures-sampling-compression","Gfx Textures Sampling Compression",{"key":59,"name":60,"count":11},"gp-ability-cooldown-damage","Gp Ability Cooldown Damage",{"key":62,"name":63,"count":11},"gp-animation-state-locomotion","Gp Animation State Locomotion",{"key":65,"name":66,"count":11},"gp-camera-follow-targeting","Gp Camera Follow Targeting",{"key":68,"name":69,"count":11},"gp-character-controller-movement","Gp Character Controller Movement",{"key":71,"name":72,"count":11},"gp-frame-windows-game-feel","Gp Frame Windows Game Feel",{"key":74,"name":75,"count":11},"gp-interaction-detection-triggers","Gp Interaction Detection Triggers",{"key":77,"name":78,"count":11},"nc-rollback-determinism","Nc Rollback Determinism",{"key":80,"name":81,"count":11},"nc-security-protocol","Nc Security Protocol",{"key":83,"name":84,"count":11},"nc-serialization-bandwidth","Nc Serialization Bandwidth",{"key":86,"name":87,"count":11},"nc-time-sync-tick","Nc Time Sync Tick",{"key":89,"name":90,"count":11},"nc-topology-nat-relay","Nc Topology Nat Relay",{"key":92,"name":93,"count":11},"nc-transport-reliability","Nc Transport Reliability",{"key":95,"name":96,"count":11},"ue-actor-component-lifecycle","Ue Actor Component Lifecycle",{"key":98,"name":99,"count":11},"ue-blueprint-cpp-interop","Ue Blueprint Cpp Interop",{"key":101,"name":102,"count":11},"ue-containers-strings-memory","Ue Containers Strings Memory",{"key":104,"name":105,"count":11},"ue-gameplay-framework-classes","Ue Gameplay Framework Classes",{"key":107,"name":108,"count":11},"ue-modules-build-packaging","Ue Modules Build Packaging",{"key":110,"name":111,"count":11},"ue-uobject-reflection-gc","Ue Uobject Reflection Gc",{"key":113,"name":114,"count":11},"un-csharp-memory-gc-performance","Un Csharp Memory Gc Performance",{"key":116,"name":117,"count":11},"un-gameobject-component-transform","Un Gameobject Component Transform",{"key":119,"name":120,"count":11},"un-jobs-burst-dots-basics","Un Jobs Burst Dots Basics",{"key":122,"name":123,"count":11},"un-monobehaviour-lifecycle-execution-order","Un Monobehaviour Lifecycle Execution Order",{"key":125,"name":126,"count":11},"un-prefabs-instantiate-pooling-addressables","Un Prefabs Instantiate Pooling Addressables",{"key":128,"name":129,"count":11},"un-scriptableobject-serialization","Un Scriptableobject Serialization",[131,135,138,141,144],{"key":132,"name":133,"count":134},"gameplay","Gameplay",450,{"key":136,"name":137,"count":134},"graphics-rendering","Graphics \u002F Rendering",{"key":139,"name":140,"count":134},"multiplayer-netcode","Multiplayer \u002F Netcode",{"key":142,"name":143,"count":134},"unity-csharp","Unity (C#)",{"key":145,"name":146,"count":134},"unreal-cpp","Unreal (C++)",[148,166,179,193,206,219],{"id":149,"topic":9,"difficulty":150,"body":151,"options":152,"correct_key":160,"explanation":165},"01a01705-1f35-7671-add6-5b469c4a360c",1,"Grafik pipeline'ında input assembly aşamasının temel görevi nedir?",[153,156,159,162],{"key":154,"text":155},"a","Her fragment için tekstür örnekler ve renk değerlerini filtreler",{"key":157,"text":158},"b","Fragment shader çıktısını mevcut renk tamponuyla blend eder",{"key":160,"text":161},"c","Vertex ve index buffer verisini okuyup üçgen gibi primitive'lere dönüştürür",{"key":163,"text":164},"d","Normalize edilmiş cihaz koordinatlarını ekrandaki piksel koordinatlarına çevirir","Input assembly, vertex\u002Findex buffer verisini okuyup draw call'ın topolojisine göre vertex'leri primitive'lere (nokta, çizgi, üçgen) gruplayan aşamadır ve bu, herhangi bir vertex shader çalışmasından önce gerçekleşir. Tekstür filtreleme, blend ve NDC-piksel dönüşümü sonraki aşamalara aittir.",{"id":167,"topic":9,"difficulty":150,"body":168,"options":169,"correct_key":154,"explanation":178},"01a01705-1f37-7558-8b96-618d054d828a","Bir vertex shader, çizilen mesh'e göre nasıl çalışır?",[170,172,174,176],{"key":154,"text":171},"Her vertex için bir kez çalışır, her vertex'in attribute'larını birbirinden bağımsız dönüştürür",{"key":157,"text":173},"Her piksel için bir kez çalışır, kapsanan her fragment için nihai rengi hesaplar",{"key":160,"text":175},"Her draw call için bir kez çalışır, tüm mesh'i tek bir çağrıda dönüştürür",{"key":163,"text":177},"Her üçgen için bir kez çalışır, üçgenin üç vertex'i zaten birleştirildikten sonra","Vertex shader, pipeline'a giren her vertex için bir kez çağrılır ve genellikle pozisyonu (çoğunlukla clip space'e) ve diğer vertex-başı attribute'ları komşularından bağımsız şekilde dönüştürür. Piksel-başı renk hesabı vertex shader'ın değil, fragment shader'ın işidir.",{"id":180,"topic":9,"difficulty":181,"body":182,"options":183,"correct_key":157,"explanation":192},"01a01705-1f38-7419-b3d2-5a61475c0d9f",2,"Var olduklarında, opsiyonel tessellation ve geometry shader aşamaları pipeline sırasında nereye oturur?",[184,186,188,190],{"key":154,"text":185},"İkisi de rasterizasyondan sonra çalışır ve zaten üretilmiş fragment'lar üzerinde işlem yapar",{"key":157,"text":187},"İkisi de vertex shader'dan sonra, rasterizasyondan önce çalışır, vertex\u002Fprimitive verisiyle",{"key":160,"text":189},"Tessellation input assembly'den önce, geometry ise output merger'dan sonra çalışır",{"key":163,"text":191},"İkisi de fragment shader içinde piksel başına çağrılan alt-program olarak çalışır","Etkinleştirildiklerinde tessellation ve geometry aşamaları vertex shader'dan sonra, rasterizasyondan önce konumlanır: hâlâ vertex\u002Fprimitive düzeyinde veriyle çalışırlar (patch'leri bölme veya yeni primitive üretme), piksel-başı fragment'larla değil. Fragment aşaması işi ancak rasterizasyon fragment üretince başlar.",{"id":194,"topic":9,"difficulty":150,"body":195,"options":196,"correct_key":163,"explanation":205},"01a01705-1f39-72c4-a003-3e0efcc27a67","Perspektif bölme (perspective divide) nasıl bir işlemdir ve pipeline'da ne zaman gerçekleşir?",[197,199,201,203],{"key":154,"text":198},"Ekran uzayı x ve y'yi derinlik değeriyle çarpmaktır, fragment shader içinde yapılır",{"key":157,"text":200},"Kameranın near ve far düzlem mesafelerini toplamaktır, input assembly sırasında yapılır",{"key":160,"text":202},"Viewport orijinini pencere koordinatlarından çıkarmaktır, output merger sırasında yapılır",{"key":163,"text":204},"Clip-space x, y, z'yi clip-space w'ye bölüp normalize cihaz koordinatlarını üretmektir","Perspektif bölme, clip-space koordinatlarını alıp x, y ve z'yi w bileşenine bölerek normalize cihaz koordinatlarını (NDC) üretir. Bu, clipping'den sonra ve NDC'yi pencere\u002Fpiksel koordinatlarına çeviren viewport dönüşümünden önce gerçekleşir.",{"id":207,"topic":9,"difficulty":181,"body":208,"options":209,"correct_key":157,"explanation":218},"01a01705-1f3b-7125-9992-29887ec9ea0b","Viewport dönüşümü neyi ve hangi uzaya çevirir?",[210,212,214,216],{"key":154,"text":211},"World-space pozisyonlarını doğrudan clip-space pozisyonlarına çevirir",{"key":157,"text":213},"Normalize cihaz koordinatlarını pencere\u002Fpiksel koordinatlarına çevirir",{"key":160,"text":215},"Fragment shader'ın renk çıktısını framebuffer'ın depolama formatına çevirir",{"key":163,"text":217},"Vertex attribute'larını fragment shader'a geçilen varying'lere çevirir","Viewport dönüşümü, perspektif bölmeden sonraki −1..1 aralığındaki normalize cihaz koordinatlarını, ayarlanmış viewport dikdörtgeninin gerçek pencere\u002Fpiksel koordinatlarına eşler; rasterizasyon da bunu belirli piksel konumlarında fragment üretmek için kullanır.",{"id":220,"topic":9,"difficulty":181,"body":221,"options":222,"correct_key":154,"explanation":231},"01a01705-1f3c-7a0e-b8d9-8e5e28c87cc2","Perspektif bölmeye göre, primitive'in view volume'a göre clip edilmesi hangi uzayda gerçekleşir?",[223,225,227,229],{"key":154,"text":224},"Clip space'te, perspektif bölmeden önce, w cinsinden ifade edilen sınırlarla",{"key":157,"text":226},"Window space'te, viewport dönüşümü piksel koordinatlarını ürettikten sonra",{"key":160,"text":228},"Normalize cihaz koordinatı uzayında, kesinlikle perspektif bölmeden sonra",{"key":163,"text":230},"Tangent space'te, fragment shader içinde normal mapping ile birlikte hesaplanır","Clipping, sınırların w cinsinden ifade edildiği (örneğin −w ≤ x ≤ w) clip-space view volume'una göre tanımlanır ve bu, koordinatları NDC'ye çeviren perspektif bölmeden önce gerçekleşir. Window space'te veya bölmeden sonra clip etmek farklı, clip-space-dışı bir formülasyon gerektirirdi.",{"fields":233,"seniorities":446,"interview_shapes":447,"locales":452,"oauth":454,"question_count":457,"coach_enabled":458,"jd_match_enabled":458},[234,259,279,296,320,333,352,371,393,412,427,437],{"key":235,"name_tr":236,"name_en":236,"sort":150,"specializations":237},"backend","Backend",[238,241,244,247,250,253,256],{"key":239,"name":240,"field":235},"general","Genel",{"key":242,"name":243,"field":235},"go","Go",{"key":245,"name":246,"field":235},"python","Python",{"key":248,"name":249,"field":235},"java","Java",{"key":251,"name":252,"field":235},"csharp","C#\u002F.NET",{"key":254,"name":255,"field":235},"nodejs","Node.js",{"key":257,"name":258,"field":235},"php","PHP",{"key":260,"name_tr":261,"name_en":261,"sort":181,"specializations":262},"frontend","Frontend",[263,264,267,270,273,276],{"key":239,"name":240,"field":260},{"key":265,"name":266,"field":260},"javascript","JavaScript",{"key":268,"name":269,"field":260},"typescript","TypeScript",{"key":271,"name":272,"field":260},"react","React",{"key":274,"name":275,"field":260},"vue","Vue",{"key":277,"name":278,"field":260},"angular","Angular",{"key":280,"name_tr":281,"name_en":281,"sort":282,"specializations":283},"fullstack","Fullstack",3,[284,285,286,287,288,289,290,291,292,293,294,295],{"key":239,"name":240,"field":280},{"key":242,"name":243,"field":235},{"key":245,"name":246,"field":235},{"key":248,"name":249,"field":235},{"key":251,"name":252,"field":235},{"key":254,"name":255,"field":235},{"key":257,"name":258,"field":235},{"key":265,"name":266,"field":260},{"key":268,"name":269,"field":260},{"key":271,"name":272,"field":260},{"key":274,"name":275,"field":260},{"key":277,"name":278,"field":260},{"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":239,"name":240,"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":239,"name":240,"field":321},{"key":245,"name":246,"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":239,"name":240,"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":239,"name":240,"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":239,"name":240,"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":239,"name":240,"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":239,"name":240,"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":239,"name":240,"field":5},{"key":142,"name":143,"field":5},{"key":145,"name":146,"field":5},{"key":132,"name":133,"field":5},{"key":136,"name":137,"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":239,"name":240,"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]