These are chat archives for bjz/gfx-rs

22nd
Jun 2014
Dzmitry Malyshau
@kvark
Jun 22 2014 01:32
@bjz nope, I hasn't got into Metal yet. Are you pitching it for the sake of gfx-rs portability or just as a general interest?
kvark @kvark still remembers S3 MeTaL... ah those sweet times in UT
Brendan Zabarauskas
@brendanzab
Jun 22 2014 01:35
just general interest
@kvark So how high level do you think the renderer will be?
Dzmitry Malyshau
@kvark
Jun 22 2014 01:45
@bjz my basic vision is pretty much explained in #3, though no-one seem to have reacted to that
Brendan Zabarauskas
@brendanzab
Jun 22 2014 01:46
I'll look again! :D
Brendan Zabarauskas
@brendanzab
Jun 22 2014 01:53
will we be thinking about things like cameras, shadows and culling?
if not, maybe we could think about scrapping the render task...?
Dzmitry Malyshau
@kvark
Jun 22 2014 01:54
@bjz basically, renderer should operate on meshes, target sets, programs, render states, and environments. The last one is the only that really need to be designed. It is supposed to capture all the shader parameter values (which, together with the render states, are covering any high-level material needs, supposedly)
@bjz I believe cameras, shadows, and culling can be left to a higher level engine outside of the renderthread, but I'll need to think this through...
Brendan Zabarauskas
@brendanzab
Jun 22 2014 01:57
sure thing
Dzmitry Malyshau
@kvark
Jun 22 2014 01:58
@bjz We need to define the scope of each layer. For example, device layer just abstracts over API and potentially does some caching to reduce number of calls to that API
Brendan Zabarauskas
@brendanzab
Jun 22 2014 01:58
yep, agreed
Dzmitry Malyshau
@kvark
Jun 22 2014 01:59
Render layer scope may be to translate high-level concepts (meshes, target sets, programs, render states, environments) into sets of device commands, potentially sorting the draw calls on the way.
@bjz if we want to make render layer aware of the cameras and culling, this would require us to lock on a particular spatial structure, which is the last thing we need for gfx-rs. I believe the spatial stuff is high-level, and should live (and be married to) physics and skinning.
Brendan Zabarauskas
@brendanzab
Jun 22 2014 02:03
cool
could there be multiple render layers?
Dzmitry Malyshau
@kvark
Jun 22 2014 02:23
@bjz do you mean gfx-rs to provide an even higher level of abstraction with the spatial system of sorts (or at least templated by it)? I see no reason why it shouldn't be possible, and I'd definitely like it. It is a bit far from where we are though...
@bjz I got a question. It should be forbidden for the device module to use anything from render, right? I'm trying to figure out where the mesh structure (and such) should be defined.
Brendan Zabarauskas
@brendanzab
Jun 22 2014 02:25
do you mean in reference to my previous comment, or in relation to my question about cameras etc?
hmm
Dzmitry Malyshau
@kvark
Jun 22 2014 02:27
My second (last) question is unrelated to the discussion. It's just something I'm working on right now.
brendanzab @bjz is thinking
Brendan Zabarauskas
@brendanzab
Jun 22 2014 02:38
Is the mesh structure going to be user facing?
Dzmitry Malyshau
@kvark
Jun 22 2014 02:42
I think mesh handle is what user is going to see, not the structure.
It is still a question whether we should expose everything to the user on demand. Would anyone want to know the number of vertices, for example, of the mesh? I think we should do our best to completely abstract that.
Brendan Zabarauskas
@brendanzab
Jun 22 2014 02:49
Yeah, travis is being weird with my latest makefile :( https://travis-ci.org/bjz/gfx-rs/builds/28138624#L392-L401
it is working for you locally right?
Dzmitry Malyshau
@kvark
Jun 22 2014 02:51
My local command appears to be different from Travis one:
rustc -L deps/gl-rs/lib -L deps/glfw-rs/lib --out-dir=lib --cfg=gl --cfg=glfw -O src/gfx/lib.rs
@bjz Should I remove the source branch (cleanups for the matter) after accepting your PR?
Brendan Zabarauskas
@brendanzab
Jun 22 2014 02:53
sure
Dzmitry Malyshau
@kvark
Jun 22 2014 02:54
So what was the problem with Makefile? You got the fix?
Brendan Zabarauskas
@brendanzab
Jun 22 2014 02:54
@kvark it is different because the lib dir variable is constructed before the submodules have been inited
Dzmitry Malyshau
@kvark
Jun 22 2014 03:09
@bjz Do Rust coding guidelines forbid ":" alignment in struct definitions? Like that:
struct Foo {
    let x         : int,
    let y_long    : int,
}
Brendan Zabarauskas
@brendanzab
Jun 22 2014 03:10
yeah, normal rust code seems to just have foo: bar
we will be getting rustfmt at some stage, when pcwalton gets around to finishing it
Dzmitry Malyshau
@kvark
Jun 22 2014 03:11
That would be greatness
Brendan Zabarauskas
@brendanzab
Jun 22 2014 03:18
yayy
Dzmitry Malyshau
@kvark
Jun 22 2014 03:20
@bjz thanks! I'm glad you got that sorted out
Dzmitry Malyshau
@kvark
Jun 22 2014 03:29
@bjz about usage of Future for calls. Can we really do that? I mean, the future must be holding the stream somehow, so we will not be allowed to do anything while it's alive.
Dzmitry Malyshau
@kvark
Jun 22 2014 03:55
@bjz are you still around? have a look at #17
alright, see you tomorrow then
Brendan Zabarauskas
@brendanzab
Jun 22 2014 04:43
@kvark still reading your patch :)
Dzmitry Malyshau
@kvark
Jun 22 2014 12:28
@bjz I'm not sure what to do with the Attribute::name field. Making at a String would make it impossible to have a static ATTRIB_EMPTY, which helps a big deal of initializing the Mesh. It'd be nice to have a fixed-capacity string that is not owned.
@bjz there is also a problem of how the user is going to specify all these attributes at once. Currently the fact that we have a single attribute with 2 components and stride of 8 is hard-coded.
Brendan Zabarauskas
@brendanzab
Jun 22 2014 16:46
yeah I was wondering about that hard coded bit
you could have an Option<String>
Dzmitry Malyshau
@kvark
Jun 22 2014 17:52
@bjz Actually, String is only optional in a sense that all other fields are. I.e. with a fixed MAX_ATTRIBUTES vector there are those that are supposed to be empty, and that's not very idiomatic... I'm leaning towards Vec<Attribute> or even Vec<AttributeHandle>, where real attributes are placed sequentially in memory. I'll keep thinking about it...
bbl
Dzmitry Malyshau
@kvark
Jun 22 2014 22:48
@bjz Ok, #18 is the last one before I stop and think about simplifying the layer structure. There is too much craft, and I have to add even more when implementing missing functions.