Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
0.8.3:renderpass [2021/02/11 15:54] – [Compatibility with Render-Pass] admin0.8.3:renderpass [2021/02/12 22:13] – [Render Targets] admin
Line 51: Line 51:
 **2) Additional opaque texture** **2) Additional opaque texture**
 ^ Texture-ID ^Format ^InternalFormat^DataType^ ^ Texture-ID ^Format ^InternalFormat^DataType^
-|Albedo Texture|BGRA (Windows) / RGBA|BGRA (Windows) / RGBA|UnsignedByte|+|Albedo Texture|BGRA (Windows) / RGBA|RGBA8|UnsignedByte|
  
 **3) Additional translucent texture** **3) Additional translucent texture**
Line 61: Line 61:
 **4) Composite texture / final output texture** **4) Composite texture / final output texture**
 ^ Texture-ID ^Format ^InternalFormat^DataType^ ^ Texture-ID ^Format ^InternalFormat^DataType^
-|Composite Texture|BGRA (Windows) / RGBA|BGRA (Windows) / RGBA|UnsignedByte|+|Composite Texture|BGRA (Windows) / RGBA|RGBA8|UnsignedByte|
  
 This texture will be filled by an embedded composite render-pass, which combines opaque and translucent albedo textures. This texture will be filled by an embedded composite render-pass, which combines opaque and translucent albedo textures.
Line 120: Line 120:
 [...] [...]
  
-constructor TMyRenderPass.Create();+constructor TMyRenderPass.Create(AOwner : TComponent; 
 +  const AId : String = 'MyRenderPass1');
 begin begin
   inherited;   inherited;
Line 138: Line 139:
 ^ Type ^ Description ^ ^ Type ^ Description ^
 | TRenderPassType.Pre | render-pass will be executed before main loop. | | TRenderPassType.Pre | render-pass will be executed before main loop. |
-| TRenderPassType.Intermediate | render-pass will be executed in between main loop (**very ineffective** - because executed each renderlist element) |+| TRenderPassType.Intermediate | render-pass will be executed in between main loop (**not recommended - very ineffective** - because executed each renderlist element) |
 | TRenderPassType.Post | render-pass will be executed after main loop. | | TRenderPassType.Post | render-pass will be executed after main loop. |
  
Line 152: Line 153:
  
 //Elder methods: RenderListToContext and RectToContext were removed while pipeline refactoring.// //Elder methods: RenderListToContext and RectToContext were removed while pipeline refactoring.//
- 
-The [[FBO|framebuffer object (FBO)]] is a structure inside of each render-pass and the main-loop. Render results are stored into that buffers. This allows to forward results from one step to another. 
  
 ^ Type ^ Description ^ ^ Type ^ Description ^
Line 162: Line 161:
 FMethod := TRenderPassMethod.RenderListToFBO; FMethod := TRenderPassMethod.RenderListToFBO;
 </file> </file>
 +
 +The [[FBO|framebuffer object (FBO)]] is a structure inside of each render-pass and the main-loop. 
 +(Or better to say: A structure in each context of a TRenderer).
 +
 +Render results are stored into that buffers. This allows to forward results from one step to another.
  
 ==== Rendering Procedure ==== ==== Rendering Procedure ====
  
 Because it's not enough to tell the renderer what and where to render, we need to define a way of rendering. Because it's not enough to tell the renderer what and where to render, we need to define a way of rendering.
-Therefore the render-pass controller supplies a property FRenderProc.+Therefore the render-pass controller supplies a property **FRenderProc**.
 Currently there are 2 ways defined: Currently there are 2 ways defined:
   * DefaultRendering   * DefaultRendering
Line 201: Line 205:
  
 ^Flag^Description^ ^Flag^Description^
-|TRendererFlag.IgnoreRenderTargets|Will not create any of the meta-textures (Albedo, TranslucentAlbedo, Alpha, Position), but will create the final composite texture of RGBA8 format.|+|TRendererFlag.IgnoreRenderTargets|Will not create any of the meta-textures (Albedo, TranslucentAlbedo, Alpha, Position), but will create the final composite texture of BGRA (Windows) / RGBA format.|
 |TRendererFlag.IgnoreCompositeCtrl|Will not create the embedded composite render pass to merge meta-textures.| |TRendererFlag.IgnoreCompositeCtrl|Will not create the embedded composite render pass to merge meta-textures.|
  
Line 258: Line 262:
  
 1) For **RenderListToFBO** rendering: 1) For **RenderListToFBO** rendering:
-   * Create a global material shader for all objects and override the object-specific shaders +   * Create a global material shader for all objects and override the object-specific shaders (f.e. depth value rendering) 
-   * Use the object-specific shaders, by returning NIL in the CreateMaterial() method+   * Use the object-specific shaders, by returning NIL in the CreateMaterial() method (f.e. reflection rendering) 
 2) For **RectToFBO** rendering: 2) For **RectToFBO** rendering:
-   * Create a global material shader+   * Create a global material shader (f.e. blur post-effect)
  
 To create an global material shader for your render-pass you need to extend **TGorillaRenderPassMaterialSource** and **TGorillaRenderPassMaterial**. To create an global material shader for your render-pass you need to extend **TGorillaRenderPassMaterialSource** and **TGorillaRenderPassMaterial**.