Skip to content

Commit

Permalink
Add topology parameter for IRuntime.PrepareEffect
Browse files Browse the repository at this point in the history
  • Loading branch information
hyazinthh committed Jun 13, 2024
1 parent 2f3e8ee commit 2b95685
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 8 deletions.
1 change: 1 addition & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
- Renamed Surface.FShade to Surface.Dynamic
- Added support for layered rendering with dynamic shaders. The signature of dynamic shader functions changed from `EffectConfig -> DynamicSurface` to `IFramebufferSignature -> IndexedGeomtryMode -> DynamicSurface`.
- Added Effect.link (use instead of deprecated IRuntime.AssembleModule and removed EffectConfig utilities)
- IRuntime.PrepareEffect now takes an optional topology for layered effects.
- [GL] Cleanup up shader program creation and caching. Removed various methods for creating and compiling shaders from `Context`.

### 5.4.10
Expand Down
6 changes: 3 additions & 3 deletions src/Aardvark.Rendering.GL/Runtime/Runtime.fs
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ type Runtime(debug : IDebugConfig) =

member x.Blit(src, srcRegion, dst, dstRegion) = x.Blit(src, srcRegion, dst, dstRegion)

member x.PrepareEffect (signature, effect : FShade.Effect) : IBackendSurface = x.PrepareEffect(signature, effect)
member x.PrepareEffect(signature, effect, topology) = x.PrepareEffect(signature, effect, topology)

member x.PrepareRenderObject(fboSignature : IFramebufferSignature, rj : IRenderObject) = x.PrepareRenderObject(fboSignature, rj)

Expand Down Expand Up @@ -386,12 +386,12 @@ type Runtime(debug : IDebugConfig) =
ctx.CreateTexture(texture, ValueNone)

member x.PrepareBuffer (b : IBuffer, [<Optional; DefaultParameterValue(BufferStorage.Device)>] storage : BufferStorage) = ctx.CreateBuffer(b, storage)
member x.PrepareEffect (signature : IFramebufferSignature, effect : FShade.Effect) : IBackendSurface =
member x.PrepareEffect (signature : IFramebufferSignature, effect : FShade.Effect, topology : IndexedGeometryMode) : IBackendSurface =
Operators.using ctx.ResourceLock (fun d ->
if signature.LayerCount > 1 then
Log.warn("[PrepareSurface] Using Triangle topology.")

let _, program = ctx.CreateProgram(signature, Surface.Effect effect, IndexedGeometryMode.TriangleList)
let _, program = ctx.CreateProgram(signature, Surface.Effect effect, topology)

AVal.force program :> IBackendSurface
)
Expand Down
6 changes: 3 additions & 3 deletions src/Aardvark.Rendering.Vulkan/Runtime/Runtime.fs
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,8 @@ type Runtime(device : Device) as this =

device.CreateFramebuffer(unbox signature, views) :> IFramebuffer

member x.PrepareEffect (signature : IFramebufferSignature, effect : FShade.Effect) =
device.CreateShaderProgram(unbox<RenderPass> signature, effect, IndexedGeometryMode.TriangleList)
member x.PrepareEffect (signature : IFramebufferSignature, effect : FShade.Effect, topology : IndexedGeometryMode) =
device.CreateShaderProgram(unbox<RenderPass> signature, effect, topology)

member x.PrepareTexture (t : ITexture, [<Optional; DefaultParameterValue(false)>] export : bool) =
ResourceValidation.Textures.validateForPrepare t
Expand Down Expand Up @@ -571,7 +571,7 @@ type Runtime(device : Device) as this =
member x.CompileRender (signature, set) = x.CompileRender(signature, set)
member x.CompileClear(signature, values) = x.CompileClear(signature, values)

member x.PrepareEffect(signature, effect) = x.PrepareEffect(signature, effect)
member x.PrepareEffect(signature, effect, topology) = x.PrepareEffect(signature, effect, topology)
member x.PrepareRenderObject(fboSignature, rj) = x.PrepareRenderObject(fboSignature, rj)
member x.PrepareTexture(t) = x.PrepareTexture(t)
member x.PrepareBuffer(b, u, s) = x.PrepareBuffer(b, u, s)
Expand Down
8 changes: 6 additions & 2 deletions src/Aardvark.Rendering/Runtime/Runtime.fs
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@

open System
open System.Threading
open System.Runtime.CompilerServices
open System.Runtime.InteropServices
open Aardvark.Base
open Aardvark.Rendering.Raytracing
open FSharp.Data.Adaptive
open System.Runtime.CompilerServices
open Microsoft.FSharp.Control

/// Interface for backend-specific debug configurations.
Expand Down Expand Up @@ -76,7 +77,10 @@ and IRuntime =
[<Obsolete("To be removed.")>]
abstract member ResourceManager : IResourceManager

abstract member PrepareEffect : IFramebufferSignature * FShade.Effect -> IBackendSurface
/// Compiles an effect for the given framebuffer signature and topology.
/// The topology is ignored unless the signature is layered.
abstract member PrepareEffect : signature: IFramebufferSignature * effect: FShade.Effect *
[<Optional; DefaultParameterValue(IndexedGeometryMode.TriangleList)>] topology: IndexedGeometryMode -> IBackendSurface

abstract member PrepareRenderObject : IFramebufferSignature * IRenderObject -> IPreparedRenderObject

Expand Down

0 comments on commit 2b95685

Please sign in to comment.