Skip to content

Reuse renderer in tests#668

Merged
cdata merged 1 commit intocache_envfrom
reuse_renderer
Jul 11, 2019
Merged

Reuse renderer in tests#668
cdata merged 1 commit intocache_envfrom
reuse_renderer

Conversation

@elalish
Copy link
Contributor

@elalish elalish commented Jun 28, 2019

Still working on getting our tests to pass. All those Safari warnings about too many WebGL contexts made me dig in a little. I found this thread pixijs/pixijs#2233 (comment) which says that Three's renderer.dispose() method only simulates a context being destroyed and there's no guarantee the browsers actually clean up at that point. Everyone seems to think the best answer to create a renderer (and therefore a context) once, and always reuse it. We were doing that everywhere except our tests, so I've updated them, and even on Chrome they run markedly faster. We still create and (try to) destroy a few in tests that don't involve an element. I'm not sure if it's worth it to try and make those share a renderer too.

@elalish elalish requested a review from cdata June 28, 2019 21:00
@elalish elalish self-assigned this Jun 28, 2019
@cdata
Copy link
Contributor

cdata commented Jul 11, 2019

Generally seems fine. It's worth noting that this effectively undoes one of the memory optimizations we put in place earlier in #438. Let's move forward and keep an eye on the Safari results for warning signs that this created a regression.

@cdata
Copy link
Contributor

cdata commented Jul 11, 2019

It's also worth mentioning that calling renderer.dispose() is not about cleaning out the WebGL context. It's mainly for cleaning up Three.js internal object references.

https://github.com/mrdoob/three.js/blob/78b74d23c48493370d77e53b38137db8974ac835/src/renderers/WebGLRenderer.js#L571-L576

@cdata cdata merged commit f3f6bc8 into cache_env Jul 11, 2019
cdata pushed a commit that referenced this pull request Jul 12, 2019
elalish added a commit that referenced this pull request Jul 22, 2019
* removed pmrem attribute

* removed pmrem attribute from non-code files

* default environment map now uses PMREM

* fixed tests

* using PMREM for all cases, fixing #565

* increasing sauce timeout to 3min

* target caching works

* removed extraneous cache, cleaned up generation

* added LDR and HDR environment tests

* updated goldens

* Reuse renderer in tests (#668)

* Refactor envmap / skybox generation

* default stage light to zero, removed hemisphere light (#674)

* Switch environment generation from HalfFloat to RGBE (#670)

* generated environment map now RGBM16

* switched RGBM16 to RGBE

* started gaussianBlur

* gaussianBlur compiles

* gaussian blur functional

* gaussianBlur properly parameterized

* target caching works

* removed extraneous cache, cleaned up generation

* Reuse renderer in tests

* switched cubeGenerators

* reuse renderer in TextureUtils-spec

* addressing feedback

* generated environment map now RGBM16

* switched RGBM16 to RGBE

* started gaussianBlur

* gaussianBlur compiles

* gaussian blur functional

* gaussianBlur properly parameterized

* switched cubeGenerators

* reuse renderer in TextureUtils-spec

* addressing feedback

* fixed IE11 shader bug

* addressing feedback

* Remove accidental render target disposal
elalish added a commit that referenced this pull request Aug 6, 2019
* removed pmrem attribute

* removed pmrem attribute from non-code files

* default environment map now uses PMREM

* fixed tests

* using PMREM for all cases, fixing #565

* increasing sauce timeout to 3min

* target caching works

* removed extraneous cache, cleaned up generation

* added LDR and HDR environment tests

* updated goldens

* Reuse renderer in tests (#668)

* Refactor envmap / skybox generation

* default stage light to zero, removed hemisphere light (#674)

* added new PMREMGenerator

* modified MeshStandardShader to show it can work

* Switch environment generation from HalfFloat to RGBE (#670)

* generated environment map now RGBM16

* switched RGBM16 to RGBE

* started gaussianBlur

* gaussianBlur compiles

* gaussian blur functional

* gaussianBlur properly parameterized

* target caching works

* removed extraneous cache, cleaned up generation

* Reuse renderer in tests

* switched cubeGenerators

* reuse renderer in TextureUtils-spec

* addressing feedback

* generated environment map now RGBM16

* switched RGBM16 to RGBE

* started gaussianBlur

* gaussianBlur compiles

* gaussian blur functional

* gaussianBlur properly parameterized

* switched cubeGenerators

* reuse renderer in TextureUtils-spec

* addressing feedback

* fixed IE11 shader bug

* added envmap chunk

* updated three's shaders

* fixed shaders

* shaders compile

* fixed all WebGL errors

* PMREMGenerator now takes any encoding of input texture

* fixed several shader bugs

* fixed mipmap generation

* fixed maxLod

* PMREM mostly working

* recreate intermediate targets

* fixed mipmap level selection

* minor cleanup

* addressing feedback

* refactored PMREM

* cleanup

* dispose of temp materials

* removed envMap hack

* removed android sauce test
elalish added a commit that referenced this pull request Aug 13, 2019
* removed pmrem attribute

* removed pmrem attribute from non-code files

* default environment map now uses PMREM

* fixed tests

* using PMREM for all cases, fixing #565

* increasing sauce timeout to 3min

* target caching works

* removed extraneous cache, cleaned up generation

* added LDR and HDR environment tests

* updated goldens

* Reuse renderer in tests (#668)

* Refactor envmap / skybox generation

* default stage light to zero, removed hemisphere light (#674)

* added new PMREMGenerator

* modified MeshStandardShader to show it can work

* Switch environment generation from HalfFloat to RGBE (#670)

* generated environment map now RGBM16

* switched RGBM16 to RGBE

* started gaussianBlur

* gaussianBlur compiles

* gaussian blur functional

* gaussianBlur properly parameterized

* target caching works

* removed extraneous cache, cleaned up generation

* Reuse renderer in tests

* switched cubeGenerators

* reuse renderer in TextureUtils-spec

* addressing feedback

* generated environment map now RGBM16

* switched RGBM16 to RGBE

* started gaussianBlur

* gaussianBlur compiles

* gaussian blur functional

* gaussianBlur properly parameterized

* switched cubeGenerators

* reuse renderer in TextureUtils-spec

* addressing feedback

* fixed IE11 shader bug

* added envmap chunk

* updated three's shaders

* fixed shaders

* shaders compile

* fixed all WebGL errors

* PMREMGenerator now takes any encoding of input texture

* fixed several shader bugs

* fixed mipmap generation

* fixed maxLod

* PMREM mostly working

* recreate intermediate targets

* fixed mipmap level selection

* minor cleanup

* addressing feedback

* refactored PMREM

* cleanup

* dispose of temp materials

* removed envMap hack

* blurring skybox

* HDR skyboxes are now interpolated

* reduced skybox resolution to match input

* minor cleanup

* fixed skybox metadata

* reduced cubemapSize, cleanup

* updated all environments to 1k

* re-enable Android tests

* Revert "re-enable Android tests"

This reverts commit f743b26.

* addressing feedback

* Gaussian blur returns a new target
cdata pushed a commit that referenced this pull request Aug 13, 2019
* removed pmrem attribute

* removed pmrem attribute from non-code files

* default environment map now uses PMREM

* fixed tests

* using PMREM for all cases, fixing #565

* increasing sauce timeout to 3min

* target caching works

* removed extraneous cache, cleaned up generation

* added LDR and HDR environment tests

* updated goldens

* Reuse renderer in tests (#668)

* Refactor envmap / skybox generation

* default stage light to zero, removed hemisphere light (#674)

* added new PMREMGenerator

* modified MeshStandardShader to show it can work

* Switch environment generation from HalfFloat to RGBE (#670)

* generated environment map now RGBM16

* switched RGBM16 to RGBE

* started gaussianBlur

* gaussianBlur compiles

* gaussian blur functional

* gaussianBlur properly parameterized

* target caching works

* removed extraneous cache, cleaned up generation

* Reuse renderer in tests

* switched cubeGenerators

* reuse renderer in TextureUtils-spec

* addressing feedback

* generated environment map now RGBM16

* switched RGBM16 to RGBE

* started gaussianBlur

* gaussianBlur compiles

* gaussian blur functional

* gaussianBlur properly parameterized

* switched cubeGenerators

* reuse renderer in TextureUtils-spec

* addressing feedback

* fixed IE11 shader bug

* added envmap chunk

* updated three's shaders

* fixed shaders

* shaders compile

* fixed all WebGL errors

* PMREMGenerator now takes any encoding of input texture

* fixed several shader bugs

* fixed mipmap generation

* fixed maxLod

* PMREM mostly working

* recreate intermediate targets

* fixed mipmap level selection

* minor cleanup

* addressing feedback

* refactored PMREM

* cleanup

* dispose of temp materials

* removed envMap hack

* blurring skybox

* HDR skyboxes are now interpolated

* reduced skybox resolution to match input

* minor cleanup

* fixed skybox metadata

* reduced cubemapSize, cleanup

* updated all environments to 1k

* re-enable Android tests

* Revert "re-enable Android tests"

This reverts commit f743b26.

* addressing feedback

* Gaussian blur returns a new target
@cdata cdata added this to the v0.6.0 milestone Aug 13, 2019
@elalish elalish deleted the reuse_renderer branch September 27, 2019 16:45
elalish added a commit to elalish/model-viewer that referenced this pull request Feb 4, 2020
 
Remove experimental-pmrem flag (google#591)

* removed pmrem attribute

* removed pmrem attribute from non-code files

* default environment map now uses PMREM

* fixed tests

* using PMREM for all cases, fixing google#565

* increasing sauce timeout to 3min

* target caching works

* removed extraneous cache, cleaned up generation

* added LDR and HDR environment tests

* updated goldens

* Reuse renderer in tests (google#668)

* Refactor envmap / skybox generation

* default stage light to zero, removed hemisphere light (google#674)

* Switch environment generation from HalfFloat to RGBE (google#670)

* generated environment map now RGBM16

* switched RGBM16 to RGBE

* started gaussianBlur

* gaussianBlur compiles

* gaussian blur functional

* gaussianBlur properly parameterized

* target caching works

* removed extraneous cache, cleaned up generation

* Reuse renderer in tests

* switched cubeGenerators

* reuse renderer in TextureUtils-spec

* addressing feedback

* generated environment map now RGBM16

* switched RGBM16 to RGBE

* started gaussianBlur

* gaussianBlur compiles

* gaussian blur functional

* gaussianBlur properly parameterized

* switched cubeGenerators

* reuse renderer in TextureUtils-spec

* addressing feedback

* fixed IE11 shader bug

* addressing feedback

* Remove accidental render target disposal
elalish added a commit to elalish/model-viewer that referenced this pull request Feb 4, 2020
 
New PMREM (google#684)

* removed pmrem attribute

* removed pmrem attribute from non-code files

* default environment map now uses PMREM

* fixed tests

* using PMREM for all cases, fixing google#565

* increasing sauce timeout to 3min

* target caching works

* removed extraneous cache, cleaned up generation

* added LDR and HDR environment tests

* updated goldens

* Reuse renderer in tests (google#668)

* Refactor envmap / skybox generation

* default stage light to zero, removed hemisphere light (google#674)

* added new PMREMGenerator

* modified MeshStandardShader to show it can work

* Switch environment generation from HalfFloat to RGBE (google#670)

* generated environment map now RGBM16

* switched RGBM16 to RGBE

* started gaussianBlur

* gaussianBlur compiles

* gaussian blur functional

* gaussianBlur properly parameterized

* target caching works

* removed extraneous cache, cleaned up generation

* Reuse renderer in tests

* switched cubeGenerators

* reuse renderer in TextureUtils-spec

* addressing feedback

* generated environment map now RGBM16

* switched RGBM16 to RGBE

* started gaussianBlur

* gaussianBlur compiles

* gaussian blur functional

* gaussianBlur properly parameterized

* switched cubeGenerators

* reuse renderer in TextureUtils-spec

* addressing feedback

* fixed IE11 shader bug

* added envmap chunk

* updated three's shaders

* fixed shaders

* shaders compile

* fixed all WebGL errors

* PMREMGenerator now takes any encoding of input texture

* fixed several shader bugs

* fixed mipmap generation

* fixed maxLod

* PMREM mostly working

* recreate intermediate targets

* fixed mipmap level selection

* minor cleanup

* addressing feedback

* refactored PMREM

* cleanup

* dispose of temp materials

* removed envMap hack

* removed android sauce test
elalish added a commit to elalish/model-viewer that referenced this pull request Feb 4, 2020
 
Blur skybox (google#695)

* removed pmrem attribute

* removed pmrem attribute from non-code files

* default environment map now uses PMREM

* fixed tests

* using PMREM for all cases, fixing google#565

* increasing sauce timeout to 3min

* target caching works

* removed extraneous cache, cleaned up generation

* added LDR and HDR environment tests

* updated goldens

* Reuse renderer in tests (google#668)

* Refactor envmap / skybox generation

* default stage light to zero, removed hemisphere light (google#674)

* added new PMREMGenerator

* modified MeshStandardShader to show it can work

* Switch environment generation from HalfFloat to RGBE (google#670)

* generated environment map now RGBM16

* switched RGBM16 to RGBE

* started gaussianBlur

* gaussianBlur compiles

* gaussian blur functional

* gaussianBlur properly parameterized

* target caching works

* removed extraneous cache, cleaned up generation

* Reuse renderer in tests

* switched cubeGenerators

* reuse renderer in TextureUtils-spec

* addressing feedback

* generated environment map now RGBM16

* switched RGBM16 to RGBE

* started gaussianBlur

* gaussianBlur compiles

* gaussian blur functional

* gaussianBlur properly parameterized

* switched cubeGenerators

* reuse renderer in TextureUtils-spec

* addressing feedback

* fixed IE11 shader bug

* added envmap chunk

* updated three's shaders

* fixed shaders

* shaders compile

* fixed all WebGL errors

* PMREMGenerator now takes any encoding of input texture

* fixed several shader bugs

* fixed mipmap generation

* fixed maxLod

* PMREM mostly working

* recreate intermediate targets

* fixed mipmap level selection

* minor cleanup

* addressing feedback

* refactored PMREM

* cleanup

* dispose of temp materials

* removed envMap hack

* blurring skybox

* HDR skyboxes are now interpolated

* reduced skybox resolution to match input

* minor cleanup

* fixed skybox metadata

* reduced cubemapSize, cleanup

* updated all environments to 1k

* re-enable Android tests

* Revert "re-enable Android tests"

This reverts commit f743b26.

* addressing feedback

* Gaussian blur returns a new target
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants