auburnsounds / dplug Goto Github PK
View Code? Open in Web Editor NEWAudio plugin framework. VST2/VST3/AU/AAX/LV2 for Linux/macOS/Windows.
Home Page: https://dplug.org/
License: Other
Audio plugin framework. VST2/VST3/AU/AAX/LV2 for Linux/macOS/Windows.
Home Page: https://dplug.org/
License: Other
Would be cool.
It requires a separate buffer and pass for reflections, the problem is that the reflection pass would have to be full GUI all the time, so very slow.
Concept for buffers and processors, or both at once.
Started as dplug:audio (nothing depends on it for now). It's not easy.
Uncovering the plugin window makes some artifacts.
In particular, complex update regions should be used.
It seems like it will be attached to the GC for now.
It is slow.
Would speed up rendering a bit.
There could be a race condition if registered threads are used for process callback.
Boost + IPlug license should be used in a per-file basis
Currently lock-free, but maybe it should block instead of crashing when overflowing.
These problems are only with bridged plugins:
Because shadows are desirable and baking them takes huge space, it would be desirable to have sort of a SSAO effect software renderered. So far a solution with a 8-bit depth map would be winning. This needs multiple render buffers and a deffered pass for SSAO (and another for lights?). All this requires lazy UI updates for elements and z-order.
All access to _dirtyRect should be protected by a spinlock or mutex.
Would need using emissive as coverage while mipmapping diffuse :(
Which are ugly and illogical
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
Useful for versionned parameters
Measurements based on rendering 2 bargraphs
Do nothing => 3.5ms
AO => 11ms
cast shadows => 5ms
secundary light => 1ms
specular => 2.5ms
skybox => 10ms
emissive => 20ms
Total => 58ms
Some things are very expensive, eg: a sqrt() cost 1ms.
Is currently a NOP.
Now that UIElement render concurrently, it creates problems when sharing something like a Font.
This won't be easy.
Windows
nothrow @nogc
)Assertion failed: !(Pair.first != Ty && Pair.second == Ty) && "mapping to a sour
ce type", file D:\Temp\LDC-BUILD\src\llvm-3.6.0.src\lib\Linker\LinkModules.cpp,
line 265
Error: 0x7536F1AB (0x0028FABC 0x0119070D 0x00000000 0x0028FBF0), tolower() + 0x2
B bytes(s)
0x7536FA44 (0x1AD22330 0x00000080 0x0119070D 0x00000000), _vsnprintf_l() + 0x54
bytes(s)
0x7536F9D8 (0x1AD22330 0x00000080 0x0119070D 0x0028FBF0), _vsnprintf() + 0x18 by
tes(s)
0x0042F599 (0x00000000 0x0195FA20 0x778A9950 0x0028FD70)
0x778A1EAA (0x0028FD0C 0x0028FD22 0x0028FD8C 0x6275642E), RtlFreeHeap() + 0x1BA
bytes(s)
0x7536B197 (0x00000023 0x0195FA20 0x0028FD60 0x778B47C4), malloc() + 0x57 bytes(
s)
0x6FC8A669 (0x1AABF6B0 0x1B15A8E8 0x1AABF6BC 0x6FC89FE7), _ZNSs4_Rep9_S_createEj
jRKSaIcE() + 0x59 bytes(s)
0x778B47C4 (0x1B15A8E8 0x1B15A8FE 0x0028FE1C 0x1B15A8E8), RtlFreeUnicodeString()
+ 0x34 bytes(s)
0x6FC8BAE7 (0x0DF25D68 0x0028FE14 0x0028FE03 0x00000000), _ZNSsC1EPKcRKSaIcE() +
0x37 bytes(s)
0x01144E0B (0x00032A80 0x00000056 0x00000002 0x004013DE)
0x004013DE (0x7FFDE000 0x75237BE0 0x2B77CE40 0x0028FFDC)
0x75237C04 (0x7FFDE000 0x29D3E292 0x00000000 0x00000000), BaseThreadInitThunk()
+ 0x24 bytes(s)
0x778BAD1F (0xFFFFFFFF 0x778A0240 0x00000000 0x00000000), RtlInitializeException
Chain() + 0x8F bytes(s)
0x778BACEA (0x004014E0 0x7FFDE000 0x00000000 0x78746341), RtlInitializeException
Chain() + 0x5A bytes(s)
c:\d\ldc-32b\bin/../lib/libdruntime-ldc.a(dll.obj):(.text[__D4core3sys7windows3d
ll18dll_process_attachFPvbZb]+0x12): undefined reference to `_tlsstart'
c:\d\ldc-32b\bin/../lib/libdruntime-ldc.a(dll.obj):(.text[__D4core3sys7windows3d
ll18dll_process_attachFPvbZb]+0x1a): undefined reference to `_tlsend'
c:\d\ldc-32b\bin/../lib/libdruntime-ldc.a(dll.obj):(.text[__D4core3sys7windows3d
ll18dll_process_attachFPvbZb]+0x21): undefined reference to `_tls_callbacks_a'
Current Status
TODO: Samplitude, Sonar, and other VST hosts first
4th component in depth map could be "emissive strenght", to be looked at for color bleed. Allows many lights. there is no reasons low-depth widgets don't color bleed on high-depth things.
Make bleed multiscale and multiply it by the emissive factor.
AO could look more like textbook SSAO and be color-less. Currently high
Critical sections / mutexes usually have a lock-free part if no contention, and that is as fast as a spin-lock. If the lock is taken, then we'd better pause the thread than spin all that time.
Maybe synchronized
can help in staying @nogc
.
There are places where a GC cycle could occur in the audio thread given exceptional circumstances.
The only one I think there is : https://github.com/p0nce/dplug/blob/master/vst/dplug/vst/client.d#L675
The dirty rect of toplevel element expands when a widget is dirty.
The problem is that some of the area isn't redrawn, so some widget may flicker and be erased by toplevel redraw.
Solution:
For now the parameters are declared, but there is no way to know if they have changed in the audio callback.
Remove shininess and implement roughness and metalness as documented on the Internet, especially UE4.
Get interested in PBR and see what can be done.
Rename diffuse into "albedo" which is the same concept in PBR.
Define defaults albedo colors from UE4 documentation.
Same for metals and materials.
Not scheduled because with envmap metals are metal enough.
For use in audio callbacks.
Including initializations and resets.
Text is odd looking and no lights.
But stay separated.
InvalidateRect might be avoided since we check for dirty parts anyway. Find a way to trigger WM_PAINT without invalidation?
Depends on #54
Several advantages:
processMidiMsg
will be called with the right messages before processAudio
(this is currently ensured by VST hosts but only as a convention)Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
When an UIElement is updated, lighting is not correctly recomputed / displayed for neighbour pixels.
For shift + click and control + click
The problem comes from drawing outside the dirty areas:
Currently, drawing is supposed to happen only in dirty areas, but those might be overlapping.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.