[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:game-dev\u002Fgfx-shading-lighting-pbr":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-shading-lighting-pbr","Gfx Shading Lighting Pbr","tr",75,2850,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,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":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":8,"name":9,"count":11},{"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,206,219],{"id":149,"topic":9,"difficulty":150,"body":151,"options":152,"correct_key":157,"explanation":165},"01a01705-1fea-7e3e-b425-c8e0cd32802d",1,"Lambert diffuse gölgeleme teriminde, yüzey normali neden ışık yönüyle nokta çarpımına (N·L) sokulur?",[153,156,159,162],{"key":154,"text":155},"a","Işık kaynağı ile yüzey noktası arasındaki mesafeyi ölçer",{"key":157,"text":158},"b","Gelen ışığı N·L değerinin, yani geliş açısının kosinüsüyle ölçekler",{"key":160,"text":161},"c","Işık rengini gölgelemeden önce sRGB'den lineer uzaya çevirir",{"key":163,"text":164},"d","Diffuse dokusunun hangi mipmap seviyesinden örnekleneceğini seçer","N·L, yüzey normali ile ışık yönü arasındaki açının kosinüsüdür. Sabit bir ışın demeti, dik açıya göre sıyırma açısında daha geniş bir yüzey alanına yayılır; bu yüzden birim alan başına düşen ışık bu kosinüsle azalır — bu Lambert'in kosinüs yasasının fiziksel temelidir; mesafe, renk uzayı ya da mipmap hesabı değildir.",{"id":167,"topic":9,"difficulty":168,"body":169,"options":170,"correct_key":160,"explanation":179},"01a01705-1fed-7238-a05c-6ac59b010b1f",2,"Fizik-temelli bir Lambert diffuse BRDF, sadece albedo yerine albedo \u002F π olarak yazılır. 1\u002Fπ çarpanı ne içindir?",[171,173,175,177],{"key":154,"text":172},"Albedo dokusunu sRGB kodlamasından lineer kodlamaya çevirmek",{"key":157,"text":174},"Gölgeleme sırasındaki kayan noktalı hassasiyet kaybını telafi etmek",{"key":160,"text":176},"BRDF'nin yarımküre integralini albedo'ya normalize etmek",{"key":163,"text":178},"Yüksek frekanslı normal map'lerde specular aliasing'i azaltmak","Bir BRDF'nin sabit bir yansıtma değerinin yarımküre üzerindeki integrali, yansıyan ışığın oranına eşit olmalıdır. Kosinüs-ağırlıklı sabit bir terimin yarımküre integrali π verdiği için, diffuse terimi π'ye bölmek onu tekrar albedo değerine normalize eder; yüzeyin aldığından fazla enerji yansıtmamasını sağlayan budur.",{"id":181,"topic":9,"difficulty":150,"body":182,"options":183,"correct_key":154,"explanation":192},"01a01705-1fef-7eaa-a3fc-df46c1126a3e","Blinn-Phong gölgelemede, half vector (H) ne için kullanılır?",[184,186,188,190],{"key":154,"text":185},"H (half vector) ile specular parlamanın yönünü ucuza kestirmek için",{"key":157,"text":187},"Normal map'ten örneklenen tangent-space normali saklamak için",{"key":160,"text":189},"Kameradan ışığın shadow map'ine giden yönü göstermek için",{"key":163,"text":191},"Mevcut üçgendeki tüm vertex normallerini ortalamak için","H = normalize(L + V), ışık ile görüş yönü arasında durur. Blinn, gerçek ayna yansıma vektörü R'yi hesaplayıp V ile karşılaştırmak yerine N'i H ile karşılaştırmanın, piksel başına hesaplaması daha ucuz olduğu halde görsel olarak benzer bir parlama verdiğini gözlemlemiştir.",{"id":194,"topic":9,"difficulty":168,"body":195,"options":196,"correct_key":163,"explanation":205},"01a01705-1ff3-705d-be18-0fdff4597eda","Klasik Blinn-Phong specular'ı neden fizik-temelli değil de ampirik bir model sayılır?",[197,199,201,203],{"key":154,"text":198},"Fragment shader içinde hiç uygulanamadığı için",{"key":157,"text":200},"Bir cubemap gerektirdiği ve yalnızca image-based lighting ile çalıştığı için",{"key":160,"text":202},"Üssünün her zaman 1 ile 8 arasında bir tam sayı olması gerektiği için",{"key":163,"text":204},"Üssü gözle ayarlanır, roughness ölçümüyle ilgisi yoktur","Blinn-Phong'un specular lob şekli ve parlaklığı, mikrofaset istatistiklerinden ya da gerçek bir Fresnel teriminden türetilmemiş, sanatçının seçtiği bir üs ve çarpandan gelir; model yansıyan enerjinin sınırlı kalacağına dair de bir garanti vermez. Mikrofaset BRDF'ler onun yerini aldı çünkü roughness ve F0 ölçülebilir malzeme özelliklerine karşılık gelir ve enerji korunumlu kurulabilir.",{"id":207,"topic":9,"difficulty":168,"body":208,"options":209,"correct_key":163,"explanation":218},"01a01705-1ff4-7e6f-9bb2-1fea81318a4f","Mikrofaset Fresnel teriminde F0 neyi temsil eder?",[210,212,214,216],{"key":154,"text":211},"Malzemenin tüm açılar üzerinden ortalanmış toplam diffuse yansıtırlığını",{"key":157,"text":213},"Bir ışığın HDR kırpılmadan önce katkıda bulunabileceği en yüksek parlaklığı",{"key":160,"text":215},"Specular lobun tam bir aynaya dönüştüğü roughness değerini",{"key":163,"text":217},"Işığın tam dik açıda, sıfır geliş açısında yansıyan oranını","F0, görüş yönü normale paralelken (geliş açısı 0) doğrudan ölçülen Fresnel yansımasıdır. Schlick yaklaşımının, görüş açısı sıyırma açısına doğru ilerledikçe büyümeye başladığı taban değer budur.",{"id":220,"topic":9,"difficulty":168,"body":221,"options":222,"correct_key":160,"explanation":231},"01a01705-1ff6-7cf6-bb1f-762dd7ed04d0","glTF 2.0 metallic-roughness materyal modelinde, dielektrik yüzeyler için hangi lineer F0 değeri kullanılır?",[223,225,227,229],{"key":154,"text":224},"0.0, çünkü dielektriklerin hiç specular yansıması olmadığı varsayılır",{"key":157,"text":226},"0.5, roughness aralığının orta noktasıdır",{"key":160,"text":228},"0.04, sabit 1.5 varsayılan kırılma indisinden türetilir",{"key":163,"text":230},"1.0, metaller için kullanılan sıyırma açısı değeriyle aynıdır","glTF spesifikasyonu, metal olmayan malzemeler için malzemeye özgü bir F0 belirtmenin mümkün olmadığını belirtir; bu yüzden 1.5 varsayılan kırılma indisinden türetilen sabit bir lineer değer olan %4 (0.04) kullanılır — çoğu opak dielektrik malzeme için iyi bir uzlaşımdır.",{"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":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":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]