Id Software: "Skillnaderna mellan Xbox Series X och Series S är besvärliga"

Permalänk
Avstängd
Skrivet av martinot:

Intressant att Sony kopierar API:er i Direct X, eller iaf. försöker. De kommer ju då alltid att hamna på efterkälken, och bara reagera på den utveckling och framtida inriktning som Microsoft driver.

Nja, eller så underlättar det för utvecklare att skriva likvärdig kod.

Citat:

Klar maktfördel för Microsoft där då, och Sony kommer ju då hela tiden vara ohjälpligen lite efter med både API:er och utvecklingsverktyg som skall stödja dessa.

Att Sony ligger efter när det gäller utvecklingsverktyg är inte så konstigt då MS har extremt mycket erfarenhet och har några av världens mest använda och uppskattade produkter inom området. Att Sony tar efter dem är nog ganska smart ur den synvinkeln.

Citat:

Hur som helst, oavsett hur bra Sony försöker härma Microsoft, så blir det ju ändå säkerligen större skillnader i implementation när den skall mappas till annat underliggande kod och gränssnitt som Open GL. Kanske tom. risk för en viss liten form av prestandaförlust.

Det normala är väl att ha ett abstraktionslager mellan spelkoden och plattformen så det är i det som skillnaderna ligger. Att skriva om spelen i grunden gör man inte om man inte absolut måste.

Citat:

Jo, det finns mycket som spelutvecklare måste hantera i skillnader mellan olika plattformar.

Ja, men koden i sig är sällan ett jätteproblem och är det det så ligger det problemen mestadels på de som bygger implementationen för abstraktionslagret till de olika plattformarna snarare än bland spelutvecklarna specifikt. Sen finns det förstås undantag, Switch är klen och stöder inte alla funktioner som ens dagens andra konsoler gör, så där lär man få plocka bort en hel del och skriva om annat, i alla fall för mer avancerade spel, men mellan PC, PS och XB så är själva spelkoden ganska samma och verktygen hjälper rejält med de skillnader som finns.

Permalänk
Medlem
Skrivet av Yoshman:

Har ingen hands-on erfarenhet av PS4 programmering, men de presentationer jag sett beskriver shader-delen (kallas PlayStation Shader Language, PSSL) som PS4 som HLSL med en del PS4-specifikation saker adderat på toppen.

Största problemet att stödja både DX11/DX12/OpenGL/Vulkan är inte skillnader i APIet på "host" sidan, d.v.s. det som kör på CPUn. Den jobbiga delen, framförallt då mängden kod där ökar hela tiden och är den klart mest prestandakritiska därmed dyraste att utveckla, är shaders.

PS3 använde en variant av OpenGL ES, medan PS4 verkar använda ett API som Sony själva designat som @snajk redan nämnt verkar ligga rätt nära DX11 på ett funktionell plan (vet inte hur lika det ser ut i kod, hittar inga konkreta exempel).

Just skillnader i shader-språket har varit ett problem tidigare. Men här fanns även ett annat problem, som när det löstest som en bieffekt även löste problemen med skillnader i HLSL (som DX använder) och GLSL (som OpenGL och Vulkan använder).

Problemet tidigare var att shaders kompilerades ändå från källkod ner till GPU-specifik kod. Det är i praktiken omöjligt att få ett helt konsekvent beteende över alla olika implementationer då tolkning av kod på den nivån ofta är tvetydigt. Det har också varit ett problem i praktiken, lösningen man valt i DX, OpenGL, Vulkan och även OpenCL och SyCL är att i stället göra en binärspecifikation i en intermediärt binärt format ungefär som CIL för .NET och Java-byte-kod för Java.

Finns nu kompilatorer som tar HLSL och kompilerar till SPIR-V som är binärformatet som OpenGL/Vulkan använder. DX motsvarighet till SPIR-V kallas DXIL, både bygger på samma grundläggande teknik, LLVM.

Det löser inte alla problem, men det har gjort en av de mer utmanade problemen i att stödja både DX12 och Vulkan långt mindre.

Tack för bra genomgång och information om shaders.

Kanske shaders är det stora problemet som de spelutvecklare jag pratat med bla. syftat på gällande de lite besvärligare skillnaderna mellan att porta och få enhetlig kod mellan å ena sidan Xbox och PC med Windows, och den andra sidan Sonys egna implementation på PlayStation.

Visa signatur

macOS: MacBook Air 13" [M1/16/256GB], MacBook Pro 16" [M2/32/512GB], iOS: iPad Mini [128GB/LTE], iPad Pro 12,9" [M1/512GB/LTE], iPhone SE3 [128GB], Apple Watch Series 6 44mm [LTE], LG 77" OLED C2 [OLED77C25LB]
The purpose of morality is to teach you, not to suffer and die, but to enjoy yourself and live. --Ayn Rand
Skriv under ett upprop för en grönare energipolitik: https://energiupproret.se/