Game Engine Forum - Grit Open Source Streaming Game Engine
Site Header
It is currently Mon Jul 22, 2019 5:06 pm

All times are UTC




Post new topic Reply to topic  [ 9 posts ] 
Author Message
 Post subject: Looking for collaboration projects
PostPosted: Wed Mar 30, 2016 6:59 am 
Offline
Newbie

Joined: Wed Mar 30, 2016 6:03 am
Posts: 3
Hi All!

I'm the maintainer of work-in-progress open-source rendering engine, "XLE." XLE is a low-level rendering library focused on top quality lighting and scene environment rendering.

  • C++ (all post C++11, using modern patterns) with C# tools code
  • Focuses on hot button rendering features, such as Physically Based Rendering, Image Based Lighting, dynamic area light sources
  • & complex environmental effects such as ocean rendering and volumetric shadowed fog
  • Intended as a "hackable" engine -- that is, to be modified and extended to meet special case requirements
  • Includes many of the same features as high end commercial engines -- but in a modular, repurposable package (with unencumbered MIT license)

I can't post links or images yet. But please check out some environment screenshots at (xlgames-inc.github.io/posts/envshots/). And some character screenshots at (xlgames-inc.github.io/posts/first/).

XLE isn't a "complete solution" engine. It's more similar to Ogre Render. It's intended to be combined with other solutions for physicals, game logic, etc, etc...
So I'm looking for a project that might be interested in incorporating XLE as a module.

Let me give you a quick idea of some of the features in XLE...

  • Full physically based rendering functionality, including (xlgames-inc.github.io/posts/improvedibl/) image based lighting (which, in my opinion is the most important type of lighting for modern games)
  • A node based (xlgames-inc.github.io/posts/materialtool/) material authoring tool (for creating custom effects, like car paint)
  • dynamic area light support (spheres, rectangles, tubes)
  • DX11 based background texture and geometry streaming
  • Plus a lot more (did I mention screen space reflections? Or clustered lighting support? Or GPU based deep ocean animation? Or...)

XLE is still early in development -- there is a lot of code, but it's not going to be as polished as Ogre Render. My goal is to try to integrate XLE an existing project so that it can be tested in real-world working environment, and try to get it working as well as possible in that single project.

There is a downloadable test build at github.com/xlgames-inc/XLE/releases.

If there is any interest, and if we can work out an arrangement, I'm willing to do the initial integration -- probably in a way that can be switched between XLE and Ogre render with a compile time switch.

XLE is on github: github.com/xlgames-inc/XLE

Please drop me a line if you have any questions or comments!


Top
 Profile  
 
 Post subject: Re: Looking for collaboration projects
PostPosted: Mon Apr 04, 2016 12:39 am 
Offline
Newbie
User avatar

Joined: Fri Mar 21, 2014 12:25 am
Posts: 117
Location: Rio Grande do Sul
Sorry for the late reply..
That's awesome :D
really nice graphics, would be really cool if you choose Grit ;)

but i have a question, any plans for Linux support?


Top
 Profile  
 
 Post subject: Re: Looking for collaboration projects
PostPosted: Tue Apr 05, 2016 2:17 am 
Offline
Newbie

Joined: Wed Mar 30, 2016 6:03 am
Posts: 3
Augusto Moura wrote:
Sorry for the late reply..
but i have a question, any plans for Linux support?


I'm glad you like it :).

I'm currently working on adding Vulkan support. This will improves cross-platform compatibility greatly (it seems like Vulkan just works with everything). And, anyway, Vulkan looks like it might become the new dominant API. I'll keep a log of my progress on the blog here -- http://xlgames-inc.github.io/posts/vulkan/.

Once Vulkan is working, I think that some of the cross-platform code from another engine can be combined with XLE to support other platforms. Other than D3D, there's not really that much Windows-specific code. So, if things go well, it might be possible to support many platforms in one go.


Top
 Profile  
 
 Post subject: Re: Looking for collaboration projects
PostPosted: Tue Apr 05, 2016 6:58 am 
Offline
Newbie
User avatar

Joined: Fri Mar 21, 2014 12:25 am
Posts: 117
Location: Rio Grande do Sul
Cool :) :up:


Top
 Profile  
 
 Post subject: Re: Looking for collaboration projects
PostPosted: Sat Apr 09, 2016 11:46 pm 
Offline
Supreme Tyrant of All
Supreme Tyrant of All
User avatar

Joined: Sat Mar 27, 2010 1:13 pm
Posts: 769
Hi, thanks for getting in touch!

The main thing I see is that there's considerable overlap with Grit's existing graphics engine. This is 26kloc (about 1/3 of Grit's C++ code) and lots of Lua / shader code on top of that. It only uses Ogre for low level stuff + a few handy algorithms like shadows and skeletal animation. In recent years we've moved away from Ogre, implementing more high level stuff like scene management, material subsystems, etc., on top of its lower level rendering APIs.

We already have PBR and image-based lighting within a deferred pipeline. We do not have a nodes-based material editor, instead we have Lua-based scripting for materials and a custom shading language "gasoline" integrated with the engine at a high-level. This allows the same level of accessibility for artists and others not trained in GPU technology who want to make shaders, but additionally allows collaboration by enabling version control of materials and shaders. You don't get draggable boxes and lines, but that's by design.

We also have streaming at the game object level, which means you background load all resources needed for your objects (sound, physics meshes, etc) using the same central mechanism. The backing subsystems (e.g. graphics) only need to expose a way to load resources into memory from a background thread, which is managed centrally and spends nearly all of its life blocked on I/O (or idle because nothing needs loading). Background loading is kicked off early according to a prefetch algorithm, and object spawning is delayed until all resources are ready. Resource loading is prioritized for resources needed by objects near to the game "center" (whatever that means for a given game, usually the player or camera's location). There's a LRU cache when resources are no-longer needed.

We have plenty of other useful things -- soft particles (need a bit of an overhaul to atlas everything up and avoid some z sorting issues) used currently for fire, explosions, smoke, etc.. We have instanced vegetation (grass) although it doesn't move with the wind, special support for rendering sky layers (infinitely far away) used for some gradients and clouds right now + star map and moon bodies. We also have first person bodies / weapons (infinitely close). We have skeletal animation from Ogre and some code that implements a 3rd person controller that can run, walk, and jump. All of this is on top of Ogre, not provided by Ogre.

We have HDR with bloom, tone mapping, and customizable colour grading, but not yet other effects like SSAO, DoF, etc. These are on the roadmap, but not prioritized as there is so much else to do.

We have no proper support for oceans, which is something I have always wanted to do. One of the levels has a simple alpha plane for water, which when rendered with environmental (image-based) lighting and PBR actually looks quite nice from a distance. However it does not intersect with the shore properly. It does not use the deferred depth buffer for example. It does not have computed waves (like the FFT stuff used by Crysis). It also has no physics. It's literally just an alpha plane with a normal map and UV animation.

We have no volumetric lighting. I presume in a deferred shading system this can be added like point lights but using a different attenuation model (e.g. distance from plane instead of distance from point). That would be easy to add.

We're also stuck in DX9 at the moment until I finish migrating entirely to gasoline and fix some other stuff, when we'll be able to move to both D3D11 and latest GL. At that point a few more doors open for advanced techniques. But we're also lacking a lot of stuff that can be done right away in SM3. So it's not like that's really a blocker.

Given everything I just said, do you still think XLE would integrate cleanly with Grit? It looks to me like it would require huge amounts of work on either or both sides to even get started. Granted, I only took a cursory look at your codebase.

Even if we don't integrate it'd still be good to stay in touch. Are you interested in joining #gritengine on freenode?


Top
 Profile  
 
 Post subject: Re: Looking for collaboration projects
PostPosted: Sat Apr 09, 2016 11:57 pm 
Offline
Supreme Tyrant of All
Supreme Tyrant of All
User avatar

Joined: Sat Mar 27, 2010 1:13 pm
Posts: 769
Oh here's another big subject: What disk formats do you use for meshes, skeletons, and skeletal animation? Does it have good support from Blender, Maya, and Max? And how fast does it load in a stream context, is it optimized to be mmappable?


Top
 Profile  
 
 Post subject: Re: Looking for collaboration projects
PostPosted: Tue Apr 12, 2016 11:03 am 
Offline
Newbie

Joined: Wed Mar 30, 2016 6:03 am
Posts: 3
Hi Spark! Thanks for the reply.

It does sound like there are more rendering features in gritengine than I had initial expected! Ideally I had hoped to find a project that hadn't customized their rendering pipeline to much.

But really, I was only wondering about integrating at the lower level. So, my initial hope was that the higher level graphics code (like the skybox functionality, soft particles, instanced vegetation, etc) might not change. It would just go from being built on Ogre to being built on some abstraction layer than can switch between XLE and Ogre. In that sense, only a part of XLE would be used, and much of the existing grit code would remain as is.

There's no particular need to use every feature of XLE. Where there is overlap between gritengine, I wouldn't see any problems with just continuing to use the grit way.

That said, XLE is very different from Ogre and I'm not sure how easy or difficult that would be. Shaders might be particularly difficult, if you have a lot of them. It looks like you're using some cg shaders, they might just work as-is... But it's hard to know for sure. It sounds like Gasoline could continue to work the way it currently does.

My feeling was this would only make sense if it wasn't disruptive for the project. In particular, I wouldn't want to do anything that would break the ogre based engine.

My personal priority is to test XLE's flexibility and performance. I'm trying to think of inventive ways to get real-world data passing through XLE, without too much effort. There are a number of benefits to looking for an open-source project for that. My hope was to find a project that can a clean interface between it's high level rendering code and the lower level stuff -- some clean slice that could just graft onto XLE. That would provide the quickest way to start passing data through the XLE pipeline. The trick is finding the right project that has a lot of features, but can also be "grafted" like that.

Obviously this idea only really works if I can find the right project, and figure out the best "grafting" point :). I was attracted to gritengine because of it's focus on streaming, because it is using Ogre, and also because it has a lot of features that XLE doesn't. I thought -- well, maybe there can be some happy combination there? But as you say, it's hard to predict actually how much work would be involved.

Regarding disk formats, my feeling was that it might be possible to build in support for the formats you're already using. XLE does have it's own native format, and imports via Collada for wide support, and it is optimised for streaming and memory mapping. But it depends on if you've got a lot of assets already, or a very customised art pipeline. If the most straightforward approach is just to use the existing formats, I think that would probably be doable.


Hmmm... Let me see. One possible idea is to try something smaller, and see how it goes? So, for example, using the grit material system (maybe along with Gasoline) and try combining with low level XLE code.

I'm currently working on Vulkan support... I've been working on a HLSL to SPIR-V pipeline to use the existing XLE shaders. But it might be interesting to try Gasoline -> GLSL -> Vulkan, even just as an experiment in it's own right.

Anyway, it's just an idea ^^. I'll be busy for a while building the low level Vulkan stuff, but let me know if you'd be interested in giving it a try.


Top
 Profile  
 
 Post subject: Re: Looking for collaboration projects
PostPosted: Thu Apr 14, 2016 5:04 am 
Offline
Supreme Tyrant of All
Supreme Tyrant of All
User avatar

Joined: Sat Mar 27, 2010 1:13 pm
Posts: 769
I think we should probably talk face to face and figure out what the integration points might be. I'm in U.S. eastern time, how about you?


Top
 Profile  
 
 Post subject: Re: Looking for collaboration projects
PostPosted: Fri Apr 15, 2016 4:44 pm 
Offline
Supreme Tyrant of All
Supreme Tyrant of All
User avatar

Joined: Sat Mar 27, 2010 1:13 pm
Posts: 769
By face to face I really mean hangouts or skype or whatever, unless you happen to live in New York City, which would be a strange coincedence!


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 9 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Localized by MaĆ«l Soucaze © 2010 phpBB.fr