Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
0.8.3:viewport [2021/02/11 16:19] – [Native OpenGL Rendering] admin | 0.8.3:viewport [2022/04/06 19:29] – [UseFixedFrameRate] admin | ||
---|---|---|---|
Line 65: | Line 65: | ||
==== Requesting FrameRate (FPS) ==== | ==== Requesting FrameRate (FPS) ==== | ||
- | Currently it is not possible | + | If UseFixedFrameRate |
+ | If UseFixedFrameRate is set to false, the TGorillaViewport provides an estimated framerate value. | ||
Simply setup a timer and request those value every 100 milliseconds. | Simply setup a timer and request those value every 100 milliseconds. | ||
Line 82: | Line 83: | ||
Animation-Framerate (TAnimation): | Animation-Framerate (TAnimation): | ||
==== UseFixedFrameRate ==== | ==== UseFixedFrameRate ==== | ||
+ | |||
+ | The viewport is able to render a scene on event feedback if visual component change or by a fixed framerate interval. | ||
+ | If UseFixedFrameRate is set to true, the rendering pipeline tries to render the scene with the configured FixedFrameRate value. | ||
+ | By default this value is set to 60. | ||
+ | |||
+ | Notice: At design-time fixed framerate rendering is disabled due to limitations in IDE. | ||
===== FrustumCulling ===== | ===== FrustumCulling ===== | ||
Line 309: | Line 316: | ||
Even in OnRender event you are in Gorilla3D rendering context. This means the framework has bound a framebuffer and the necessary render target textures. | Even in OnRender event you are in Gorilla3D rendering context. This means the framework has bound a framebuffer and the necessary render target textures. | ||
- | This is very important to know. | + | **__Remark: |
- | It is recommended to only use opaque rendering, by setting elements to " | + | |
+ | If the opaque property is false, you will render to translucent albedo channel. | ||
__// | __// | ||
+ | |||
+ | To write a valid translucent albedo channel color value, you can have a look at the following GLSL implementation: | ||
+ | |||
+ | <file glsl> | ||
+ | varying vec4 v_WorldViewProjVertPos; | ||
+ | |||
+ | [...] | ||
+ | |||
+ | // get the final REAL color value | ||
+ | vec4 l_WBOITColor = gl_FragColor; | ||
+ | |||
+ | // compute color-vertex-weight | ||
+ | float l_Weight = max(min(1.0, | ||
+ | clamp(0.001 / (1e-5 + pow(v_WorldViewProjVertPos.z / 1000.0, 2.0)), 1e-5, 1e4); | ||
+ | |||
+ | // compute a final weighted color value written to translucent albedo render target | ||
+ | gl_FragColor = vec4(l_WBOITColor.rgb * l_Weight, l_Weight); | ||
+ | </ | ||
+ | |||
+ | **__Remark: | ||
To understand rendering pipeline better, have a closer look [[renderpass|here]]. | To understand rendering pipeline better, have a closer look [[renderpass|here]]. | ||
Line 320: | Line 348: | ||
For advanced developers, we provide a legacy rendering pipeline, which allows you to do rendering yourself. | For advanced developers, we provide a legacy rendering pipeline, which allows you to do rendering yourself. | ||
This will replace the easy-to-use forward-renderer by a basic renderer, which is sometimes better for native rendering. | This will replace the easy-to-use forward-renderer by a basic renderer, which is sometimes better for native rendering. | ||
+ | The legacy implementation will only setup a single framebuffer with a single render target texture. | ||
+ | It will then render opaque elements at first and then all other elements. | ||
Read more about legacy rendering [[renderpass# | Read more about legacy rendering [[renderpass# |