Commit 00b1a20
committed
Avoid creating per-camera render states
Now we usually only create one render state per scene. Instead of creating camera-specific render states, the view-dependent light uniforms are updated with a separate function whenever rendering. This helps avoid initMaterial calls when rendering cube maps or array cameras, improving performance dramatically.
The only exception is handling nested render() calls done from callbacks. These are sometimes used to render the same scene from a different viewpoint, for example to generate a mirror reflection. They could also potentially modify the scene in some other ways. For these reasons they can't share the same render state.
Related issues: #128831 parent 0576e70 commit 00b1a20
File tree
5 files changed
+131
-54
lines changed- src/renderers
- webgl
5 files changed
+131
-54
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
61 | 66 | | |
62 | 67 | | |
63 | 68 | | |
| |||
870 | 875 | | |
871 | 876 | | |
872 | 877 | | |
873 | | - | |
| 878 | + | |
874 | 879 | | |
875 | 880 | | |
876 | 881 | | |
| |||
889 | 894 | | |
890 | 895 | | |
891 | 896 | | |
892 | | - | |
| 897 | + | |
893 | 898 | | |
894 | 899 | | |
895 | 900 | | |
| |||
1004 | 1009 | | |
1005 | 1010 | | |
1006 | 1011 | | |
1007 | | - | |
| 1012 | + | |
1008 | 1013 | | |
1009 | 1014 | | |
| 1015 | + | |
| 1016 | + | |
1010 | 1017 | | |
1011 | 1018 | | |
1012 | 1019 | | |
| |||
1034 | 1041 | | |
1035 | 1042 | | |
1036 | 1043 | | |
1037 | | - | |
| 1044 | + | |
| 1045 | + | |
1038 | 1046 | | |
1039 | 1047 | | |
1040 | 1048 | | |
| |||
1088 | 1096 | | |
1089 | 1097 | | |
1090 | 1098 | | |
| 1099 | + | |
| 1100 | + | |
| 1101 | + | |
| 1102 | + | |
| 1103 | + | |
| 1104 | + | |
| 1105 | + | |
| 1106 | + | |
| 1107 | + | |
| 1108 | + | |
| 1109 | + | |
1091 | 1110 | | |
1092 | | - | |
1093 | 1111 | | |
1094 | 1112 | | |
1095 | 1113 | | |
| |||
1245 | 1263 | | |
1246 | 1264 | | |
1247 | 1265 | | |
1248 | | - | |
| 1266 | + | |
1249 | 1267 | | |
1250 | 1268 | | |
1251 | 1269 | | |
| |||
1268 | 1286 | | |
1269 | 1287 | | |
1270 | 1288 | | |
1271 | | - | |
1272 | 1289 | | |
1273 | 1290 | | |
1274 | 1291 | | |
| |||
1290 | 1307 | | |
1291 | 1308 | | |
1292 | 1309 | | |
1293 | | - | |
1294 | 1310 | | |
1295 | 1311 | | |
1296 | 1312 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | | - | |
| 39 | + | |
| 40 | + | |
40 | 41 | | |
41 | 42 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
199 | 199 | | |
200 | 200 | | |
201 | 201 | | |
202 | | - | |
| 202 | + | |
203 | 203 | | |
204 | 204 | | |
205 | 205 | | |
| |||
215 | 215 | | |
216 | 216 | | |
217 | 217 | | |
218 | | - | |
219 | | - | |
220 | 218 | | |
221 | 219 | | |
222 | 220 | | |
| |||
248 | 246 | | |
249 | 247 | | |
250 | 248 | | |
251 | | - | |
252 | | - | |
253 | | - | |
254 | | - | |
255 | 249 | | |
256 | 250 | | |
257 | 251 | | |
| |||
281 | 275 | | |
282 | 276 | | |
283 | 277 | | |
284 | | - | |
285 | 278 | | |
286 | 279 | | |
287 | 280 | | |
288 | 281 | | |
289 | | - | |
290 | | - | |
291 | | - | |
292 | | - | |
293 | | - | |
294 | 282 | | |
295 | 283 | | |
296 | 284 | | |
| |||
328 | 316 | | |
329 | 317 | | |
330 | 318 | | |
331 | | - | |
332 | | - | |
333 | | - | |
334 | | - | |
335 | | - | |
336 | | - | |
337 | | - | |
338 | | - | |
339 | | - | |
340 | 319 | | |
341 | 320 | | |
342 | 321 | | |
343 | | - | |
344 | | - | |
345 | | - | |
346 | | - | |
347 | | - | |
348 | | - | |
349 | 322 | | |
350 | 323 | | |
351 | 324 | | |
| |||
354 | 327 | | |
355 | 328 | | |
356 | 329 | | |
357 | | - | |
358 | | - | |
359 | | - | |
360 | 330 | | |
361 | 331 | | |
362 | 332 | | |
| |||
390 | 360 | | |
391 | 361 | | |
392 | 362 | | |
393 | | - | |
394 | | - | |
395 | | - | |
396 | | - | |
397 | 363 | | |
398 | 364 | | |
399 | 365 | | |
| |||
459 | 425 | | |
460 | 426 | | |
461 | 427 | | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
462 | 513 | | |
463 | 514 | | |
| 515 | + | |
464 | 516 | | |
465 | 517 | | |
466 | 518 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
| 15 | + | |
| 16 | + | |
16 | 17 | | |
17 | 18 | | |
18 | 19 | | |
19 | 20 | | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
23 | | - | |
| 24 | + | |
24 | 25 | | |
25 | 26 | | |
26 | 27 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
| 29 | + | |
30 | 30 | | |
31 | | - | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
32 | 38 | | |
33 | 39 | | |
34 | 40 | | |
| |||
43 | 49 | | |
44 | 50 | | |
45 | 51 | | |
| 52 | + | |
46 | 53 | | |
47 | 54 | | |
48 | 55 | | |
| |||
54 | 61 | | |
55 | 62 | | |
56 | 63 | | |
57 | | - | |
| 64 | + | |
58 | 65 | | |
59 | 66 | | |
60 | 67 | | |
61 | 68 | | |
62 | 69 | | |
63 | 70 | | |
64 | | - | |
65 | | - | |
| 71 | + | |
| 72 | + | |
66 | 73 | | |
67 | 74 | | |
68 | 75 | | |
69 | | - | |
| 76 | + | |
70 | 77 | | |
71 | 78 | | |
72 | | - | |
| 79 | + | |
73 | 80 | | |
74 | 81 | | |
75 | 82 | | |
76 | | - | |
| 83 | + | |
77 | 84 | | |
78 | 85 | | |
79 | 86 | | |
| |||
0 commit comments