Commit graph

567 commits

Author SHA1 Message Date
Richard Davey
38e7495b61 Fixed default normal map so all Game Objects will now render
* The pipeline now works with Game Objects that do not have a normal map. They will be rendered using the new default normal map, which allows for a flat light effect to pass over them and merge with their diffuse map colors.
2020-07-16 11:04:10 +01:00
Richard Davey
93d0378143 Added missing jsdocs 2020-07-16 11:03:49 +01:00
Richard Davey
84968f502f Update ForwardDiffuseLightPipeline.js
* The pipeline will no longer look-up and set all of the light uniforms unless the `Light` is dirty.
* The pipeline will no longer reset all of the lights unless the quantity of lights has changed.
2020-07-16 03:24:19 +01:00
Richard Davey
3b9d115d0c Reset just units 0 and 1 2020-07-16 03:13:47 +01:00
Richard Davey
d7cf9da819 Added location cache 2020-07-16 03:13:10 +01:00
Richard Davey
5059045c76 Cache attribute location
* `WebGLPipeline.boot` will now check all of the attributes and store the pointer location within the attribute entry.
* `WebGLPipeline.bind` no longer looks-up and enables every attribute, every frame. Instead it uses the cached pointer location stored in the attribute entry, cutting down on redundant WebGL operations.
2020-07-16 03:12:53 +01:00
Richard Davey
4ab9604102 Lots of updates to this pipeline
* The `ForwardDiffuseLightPipeline.defaultNormalMap` property has been removed as it's no longer required.
* The `ForwardDiffuseLightPipeline.boot` method has been removed as it's no longer required.
* The `ForwardDiffuseLightPipeline.onBind` method has been removed as it's no longer required.
* The `ForwardDiffuseLightPipeline.setNormalMap` method has been removed as it's no longer required.
* The `ForwardDiffuseLightPipeline.bind` is a new method that handles setting-up the shader uniforms.
* The `ForwardDiffuseLightPipeline.batchTexture` method has been rewritten to use the Texture Tint Pipeline function instead.
* The `ForwardDiffuseLightPipeline.batchSprite` method has been rewritten to use the Texture Tint Pipeline function instead.
2020-07-16 02:15:53 +01:00
Richard Davey
1f3b79cf11 Normal map additions
* `WebGLRenderer.normalTexture` is a new property that holds the currently bound normal map (texture unit one).
* `WebGLRenderer.setNormalMap` is a new method that sets the current normal map texture.
* `WebGLRenderer.clearNormalMap` is a new method that clears the current normal map texture.
* `WebGLRenderer.resetTextures` is a new method that flushes the pipeline, resets all textures back to the temporary ones and resets the active texture counter.
2020-07-16 02:15:01 +01:00
Richard Davey
c6ffa0620e TextureTintPipeline.batchSprite and batchTexture has new parameters forceZero which forces use of texture unit zero. 2020-07-16 02:13:08 +01:00
Richard Davey
0b3f125ee0 Removed the Deferred Diffuse fragment and vertex shaders from the project, as they're not used. 2020-07-16 00:21:44 +01:00
Richard Davey
94d333ee1e Use new texture unit 2020-07-16 00:00:49 +01:00
Richard Davey
9e9e45261f Added setTextureZero and clearTextureZero
* `WebGLRenderer.setTextureZero` is a new method that activates texture zero and binds the given texture to it. Useful for fbo backed game objects.
* `WebGLRenderer.clearTextureZero` is a new method that clears the texture tha was bound to unit zero.
* `WebGLRenderer.textureZero` is a new property that holds the currently bound unit zero texture.
2020-07-15 18:03:03 +01:00
Richard Davey
216d7cb1fa Updated WebGLRenderer to support new texture assignment
* The property `WebGLRenderer.currentActiveTextureUnit` has been renamed to `currentActiveTexture`.
* `WebGLRenderer.startActiveTexture` is a new read-only property contains the current starting active texture unit.
* `WebGLRenderer.maxTextures` is a new read-only property that contains the maximum number of texture units WebGL can use.
* `WebGLRenderer.textureIndexes` is a new read-only array that contains all of the available WebGL texture units.
* `WebGLRenderer.tempTextures` is a new read-only array that contains temporary WebGL textures.
* The `WebGLRenderer.currentTextures` property has been removed, as it's no longer used.
* `WebGLRenderer.currentTextures` has been removed, as it's no longer used internally.
* `WebGLRenderer.setBlankTexture` no longer has a `force` parameter, as it's set by default.
* `WebGLRenderer.setTextureSource` is a new method, used by pipelines and Game Objects, that will assign a texture unit to the given Texture Source.
* The `WebGLRenderer.setTexture2D` method has been updated to use the new texture unit assignment. It no longer takes the `textureUnit` or `flush` parameters and these have been removed from its method signature.
2020-07-15 17:11:01 +01:00
Richard Davey
9c76ec0389 Large TextureTintPipeline refactor
* The Texture Tint vertex and fragment shaders have been updated to support the `inTexId` float attribute and dynamic generation.
* The Texture Tint Pipeline has a new attribute, `inTexId` which is a `gl.FLOAT`.
* `TextureTintPipeline.bind` is a new method that sets the `uMainSampler` uniform.
* The `TextureTintPipeline.requireTextureBatch` method has been removed, as it's no longer required.
* The `TextureTintPipeline.pushBatch` method has been removed, as it's no longer required.
* The `TextureTintPipeline.maxQuads` property has been removed, as it's no longer required.
* The `TextureTintPipeline.batches` property has been removed, as it's no longer required.
* `TextureTintPipeline.flush` has been rewritten to support multi-textures.
* `TextureTintPipeline.flush` no longer creates a sub-array if the batch is full, but instead uses `bufferData` for speed.
* `TextureTintPipeline.currentUnit` is a new property that holds the most recently assigned texture unit. Treat as read-only.
2020-07-15 17:05:55 +01:00
Richard Davey
3ede28230b Update WebGLPipeline.js 2020-07-15 16:54:18 +01:00
Richard Davey
c0504e4fc1 WebGL.Utils.checkShaderMax is a new function, used internally by the renderer, to determine the maximum number of texture units the GPU + browser supports. 2020-07-15 16:52:26 +01:00
Richard Davey
7c742f95d2 Generate multi-texture shader source 2020-07-14 17:44:26 +01:00
Richard Davey
9a45517efd Pass max textures to pipeline (disable other pipelines for now) 2020-07-14 17:44:17 +01:00
Richard Davey
587c23ec3c Added maxGPUTextures property 2020-07-14 17:43:56 +01:00
Richard Davey
76689942c0 Add texture ID to shaders 2020-07-14 17:43:29 +01:00
Richard Davey
43beca7bab Create CheckShaderMax.js 2020-07-14 17:43:05 +01:00
Richard Davey
0003d278fd Updated to use new external MVP functions 2020-07-14 16:49:30 +01:00
Richard Davey
06c1336f41 Removed all functions from MVP except init and update and made them all external 2020-07-14 16:49:16 +01:00
Richard Davey
a8faef6692 Created new Model View Projection functions 2020-07-14 16:48:01 +01:00
Richard Davey
6374da052f Fixed lint errors with PR #5193 2020-07-13 12:55:49 +01:00
Richard Davey
259b702df8
Merge pull request #5193 from scott20145/master
Fix nested mask behaviour for Phaser.CANVAS mode
2020-07-13 12:54:14 +01:00
scott.liu
2f98f463d2 format 2020-06-17 11:01:50 +08:00
scott.liu
7f4bbf9192 format 2020-06-17 10:59:25 +08:00
scott.liu
104a3b9e35 format 2020-06-17 10:56:17 +08:00
scott.liu
f607f1f521 #3673 fix nested mask behaviour for Phaser.CANVAS mode 2020-06-17 10:53:38 +08:00
Volodymyr Linyvyi
8d217d53fa Set TextureTintPipeline on each 'postRenderCamera' call 2020-04-19 18:44:03 +03:00
Richard Davey
03ee36f9ba Finished JSDocs 2020-02-04 17:30:27 +00:00
Richard Davey
0eaf0c47b5 Respect Camera.renderToGame property 2020-01-27 23:35:52 +00:00
Richard Davey
18120cb0d5 New Strip pipeline 2020-01-17 17:58:41 +00:00
Richard Davey
0af1303ba2 Added TextureTintStrip pipeline 2020-01-17 17:38:24 +00:00
Richard Davey
ff65e69cd1 Changed copyright date to 2020 2020-01-15 12:07:09 +00:00
Richard Davey
7d53dc3447 Added support for mipmap texture generation and filter levels 2019-11-19 13:00:54 +00:00
Josh Soref
94e96b3fd2 spelling: renderered 2019-10-29 02:33:23 -04:00
Kolja Kutschera
c893ca6186 fix light2d using tileset from dynamictilemaplayer (#4167,#4079) 2019-10-26 00:56:43 +02:00
Richard Davey
585a8a93ee
Merge pull request #4787 from firefalcom/fix/normalMapRotation
Fix incorrect lighting when batching several sprites
2019-10-11 13:21:39 +01:00
Richard Davey
61f5fadddf Split up canvas and video texture creation and updating. 2019-10-10 12:26:39 +01:00
Gauthier Billot
7ffeb4785e Added currentNormalMapRotation and updated setNormalMapRotation 2019-10-06 20:31:29 +02:00
Richard Davey
5de4641e49 Added jsdocs 2019-10-04 11:13:05 +01:00
Richard Davey
49012d6237 Added createTexture2D.forceSize parameter, videoToTexture method and strengthened empty texture creation 2019-10-03 17:49:58 +01:00
Richard Davey
b3ea5bddd2 SetTransform will now set the imageSmoothingEnabled context value based on the renderer and texture source scale mode. 2019-10-01 16:10:05 +01:00
Richard Davey
8d5c097720 Removed un-used import 2019-10-01 16:05:18 +01:00
Richard Davey
1cc5b1a66e CanvasRenderer.antialias is a new property, populated by the game config property of the same name (or via the pixelArt property) that will tell the canvas renderer what to set image interpolation to during rendering of Sprites. 2019-10-01 14:54:40 +01:00
Nicolas Ferrero
a76e3c7cb6 update vertexComponentCount in WebGLPipeline 2019-09-10 18:55:30 +03:00
Richard Davey
e3039ffb64 Added antialiasGL option 2019-08-29 11:46:58 +01:00
Richard Davey
f4002471d7 Updated context lost / restored handlers 2019-07-17 16:38:00 +01:00