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
0.8.3:renderpass [2021/02/11 15:55] – [Render-Pass] admin0.8.3:renderpass [2021/02/12 22:16] (current) – [Render-Target] 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 85: Line 85:
  
 ^ 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|
  
 ==== How to use ==== ==== How to use ====
Line 120: Line 120:
 [...] [...]
  
-constructor TMyRenderPass.Create();+constructor TMyRenderPass.Create(AOwner : TComponent; 
 +  const AId : String = 'MyRenderPass1');
 begin begin
   inherited;   inherited;
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**.