[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:game-dev\u002Fgfx-textures-sampling-compression":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","Game Development","","gfx-textures-sampling-compression","Gfx Textures Sampling Compression","en",75,2850,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,57,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":46,"name":47,"count":11},"gfx-gpu-pipeline-stages","Gfx Gpu Pipeline Stages",{"key":49,"name":50,"count":11},"gfx-post-processing-aa-hdr","Gfx Post Processing Aa Hdr",{"key":52,"name":53,"count":11},"gfx-shading-lighting-pbr","Gfx Shading Lighting Pbr",{"key":55,"name":56,"count":11},"gfx-shadows-depth-precision","Gfx Shadows Depth Precision",{"key":8,"name":9,"count":11},{"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,206,219],{"id":149,"topic":9,"difficulty":150,"body":151,"options":152,"correct_key":157,"explanation":165},"01a01705-2063-735b-9961-e1263b7bd6e8",1,"When a texture is rendered much smaller on screen than its source resolution (minification), high-frequency detail can shimmer or produce moiré patterns frame to frame. Which technique exists specifically to prevent this by pre-filtering the texture at multiple resolutions?",[153,156,159,162],{"key":154,"text":155},"a","Supersampling",{"key":157,"text":158},"b","Mipmapping",{"key":160,"text":161},"c","Anisotropic filtering",{"key":163,"text":164},"d","Atlas packing","Mipmapping precomputes a chain of progressively half-sized, pre-filtered copies of a texture. During minification the GPU samples from an appropriately small level instead of the full-resolution image, so high-frequency detail is already averaged down and cannot alias into shimmering.",{"id":167,"topic":9,"difficulty":168,"body":169,"options":170,"correct_key":160,"explanation":179},"01a01705-2065-78a1-93c6-a650159b1c95",2,"A texture gets a full mip chain down to 1x1 on top of its base level. Roughly how much extra memory does the full chain add compared to the base level alone?",[171,173,175,177],{"key":154,"text":172},"About 100%",{"key":157,"text":174},"About 50%",{"key":160,"text":176},"About 33%",{"key":163,"text":178},"About 10%","Each mip level holds 1\u002F4 the texels of the one above it, so total memory is base * (1 + 1\u002F4 + 1\u002F16 + ...) = base * 4\u002F3. The tail beyond the base level is therefore about one-third of the base size, roughly 33% extra.",{"id":181,"topic":9,"difficulty":168,"body":182,"options":183,"correct_key":154,"explanation":192},"01a01705-2066-7b44-b454-061f5898d15d","Which quantity does the GPU primarily use to decide which mip level to sample for a given fragment?",[184,186,188,190],{"key":154,"text":185},"How fast UV coordinates change per screen pixel",{"key":157,"text":187},"The world-space distance from the camera to the surface",{"key":160,"text":189},"The size in bytes of the texture file on disk",{"key":163,"text":191},"The number of instructions in the fragment shader","The mip level (LOD) is derived from how quickly the UV coordinates change across neighboring screen pixels: a fast rate of change means the texture is minified, so a smaller mip is chosen; a slow rate means it is closer to native size, so a larger mip is chosen. World-space distance correlates with this but is not what the hardware actually measures.",{"id":194,"topic":9,"difficulty":168,"body":195,"options":196,"correct_key":163,"explanation":205},"01a01705-2067-75e3-b4c6-2a2bac68689d","A distant, densely detailed floor texture shimmers and sparkles noticeably as the camera moves, even though nearby surfaces with the same texture look fine. What is the most likely cause?",[197,199,201,203],{"key":154,"text":198},"The texture's wrap mode is set to clamp-to-edge instead of repeat",{"key":157,"text":200},"The texture uses a block-compressed format instead of an uncompressed one",{"key":160,"text":202},"The base mip level resolution is too high",{"key":163,"text":204},"No mip chain exists, or the sampler ignores it for minification","Shimmering\u002Fsparkling at a distance, where the same texture looks correct up close, is the textbook symptom of minification aliasing: without a mip chain (or a sampler that ignores it), the GPU is forced to point- or bilinear-sample the full-resolution texture even when it covers far fewer screen pixels than texels, so high-frequency detail aliases frame to frame.",{"id":207,"topic":9,"difficulty":168,"body":208,"options":209,"correct_key":160,"explanation":218},"01a01705-206a-7419-9f94-b4abab718b0c","```glsl\n\u002F\u002F pseudo host-side sampler setup\nglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);\n\u002F\u002F GL_TEXTURE_MAG_FILTER is left at its GL default\n```\nWhat filter is actually applied when this texture is magnified (viewed closer than its native resolution)?",[210,212,214,216],{"key":154,"text":211},"GL_LINEAR_MIPMAP_LINEAR, same as the minification filter",{"key":157,"text":213},"Whichever mip level is nearest is picked and sampled with GL_NEAREST",{"key":160,"text":215},"GL_LINEAR, the default magnification filter",{"key":163,"text":217},"No filtering is applied; raw texels are shown","GL_TEXTURE_MIN_FILTER and GL_TEXTURE_MAG_FILTER are independent state, and mipmap modes only exist on the minification side. The code only sets the min filter, so magnification falls back to its own default, GL_LINEAR.",{"id":220,"topic":9,"difficulty":221,"body":222,"options":223,"correct_key":154,"explanation":231},"01a01705-206b-7710-8872-ae44b64c2594",3,"A floor texture viewed at a steep grazing angle looks noticeably blurrier than it should, even though the mipmap chain and trilinear filtering are both correctly set up. Which feature is designed specifically to fix this?",[224,225,227,229],{"key":154,"text":161},{"key":157,"text":226},"A higher base texture resolution",{"key":160,"text":228},"Block compression with a smaller footprint",{"key":163,"text":230},"A tighter near clip plane","Standard mip selection assumes the minification rate is the same in every direction, but a steeply angled surface is minified far more in one screen direction than the other; picking a single isotropic mip level then over-blurs the less-minified direction. Anisotropic filtering samples multiple times along the elongated footprint to keep that direction sharp.",{"fields":233,"seniorities":445,"interview_shapes":446,"locales":451,"oauth":453,"question_count":456,"coach_enabled":457,"jd_match_enabled":457},[234,259,279,295,319,332,351,370,392,411,426,436],{"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":168,"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":221,"specializations":282},"fullstack","Fullstack",[283,284,285,286,287,288,289,290,291,292,293,294],{"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":296,"name_tr":297,"name_en":297,"sort":298,"specializations":299},"devops-cloud","DevOps \u002F Cloud",4,[300,301,304,307,310,313,316],{"key":239,"name":240,"field":296},{"key":302,"name":303,"field":296},"aws","AWS",{"key":305,"name":306,"field":296},"gcp","GCP",{"key":308,"name":309,"field":296},"azure","Azure",{"key":311,"name":312,"field":296},"kubernetes","Kubernetes",{"key":314,"name":315,"field":296},"terraform","Terraform",{"key":317,"name":318,"field":296},"linux","Linux",{"key":320,"name_tr":321,"name_en":321,"sort":322,"specializations":323},"ai-engineer","AI Engineer",5,[324,325,326,329],{"key":239,"name":240,"field":320},{"key":245,"name":246,"field":320},{"key":327,"name":328,"field":320},"llm-rag","LLM\u002FRAG",{"key":330,"name":331,"field":320},"mlops","MLOps",{"key":333,"name_tr":334,"name_en":335,"sort":336,"specializations":337},"database","Veritabanı","Database",6,[338,339,342,345,348],{"key":239,"name":240,"field":333},{"key":340,"name":341,"field":333},"postgresql","PostgreSQL",{"key":343,"name":344,"field":333},"mysql","MySQL",{"key":346,"name":347,"field":333},"mongodb","MongoDB",{"key":349,"name":350,"field":333},"redis","Redis",{"key":352,"name_tr":353,"name_en":354,"sort":355,"specializations":356},"mobile","Mobil","Mobile",7,[357,358,361,364,367],{"key":239,"name":240,"field":352},{"key":359,"name":360,"field":352},"ios-swift","iOS (Swift)",{"key":362,"name":363,"field":352},"android-kotlin","Android (Kotlin)",{"key":365,"name":366,"field":352},"flutter","Flutter",{"key":368,"name":369,"field":352},"react-native","React Native",{"key":371,"name_tr":372,"name_en":373,"sort":374,"specializations":375},"security","Güvenlik","Security",8,[376,377,380,383,386,389],{"key":239,"name":240,"field":371},{"key":378,"name":379,"field":371},"appsec","AppSec",{"key":381,"name":382,"field":371},"offensive-pentest","Offensive \u002F Pentest",{"key":384,"name":385,"field":371},"cloud-security","Cloud Security",{"key":387,"name":388,"field":371},"devsecops","DevSecOps",{"key":390,"name":391,"field":371},"blue-team-incident","Blue Team \u002F Incident",{"key":393,"name_tr":394,"name_en":395,"sort":396,"specializations":397},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[398,399,402,405,408],{"key":239,"name":240,"field":393},{"key":400,"name":401,"field":393},"test-automation","Test Automation",{"key":403,"name":404,"field":393},"sdet","SDET",{"key":406,"name":407,"field":393},"performance-testing","Performance Testing",{"key":409,"name":410,"field":393},"mobile-qa","Mobile QA",{"key":412,"name_tr":413,"name_en":413,"sort":414,"specializations":415},"data-engineer","Data Engineer",10,[416,417,420,423],{"key":239,"name":240,"field":412},{"key":418,"name":419,"field":412},"pipelines-etl","Pipelines \u002F ETL",{"key":421,"name":422,"field":412},"streaming","Streaming",{"key":424,"name":425,"field":412},"warehousing","Warehousing",{"key":5,"name_tr":427,"name_en":6,"sort":428,"specializations":429},"Oyun Geliştirme",11,[430,431,432,433,434,435],{"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":437,"name_tr":438,"name_en":438,"sort":439,"specializations":440},"ml-engineer","ML Engineer",12,[441,442],{"key":239,"name":240,"field":437},{"key":443,"name":444,"field":437},"classical-ml","Classical ML",[14,15,16],{"junior":447,"mid":449,"senior":450},{"questions":448,"median_sec":3},20,{"questions":448,"median_sec":3},{"questions":448,"median_sec":3},[452,10],"tr",[454,455],"google","github",27600,true]