YouTube2Text

What Modern CryEngine Does To Your GPU | A Much Needed Revisit — Transcript

by Threat Interactive · 4,422 words · 681 segments · language en · Watch on YouTube

Full transcript

  1. 0:00I'm about to show you how a Kingdom Come
  2. 0:01Deliverance 2 frame is generated on your
  3. 0:03GPU by showing you how a frame is built
  4. 0:06draw category by draw category. This
  5. 0:08video is going to do three major things
  6. 0:10for you as long as you watch the whole
  7. 0:11video. You learning about optimized
  8. 0:13rendering is going to drive up market
  9. 0:15value for optimized content. By having a
  10. 0:18good idea of how the pipeline works,
  11. 0:19I'll be able to explain where even more
  12. 0:21performance can be driven by Warhorse
  13. 0:23Studios in future Cry Engine versions.
  14. 0:26Then by the end of the video, I will
  15. 0:28have shared with you how to enhance your
  16. 0:29native anti-alias experience without the
  17. 0:31need of a specific GPU brand or cost
  18. 0:33like you would find with FSR2. We're
  19. 0:36going to do the capture in this opening
  20. 0:37scene. With a full system restart, the
  21. 0:39game takes about 80% at most of the 12
  22. 0:42GB desktop 30 for a Vsync 60 fps target
  23. 0:45on settings just high enough to enable
  24. 0:47basic graphic features like
  25. 0:49long-distance foliage and local light
  26. 0:51shadow casting. For the capture, it's a
  27. 0:53forward jump motion to stress test any
  28. 0:55velocity related effects. Our captured
  29. 0:58frame also has a modified TA, which I'll
  30. 1:01explain how to enable when we reach the
  31. 1:02anti-aliasing segment in our analysis.
  32. 1:05This is the whole pipeline. And notice
  33. 1:07that the frame consists of 10,000 draws.
  34. 1:09And I would suggest referencing what
  35. 1:10we've seen in past analysis done on this
  36. 1:12channel because that is the highest
  37. 1:14we've seen. I'm going to switch out the
  38. 1:16metrics so our performance outliers can
  39. 1:17stand out a bit more. The first part of
  40. 1:19the pipeline are stencil clears and copy
  41. 1:21buffer regions totaling at around.32
  42. 1:23milliseconds. This is followed by a
  43. 1:25compute shader that processes cloud
  44. 1:26information at a 0.25 millisecond cost.
  45. 1:29The prepass processing is started but
  46. 1:31only for alpha tested foliage which is
  47. 1:33awful to see if you're familiar with the
  48. 1:35consequences of context processing.
  49. 1:37Luckily the prepass measures under a.3
  50. 1:39millisecond cost due to a small amount
  51. 1:40of draws and only utilizing a single
  52. 1:43opacity atlas texture reducing the cost
  53. 1:45of context switching. Removing the
  54. 1:47prepass in real time frees up around 3%
  55. 1:50of the GPU usage. I would take that 3%
  56. 1:52but unfortunately parts of the graphic
  57. 1:54pipeline are somehow dependent on the
  58. 1:56partial prepass which could be fixed if
  59. 1:58Warhorse Studios looked into it. The
  60. 2:01base pass is processed right afterwards
  61. 2:03writing to an albido with an unspecified
  62. 2:04alpha channel. A depth stencil which
  63. 2:07only has two channels. a world normal
  64. 2:09with an alpha containing a most likely
  65. 2:11specular, but it could be any of these
  66. 2:12three values, which I know four of which
  67. 2:14are written to the fourth render target.
  68. 2:16Now, for most of the analysis we've seen
  69. 2:18on the channel, most base pass object
  70. 2:20draws average around 15 to 25
  71. 2:22microconds. Most of the draws in this
  72. 2:25pipeline are 6 to 8 micro, which is 2 to
  73. 2:27three times faster than what we usually
  74. 2:29see. But there's an enormous amount of
  75. 2:31draws, and the outliers are in the high
  76. 2:3340s of microsconds, and some are
  77. 2:35tripledigit outliers.
  78. 2:37Let's look at one of the first base mass
  79. 2:38draws being a wooden structure. It's a
  80. 2:41good testament to the engine's draw
  81. 2:42sorting, but let's analyze the resources
  82. 2:44it took. For the amount of surface area
  83. 2:47it shades and the associated microcond
  84. 2:49reading, I would say this is a standard
  85. 2:51shading cost. But we can see that four
  86. 2:53textures were used for the material. And
  87. 2:55you want to use as little textures as
  88. 2:57possible in a material. You need
  89. 2:59textures to hold the color, normals,
  90. 3:01opacity, and other PBR elements so that
  91. 3:03the various shaders can transfer that to
  92. 3:05the GBuffers. Textures can only hold
  93. 3:07four channels of information. So, you
  94. 3:09can combine multiple PBR elements that
  95. 3:12are represented in a range from 1 to
  96. 3:14zero in a singular texture. When you
  97. 3:16have displacement textures, depth bias,
  98. 3:18ambient occlusion maps, you might be
  99. 3:20thinking you're running out of room and
  100. 3:21need another texture. Well, we have a
  101. 3:23lot of tricks. For instance, I've seen
  102. 3:25people combine specular cavity and
  103. 3:27ambient occlusion maps into a single
  104. 3:28channel and then use contrast math in
  105. 3:30the pixel shader to separate the values
  106. 3:32on the fly as they're written to the
  107. 3:34GBuffers. With normals, they usually
  108. 3:36take up three channels like base color
  109. 3:38information. But with normals, you can
  110. 3:41completely omit the Z channel and
  111. 3:42implement code in the shader that
  112. 3:44calculates Z with only X and Y values.
  113. 3:46These relatively simple on the-ly
  114. 3:49calculations are still cheaper than
  115. 3:50sampling a whole other texture. Many
  116. 3:52draws in Days Gone in this wood
  117. 3:54structure in Cry Engine show two channel
  118. 3:56normals which means that they're using
  119. 3:58this trick. But this draw here in KCD2
  120. 4:01has a separate texture that is only
  121. 4:02using one channel. So the opportunity to
  122. 4:04produce the total texture count isn't
  123. 4:06being taken here. Chances are if this is
  124. 4:09being done once, many other objects in
  125. 4:11the game are also failing to optimize in
  126. 4:13this way. Now, for this video, because
  127. 4:15this game has so many outliers among
  128. 4:17many, many small draws, I'm going to
  129. 4:19highlight the draws and then fade to the
  130. 4:21albido gbuffer so you can see what those
  131. 4:22draws are responsible for. Remember, if
  132. 4:25it's written to the albido, it's being
  133. 4:26written to the other buffers
  134. 4:28simultaneously. The way that I'll
  135. 4:29organize how many draws I highlight at a
  136. 4:31time is by recognizing the outliers are
  137. 4:33appearing. For a bit of context, outlier
  138. 4:37one is a textbook example of bloated
  139. 4:39texture count. Outliers two and three
  140. 4:41are just foliage draws. Outlier 4
  141. 4:44consists of teslated draws, which makes
  142. 4:46no sense considering their distance. If
  143. 4:49you have fast eyes, you can catch their
  144. 4:50frame contribution being largely
  145. 4:52overwritten by later draws. Notice that
  146. 4:55it's common for hundreds of draws to
  147. 4:57only make a small difference on the
  148. 4:58frame. It's also pretty clear that cheap
  149. 5:00terrain prepassing would have been
  150. 5:02extremely beneficial in preventing pixel
  151. 5:05overdraw. Then, objects that are skinned
  152. 5:07are rendered with a velocity buffer.
  153. 5:09These are the only objects with velocity
  154. 5:11information. With Silent Hill 2 and Jedi
  155. 5:14Survivor, velocity was rendered for
  156. 5:15every object as they were drawn to the
  157. 5:17base pass. The next portion of draws
  158. 5:20adds more detail to the terrain. And
  159. 5:22since terrain has been oluded by other
  160. 5:24objects by the maximum amount, you won't
  161. 5:26have to pay too much for the cost you
  162. 5:28would usually find with nonpass terrain
  163. 5:30rendering. The only issue here is that
  164. 5:32all these objects should have been
  165. 5:34prepassed instead of the foliage.
  166. 5:36Speaking of foliage, with a prepass
  167. 5:38adding a readed cost of 29 milliseconds,
  168. 5:40we get a total cost of 1.3 milliseconds
  169. 5:43for foliage. But let's talk about what
  170. 5:45assets are used to render the foliage.
  171. 5:47Most of the foliage uses the same
  172. 5:49texture atlas. The albido and opacity
  173. 5:51are used in the biggest texture, while
  174. 5:53the normal and separate indeterminate
  175. 5:55texture are drawn at half the
  176. 5:56resolution. The last texture is also
  177. 5:58indeterminate at an even lower
  178. 6:00resolution. As you can see, there is a
  179. 6:02missed opportunity to produce the total
  180. 6:03texture count once again. But let's talk
  181. 6:06about how the foliage is drawn to the
  182. 6:07frame. Analyzing the Zpass, we can see
  183. 6:09that nearby LODs don't incorporate a
  184. 6:12close cutout like Days Gone. They're
  185. 6:13just very simple rectangles. Now, more
  186. 6:16vertices are not only important for
  187. 6:17nearby LODs so that they aren't
  188. 6:19evaluating if opacity needs to be
  189. 6:21written in that area, but also for
  190. 6:23smoother animations. Considering the
  191. 6:25choppy look in motion and the fact that
  192. 6:26this foliage doesn't produce motion
  193. 6:28vectors, I thought we might be seeing a
  194. 6:29flipbook like approach for animation
  195. 6:32where the animation or motion that would
  196. 6:34be calculated in a vertex shader is
  197. 6:35actually stored as another set of
  198. 6:37vertices with different positions
  199. 6:39representing the motion. Vertex color is
  200. 6:41an easy way to identify sets of vertices
  201. 6:44within a singular mesh sets which you
  202. 6:46can specify to be called in a specific
  203. 6:48order of drawn frames. The lack of
  204. 6:50motion vectors could be due to no actual
  205. 6:53moving vertices and you end up with a
  206. 6:54finite range of motion or sets of
  207. 6:56vertices that represent that motion. You
  208. 6:59can see one of the geometric meshes used
  209. 7:01in one of the foliage draws that
  210. 7:02supports this idea. If you're a Cry
  211. 7:04Engine engineer, I suggest commenting on
  212. 7:06what the technique is more adjacent to.
  213. 7:08The next portion of the pipeline
  214. 7:10processes three 1600 by600 cascaded
  215. 7:13shadow maps with 5,000 individual draws.
  216. 7:16Most of them average around 5 to 6
  217. 7:17micro. The most expensive ones of course
  218. 7:20are the foliage draws. For a total cost
  219. 7:22for all shadow related passes, we total
  220. 7:24at 4.6 milliseconds. Mesh based depth is
  221. 7:28easy to render as long as quad overdraw
  222. 7:30isn't too bad like we see with these
  223. 7:31rocks. It takes around 1 millisecond to
  224. 7:34draw foliage shadows because referencing
  225. 7:36an opacity texture is far more
  226. 7:38complicated and that gets multiplied by
  227. 7:39the amount of surface area shaded in the
  228. 7:41shadow maps. Most games opt for screen
  229. 7:44space shadows and exclude foliage from
  230. 7:45the shadow pass. But what we see in this
  231. 7:47game is quality that could not be
  232. 7:49provided by a screen space technique.
  233. 7:51What we appreciate about this shot is
  234. 7:53presented in the first cascaded shadow
  235. 7:55map which just takes around.5
  236. 7:57milliseconds to render.4 milliseconds is
  237. 7:59just foliage. The next cascade takes
  238. 8:01another.5 milliseconds and renders way
  239. 8:04more foliage including foliage way
  240. 8:06behind the camera's frustm which is the
  241. 8:08screen space perspective. Grass uses
  242. 8:10instancing but many instances that will
  243. 8:12never cast shadows into the frustm are
  244. 8:14being rendered. The solution would be
  245. 8:15frusting with a lenient threshold. But
  246. 8:18the main problem here is that most of
  247. 8:20the foliage is so far away, meshes
  248. 8:22shouldn't be drawn anyway. It should at
  249. 8:24the very most use the open source Ben
  250. 8:27Studio approach and incorporate a shadow
  251. 8:29filling like distance field shadows,
  252. 8:31which are supposed to run faster than
  253. 8:32shadow maps anyway. Distance field
  254. 8:34shadows won't provide movement, but from
  255. 8:36this distance, it's not going to matter.
  256. 8:38You just want a little cheap fill to
  257. 8:40complement ambient and screen space
  258. 8:41techniques so you can retain a bit of
  259. 8:43that far silhouette. The third cascade
  260. 8:45is where hell breaks loose because it's
  261. 8:47drawing 5,000 individual trees, rocks,
  262. 8:50and a bunch of little objects and we can
  263. 8:52see the same thing happening in the base
  264. 8:53pass. There are serious problems with
  265. 8:56distant environment management and that
  266. 8:57may come down to a deficiency in HLOG
  267. 9:00generation in Cry Engine. These draws
  268. 9:02could be reduced with a few draws using
  269. 9:04instancing like we saw with the foliage
  270. 9:06draws or excluded like we saw in days
  271. 9:08gone. These rocks should all be one big
  272. 9:11lower poly mesh, not tiny rocks drawn
  273. 9:14one after another. This is also far
  274. 9:16enough to justify less precise distance
  275. 9:17field shadows as well. The next part is
  276. 9:20a copy resource draw followed by decal
  277. 9:22rendering which works without the
  278. 9:24prepass like frostbite 3 unlike UE4 to
  279. 9:275's overly restrictive pipeline.
  280. 9:29Processing Spogy related information in
  281. 9:31this scene costs 1.4 milliseconds and
  282. 9:33updates these quarter resolution 270p
  283. 9:35diffused lighting buffers which are then
  284. 9:37upscaled to native using the original
  285. 9:39depth information. This is followed by
  286. 9:41another draw that shades SSR data in a
  287. 9:43540p texture for a2 millisecond cost. 47
  288. 9:47micros are used to update this 540p SSR
  289. 9:49composition buffer. A pixel shader takes
  290. 9:5227 milliseconds to shade SSDO. Then
  291. 9:54another pixel shader is used to smooth
  292. 9:56out the noise while referencing the
  293. 9:58original depth for.1 millisecond cost.
  294. 10:00This is now the fastest AO I've analyzed
  295. 10:02on the channel, but I don't find it
  296. 10:04shading very convincing. The pipeline
  297. 10:06then creates a shadow mask with screen
  298. 10:08space shadows and the cascaded shadow
  299. 10:10maps. The cloud shadows are added for
  300. 10:11the biggest
  301. 10:12cost. 1.3 milliseconds is used to shade
  302. 10:15the lighting using almost all the
  303. 10:17G-buffers and lighting textures shown
  304. 10:18before this. 1 millisecond is used to
  305. 10:21shade subsurface gathered skin. The next
  306. 10:23portion is made out of a lot of little
  307. 10:24draws, but it downs samples a lot of
  308. 10:26shadows along with fog and cloud
  309. 10:28shading, taking about a millisecond to
  310. 10:29complete. Many instances of hair are
  311. 10:32forward rendered at the cost of 27
  312. 10:34milliseconds, but none of these draws
  313. 10:35indicate using MSAA. Cal's hair and Jedi
  314. 10:38Survivor has a1 millisecond reading
  315. 10:40total, and it was not drawn to the
  316. 10:42prepass. In this secondary capture, this
  317. 10:44character's hair takes4 milliseconds to
  318. 10:46render, but that's after a 029 microcond
  319. 10:49cost was induced to shade partial
  320. 10:50geometric information in the base pass.
  321. 10:53That's a 15 millisecond cost for hair. A
  322. 10:56copy resource takes.1 milliseconds and
  323. 10:58transparencies are rendered at the cost
  324. 10:59of 45 milliseconds. The next part is
  325. 11:02anti-aliasing. Three draws process the
  326. 11:04morphological aa SMA at the cost of.3
  327. 11:07milliseconds. Unfortunately, SMA tends
  328. 11:09to be butchered in many games including
  329. 11:11this one. Warframe has a pretty good
  330. 11:13implementation along with Crisis 2
  331. 11:15remastered when modifying it with a
  332. 11:16console. FXA is butchered often as well,
  333. 11:19but I'll talk about that another time.
  334. 11:21When SMA is done right, like many
  335. 11:23reshade implementations, it does a good
  336. 11:25job at removing jagged edges.
  337. 11:27Morphological anti-aliasing or MLA will
  338. 11:30never fix normal discontinuities or
  339. 11:33shader aliasing. Just like how non MLA
  340. 11:36based TIA with somewhat retainable image
  341. 11:38clarity will never solve jagged edges in
  342. 11:40motion, which is one of my major issues
  343. 11:42with this presentation from Epic Games.
  344. 11:45Nobody talks about this, but jagged
  345. 11:46edges always fall apart in motion when
  346. 11:49using TAA that has no morphological
  347. 11:51fallback. Everyone goes on and on about
  348. 11:53temporal stability when jitter TA edges
  349. 11:56act sporadically in motion. After SMA is
  350. 11:59applied to the image, the next draw
  351. 12:00takes 025 milliseconds to imprint the
  352. 12:02current frame on the accumulation frame.
  353. 12:05This is another capture with the SMA
  354. 12:07fallback applied in the same jumping
  355. 12:09forward motion. See that detail on the
  356. 12:11road? That's impressive considering how
  357. 12:13far away it is. Here's what happens when
  358. 12:15the stock temporal accumulation is
  359. 12:16added. Goodbye detail. We'll miss you.
  360. 12:19Take a look at the character outline.
  361. 12:21Stock temporal accumulation adds a
  362. 12:23trailing effect. Notice the texture
  363. 12:25destruction on this wooden fence. Look
  364. 12:27at this character ghosting all around
  365. 12:29him. And I'm sure plenty of people are
  366. 12:31familiar with the ghosting inside this
  367. 12:33game. Take a look at this last portion.
  368. 12:35Notice the cloth detail, the hair and
  369. 12:37armor detail, this person's facial hair
  370. 12:40and eyes. Notice the wood texture and
  371. 12:42the stand here. This other person's
  372. 12:44eyes, mouth, almost identifiable
  373. 12:46fingers, the person's face next to him.
  374. 12:48The dog's eyes and nose are visible. The
  375. 12:51texture on the rocks and pot all
  376. 12:53obliterated. Notice the aggressive
  377. 12:55averaging on trees. All of this clearly
  378. 12:58translates into aggressive blur. And
  379. 13:00that makes tons of sense when you
  380. 13:01realize the developers pumped up a
  381. 13:03temporal variable far from its less
  382. 13:05blurry default value. If you ask me,
  383. 13:07this is a bit too convenient for Nvidia
  384. 13:09when content creators publish comparison
  385. 13:11footage between native and DLSS quality.
  386. 13:14But even the default is too
  387. 13:15blurry/acumulative.
  388. 13:17If you modify the AA with these
  389. 13:19commands, you'll find that the first
  390. 13:20shot showing the detailed road now
  391. 13:22retains that detail. There is still an
  392. 13:25averaging behavior existing as you can
  393. 13:26see on the foliage and tree detail, but
  394. 13:28the texture detail and small detail
  395. 13:30features are retained. I would say your
  396. 13:33end results will look even better
  397. 13:34because this capture was using slightly
  398. 13:36different commands. Now, let's discuss
  399. 13:38this area right here. Kind of jagged,
  400. 13:40right? But this is why we know there's
  401. 13:42an issue with the morphological
  402. 13:43fallback. But even with those edges
  403. 13:45existing, you will not be able to
  404. 13:47perceive them because the next frame
  405. 13:48will jitter in a position where those
  406. 13:50edges will be filled. But only if you're
  407. 13:52over 59 frames per second with a VSYNC
  408. 13:54or maybe free sync alike option because
  409. 13:56those prevent frames from being skipped
  410. 13:58on your monitor, which is needed to
  411. 14:00prevent perceived jitter. If you're
  412. 14:02playing at a high frame rate, you can
  413. 14:03try increasing the pattern sequence. You
  414. 14:05have 15 options, but that doesn't
  415. 14:07correlate to the sequence count. For
  416. 14:09every 30 or so frames, you have the
  417. 14:11opportunity to increase the sequence
  418. 14:12length by one jitter position. To really
  419. 14:15stress my point to people who defend
  420. 14:17fake frames as the future of gaming,
  421. 14:19fake frames cannot provide resolution
  422. 14:21enhancement. This game provides DA and
  423. 14:23native FSR2. DA like FSR4 should have
  424. 14:27zero place in conversations because they
  425. 14:29are proprietary. If it's proprietary,
  426. 14:31it's worthless to me and it should be
  427. 14:33worthless to you. Proprietary features
  428. 14:35shouldn't even be mentioned by content
  429. 14:37creators. Now, you're going to have
  430. 14:39people say, "But FSR2 Native looks
  431. 14:41smoother than your modified
  432. 14:43SMA2TX." Yes, it does look smoother.
  433. 14:46FSR2 is also 10 times more expensive,
  434. 14:48and the smooth image it produces is an
  435. 14:51irrelevant lie because it's just built
  436. 14:53off of a relevant accumulation that
  437. 14:55falls apart in motion. If you feel like
  438. 14:58the modified SMA2TX isn't smooth enough,
  439. 15:00first of all, I'm not saying it's
  440. 15:01perfect, but it's very close and it just
  441. 15:03needs a few areas updated. We haven't
  442. 15:05even gone into additional AA methods
  443. 15:07like shader AA in MIT filtering. If you
  444. 15:10want to defend the temporary and
  445. 15:11irrelevant resolve you get from
  446. 15:12something like FSR2 during still motion,
  447. 15:15what you really want is high resolution
  448. 15:17gaming/ an expensive gaming setup. This
  449. 15:19channel combats the mass gaslighting
  450. 15:21existing within parts of the industry
  451. 15:23that push porta solutions as an even
  452. 15:25remotely similar experience to real
  453. 15:27high-end resolution gaming. The next
  454. 15:29portion is another copy resource that
  455. 15:31takes 0.1 milliseconds along with a
  456. 15:32pixel shader that copies another texture
  457. 15:34taking 75 microsconds. Motion blur
  458. 15:37processing takes.35 micros. Screen space
  459. 15:40bloom and sun shafts take2 milliseconds
  460. 15:42to process. 13 milliseconds is used for
  461. 15:45color grading while making a copy of
  462. 15:46that image takes 47 micro. Doof
  463. 15:49processing takes 4 milliseconds followed
  464. 15:52by a 1 millisecond call that shades a
  465. 15:53completely unnoticeable post aa grain
  466. 15:56effect. The next 38 microconds for the
  467. 15:58UI wraps up the pipeline at a 15.28
  468. 16:01microcond total timing. That's pretty
  469. 16:03accurate with a live timing, but more so
  470. 16:05than any other game we've analyzed, its
  471. 16:07pipeline efficiency, in other words, FPS
  472. 16:09will tank significantly if background
  473. 16:11applications such as an empty browser
  474. 16:13tab or a non-recording OBS window is
  475. 16:15opened on the system. Luckily,
  476. 16:16screenshots are fast enough to capture
  477. 16:18the more accurate median FPS timing,
  478. 16:20which matches our budget table. There
  479. 16:22are a number of conclusions this frame
  480. 16:24alone provides. the thoughts and
  481. 16:26potential regarding the pre-pass logic,
  482. 16:27how we should be processing hair and
  483. 16:29texture formats. You had a deeper look
  484. 16:31at anti-aliasing potential, how poor
  485. 16:33instancing consequences can trickle into
  486. 16:35multiple passes, poor LEDs on teslated
  487. 16:38objects, the importance of quality H law
  488. 16:40generation and shadow fallbacks like
  489. 16:42distance fields. You can now reference
  490. 16:44the efficiency of this foliage approach
  491. 16:46in terms of topology and texture
  492. 16:47management. I think we need more tests
  493. 16:49measuring Atlas performance, but that
  494. 16:51doesn't seem to be the most harmful
  495. 16:53aspect in terms of performance in
  496. 16:54comparison with the poor texture packing
  497. 16:57and the fact the GPU keeps switching
  498. 16:59memory context on such a chunky VRM
  499. 17:01asset. I think a major feature engines
  500. 17:04need to start offering artists is the
  501. 17:05ability to specify the order of any
  502. 17:07draws accessing an atlas, such as the
  503. 17:09end of the base pass before pre-passed
  504. 17:11objects are shaded. This is all part of
  505. 17:13a draw ordering approach our videos have
  506. 17:15outlined using real scenarios and engine
  507. 17:18producers need to start building on the
  508. 17:19clear logic we're showing. But I really
  509. 17:21want to take a quick moment to talk
  510. 17:23about the LOD transitions. Cry engine
  511. 17:25uses order dithering which is good but
  512. 17:27the transitions are tied to the camera.
  513. 17:30Not only does this allow for slow
  514. 17:32noticeable transitions that can stay
  515. 17:33midway visible if you stop moving but
  516. 17:35it's also allowing overdraw to last
  517. 17:37longer on screen which can build up its
  518. 17:39presence in the frame surface area. If
  519. 17:41you don't know what overdraw is,
  520. 17:43reference my Nanite video in the pin
  521. 17:44comment on it. Another big problem with
  522. 17:46the order dithering is that the pixel
  523. 17:48alignment is constant and not slightly
  524. 17:50jittered like we saw with some days gone
  525. 17:52objects. Cry engine fades between the
  526. 17:54full order dithered spectrum. These last
  527. 17:57two are pivotal in preventing the eye in
  528. 17:59noticing patterns. The last issue with
  529. 18:01the dithering is how shadows relate to
  530. 18:03the LOD transitions. The shadow of the
  531. 18:05newest LOD pops in immediately before
  532. 18:08the newest LOD fades into the main view.
  533. 18:11It should be a synchronized dithered
  534. 18:13transition, similar to what you see in
  535. 18:14my Nanite video at minute 920. But
  536. 18:17something I'd like to bring attention to
  537. 18:18is the fact that this channel has shown
  538. 18:20a lot of footage conveying the best
  539. 18:21possible way to transition LODs with
  540. 18:24dithering. But we do dithering because
  541. 18:26real fading requires translucent
  542. 18:28shading, which is expensive and not even
  543. 18:30possible with the fur de GBuffers. But
  544. 18:32ninth gen adjacent hardware might
  545. 18:34actually provide enough power to support
  546. 18:36real fading by temporarily forward
  547. 18:38rendering the LODs during transitions.
  548. 18:41The shadow maps would still need
  549. 18:42dithering that matches the forward
  550. 18:44rendered fade speed, but it's still
  551. 18:46interesting idea for current hardware.
  552. 18:48Now, let's discuss the lighting. I'm not
  553. 18:50a fan of SSDO because of its artifacting
  554. 18:53resolve. It is set to compute at a half
  555. 18:55resolution by default, but even when you
  556. 18:57switch to full resolution, you still end
  557. 18:59up with the same artifacts. It is very
  558. 19:01cheap to compute, so if Cry cared, they
  559. 19:03could work on making it a bit smoother
  560. 19:05for a little bit of an extra cost. But
  561. 19:07I'll be removing it from the pipeline in
  562. 19:09the rest of the footage. Now, Fogge
  563. 19:11caters to the crisis scenario, which is
  564. 19:12founded on destruction, which means it
  565. 19:14iterates over information. This game
  566. 19:16will never change. It's the same problem
  567. 19:18Fortnite introduces to Unreal. But even
  568. 19:21with these foundation similarities,
  569. 19:23Svogi's runtime cost is extremely
  570. 19:25stable, always remaining under two
  571. 19:27milliseconds, even in the most complex
  572. 19:28scenarios I tested it against. But there
  573. 19:31are important things to take notes on.
  574. 19:33Here is a scene with no GI and only
  575. 19:35direct lighting. Fogi has an obvious
  576. 19:37impact on visuals, but a few aspects are
  577. 19:39a bit simple. For instance, most of the
  578. 19:41additional indirect light comes from a
  579. 19:43skylight. A quick refresher on what a
  580. 19:45skylight does is light the entire scene
  581. 19:47in a uniform color, usually blue, to
  582. 19:50create ambient lighting. Skylighting is
  583. 19:52old, basically free, and people really
  584. 19:54need to start recognizing it because
  585. 19:55whenever RTGI is referred to as
  586. 19:57groundbreaking, it's always compared
  587. 19:59against pure skylighting combined with
  588. 20:01some disgustingly outdated
  589. 20:03SSAO. Like many somewhat competently lit
  590. 20:06games, this one combines local GI data
  591. 20:09with a skylight. Though the skylight
  592. 20:10value is pumped up at such a high
  593. 20:12amount, it drowns out a lot of the
  594. 20:14realistic aspects of the bounce light
  595. 20:16quality. The local GI provides large
  596. 20:18scale indirect shadowing along with
  597. 20:20local color bleed. I have doubts
  598. 20:22regarding the efficiency in terms of
  599. 20:24color balance and the difference between
  600. 20:25large scale AO offered by Unreal's DFAO.
  601. 20:28Sogi is also prone to temporal smearing
  602. 20:30like Lumen due to temporally rendering
  603. 20:32at a quarter% screen resolution. Like
  604. 20:35SSDO, I think the fast performance
  605. 20:37points towards a clear direction for
  606. 20:38visual upgrades and stability. Our next
  607. 20:41conclusion topic regards shadows. Other
  608. 20:43than the fact that I had to pump up the
  609. 20:45shadow resolution using the high shadow
  610. 20:47preset just to get local shadow casting,
  611. 20:49that of which enables at a comedic
  612. 20:51distance of pointlessness, the fact that
  613. 20:52it fades instead of popping on and off
  614. 20:55is far better than what we get with
  615. 20:56Unreal. Once again, let's remember that
  616. 20:58Unreal is one of the few engines that
  617. 21:00doesn't support this basic aesthetic
  618. 21:02optimization. The last thing I want to
  619. 21:04bring attention to is the texture and
  620. 21:06PBR workflow. For a lot of PBR
  621. 21:08scenarios, a lot of productions skip out
  622. 21:10on texture represented aspects and
  623. 21:11replace them with constant values for
  624. 21:13things like specular or completely omit
  625. 21:15pre-calculated aspects like AO maps.
  626. 21:18These four things are hindering realism
  627. 21:19in game materials, channel packing
  628. 21:22concerns, improper material evaluation
  629. 21:25caused by testing these texture maps
  630. 21:26with skylighting instead of HDR
  631. 21:28imagebased lighting. lack of in-gend
  632. 21:30workflows that allow rust or
  633. 21:32inexperienced productions to feed their
  634. 21:33texture/ channel values into
  635. 21:35standardized unpacking approaches. We're
  636. 21:38talking about untapped channel packing
  637. 21:40potential that could bring most object
  638. 21:41draws down to just two textures or three
  639. 21:44textures with a high amount of
  640. 21:45precomputed photorealistic properties.
  641. 21:47But in order to have good workflows, you
  642. 21:49have to have good defined standards in
  643. 21:51the shaders first. But that's a huge
  644. 21:54topic that this channel will have to
  645. 21:55cover in a specialized video. That wraps
  646. 21:57up this analysis. We hope you found it
  647. 21:59interesting and educational. If you did,
  648. 22:01press like and subscribe. And if you
  649. 22:03really want to support this kind of
  650. 22:04content and raise consumer awareness,
  651. 22:06share this video aggressively,
  652. 22:08specifically in Discord channels, gaming
  653. 22:10subreddits, forums, and repost your
  654. 22:12thoughts on social media. It takes about
  655. 22:14four weeks for us to produce new
  656. 22:16content. We have had to deal with
  657. 22:17various Pinocchios out there telling
  658. 22:19blatant lies and slander about our
  659. 22:21company. One person even made a claim
  660. 22:23that we've been fundraising money for
  661. 22:25over a year. when it's 100% provable,
  662. 22:27and you can check this for yourself,
  663. 22:28that we've only been publishing videos
  664. 22:30for about 9 months. Because many of you
  665. 22:32asked us how you can help, we gave
  666. 22:34simple instructions on our website on
  667. 22:36how to give our channel a super thanks.
  668. 22:38But after we did that, now we have
  669. 22:39supporters asking us to get a Patreon,
  670. 22:41and we are happy to announce we finally
  671. 22:43have. We had two missions when we began
  672. 22:45this YouTube journey. The first was to
  673. 22:47facilitate positive and powerful change
  674. 22:49in the consumer and developers. The
  675. 22:51second was to publish our game once UE5
  676. 22:54solutions were found. We have never
  677. 22:55wavered from our goals. Your support in
  678. 22:57the form of likes, subs, and super
  679. 22:59thanks help us grow and keep us going.
  680. 23:02Thank you so much to every single viewer
  681. 23:03and for your positive feedback.

About this transcript

This page contains the full transcript of What Modern CryEngine Does To Your GPU | A Much Needed Revisit by Threat Interactive, generated from the public captions YouTube serves with the video. The transcript has 4,422 words across 681 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.

What you can do with it

Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.

Free YouTube transcript tool

YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.