summaryrefslogtreecommitdiffstats
path: root/src/render
Commit message (Collapse)AuthorAgeFilesLines
* Nano optimization to GLTFParserKonstantin Ritt2015-03-041-3/+3
| | | | | | | | Do not load a identity matrix if we're going to initialize its values by hand. Change-Id: I7d745f4090a78ab4ecca99c313f15d689d32fc92 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* RenderShader: Fix for absence of instance names in UBOPaul Lemire2015-02-282-7/+22
| | | | | | | | | | - Also added debug logging in RenderShader for the Shaders logging category - This restores the deferred-example rendering which was broken since 3abbf9227ada8f68821a5ad473bba4f52e625fb5 Change-Id: Ie1b39c903f8c33f7d9b859317ae185c42043a9e2 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Logging Category for ShadersPaul Lemire2015-02-282-0/+2
| | | | | | | | Will help have logs only related to shaders Change-Id: I74df08a247e0af075fa14dcf10596dc141a6eaa1 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* RenderView: moved the ShaderData name/value map building outPaul Lemire2015-02-284-103/+115
| | | | | | | | | It is now contained in RenderViewJobUtils inside an helper struct called UniformBlockValueBuilder. This allow to simplify the code and will make unit testing easier. Change-Id: Ibbeeda8d913bfa1adc7c93c1fecb9cafda15deb3 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QBackendNodeFunctor: get and destroy now take a QNodeIdPaul Lemire2015-02-2815-50/+50
| | | | | | | | This will help fixing the dynamic destruction in follow up patches. Change-Id: Id44fbeac388628c0e563d288e13d1f15d7ac0c24 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* ChangeArbiter/SceneChange: use id as change subjectPaul Lemire2015-02-2813-41/+41
| | | | | | | | | | | | Instead of having a QNode* or QObservable as the subject of a change, we use it's unique NodeId instead. That will prevent the ChangeArbiter from trying to distribute changes by looking at a QNode/QObservable id when the QNode/QObservable might have been destroyed in the meantime. Change-Id: Ia419d5b841434fd65522c8c65de552089cfe97cf Task-number: QTBUG-44628 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Unit Tests for RenderShaderPaul Lemire2015-02-282-2/+20
| | | | | | | | Note: Only test proper initialization, cleanup and that it matches a frontend peer. Doesn't that shader loading as this requires a context, surface... Change-Id: I05f6ef059005b4781b82876a8d73e46d41d44387 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix: remove QByteArrayLiteral used when setting SceneChange property namesPaul Lemire2015-02-2813-41/+41
| | | | | | | | This was probably forgotten when the property name was changed fron QByteArray to char *. Change-Id: Idd6a988703a241519b3aba7b1d127adae5e1375e Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Include limits header for numeric_limitsLaszlo Agocs2015-02-271-0/+2
| | | | | Change-Id: Ifdd3afa86a7aab56ecd9594cab21b0f1d58f160c Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Fix build with gcc 4.4Laszlo Agocs2015-02-261-11/+11
| | | | | Change-Id: I30a9ce2955a5e0d80ca8f592fe6fb750f0efbb07 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Merge remote-tracking branch 'origin/dev' into 5.5Oswald Buddenhagen2015-02-239-20/+58
|\
| * Avoid crashing when becoming non-exposedLaszlo Agocs2015-02-191-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | On Android Qt3D apps used to crash when they got moved to background. beginDrawing() correctly recognized that the window was not exposed anymore, but some of the cleanup for the render queue was not done in this case. This is now corrected, so apps will survive. It is not the full solution because we still continue to attempt to render which is a waste of CPU time. Proper pause and resume will have to be implemented later, similarly to the Quick scenegraph render loops, based on the expose events. Change-Id: Ia567d891fc746bb6851524e0f8a998a8fd53f8b1 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * Use qmath functionsSean Harmer2015-02-183-15/+15
| | | | | | | | | | | | | | Fixes compilation on QNX 6.6. Change-Id: Ib6215d5bc1f86139154deb025beb38c591f78f76 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
| * Remove debug prints from gl3 helperLaszlo Agocs2015-02-181-2/+0
| | | | | | | | | | | | | | No need for these anymore. Change-Id: I0737e2d11878e610b0bec682ee473b696e4d33de Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
| * Make shadow mapping functional on ES 3Laszlo Agocs2015-02-182-0/+34
| | | | | | | | | | | | | | | | | | To preserve our sanity we will only support ES 3.x, not 2.0 + GL_OES_depth_texture + EXT_shadow_samplers. This way we can provide version 300 es shaders and do not have to introduce yet another filter and technique. Change-Id: Ib5c826d6540b4848f0cb4629e5311150169a9697 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * Reset the active texture cache in beginDrawingLaszlo Agocs2015-02-181-0/+2
| | | | | | | | | | | | | | | | | | | | | | When using Scene3D the context is shared with the Qt Quick scenegraph and the state can be changed arbitrarily between Qt3D updates. Caching the state is therefore not an option between frames. This fixes texture usage in apps using Scene3D and Qt Quick controls. Change-Id: Ifc67171af5209499bfdd4474230d59f03e22889d Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * Fix default OpenGL filter settingsLaszlo Agocs2015-02-181-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | The API should be ES in an ES-only build of Qt, or when dynamically choosing ANGLE on Windows. The profile should be NoProfile. This is particularly important for systems where requesting a version like 2.0 gives a < 3.2 no profile context instead of >= 3.2 compatibility. The default filter should match both, hence using Compatibility is not an option. Change-Id: Ie8f20b0f09d8d6f6569cfda0f8c2b7217a2e23df Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Fix index buffer size for spheresLaszlo Agocs2015-02-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Fixed the calculation based on the loops below. Having extra uninitialized indices at the end may seem harmless, but only until encountering GL implementations that do include all index buffer values in their validation process. With ANGLE for example the drawElements call was often rejected due to these random, potentially large uint16 values in the index buffer. Change-Id: I7c54dec921961ce1bed29c30a0bfa09c91a287dd Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Don't override pure virtual with a pure virtualSergio Martins2015-02-181-2/+0
| | | | | | | | | | | | | | | | | | clang is complaining this is missing Q_DECL_OVERRIDE, so just remove it as it's already in the base class. Change-Id: Ie1a270fd29a3c94e43476a05fb5f15724aabf7f3 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Fix inconsistent override warnings [-Winconsistent-missing-override]Sergio Martins2015-02-186-6/+6
|/ | | | | | | | Classes should either use or not use override, otherwise it hurts code readability. Change-Id: Ibe3e5a5fdc5cb3fc4c61ab722005c337f5998c26 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Fix default material shaders for non-core OpenGLLaszlo Agocs2015-02-161-3/+14
| | | | | | | | | | The non-ES shader is an 150 core one. To keep things working with 2.x only and non-core, use the es2 variant. This is in line with how all the other built-in materials work. Change-Id: I63c673506c8be0b9b89aa4470728c40b867306c6 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Do not build render jobs without a surfaceLaszlo Agocs2015-02-166-17/+17
| | | | | | | | | | | | | Examples like wireframe tend to crash on exit. This is because the platform surface filter sets the renderer's surface back to null, while we are trying to build some jobs still. Even though everything gets shutdown soon after that, we have to somehow prevent any operations relying on the surface in the meantime. This is also an opportunity to avoid exposing the surface pointer from Renderer. Instead, communicate the surface size to the render views. Change-Id: Ifc739ec50e3f6a67d20bfd0dc1913a12b906a8ab Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix QOpenGLFilter version comparisonLaszlo Agocs2015-02-131-4/+4
| | | | | | | | | | | 4.0 satisfies a filter of 3.1. Previously this wasn't the case, due to the incorrect condition for the minor version. This makes examples with filters for 3.x working on cards that provide OpenGL 4.y where y < x. Change-Id: Ie443bdb816410c71fe593143c4a58c4d10571abe Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Avoid warning with MSVCLaszlo Agocs2015-02-132-2/+2
| | | | | | | Fix an int - size_t mismatch and a linkage problem. Change-Id: I19a57861850b4e112c98beb42b00d0a05d3f5509 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Make scene parsers operate on URLs instead of raw filenamesLaszlo Agocs2015-02-1312-30/+37
| | | | | | | | This way they are compatible with how mesh and texture source URLs are handled. Change-Id: Ifeee504fd3f5957d23f5cade92a73663488bdaf9 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Make mesh source url resolving compatible with QuickLaszlo Agocs2015-02-133-6/+6
| | | | | | | | The ideal way would be to call the function from QQmlFile but that would need a dependency on the qml module. So just copy the function in. Change-Id: If34d8a2356bbe87b2a011c1c25a79a3f24ebb1ab Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Remove dependency on the obsolete opengl moduleLaszlo Agocs2015-02-131-1/+1
| | | | | | | QGL* is not used anywhere so the module is not needed. Change-Id: I1e091b1c3c0ed37c3587c6caf3bb7cf18cf5af0b Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix image format for texturesLaszlo Agocs2015-02-111-3/+3
| | | | | | | | | | | | | | We always convert to RGBA8888 so the only acceptable combination is GL_RGBA - GL_RGBA8. Previously we were checking the presence of the alpha channel in the original image. This is quite wrong since we end up with GL_RGBA - GL_RGB8 type of combinations in case the input has no alpha. That is not a valid combination. This makes images without an alpha channel, e.g. image formats that provide Format_RGB32 QImages, working. Change-Id: I2631071134c5224c52b64cff2f00ef6ae166762b Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Create forwarding QTexture headerSean Harmer2015-02-111-0/+6
| | | | | Change-Id: I377e947bc8dc4c3afefd59a1bbf08b584065901c Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Stop qmake from complaining about missing namespace macrosLaszlo Agocs2015-02-101-0/+4
| | | | | Change-Id: I5838a89a4458d7cd235711ec31c5c88973415943 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Make sure the context is current when neededLaszlo Agocs2015-02-093-7/+24
| | | | | | Task-number: QTBUG-44148 Change-Id: Ia15592328638dd243b7f82d8e2dcc7e523447cbf Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Avoid rendering to non-exposed windowsLaszlo Agocs2015-02-091-0/+6
| | | | | Change-Id: I784e7a9833324da0330d70f8a16d8bf64cf6db08 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Copyright header change.Mika Salmela2015-02-09331-6339/+4684
| | | | | | | | As for preparation for Qt5.5 release the copyright header is updated to correspond the current license requirements. Change-Id: I36632918b66f455539453b42c369689fb11298ec Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Skybox/QWrapMode: update doc and remove r wrap mode on SkyboxPaul Lemire2015-02-081-0/+2
| | | | | Change-Id: If06f2943fda92512437768a749055968d7c9af04 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* RenderTexture: wrapping on R is only available on 3D texturesPaul Lemire2015-02-081-3/+1
| | | | | Change-Id: Id2312ad96f92326960283be6d2f1a0b0404fc1f9 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* RenderView: remove default sorting if no sort was specifiedPaul Lemire2015-02-081-3/+1
| | | | | | | This solves the material-cpp flickering Change-Id: Id83ee9ad5e68ceeb3caf67ef48a61a431218a953 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QAbstractTextureProvided: Q_ENUMS on CubeMapFace enumsPaul Lemire2015-02-081-0/+1
| | | | | | | This is needed to be able to use the CubeMapFace enums from QML Change-Id: I8f081b0e920b6245931fe9589396aefa7baed4cb Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QGraphicContext: texture sharing and smart use of TUPaul Lemire2015-02-083-32/+47
| | | | | Change-Id: I4fb73ac3d03d49be121153235311dd76b47dbd4e Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* RenderTexture/TextureImage: provide unique dna for sharingPaul Lemire2015-02-083-3/+48
| | | | | Change-Id: Id8bbbefaccff1915508ec90d5342cb4799f3f022 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Make textures functional with GLES2Laszlo Agocs2015-02-081-7/+27
| | | | | | | | | OpenGL ES 2.0, unlike 3.0 and later, does not support sized formats. Therefore RGBA8_UNorm and friends will all fail. Instead, we must map and pass RGBAFormat and similar. Change-Id: I37c3581fbddc8b58af7af66ba4392e57e9cb965a Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QAbstractTextureProvider: remove leftover methodsPaul Lemire2015-02-082-38/+0
| | | | | | | These were left for backward compatibility while the refactoring took place. Change-Id: I527339db2f58c00aaa5a5417bb914955437e0a72 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Texture API refactoringPaul Lemire2015-02-0820-112/+659
| | | | | | | | | | * Added LoadTextureDataJob * QAbstractTextureProvider: maximum layers property * Automatic QAbstractTextureProvider::TextureFormat added * material-qml should work perfectly with that patch. Change-Id: I3f92f13b783155798772086304a30126a4fc687d Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* RenderTexture: update list of texture image id to texture image handlesPaul Lemire2015-02-083-8/+83
| | | | | | | | | | | | | That required a custom backend functor creator. QRenderAspect was updated to use the correct functor. This will provide faster lookups. Also introduced TextureDNA. The goal is to build a unique key based on the texture properties and each texture image (including layer position, mipmaplevel and cubemapface). Then when applying a texture it will just be a matter of comparing hashes. Change-Id: Ic07aea6bc1cbcb1059ec5bcdd458ccc51e1feda9 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Register backend functor creator for RenderTextureImagePaul Lemire2015-02-081-0/+2
| | | | | Change-Id: I1c32e555a7033e451af4c994f7b6f22556543c9a Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* RenderTexture: contains list of TextureImage idPaul Lemire2015-02-082-13/+55
| | | | | | Change-Id: Ia3a49da501e7acded7d99150ad64ef1a91333073 Note: also updated the cleanup method Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* TextureImageManager in RendererPaul Lemire2015-02-082-0/+4
| | | | | Change-Id: Id6a41db8eed2874cc5a06ddc5feba6c9b0aced53 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* TextureImageManager for RenderTextureImagePaul Lemire2015-02-082-0/+13
| | | | | Change-Id: I3a751d3357606951cc90176b6c48c4684e4f560f Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* RenderTextureImage backend class for QAbstractTextureImagePaul Lemire2015-02-083-2/+189
| | | | | Change-Id: I8c4f4e06fbbc8963a7dd1f01bd22ba058a2486a7 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Make ctor of QAbstractTextureProvider protectedPaul Lemire2015-02-086-33/+34
| | | | | | | That enforces to use one of the subclasses. Change-Id: Idba7300ed322954ba6866c4a262ad4ee74c024e5 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* No need to depend on managers from RenderParameterKevin Ottens2015-02-083-47/+3
| | | | | | | | This way we can also get rid of the specific functor, the generic one is enough again. That's possible thanks to createBackendNode availability. Change-Id: I6ef4dc811c4304f1cf551200e1cedd9a81a53f43 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>