Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Evgeniy Andreev
    @gsomix
    without Microsoft prefix
    it might be RFC somewhere, I'm not sure
    Harald Steinlechner
    @haraldsteinlechner
    and this is the last media build problem: https://travis-ci.org/aardvark-platform/aardvark.media/builds/567925064 i suspect there is a too old f# compiler to understand inref arguments which seems totally legit - i also don't know what this should be lol
    wow thank you
    Evgeniy Andreev
    @gsomix
    @haraldsteinlechner I mean there are a lot of projects in aardvark-platform, I need to create dedicated folder and clone 'em all! :)
    Harald Steinlechner
    @haraldsteinlechner
    so. i just fixed fshade: krauthaufen/FShade@36fb4ee
    still i find it strange that there is a package with this codebase and it was no problem then
    Harald Steinlechner
    @haraldsteinlechner
    ok. with this aardvark-platform/aardvark.media#24 all should finally go back to green
    also the travis build of FShade should work now (there was temp downtime of a package server)
    Evgeniy Andreev
    @gsomix
    cool!
    Harald Steinlechner
    @haraldsteinlechner
    here is the status matrix....
    Harald Steinlechner
    @haraldsteinlechner
    2019-08-05 18_56_29-Status ยท aardvark-platform_aardvark.docs Wiki.png
    oddly, the appveyor fshade build did not trigger automatically. don't know where to set it
    Dallin Beutler
    @dallinbeutler
    quick question. What's the difference between afun and AdaptiveFunc? I'm just trying to make a simple movement controller, and afun doesn't seem integrated with AdaptiveFunc or the Mod module. Should I be using the adaptive computation expression instead of controller?
    Evgeniy Andreev
    @gsomix
    @krauthaufen @haraldsteinlechner hey, what's purpose of <DebugType>full</DebugType> in rendering examples?
    Evgeniy Andreev
    @gsomix
    @dallinbeutler I'm still not in the actual code, but it seems afun is just an functional interface, that AdaptiveFunc implements. what are you trying to achieve? could you share code?
    Dallin Beutler
    @dallinbeutler
    let controlSnake (kb:IKeyboard)=
        controller {
            let! move = 
                    (kb.IsDown Keys.Up %?  V3d.OIO %. V3d.OOO) %+
                    (kb.IsDown Keys.Down %? -V3d.OIO %. V3d.OOO) %+
                    (kb.IsDown Keys.Left %? -V3d.IOO %. V3d.OOO) %+ 
                    (kb.IsDown Keys.Right %?  V3d.IOO %. V3d.OOO)
            if move <> V3d.Zero then
                return (fun _ -> move )                       
        }
    this produces an aFun, but Mod.integrate is looking for a list of AdaptiveFuncs. I guess I'm asking what the proper procedure for producing AdaptiveFunc? I couldn't find a way to make it from aFun, and the only way I saw to make one was through the 'adaptive' computation expression.
    @haraldsteinlechner why to re-implement AdaptiveFunc in ModExtension if there is afun from base? @dallinbeutler
    it's a bit confusing
    Georg Haaser
    @krauthaufen
    hey there, the complexity of afun und these things was one of the motivations to shift towards elm-style UI. As far as i remember, there are two implementations (one a->a and another one a->b) but the whole camera-contoller thing tends to get complex really fast. It's very likely that there are missing/bad inplementations in afun/etc.
    Evgeniy Andreev
    @gsomix
    yes, indeed. there are afun/AdaptiveFun from base ('a -> 'b case) and AdaptiveFunc from ModExtensions ('a -> 'a case).
    Evgeniy Andreev
    @gsomix
    so AdaptiveFunc and adaptive { ... } is preferred way to write controllers? shouldn't it be in base?
    or instead we could to fix afun
    Evgeniy Andreev
    @gsomix
    or deprecate? :hmm:
    Harald Steinlechner
    @haraldsteinlechner

    @krauthaufen @haraldsteinlechner hey, what's purpose of <DebugType>full</DebugType> in rendering examples?

    examples are generated by new.fsx and for some reason in the template this was activated. that is why it is everywhere, but honsetly i cannot imagin why it should be necessary

    Evgeniy Andreev
    @gsomix
    @haraldsteinlechner can we remove it? VS2019 and Rider both complain in debug
    Deterministic builds only support portable PDBs (--debug:portable or --debug:embedded)
    Harald Steinlechner
    @haraldsteinlechner
    please remove
    Evgeniy Andreev
    @gsomix
    OK!
    Harald Steinlechner
    @haraldsteinlechner

    quick question. What's the difference between afun and AdaptiveFunc? I'm just trying to make a simple movement controller, and afun doesn't seem integrated with AdaptiveFunc or the Mod module. Should I be using the adaptive computation expression instead of controller?

    I'm both glad and sorry trapped into controller troubles. Glad since contribution seems to be needed. Sorry because you found one of the darked holes so early. In fact camera controllers have a long history for krauthaufen and me - and unfortunately we regularly escalate somewhat in that matter. in retrospecive we remember from our adaptivefunc stuff that it is very correct in terms of timing. What we also found is that it is rather hard to work with (maybe just because of chaos and missing docu). I just looked it up, people most often use direct construction of AdaptiveFunc using adaptive blocks. i think this is the simpliefied last version which is used the most. So in the end the whole controller thing in rendering might not be that bad if there was better documentation.
    Also, there could be potential in using a real FRP library.
    The first versions of those controllers appear in logs in early 2015. in later 2015 afun appears in late 2015. So to sum up, in practice people tend to use adaptiveFunc (which is a->a i thing) since it might be easier to work with. I would suggest going this way?

    this controller is rather easy to extend work with etc. we then found that it could be better in terms of timing and interpolation. then, again we escalated again and introduced a new camera controller: https://github.com/aardvark-platform/aardvark.media/blob/master/src/Aardvark.UI.Primitives/FreeFlyController.fs#L412 which allows to use multiple integration methods such as runge kutta in order to get super precise sums for non-linear movements.
    Harald Steinlechner
    @haraldsteinlechner
    @gsomix ahhh cool!
    Georg Haaser
    @krauthaufen
    @haraldsteinlechner good summary of our misery ๐Ÿ˜€
    Evgeniy Andreev
    @gsomix
    @haraldsteinlechner @dallinbeutler it would be cool to create issue with this explanation (chat log is pretty fine)
    otherwise it's lost :)
    Harald Steinlechner
    @haraldsteinlechner
    ok. good idea. will create one
    Evgeniy Andreev
    @gsomix
    thanks!
    @haraldsteinlechner @krauthaufen btw do you have fixed timestep implementation in rendering?
    if not is there way replace render loop code with custom?
    thanks
    Harald Steinlechner
    @haraldsteinlechner
    for non-animated scenes we have no monolothic mainloop. whenever something changes we trigger rendering. why is it this way: we don't render when nothing changes. this is a nobel goal. what we have if you want to have animation, the renderwindows provide a mod called win.Time which is a Mod<DateTime>. So for animations the official recommendation is to Mod.map on this time. An example which refines this approach with higher precision timing could for example be found here: https://github.com/aardvark-platform/aardvark.rendering/blob/master/src/Examples%20(netcore)/10%20-%20NBodyCompute/Program.fs#L201
    For fixed timestep animations, one can do a much easier approach, as given here: https://github.com/aardvark-platform/aardvark.docs/blob/master/src/BackgroundColor/Program.fs#L39
    is this approachable?
    additionally the camera controller in rendering is kind of cool. as long as the animation should be active, frames are produced as fast as it can, and if you stop the animation the application falls back to "only render when again something changes"
    Evgeniy Andreev
    @gsomix
    got it
    Harald Steinlechner
    @haraldsteinlechner
    and via those adaptive functions, all dependencies for input values get tracked precisely. as an example if you have an animation till a button is pressed, the adaptive function has the button as input dependency
    Evgeniy Andreev
    @gsomix
    yes, I think I just can just replace Sleep with accumulators to have more precise fixed timestep