[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:game-dev\u002Fgfx-forward-deferred-architectures":4,"config":233},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","Game Development","","gfx-forward-deferred-architectures","Gfx Forward Deferred Architectures","en",75,2850,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,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],{"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":8,"name":9,"count":11},{"key":44,"name":45,"count":11},"gfx-gpu-pipeline-stages","Gfx Gpu Pipeline Stages",{"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,180,193,207,220],{"id":149,"topic":9,"difficulty":150,"body":151,"options":152,"correct_key":157,"explanation":165},"01a01705-1e93-7c60-b14b-1fb530b97222",1,"In forward rendering, roughly how does the shading cost scale as both the number of objects and the number of lights grow?",[153,156,159,162],{"key":154,"text":155},"a","It scales with the number of lights alone, independent of object count",{"key":157,"text":158},"b","It scales with the product of object count and light count",{"key":160,"text":161},"c","It scales with the sum of object count and light count",{"key":163,"text":164},"d","It scales with the number of objects alone, independent of light count","Forward rendering shades each object once per light that affects it, so total shading work grows with object count multiplied by light count. Summing the two factors, or dropping either one, misses the fact that every extra light re-shades every affected object.",{"id":167,"topic":9,"difficulty":168,"body":169,"options":170,"correct_key":160,"explanation":179},"01a01705-1eda-715f-b1b3-3b2b7c0b410d",2,"In deferred shading, the lighting pass cost is fundamentally proportional to what?",[171,173,175,177],{"key":154,"text":172},"The number of objects multiplied by the number of lights",{"key":157,"text":174},"The number of polygons submitted to the vertex stage",{"key":160,"text":176},"The number of screen pixels multiplied by the number of lights",{"key":163,"text":178},"The number of objects alone, regardless of light count","Deferred shading moves lighting into screen space: for every light, the shader touches the pixels that light affects, so the cost tracks screen resolution times light count rather than scene object count. Polygon count and object count alone describe geometry submission, not the lighting pass itself.",{"id":181,"topic":9,"difficulty":168,"body":182,"options":183,"correct_key":163,"explanation":192},"01a01705-1edb-7335-89ff-88be06135660","What is the core idea that separates deferred shading from forward rendering?",[184,186,188,190],{"key":154,"text":185},"It renders every object twice at higher resolution for antialiasing",{"key":157,"text":187},"It replaces the depth buffer with a stencil buffer for visibility",{"key":160,"text":189},"It compresses all textures before the geometry pass runs",{"key":163,"text":191},"It separates shading from geometry, shading once per pixel from stored data","Deferred shading first writes surface attributes (albedo, normal, roughness, depth) into buffers during a geometry pass, then computes lighting once per screen pixel by reading that stored data, independent of how many objects overlap that pixel. The other options describe unrelated or fabricated mechanisms.",{"id":194,"topic":9,"difficulty":195,"body":196,"options":197,"correct_key":154,"explanation":206},"01a01705-1ede-72b7-af80-60760cf53f90",3,"A scene has relatively few objects but a very large number of small dynamic lights. Which architecture tends to handle this better, and why?",[198,200,202,204],{"key":154,"text":199},"Deferred, since lighting cost no longer depends on object-light overlap",{"key":157,"text":201},"Forward, because it always shades fewer pixels than deferred regardless of light count",{"key":160,"text":203},"Deferred, because it renders every light as a separate full scene pass",{"key":163,"text":205},"Forward, because it stores light data in a G-buffer before shading","With many lights, forward's per-object-per-light cost grows quickly since each light must be considered for every object it touches. Deferred instead evaluates each light against screen pixels, so the cost stops depending on object-light overlap counting, which is why it tends to scale better here. The other options invert the mechanism or invent behavior.",{"id":208,"topic":9,"difficulty":150,"body":209,"options":210,"correct_key":160,"explanation":219},"01a01705-1eea-763c-bc84-853974ddc107","Which set of data does a typical G-buffer store per pixel?",[211,213,215,217],{"key":154,"text":212},"Final lit color, shadow map texels, and the active light list",{"key":157,"text":214},"Only the final composited color and the frame's exposure value",{"key":160,"text":216},"Albedo, surface normal, roughness\u002Fmetallic, and depth",{"key":163,"text":218},"Vertex positions in object space and the full transform matrix stack","A G-buffer holds per-pixel surface attributes needed to shade later: albedo (base color), normal, roughness\u002Fmetallic, and depth. The final lit color does not exist yet at this stage, and raw vertex positions or matrix stacks are not what gets stored per pixel.",{"id":221,"topic":9,"difficulty":168,"body":222,"options":223,"correct_key":163,"explanation":232},"01a01705-1eed-7cde-9480-f2473f102ae3","Why is octahedral encoding often used to pack the surface normal into a G-buffer channel?",[224,226,228,230],{"key":154,"text":225},"It stores the normal as three separate 32-bit floats for maximum precision",{"key":157,"text":227},"It converts the normal into a light index instead of a direction",{"key":160,"text":229},"It duplicates the normal into two full copies to reduce shading noise",{"key":163,"text":231},"It stores a unit normal in two components, not three","Octahedral encoding maps a unit-length normal onto a 2D square, so only two components need to be stored; the third is reconstructed in the shader. This cuts the normal's footprint compared to storing three full components, directly reducing G-buffer bandwidth. The other options describe unrelated or contradictory schemes.",{"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":428,"name_en":6,"sort":429,"specializations":430},"Oyun Geliştirme",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":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":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},[453,10],"tr",[455,456],"google","github",27600,true]