Describe how internal array sizes affect frame rate
parent
3be9c4479c
commit
7826d7b47c
13
Display.md
13
Display.md
@ -6,8 +6,19 @@ Right now, we're drawing all the spheres in a single fragment shader. For each p
|
||||
|
||||
## Performance limits
|
||||
|
||||
* **Array size.** As of commit `a34fd0f`, the SPHERE_MAX array size seems to affect frame rate a lot, even though we should only be using the first few elements of each array. Not sure whether this is coming from a depth-sorting bug, a memory handling detail, or something else.
|
||||
* **Array size.** As of commit `a34fd0f`, the `SPHERE_MAX` array size seems to affect frame rate a lot, even though we should only be using the first few elements of each array. Not sure whether this is coming from a depth-sorting bug, a memory handling detail, or something else.
|
||||
* The logistics of initializing the arrays and working around register limits could be the problem, as described in [this forum post](http://gamedev.net/forums/topic/688607-glsl-shader-slow-when-having-too-big-arrays/5342186/).
|
||||
* Commit `ec48592` adds a crude frame time monitor, so we can see how changes affect timing. In commit `f62f44b`, we can adjust the size of the internal fragment arrays (controlled by `SPHERE_MAX_INTERNAL`) while keeping the size of the uniforms (controlled by `SPHERE_MAX_UNIFORM`) at `12`. The rough measurements below confirm that the internal array size can affect frame rate a lot, even though we only use the first three spheres' worth of elements.
|
||||
`SPHERE_MAX_INTERNAL` | Frame time (ms)
|
||||
-----|-----
|
||||
3 | 16.7
|
||||
4 | 16.7
|
||||
5 | 16.7
|
||||
6 | 16.8
|
||||
8 | 19.7
|
||||
10 | 22.4
|
||||
12 | 25.1
|
||||
14 | 28.6
|
||||
* **Shader variables.** Browsers seem to limit the number of variables that fragment shaders can store. For example, see this [vulnerability report](https://issues.chromium.org/issues/40067239) and [code review](https://chromium-review.googlesource.com/c/angle/angle/+/4503753) for Chromium. This limit doesn't seem to be part of the OpenGL standard, so it's hard to pin down.
|
||||
|
||||
## References
|
||||
|
Loading…
Reference in New Issue
Block a user