7 months ago - EVE Online - Direct link

Transcript (by Youtube)


0s good morning capsuleers and welcome to
2s the third day of FanFest
5s 2023 if you've ever wanted to peek under
7s the hood of Eve now is your chance as we
10s are about to explore the building blocks
12s of new Eden please give a very warm
15s welcome to CCP
25s vertex good morning everyone it is so
28s good to see you all my name is is Ben
31s also known as CCP vertex and I'm the
34s development director of our core
36s Technology Group known as
38s platform I've been around eve since the
40s early beta in 2002 so this is actually
43s my 13th FunFest overall it's really good
46s to see so many familiar faces and
49s friends having been around for the past
52s two decades means that I've had the
54s privilege of witnessing the evolution of
56s Eve over the 20 years and how we're
59s constantly tweaking and improving things
61s modernizing the game the look and the
65s feel crafting the best visual experience
68s is something we put a lot of effort into
71s we take a lot of pride in that because
74s we want you to have the most visceral
76s experience possible the most immersive
78s experience possible and the last two
81s decades we've come a very long way in
83s that Journey from Eve in the early Alpha
86s all the way back in 2001 where the look
89s and feel wasn't well def find at that
91s point to the open and closed beta
93s periods of 2002 we constantly evolving
98s that look and
99s feel modernizing the engine capabilities
103s the art pipelines we've released
105s countless 3D model redesigns texture and
108s Shader
109s updates completely overhauling the
112s lighting and visual
114s effects to the graphics API upgrades
116s moving from DX 99 to 11 and Nyon 12
121s this transformation represents two
123s decades worth of modernization
126s effort all while needing to support your
129s record setting Fleet fights some of the
132s largest PVP battles in gaming history
135s something you should be so proud
137s of you don't make it easy for us but we
141s really wouldn't have it any other way
143s and we are definitely not done with
146s modernizing the look and feel of
149s Eve
151s CCP games presents
155s carbon a Next Generation game
161s engine pushing the boundaries of large
164s scale MMO
167s technology to create entire
179s universes forged over two decades carbon
183s Powers the eve
186s Universe creating Worlds Without
197s Limits all you need to
200s do is lose yourself in
207s them we are proud to present carbon Evon
211s Line's Next Generation game engine
213s building on our 20year Legacy of
217s breathtaking visuals carbon represents
220s our vision of a modern game engine
223s supporting the latest and rendering
224s techniques and features within an
227s efficient and flexible
229s framework this effort extends to our
232s tools and our pipelines so that we can
234s increase our developer velocity which
237s means we can get features to you quicker
239s than ever
241s carbon will release with upscaling the
243s best suits your choice of GPU
247s vendor so going off of our direct X12
250s and metal work we will be supporting rri
252s shadows and
254s Reflections to complete that visual
257s experience we will be adding support for
259s 3D
261s audio and to ensure that the engine
263s performs better than ever we will have
265s an allnew GP driven pipeline which you
268s will hear more about later in this
269s presentation
274s releasing early next year carbon enables
277s new visual experiences for decades to
280s come ensuring Eve continues to be the
283s ultimate science fiction experience and
286s now I would like to hand over to our
288s technical director CCB tuxford to Deep
290s dive into the technology that drives all
292s of these changes thank
299s you
306s thank you Vortex uh I'm csb tuxford and
309s I'm technical director of platform like
312s Vex I've been here at csb for many years
315s uh in various role including game
317s designer software engineer and technical
319s director of
323s Eve and I'm here to talk about our
325s Basics engine
328s destiny
334s so that is all messed up sorry about
337s that
350s just right there we are little technical
353s difficulties so what is a physics engine
356s so a physics engine is a software
358s component that simulates physical
359s Interac action in a virtual environment
362s it calculates how objects move Collide
364s and react to
366s forces in Eve we have a proprietary
368s physics engine called Destiny it's
370s simple and efficient and it's a key
373s factor that enables us to have these
374s large Fleet
378s fights but how does it actually
381s work the server runs a simulation for
384s the entire solar system but the client
386s runs one as well for all items in local
389s proximity
390s basically anything you can see the
392s client is simulating as
395s well the client will send instructions
397s to the server instructions such as
401s orbit approach or a line basically
404s anything you can see in the UI all the
406s interactions you can do the client sends
408s that to the server the server will send
410s that straight back to the all the
412s clients that need to know about
417s it and then everybody will progress to
419s the the next frame now technically the
421s server doesn't really wait for the
423s clients to to progress to the next frame
425s but they all kind of do it in
427s sync this implies a few things and the
431s first thing is we only communicate
434s changes you will get the initial state
436s of the of the universe but after that
439s you only get some changes this means
441s that uh if there are no changes in the
444s simulation there's no actual network
446s activity going
448s on and this is because Destiny is
451s deterministic um you don't know what
453s determinism is it basically means given
455s the same input it will yield the exactly
458s the same results and because we're
460s working on diffs the calculations really
463s have to be
464s deterministic because any discrepancy
466s May for example cause collisions on some
469s simulations but not the others and those
472s discrepancies will only grow as time
476s passes you may have already experienced
479s this as d
480s sometimes it's because the client is
482s actually missing some messages but
484s sometimes it's discrepancy in the
485s calculations now we haven't had one in a
488s while now
490s but you you you may have already
493s experienced the ramifications of
495s it so the third thing is the client
499s needs to know pretty much everything
501s that it can see because in order to
503s simulate the state we need to know
505s everything so I have a small example of
509s this let's say we're simulating this
511s raven we just want to simulate where
512s this raven is going in order to do that
514s we need to know what its original
516s position is its velocity and what it's
518s actually
519s doing in this case it is approaching
522s that Tempest so we need to know its
525s state it's position velocity what it's
528s doing it's orbiting the Tempest and so
530s on and so forth we also need to know
532s about anything these ships can collide
537s with collisions are are an important
540s part of any physics simulations
542s collisions in Destiny are pretty simple
544s but more importantly they're really easy
546s to calculate and this is because the
548s geometry of the objects is pretty simple
552s all moving items are simulated as SES
555s and finding collisions between two
556s spheres is really really simple you just
558s compare the distance between the centers
561s distance between the centers to the
563s radius of the SP and this is kind of
566s fine for smaller
568s ships for state and larger structures
571s it's very noticeable that they aren't s
573s especially when you start maneuvering
575s your smaller ships around them we have a
577s pretty innovative solutions to that we
579s just add more SS to
582s it and since the structure doesn't move
585s the calculations are pretty
587s simple some shapes are also pretty big
590s and they don't have spherical
592s geometry they don't they have spherical
595s GE geometry but they don't look remotely
598s spherical regardless of what we try to
600s tell the
602s artists
604s so where are we now destiny has served
606s us for 20 years and we will continue to
609s develop it and work on it so in order to
611s prepare it for the third decade of EV on
614s line I'm going to tell you about some of
616s the modernizations efforts we've been
620s doing the tick is really where all the
622s magic happens in the
624s simulation we have an evolve step that's
627s where we move all the objects around and
628s we solve all the
631s collisions then we have everything that
632s happens before the tick and everything
635s that happens after the tick this is
636s pretty much what programming is about
637s it's like three lines of
640s code do the thing before the thing do
643s the thing do the thing after the thing
644s pretty
646s simple these are really poorly named
649s thing do preti do potic what really
651s happens there in the in the preck is We
655s Gather up all the messages we need to
657s send to the client all these approaches
659s or bits and a lines that the clients
661s told us they wanted to do we got them
663s sent them to the relevant clients so
666s let's take a look at what happens in the
669s preck
671s so it gets quite complex uh and it's a
674s lot more complex than what you would
676s reason reasonably expect for what it's
679s doing so what you're seeing here is
682s around 20 years of gameplay logic
684s getting intermixed with the physics
686s logic this goes on there was a limited
688s amount of time I wanted to spend in
690s PowerPoint making this animation but
692s it's like thousand lines
700s long
704s uh why is this bad so this is bad
707s because whenever you make changes to
709s this to this physics simulation code it
711s can cause unexpected failures in
713s different system and this will cause you
715s to lose confidence in making changes and
719s pretty soon you don't want to make any
720s changes at all and if you are making
722s changes you definitely do not want to
724s make any big
725s changes this drives poor cold because
728s you shy away from making the structural
730s changes to the Cod that are
732s required and then this cause unexpected
735s failures again so how did it really get
738s like that how did we make it like this U
741s reality is physics engine has been
743s staple there hasn't been a grown need to
745s make any changes to it so the changes
747s being made have been catered to other
749s systems and that allowed it to grow
751s around it this is really common in
754s software it's just part of the enthropy
756s of being a software
757s developer uh and it's not particularly
760s bad it just means that before we start
762s making any bigger changes to the
764s engine we need to do some maintenance
768s work as a starting point we've separated
770s the gameplay logic from the logic that
773s prepares and send the messages to kind
775s of encapsulate Destiny and make it uh
778s detangled from the rest of the
781s code and by simplifying and decoupling
784s our physics engine for gameplay we've
786s opened the door to creating targeted
788s benchmarks and this allows us to
790s precisely measure and enables us to
793s improve Destiny's
796s performance because if you can measure
798s it you can improve
800s it so all of these changes were made to
803s give us confidence the confidence to
805s change Destiny but what kind of change
808s are we really talking about
812s Destiny is efficient but there's still
814s plenty of room for improvement one of
816s the most resource intensive code in a
818s cluster in a fleet fight is sending the
822s destiny updates to the
824s clients let's take a look at what
825s happens there so Destiny runs on both
828s server and
830s client there's a server server site
832s called
833s beyon it gathers the
835s instruction uh all these approaches
837s orbits Alliance and everything think
839s explosions that happen and sends them to
842s a client side service called
844s Michelle these are definitely Destiny
847s Child's references by the
849s way and it gets those to the client side
854s destiny the destiny code is all written
856s in C++ but the services Beyond CN Mell
859s are written in
861s Python and if you know nothing about uh
864s programming then C process is really
866s really fast python is kind of slow there
868s are top people working on that but
870s that's the reality of the situation uh
873s the logic for determining which uh this
876s means that the logic for determining
878s what messages to send to which client
880s along with the marshaling unmarshaling
882s and the data transmission is all handled
884s in the slower python layer and if you're
887s unsure about what marshalling and
888s unmarshalling is you can imagine
890s marshalling as boarding a plane dead
892s transmission as the flight and un Maring
894s as the
898s onboarding
899s by separating the gameplay logic from
901s the physics logic we're in a pretty good
903s position to send all the destiny packets
905s within the C++ layer this because all
908s the information we have is really inside
913s Destiny it's difficult to say what the
915s net effect on performance is because
917s there's a lot of other things happening
918s other than physics simulation but for
920s all the code we've seen the efficiency
922s of the data transmission go up at two
923s orders of
926s magnitude the other side of performance
928s is
930s and by that I mean how realistic the
931s simulation
933s feels it's clear to us that representing
935s ships of sere does not fit all
939s scenarios we use different shapes and
941s even multiple shapes to represent static
943s objects could we not use those for ships
945s as
945s well we could but at what cost to
949s Performance with investment to
951s modernization such as Benchmark and more
954s test automation we can know exactly what
957s that cost is
962s so for 20 years Destiny has been a
964s reliable Foundation when it comes to
965s physics a recent code modernization set
968s us up to boost performance and Fidelity
971s but what about other kind of more
973s gamechanging improvements now quick
975s caveat before I say that the upcoming
977s feature is purely
978s hypothetical it would need design
980s validation which has not happened at all
983s uh think a bit more as what could be not
985s what will be imagine being trapped in as
989s field surrounded by hostile ships out
991s Gone But Not
993s outsmarted you spot a nearby cluster of
995s large
1004s asteroids you T towards toward it
1008s evading incoming fire As you move behind
1010s the asteroid the hostes no longer have a
1012s clear line of side which caused them to
1014s lose their target lock on
1017s you seizing the chance you line to a
1020s nearby Planet initiate warp just as the
1024s enemies regain the luck you hear the
1025s sweet words warp drive
1030s active so now that you're up to speed a
1033s little bit on the server side I would
1035s like to introduce U Mario who will talk
1038s about some of the updates to the
1047s client
1052s all
1053s right um hello everyone uh my name is
1056s Daniel also not truly known as CCP maku
1058s just yet uh this is actually my first
1061s FanFest
1062s um thank
1065s you um I am a rendering engineer on the
1068s engine team uh and I'm here to you today
1070s to present a little bit about some of
1072s the rendering work that we have been
1073s doing and uh to start it off I want to
1075s introduce you guys to Trinity uh e on
1078s line is a very unique game not just for
1080s you players but also for for us
1082s Engineers working on the rendering uh we
1084s have a very large world uh we have a
1086s very high view distance in this world
1087s and there's a large number of things to
1089s render uh it's also massively
1091s multiplayer online which means that we P
1093s control about what you the players do in
1095s the world so we need to be prepared for
1097s anything uh Trinity is the the graphics
1099s engine inside of carbon and it's our
1101s solution to
1103s Graphics um so some of the visual
1106s improvements that we've been working on
1107s lately um
1109s I'm sure you're familiar with the
1110s improvements to Shadows uh we now have
1113s an unlimited number of uh Shadow casters
1115s and Shadow receivers and and the Shadows
1118s overall are just much much sharper than
1119s they used to be uh these Shadows Shadow
1122s changes go hand inand together with the
1124s the new volumetric Cloud effects that we
1125s have uh which are obviously very pre
1128s prevalent in the in the new area that
1129s just unlocked
1131s yesterday um it's a it's a really really
1133s beautiful effect and I would love to
1135s talk a little bit more about it uh
1137s unfortunately don't have time for
1138s everything
1139s um so I will move on to probably why
1142s you're here which is the new
1143s stuff um rate tracing um so what is r
1148s tracing well it's the ability it's a
1149s hardware feature of your graphics card
1151s that allows you to shoot uh race
1153s arbitrarily into scene and see see what
1155s they hit uh we're working on support for
1158s both uh Windows and
1159s Mac um and the cool thing about rate
1162s racing is that it enables us to do uh a
1164s bunch of new techniques that we simply
1165s weren't able to do before uh this
1168s includes stuff like improving the
1169s reflections uh and improving the Shadows
1171s even more uh as well as hopefully
1173s improving the lighting overall in the
1175s future um the cool thing about even
1179s online is that it well space is fairly
1181s empty so uh you can count on rate
1184s tracing not having the same kind of
1186s performance hit that you're used to
1187s seeing when enabling it in other
1189s games so looking a little bit at the
1192s rate Trace Shadows well we already have
1195s shadows of course uh but rate tracing
1197s allows us to simil imate the size of the
1199s light source in a in a much more
1201s accurate way um if we add a shadowcaster
1205s to this little scene here you can see
1206s that only some of the Rays will be
1207s blocked and the actual shadow that you
1210s see from this very large light source
1211s will be very uh soft and and
1214s diffuse uh and and um yeah this is this
1218s uh this is fully realistic and fully
1220s Dynamic uh which means that if you have
1222s a for example an antenna sticking out of
1224s your ship uh it will cast a perfectly
1226s sharp Shadow onto your own ship while
1228s the uh distance space station uh will
1231s cast this very very soft Shadow on your
1233s ship and these two kinds of shadows will
1235s seamlessly
1236s mix um we have a prototype working as
1239s you can see uh but it's still very much
1241s work in
1242s progress uh we also really want to want
1244s to improve the reflections we of course
1246s already have support for limited
1248s Reflections uh but rate tracing will
1250s truly help us take them to the to the
1252s next level uh you can imagine the the
1254s metal parts of your ships uh reflecting
1256s the dynamic environment around you in a
1258s in a way you haven't been able to see
1260s before um as well as or or for example
1263s uh seeing a perfect mirror-like
1265s reflection of your ship as you pass by a
1267s frozen asteroid no prototype here just
1270s yet but it's something we're very
1271s excited
1272s about um but of course graphical
1274s improvements aren't everything uh we
1277s also need to make sure that it all
1278s performs well uh we do always try to
1280s optimize our code and our shaders that
1282s like that uh but there is an upper limit
1284s to how far you can go with just minor
1285s code changes uh sometimes we need to
1288s take your completely different approach
1289s to uh to uh to rendering something to
1292s make sure that we maintain the
1294s performance and one of the biggest
1295s challenges there is just pixels it's
1298s just the sheer number of pixels that we
1299s need to render uh the number of pixels
1302s is of course determined by the
1303s resolution of your monitor uh 1080p
1305s monitor is about 2 million pixels 4K
1307s bumps that up to 8 million and that's
1309s the number of pixels we need to render
1311s every single
1312s frame um of course the cost of each
1315s pixel will also keep going up we are
1317s always adding new shading improvements
1318s such as the Shadows uh we're adding new
1320s special effects and post-processing
1322s effects to make sure that the game looks
1323s as good as it ever can um and on top of
1326s that we want to add rate tracing and all
1327s of these increase the amount of time we
1329s need to spend on each pixel uh and we
1332s can't forget about anti-aliasing uh
1335s anti-aliasing usually comes in in in the
1337s form of some kind of resolution increase
1340s uh again increasing the number the
1341s effective number of pixels we need to
1342s render uh so it kind of multiplies the
1345s cost yet again and obviously solution
1348s isn't get everyone to get a really
1349s expensive GPU would be nice but that's
1352s not the reality we live in um but then
1355s looking into anti-aliasing specifically
1357s well what is aliasing and why are we
1359s trying to get rid of it well uh aliasing
1362s is essentially an artifact of the way
1364s that uh gpus render uh triangles and
1367s things in general uh you basically have
1370s this binary test for each pixel that
1372s checks if the if the center of the pixel
1373s is covered by the triangle and if it is
1376s it's completely filled in and the end
1377s result is the image to the left here
1379s where uh you can see these ugly Jagged
1382s edges this kind of staircase pattern
1384s it's very typical of aling and uh
1387s anti-aliasing is essentially any kind of
1389s method that attempts to generate the
1391s image to the right which is something
1393s that just represents the actual physical
1395s shape of this triangle much more
1397s accurately but aing doesn't just happen
1400s at the edge of triangles uh it also
1401s happens it can also happen in the middle
1403s of triangles uh such as in the case of
1405s these specular highlights uh so what's
1408s happening here is that the the
1409s highlights on this hole here is uh they
1412s are very very thin and therefore it's
1414s essentially completely random if just a
1416s row of pixel centers happens to kind of
1419s randomly end up on this reflection and
1421s when they do they pop into existence and
1423s then briefly disappear again uh whenever
1425s the camera moves uh so it's essentially
1428s a problem of details that are smaller
1429s than a pixel that we can't capture with
1431s this uh one of the most naive and
1434s simplest uh approaches to anti-aliasing
1437s is super sampling it's a very simple
1439s idea uh instead of doing a single sample
1442s at the center of each pixel we simply do
1444s multiple samples uh it's effectively the
1446s same as just rendering at a higher
1448s resolution then at the end uh we kind of
1450s just average together all of the samples
1452s inside of a pixel which again
1454s effectively the same as of scaling the
1455s image down again um this is really
1458s really effective uh but it also is
1460s really expensive uh if we're doing four
1462s samples for each pixel for example
1464s that's four times the amount of shading
1465s work and lighting all that good all that
1467s good stuff um top of that we need four
1469s times the amount of memory to store all
1470s these samples and we also need four
1472s times the amount of bandwidth to read
1473s and write these samples so 1080p
1476s effectively becomes 4K 4K effectively
1478s becomes 8K everything just becomes so
1480s much worse but it is really really
1484s effective uh you can see the comparison
1486s here uh to the left we have no anti-
1488s lasing and to the right we have four
1489s time super sampling as you can see all
1491s of this ugly shimmering and like all
1493s this distracting shimmering is
1494s completely gone it looks absolutely
1497s amazing unfortunately because it's so
1499s expensive uh Eve has so far been forced
1501s to rely on something called multi
1503s sampling so multi sampling is uh an
1506s optimization of super sampling that
1507s essentially only tries to Super sample
1509s the triangle
1510s edges um so we're still only shading
1514s once per pixel uh but we actually choose
1516s which samples to actually write to uh we
1519s write the same color to all of the
1520s samples that are covered by the triangle
1522s you still need to pay for the memory and
1524s the bandwidth cost uh but the shading
1526s shading cost increase is ENT essentially
1528s negligible and that's where the the bulk
1530s of the cost comes the big drawback of
1533s this is of course there's no anti- eling
1535s for the shading in that case so if we
1537s again look at this shimmering image here
1540s the only thing that multi sampling
1541s really fixes is that top Jagged Edge
1544s like that staircase pattern on the edge
1545s of that that uh the H there you're not
1548s going to see any any kind of impact at
1550s all on the shimmering inside of
1553s triangles it would be really really nice
1555s if we could afford super sampling but we
1557s can't
1559s but what if we just we do we still do
1560s one sample per pixel but we kind of
1563s start moving it around inside of the
1565s inside of the pixel so we do a different
1567s Center every frame and then we kind of
1569s just add them all up at the end well
1572s that's the the foundational idea behind
1574s behind temporal
1576s anti-aliasing the idea is basically that
1577s you spread these samples out over time
1580s uh you do one sample per pixel but a
1582s different sample every frame uh the idea
1585s then is to blend it all together really
1586s carefully to get the effect the result
1588s of four time super sampling uh it's
1591s really effective and it's actually even
1593s faster than four times super sampling uh
1596s sorry four times multi sampling simply
1598s because we only need one sample per
1599s pixel just like when we have no
1601s anti-aliasing at all uh but you do need
1603s to be really really careful when doing
1605s this uh if you end up blending uh when
1607s you're not supposed to you can get
1609s blurriness you can get ghosting or you
1611s can see parts of the previous frame
1613s looks very terrible uh and if you and in
1616s fact if you blend too little you also
1617s get get problems you can't just disable
1619s the blending completely because then you
1621s will suddenly start to be able to see
1623s this kind of jittering motion around as
1625s you you switch you move where the pixel
1626s Center
1627s occurs and uh to take an actual visual
1630s example of this here's a very sumed
1632s image of an anger hanger you can see
1634s that it's very pixelated and you can
1636s also see that it has this these ugly
1637s staircase patterns everywhere uh this
1640s looks even worse in motion where you
1641s will have a lot of shimmering effects uh
1644s as this moves so when we apply temporal
1647s anti-al we will first start to uh uh
1650s sharpen the image as much as we can and
1653s then start kind of moving it around a
1654s little
1655s bit um and all of these images are
1659s slightly different so when we add them
1660s all together we end up with this really
1663s really nice and smooth result we still
1665s have all of the sharpness of the texture
1667s detail all of that good stuff but we
1669s have managed to eliminate the uh the uh
1671s staircase patterns and and on top of
1674s that it's much much more stable under
1675s motion looks very very good
1678s um but can we actually take this
1680s approach even further and it turns out
1682s that we can it's called temporal
1684s upscaling um the idea is to start at an
1687s even lower resolution we don't actually
1689s start at the full resolution uh you you
1691s can imagine moving this single sample
1693s that we have around in a in a 2X two
1695s area instead so over four pixels instead
1698s uh we then temporarily upscale this
1700s beyond the full resolution to again get
1702s this kind of super sampling effect uh
1705s and then scale it back down to full
1706s resolution while what your monor has and
1709s this works it works really well uh but
1711s it is even more challenging uh any kind
1713s of issues that you would normally have
1715s with temporal anti-aliasing uh such as
1717s uh flickering or uh blurriness or
1720s ghosting just becomes so much more
1722s obvious uh when you're doing when you're
1724s when you're kind of blowing it up to
1725s twice the size basically fortunately
1728s this isn't a problem that we really have
1729s to solve ourselves uh there are numerous
1731s temporal upscaling or at least only at
1734s least temporal upscaling functions uh uh
1737s algorithm that already exist and we are
1740s planning on supporting pretty much all
1741s of them so that you can pick the best
1743s solution for your specific graphics card
1745s uh we will we will be supporting AMD FSR
1747s 3 we will be supporting Nvidia dlss 3.5
1751s Intel Intel's xcss as well as metal FX
1754s upscaling on Mac so that kind of uh
1758s makes sure that even as we're adding all
1760s of these new features even on weer
1762s graphics cards you will you will be able
1763s to enable these new goodies with a
1765s minimal loss in in image quality from
1767s the upsale
1769s but uh your GPU isn't the only thing
1771s that's kind of struggling um what about
1774s the CPU well um the the the GPU and the
1778s CPU have a very interesting
1780s relationship uh they're essentially two
1783s completely separate processors that
1785s coexist inside of your computer and it
1787s kind of works the way that the the CPU
1789s sends commands to the GPU and tells us
1791s what to do and in some cases we can
1793s actually end up with a case where the
1795s CPU simply doesn't have the time to
1796s generate enough commands for for the GPU
1798s and the GPU will just sit idle and not
1801s have anything to do and that's where our
1803s GPU driven pipeline project comes into
1806s play uh it's quite a quite a bit of a
1809s complex topic so we will need to take a
1811s deep dive into into how this
1812s relationship between the CPU and the GPU
1814s work so to understand this let's have a
1817s look at the Timeline where we can see
1818s what the CPU and the GPU are up to at
1820s any given time when rendering a frame so
1823s the CPU is of course responsible for a
1824s lot of different things it's not just
1826s responsible for graphics
1828s uh things like physics uh networking uh
1831s Network code uh as well as the user
1834s interface all this kind of good stuff in
1835s a lot of other things this is a bit
1838s outside of my area I work with the
1839s graphics so I'm just going to group all
1841s of these up into this big block and call
1842s it
1843s gameplay uh but at some point the carbon
1846s engine uh will have processed all of the
1848s other subsystems and it's now time to uh
1851s start rendering something and at that
1853s point it will gather up a bunch of
1854s commands and it will kind of send them
1856s off to the GPU
1858s and the GPU will then start processing
1860s this and rendering that frame but the
1862s CPU doesn't just sit idle as it waits
1864s for this to to complete no it will
1866s immediately move on to the next frame uh
1868s and the frame after that once once
1870s that's done and in this case uh this
1872s works really really well uh the CPU even
1875s has a little bit of breathing time and
1877s the GPU is is taxed to its full capacity
1879s it's working 100% of the time but there
1882s are cases in Eve uh quite a few cases
1885s where this is not the case where this
1887s submitting of the Gathering up all of
1889s these commands and submitting them to
1891s the GPU actually takes longer than it
1893s takes for the GPU to render them uh and
1896s this can happen simply because of
1898s massive Fleet battles or a huge amount
1900s of detail and it also depends on your
1902s your your specific Hardware like the
1904s relative power of your CPU and the
1907s GPU um and in this case well we're
1909s wasting a lot of time on the GPU uh the
1911s GPU is essentially sitting idle for a
1913s very large amount of time uh and we
1915s could in theory push the GPU to render
1918s maybe maybe for maybe twice as many
1920s frames per second in this
1921s case um but to understand why this
1924s happens we need to look into what's what
1926s actually happens in this submit block to
1928s make it make it so expensive uh and to
1930s do that we need to figure out how we're
1932s rendering a single specific like a
1934s single Eve ship like a single ship in
1936s the in the universe of Eve so I present
1938s to you an eve ship I promise this is
1942s definitely a ship uh like a like a real
1945s Eve ship it has a mesh which is
1946s determined by the ship shape here it
1948s also has a Shader which is determined by
1950s the color here and it also has a
1951s material which is represented by the the
1953s texture applied to this uh so to render
1956s the ship uh we actually need to submit
1958s four separate commands to the GPU we
1961s need to set which color we want to
1962s render it with we need to set set the
1964s shape that we want to render and then we
1965s need to set the texture and once those
1967s are done we can submit what's called a
1969s draw call which is essentially a command
1972s that says yeah Draw Something using the
1974s previously said
1975s stuff uh and if we only we were only
1978s rendering one ship uh this would not be
1980s a problem whatsoever this is just four
1982s commands problem is Eve has a lot of
1984s ships some might even say dozens of
1986s times um so we need to we need to really
1989s be able to render this many many things
1992s and well the first thing we're going to
1993s do we're program I'm a program at least
1995s I love lists I'm going to move them all
1997s into a list uh this will make it much
1999s easier to work with and once they're all
2001s in the list well it isn't that difficult
2003s to just kind of do a naive Loop over
2005s this and render them we'll just go
2006s through all of the ships that we to
2007s render we'll set the color we'll set the
2009s shape we'll set the texture and issue a
2011s draw call uh there's actually 100 uh
2014s ships in this in this image or in the
2016s scene so uh we will end up with a total
2018s total of four four four times 100
2020s commands which is 400 very simple um
2024s however this is not the most efficient
2026s way of doing this we are actually
2027s switching between the same colors
2029s multiple times for example so we can
2031s actually eliminate a bunch of commands
2033s uh by kind of just reorganizing this
2034s data if we move this down here and then
2037s we make new lists we make one list for
2039s each color and then we kind of just take
2041s all of these ships we go through them
2043s and we sort them into their Rel into
2045s into the color we sort them based on the
2047s color that they have and put them in the
2048s corresponding list well it turns out
2050s that we can render these lists much much
2052s more efficiently now we no longer need
2054s to switch the color for every ship we
2055s can just set the color once and then
2057s render all of the ships that use that
2059s color and the end result is that we
2061s eliminate almost 25% of our commands and
2064s we can actually take this one step
2065s further uh we can start sorting Things
2066s based on shape they're they're using as
2068s well um and that that will allow us to
2071s to eliminate even more draw calls uh in
2073s in fact we can we we no longer need to
2075s change the shape as often now so we've
2077s even though we're rendering the exact
2078s same pixels on the screen the exact same
2080s triangles we are now doing it with
2082s almost uh like by we we sorry we are now
2086s doing it with with almost half the the
2088s the draw calls of what we were doing
2090s before uh and this process of kind of
2092s just reorganizing the data to to render
2095s it more efficiently is called batching
2097s and it's it's a very important thing so
2099s yeah uh problem solved right let's see
2102s what what happens with our timeline well
2104s our submit block is not really really
2106s tiny the problem is that now we have a
2108s baching block instead and that it turns
2111s out that just reshuffling all of this
2112s data and taking care of it is really
2114s expensive as
2115s well what if we just kind of take this
2118s original list of ships I we just ye it
2121s directly at the GPU with no regards for
2122s its safety we we just don't care and we
2125s kind of just let it figure it all out
2126s for itself
2128s that is what the GPU driven pipeline is
2130s all about uh so it turns out that gpus
2133s nowadays are really really flexible they
2135s can actually generate commands for
2137s themselves uh they don't need a CPU to
2139s tell them what to do anymore so we can
2142s actually have the GPU do dispatching for
2144s us and the best part of this well one of
2146s the good parts at least is that it's
2148s even faster than the CPU at doing it um
2151s the actual best part is that there's
2153s minimal CPU involvement uh the CPU is
2155s now free to do other things while the
2156s GPU keeps itself busy so if we look at
2160s our rendering Loop that we had before we
2161s can kind of eliminate everything inside
2163s of that Loop there and basically is set
2166s the colar and then tell the GPU to do
2168s its thing and we eliminate more than 90%
2170s of the the CPU side draw calls and
2172s commands that need to be sent there
2174s while the GPU still gets to execute all
2176s of those 200 plus draw calls that we had
2179s before but it's fine because the GPU was
2181s already not being taxed at full capacity
2183s so that that's all good and what happens
2186s to our timeline well we used to have
2187s this batching block that was on the CPU
2189s timeline that just magically moves down
2191s to the to the gpus timeline and in fact
2194s the batching block is actually
2195s significantly smaller than this this is
2197s just the smallest block I could get in
2198s that could still fit the word
2201s batching um so what is this ultimately
2203s mean for Eve well it's a complete
2205s restructuring of how things are rendered
2207s inside of Trinity uh it's a lot of work
2210s there's essentially no Shader that's
2211s going to come out UNSC UNSC by these
2214s changes uh it's a lot of work but but
2217s once it's done we are confident that we
2219s will be able to have a lot more objects
2221s on screen and we can really get let our
2223s artists go crazy with this and also more
2225s variation inside of those objects we no
2227s longer need to have copies of the same
2229s objects to make sure that it works well
2230s with with batching or something like
2231s that we can just have more unique
2233s objects and let the artists the artists
2235s just get more free hands but the best
2237s part about this is just that it frees up
2239s the CPU for game logic it means that the
2242s entire Graphics Engineers kind of moves
2244s out of the way of all the other systems
2246s that also required the CPU time which
2248s will for example uh enable for the new
2251s physics improvements uh that uh CCP
2253s tuxford was talking about
2255s before but then the big question is
2258s when and well CCP verdicts already
2261s spoiled this early
2263s 2024 uh we are we are uh we want to get
2266s all of these improvements uh including
2268s um the upscaling uh the rate tracing as
2272s well as the GPU driven pipeline done in
2274s early
2275s 2024 that leads me to my final question
2278s how do artists actually work with all of
2281s this new stuff that we're giving them
2283s and that's where I hand over to CCP
2296s Amino thank
2302s you
2306s hello
2308s so my name is CCP Amino I'm a tools
2311s developer with CCP and so our job is to
2315s try and take the power that carbon
2317s brings to our game and put it in a
2319s package that will allow artists and
2321s designers to leverage that to build
2323s great experiences for
2324s you so with the big investment in carbon
2328s we've also been making a big investment
2329s in these tools and I would like to
2331s introduce you to our new very internal
2333s only tool
2336s graphite
2338s so
2339s graphite is a sort of editor for
2342s everything you might want to do in the
2343s engine whether you're making a new ship
2345s scanning an old one building a whole new
2348s scene for you guys to explore in new
2351s Eden or even badly trying to make a
2354s trailer like I am
2355s here you can basically use it to
2358s Leverage The Power of carbon in order to
2361s build all of the experiences that we
2363s want to deliver to you in the game and
2365s we've been working on this for quite a
2366s while we've actually started from the
2368s the ground up with the UI here we've
2370s been trying to modernize our tools
2372s internally overall try and bring all of
2374s the capabilities of carbon together
2376s under one tool set and Empower our
2379s artists and designers to deliver bigger
2381s and Bolder
2382s experiences leveraging all of the new
2385s benefits with the new
2386s engine some of the improvements we've
2388s making are actually just really
2390s simple in some cases it's just about
2392s taking a system we already have fitting
2394s a turret to a ship and shooting another
2396s one making it explode making that feel a
2398s little bit more in our tool set like it
2400s does in the game the important part here
2402s is having artist being able to use this
2405s like they're going to like you're going
2407s to experience it will allow them to
2409s hopefully build a higher quality version
2411s of that turret something feels better to
2413s use is more fun to play with and they'll
2416s be able to get that experience a lot
2417s earlier in their development
2420s cycle in some cases it's about bringing
2422s tools
2424s home when it comes to doing things like
2426s defining Collision geometry we've
2428s historically leveraged third party tools
2431s have artists work in there build the
2433s kind of data that we need for carbon to
2434s consume in order to do uh the Collision
2437s work and that's a quite a a long- windy
2441s pipeline the artists will spend a lot of
2443s time and in this third party tool be
2444s Maya or blender try and author this data
2447s and then they've got to go through the
2448s process of getting it into the engine to
2450s see if it works see if it plays nicely
2453s to see if they've introduced some really
2454s weird bug where you get stuck in the
2456s middle of a station
2457s so by bringing these things all Under
2459s One Roof and bringing them home we plan
2462s to uh leverage this to deliver higher
2465s quality to you in the game
2469s experience in some cases we're actually
2472s looking to improve our developers
2473s experience as
2475s well many of the places they'll spend a
2478s lot of time doing things like crafting a
2480s beautiful scene for you to
2483s explore they want to visually tell a
2485s story use their art assets and show them
2487s off to build big cool things for you to
2489s discover and enjoy and we want them to
2492s spend more of their time expressing
2495s themselves and designing what they want
2497s to deliver at the end rather than
2499s spending time fighting against the
2500s engine and the tools that they have at
2501s their fingertips so we put a lot of time
2504s and effort into leveraging some of the
2506s performance benefits that come with
2508s carbon to give them a much nicer overall
2510s experience smoother prettier UI make it
2513s a little bit more functional make it a
2514s little bit more adaptive make it feel
2516s good
2517s if it's a pleasure for them to work
2520s with then hopefully they will deliver
2522s something very pleasurable for you in
2524s the
2525s end in some cases we are actually trying
2528s to make use of and Leverage The Power of
2531s some third party tools you have seen a
2533s lot of uh the new Cloud Tech being
2535s used this technology is uh authored by
2538s artist in something called Ember
2541s genen and that tool will spit out data
2543s that carbon can consume and we can put
2545s in the game
2547s before we can actually get it into the
2549s game there's a lot of other little
2550s things that go into a little bit of
2551s overhead and ultimately they end up
2554s working heavily in isolation inside of a
2556s tools set outside of our ecosystem
2558s crafting those
2560s clouds so what we're trying to do here
2562s with uh graphite is make sure that they
2564s have as smooth and as fast a pipeline so
2567s when they're using these third party
2568s tools to build big new clouds we are
2571s very quickly getting them into the
2572s engine in this case preferably almost
2575s instantly they make make a change in
2577s Amber gen and we want them to instantly
2578s see that in graphite but along with that
2581s by having all of our tools under one
2583s place having the tools that they use to
2585s author scenes this allows them to see
2587s not only their Cloud very quickly in
2589s engine and see what that's going to look
2590s like but see it in the kind of place
2591s that they're going to use it allowing
2593s them to craft more bespoke assets that
2596s fit the scene and better tell the story
2599s or better describe the experience that
2600s they want to give
2604s you in some cases we're leveraging whole
2606s new
2607s capabilities so carbon brings a lot of
2610s benefits in terms of new
2613s performance um better options and this
2615s provides new opportunities for designers
2617s and artists to take advantage of every
2620s time we save a couple of frames in the
2622s engine maybe that means explosions can
2624s be bigger maybe that means scenes can be
2626s more complex there's less restrictions
2628s on the work that they
2630s do and so this is quite an experimental
2633s feature for us but we're trying to
2635s Leverage The Power of third party Tools
2637s in this case blender again with a really
2639s direct pipeline so the artist can work
2642s in blender and craft very large assets
2646s hit one button and see it very quickly
2647s ported straight into the game try it out
2650s how does it feel to fly around how does
2651s it feel to bump into it how does it
2654s look and by giving them this pipeline
2657s plan is to allow them again very early
2659s and very experimental allow them the
2661s power to build much bigger and grander
2664s experiences overall and delivered to you
2667s the best possible experience that they
2669s can manage to make Eve awesome
2673s forever thank you very
2684s much so if you have any questions you
2687s find many of us around we're all very
2688s friendly come and say hi have a chat
2690s we'll happily talk your ear off for
2691s hours about all of this stuff uh but we
2694s also have a panel on the second floor so
2696s if you're in the mood we'd love to see
2698s you there at 1:30 thank
2705s you