Rss

Archives for : DevLog

Mirage’s PFR & IFL

It’s been a while since I did post in here, in fact been even longer since i did post about Mirage. But during that silence, i was still working on…Let’s say some different “Stuff”. And one of the main things I was casually working on during that time was defiantly Mirage.

There are a ton been made in Mirage, really a ton of things, starting from tiny things in loading files, writing files, or re-integration of the entire UI, up to complicated things such as full PBR bones skinned and animated meshes. Today however i want to spot something specific, which is the PBR & IBL rendering itself, regardless what type of mesh data been rendered. And as you might have noticed i put a title for the post as “PFR” to stand for Physically Faked Rendering! And “IFL” as you might have guessed to stand for Image Faked Lighting!

So why I do call it like that?

Well, before adding the full PBR support in Mirage, all what i knew about the PBR approach is the overall idea, what we see at the engine user end of something like Unreal or Unity or even any other engine that support PBR, no more details. Just use specific textures (roughness, metallic,..etc.) to define the surface being rendered. And that’s all of it!
And so as my idea about the image based lighting, just put an image to the environment cube, and it is used to light the scene.
But when the time came to implement it, i needed to start reading a lot more in depth about the process (At the end of the post, I’ll leave all the links for the articles that helped me to understand and implement that), but at the end of the day, it turns out to be another “emulation” to the feature. Like every thing else about rendering, it is faked emulation, stating from the basic movement of the camera in 3d scene up to things like shadows, caustics & everything else in rendering (Pre-RTX may be) need to be faked in order to give the feeling of it’s existence. Same way we fake that shadow been casted by a mesh and light source, we also fake that there is actual real environmental light and real surface definition for a set of polygons.

Anyways, so how that thing works (IMO) ?

1. SkyBox

We create a cube mesh (or load one), that will surround the entire scene, this will simulate the sky itself. And that’s why it is common to be called the “SkyBox”. I did knew that, but what i didn’t is as follow:
The skybox shader itself, is actually the simplest shader here, nothing fancy at all about it! Just a shader to wrap a mesh with texture!
One thing to keep in mind here, that this skybox mesh model matrix will need to match the view matrix, this way, when we zoom or move around the scene, the skybox remain far away from reach, and most importantly feels like a skybox!

2. CubeMap

That cube (aka sky) with that basic shader we mentioned, will not use just a simple texture to wrap the surface of the sky. Nope, it’s a 6 faces texture applied to it, this is called “CubeMap” (if u r not familiar with it), this is usually comes with the format of HDR (the type and format will actually depend on many things, my first implementation was actually a normal 6 textures stitched, and later i did support the read of HDR & KTX fiels).

The “Array Layers” is the number of the texture faces, or may be better to say the number of textures per texture!

btw, you can get a ton of pretty ones from the HDR Labs: http://www.hdrlabs.com/sibl/archive.html

3. Light

Now the trick of using this image to light a scene/object is actually very simple, in every inch of the mesh (at pixel level, so better to say at every pixel the mesh is occupying at screen), we check the normal of it (vertex..or face? you guess!) and using this normal to get the color from the SkyBox texture, this will be basically the light color that will be sampled to this area of the mesh, and It’s why i’ve decided to work for a while in adding a new visualizing mode to show surface normals.

4. Irradiance CubeMap

But we now have an issue! This HDR CubeMap image have a ton of pixels that might have a huge range of colors data, This; First, will be very consuming at runtime. Second, won’t be efficient or even give good lighting results (no smooth lighting), and for that we have to take that huge HDR 6 faces CubeMap image, and re-generate a smaller & “blurry” version of it that holds a lot less information (not actually less, but more usable to light a scene), which called Irradiance CubeMap (the name makes perfect sense for the job!)
More useful screenshots about the irradiance at the debugging section below.

We go from this, full detailed cubemap. This original cubemap was 2048px
To this blurry cubemap image with more smoothness & blending between colors. The generated imaged usually 64px or so

5. BRDF

Another texture we need to generate, which called BRDF, this one is basically the core reason to call the entire process “fake” as this texture is nothing more than pre-defined values for the surface/material roughness and camera view angles. It is like a table of values, that we look up through it at run-time while calculating the final color of each fragment (that belongs to an object using the PBR shading) on the screen. If we follow the standard common values, we will always get the exact same visual of that texture that is used in most common engines.

The generated BRDF view from NSight, usually looks like this in any PBR renderer
The equation from Unreal Engine Siggraph 2013 talk

6. PreFiltered CubeMap

And one more texture to generate, which is usually called “PreFilteredCubeMap”, which is dedicated to the specualr values based on the surface roughness (or roughness texture map if I would say at this moment). This texture idea is very simple, it is basically a series of mip-maps of the CubeMap, the mip 0 which is the most clear one, will represent a surface with roughness of 0.f, which means it is not rough at all. And go up in the chain of mips, until reaching the last mip-map of the cubemap, which is an equal to the roughness of 1.f.

One thing to highlight here, all those textures are generated at the beginning of the rendering process, even before creating any of the rendering pipelines, which means those are sort of baked textures that kept in memory. So what does this mean?
Well, it means if the skybox for example will be moving (rotating for example) at runtime, the lighting on the character will be still the same, as the textures already baked based on specific rotation of the skybox, so if the intention is to have static skybox, then it’s okay. But if not, then there need to be resources recreation at runtime to match the skybox rotation, which is not recommended. And i believe this is doable and can be faked with pre-baking some variation of textures based on the skybox rotation (1 texture per 90 degree, 4 would be okay) and then blending between them at runtime (this is still under investigation task)!

Debugging

As you might have noticed, I do LOVE debugging modes (aka viewmodes, aka visualize modes) , so I’ve added a view mode for the cubemap irradiance contribution, which was very useful during the entire process of PBR integration. For example, this is to see how the irradiance contribute to lighting the model in PBR, only without the irradiance generation (or to be more specific, without blurry irradiance!)

And here how it looks when the irradiance correctly generated.

The difference is in the amount of details, where in the first image each pixel of the mesh might get a super different color than it’s neighbor, in the second we relying on the blurry version of the cubemap, which makes each pixel transition smoothly in the color with its neighbors. And if you can’t really tell the difference, then here a closer look with the Comperator tool.

And regarding the final composed image, it might look or even feel the same for the first glimpse. This is the version with the full cubemap details

And here how it looks when the irradiance correctly generated (smooth & blurry).

The difference in the final colored pass, is even more hard to find out, specially in a still image, but if you look closely you will feel some sort of grain or noise, which makes the image feel unnatural, and makes the skin texture feel…Having Scabies!
And if you can’t really tell the difference, then here a closer look with the Comperator tool.

Now let’s change the cubemap texture itself, to see how differ the irradiance contribution would be with another lighting conditions. here another screenshot, from exact same view for the exact same model, but with different cubemap texture loaded to the skybox and re-generated the PBR pipeline for the sake of update.

Super different! Fully blue model (Irradiance Contribution viewmode), because this new texture is full of blue and sky colors. And to see all together, final render + Irradiance contribution for two different cubemap textures, just for the sake of understanding how that works, behind the scenes

the compositing part of the shader is as simple as “vec3 diffuse = _irradianceTex * _albedoTex;”

Now, to dig it further! I’ve enabled the skybox rotation, which allows me to rotate it, but as expected, the model lighting never get affected, the lighting still the same! And using the new Irradiance Contribution viewmode can allow us to see that. Which is back to what I did mention before, that generating this type of textures, happening at load time, happening once, as it’s a costly process.

Q: So, is it impossible to get the effect of a correct IBL for PBR pipeline while rotating the skybox?
A: Well, the answer for this question is actually depeneds on the case. For example, if we think about a real scenario, the skybox is almost static, and never moves, specially when it is showing some buildings, interiors and whatnot. The point is, as long as the cubemap texture not showing bluesky with clouds only, then it make zero sense to rotate it at runtim (except for testing purposes).
The other thing, it depends on the generation time for the irradiance cubemap texture. At my case it take 180.ms to generate, which might be great in terms of a process at load time, but makes not sense to update it at runtime.

At the meantime, you will notice from the video that i do add more of debugging features than actual rendering features. And this is really important for me at this early stage, as it became very helpful to find out things & understanding more behind the scenes using those magical checkboxes!

And of course, the head is from the 3DScanStore, it’s free and great item for testing! I didn’t use all the content that comes with it, and I’ve to paint some textures to fit the PBR pipeline as it is clearly it was not built for PBR!

Next related post, I may show and talk more about the animated/skinned meshes & PBR in Mirage.

-m

References:
Siggraph 2013 – Real Shading in Unreal Engine 4
Graphic Rants: Specular BRDF Reference
Wikipedia – Bidirectional reflectance distribution function
Physically Based Shading and Image Based Lighting | Trent Reed
Implementation Notes: Runtime Environment Map Filtering for Image Based Lighting | Placeholder Art
LearnOpenGL – Diffuse irradiance
LearnOpenGL – Specular IBL
Advanced WebGL – Part 3: Irradiance Environment Map – Codeflow
Coding Labs :: Physically Based Rendering
Analytical DFG Term for IBL | Krzysztof Narkowicz

Terrain Sculpting Eraser

Several weeks ago I had a discussion with a friend regarding some of the terrain tools limitations within Unreal Engine comparing to other tools we used to use, and that discussion made me interested into checking and digging more into that part of Epic’s source-code, and see if it can be juicy enough to drive me into an adventure of adding stuff.

While the first thing we had in mind, was the layers system, both of us used to deal with some in-house engines that support layers sculpting, something similar to what you can see in Mudbox or ZBrush, but for terrain. You can’t imaging the amount of productivity and creativity that can be reached with such a system. And with that as a driving force, I started to write some code for a layers based terrains sculpting. It didn’t take much time, couple of days I guess, until I started to find some code that seems familiar and make sense, and by keep tracking it, I found out that Epic is actually doing the same feature at the same time, but it is experimental, and require to be activated from within the editor preferences. So I stopped working on that feature, and decided to just share that finding!

With that kida dead end, I decided to kill that feature branch, and start on the second thing we have in the list of “How to make terrain workflow in UE4 much robust“, which was the eraser.

Erasing brush is not something exist within Unreal (yet!) and it can be super super useful in many scenarios. So I decided to put one in to UE4, and after couple of weeks to making and replacing to find the best use case, I ended up on a decent erasing brush, but on day while merging the latest master into my feature branch, i got some conflicts and errors due to some matching naming conventions for a new tool called “Erase Brush” !!!! I did build the master to check it, and found out it is something very recent been made by one of Epic’s team, but fortunately it is totally different than what I’ve been building, while epics eraser is basically a Flatten brush that is hard-coded to zero, which means it always erase the terrain values to a flat surface, the eraser I’m working on in more of erasing what you been sculpted, and leave you with a previous iteration of your work!

And with that in mind, I decided to clean up my branch, rename all my new functions and data, and give the tool a proper name that more describing it’s usage, and do a pull request in order to have it within UE4.

What been added?

There are couple of new options within the context menu of the sculpting layer, the first one is “Fetch a restore point” which is the core step of using the erase brush, this option will keep a snapshot of the current terrain data as it is. The reason this feature is added, is to make the erase sculpted brush more robust in terms of erasing any part of the terrain to a previous sculpted value, not erasing to a flat surface with a high of zero.

The second new item within the context menu is “Reset to restore point”, as the name implies, this will revert the entire terrain layer to the saved restore point. At anytime while sculpting, can just revert to the base restore point without doing a hundred Ctrl+Z.

The third addition is the brush itself, which is located within the drop-down list of the sculpting brushes. This brush works as any other brush, just press and drag across the terrain, the result will be cleaning the brushed areas to reset them to the restore point. So this eraser is not cleaning to the default flat terrain, but to something the user already have sculpted.

Test Case

What about a test case to explain more?
This is a terrain with some sculpted areas, hills and valleys. The artist like it, so just did “Fetch a restore point” to be able to return to it or to any part of it in the future.

Then the artist kept sculpting up, down, smoothing and flatten some areas

But want to bring back the two simple hills that was at screen left and screen right, so simply can use the erase brush, and brush the needed areas. And the final result will be containing what been liked in the new sculpt mixed with what been liked from the old sculpt.

Finally, you can get all the code for that feature into your own Unreal fork from this pull request!

-m

PoTN Files association

Been quite sometime since the latest update for “Penguins of The North”, but I’ve been busy in other projects that will be covered in later posts, or already been covered in the previous couple of months, such as the rats, gamejam, tools, UE4 plugins, or even UE4 engine modifications. Anyways, after bringing my level editor to mobile & PC, and I was able to draft levels anytime, let my kids toy with the editor and make funny levels, doing that anywhere regardless any thing! But that came with an issue!!!

Every time I move the new levels from mobile to PC in order to review & edit, I’ve to [1]copy them to a specific folder in the game install, [2]launch the game, and within the game menus [3]I look for the editor, [4]open the level editor, and then within the level editor itself, I [5]prompt the “Open Level” dialogue, [6]search for the level I want within a list full of tons of levels, and….BOOM I can see or edit it now…Time waste, right??!! And that’s why i decided to work more on the file association for the game levels (*.PoTN files) and refine that workflow to the ultimate-robust-productive workflow. And the outcome was…

Now as soon as the levels copied to my PC, or even while the phone connected via USB, the *.PoTN files will be identified as level of the game, and i can just double click any to launch it in edit mode. There is only single blocker for now, which is the splash-screens and the time it takes to load, but I’ll get rid of those later for the editor, as yet the editor is based on 80% of the game framework, and that was made in order to keep things consistent between edit mode and play mode.

Anyways, that’s my quick update regarding PoTN, just wanted to let you know, it is still alive, I’ve no idea when that game is done, been many years, but I’m enjoying it as a learning experience to find new-grounds!

-m

Breaking down The Rats of “A Plague Tale”

Will try to not speak too much, and leave it to the content to handle the talk. With the most recent gameplay video of the amazing anticipated game (at least for me) A Plague Tale, I was fascinated by the rats in that demo, and I’ve seen some people speaking about the possibilities of having this in the final game, and others saying the game would fail to include that amount or would launch with less rats as a downgrade. So I wanted to put a proof of concept that this amount of rats and even 10x times more is still doable (speaking from Unreal + Niagara point of view). And at the same time, knock a new tiny closed door for the Unreal Engine users, to show that the huge world and possibilities relying beyond that door.

I’ve done many similar things in the past with Unreal and Cascade , some was experimental and others really saw some light. So I wanted this time to go ahead, do it with Niagara, Unreal and Epic’s tool-set. I used to have some 3DsMax and Maya custom built scripts, that give kinda similar results, but I wanted this time to use official unreal (4.22) not my own fork, and use any & every thing available to everyone (same max script, same rigging methods,…etc.) so I show some light in a direction that most of the users might not see. So, I hope I did good job with this one.

The full project source (will be updated with new tips as soon as I allocate more time to that project) is free and open for anyone on github:
https://github.com/mamoniem/APlagueTaleRats

And the tutorial, already uploaded (FINALLY!!!) to you tube in two different versions, as defined below:

  • Short Tutorial, ~10 minutes, which including the main steps, guidelines, the breakdown of the method and highlighting the core tips of the process.
  • Full Tutorial, ~37 minutes, which including every single detail about the process starting from getting the mesh, ending up with the entire map full of 50k reactive rats!
Watch it to get an idea, or if you want to not follow a step-by-step in detail guide

Watch it if you want to follow a step-by-step in super tiny detailed guide

-m

“I Burn”, My entery for Ludum Dare #44

Play Here

Soooo!!!
While I recently barely can find some free time after fulfilling my personal obligations, I took a decision, to not miss Ludum Dare this time, been couple of jams I try to enter, but always get busy and never deliver the game, and archive to the folder of death (a folder full of dead projects). And in order to do that, and to start giving myself a sense of a “MUST” take it to the end, I started to vote to the theme as I used to do for the past 10 years, but this time publicly by sharing my vote on twitter.


Ironically, the final jam theme, came one of my choice =D When I done the voting, I pick the ones i feel they are unique and vote for them +1, the ones that might be good or soso, i give them 0, and for the ones that i don’t like or repeated, i give them 0 as well instead of -1, as I hate giving negative review to the topics…Or to anything!!!

I spent almost all the first day with my family and trying to get the idea, while i should have got an idea within few minutes from the fact I’ve voted +1 to that theme..But that was not the case!
I’ve drafted on paper near 10 ideas or more, and few more came from my wife, and eventually didn’t like any..Day 1 is done, so I had to go to bed, so I can think freshly next day 😀
And while trying to sleep with the feel of guilt for wasting the entire day, I got the idea of the candle burning, it makes perfect sense, you play as a candle, you burn and melt, which means you dying or losing your life, and that is the currency for someone else, could be the person you light for. And while 1 day was already lost, and I’ve only one more day for the jam (yes, jam is 3 days, but my free time is limited this time, as I’ve to go to work on Sunday) I decided to think more about the idea, and about making it, but in smaller scope, and there it came the idea of the candle standing, you watching it dying, and you reading a punch of text on the screen. Later before submission, and after making the build, I decided to remove the text part, and let you (the player) to make your own text/story when you watch it reflecting some of your stories or memories.

The final game

Next day, I started right away to work on the game, I’ve made a ton before, and I know my process, so make the character, rig it, animate it & sculpt some details. And while I knew i’ll be using Unreal since the voting process, I wanted to try Unity’s new features, nothing better than learning new things while in rush! So I started moving my assets to make the game in Unity3d to try out the new HDRP and Shader graph, and that was a huge disappointment, don’t get me wrong, Unity is doing good job by adding all those new stuff, but as after 3 hours, I didn’t get any satisfying results, I can’t rely on Unity for this jam. This could be from the fact that all those features were in the preview section, and not ready yet for every scenario. So I decided to hump unreal and just proceed on my initial plan.

That thin candle have very complicated animations and workflow for a 2 days game!

When I did show the game to my friends, some of them asked about the animation, if it is simulated or cached. The answer is no, it is a a mix of 3 layers or techniques, a rig made of ~5 bones + Blendshapes + VertexShader animations. All the 3 of them working together in bringing that final result without having issues in a method dominating or fighting to own the vertices (there are trivial issues indeed though, but this is due to the limited time).

One important element for me, is the visual story telling, at the end of the day the only gameplay you do in that game, is pressing the “Quit” button at the end ^_^ apart from that, all happens mentally, you watch, observe, feel, and your brain will be building a story within your head, and all that will happen at the right empty space, where text used to be! This is not necessarily to happen, but this was what I tried to force the game to do to you! And in order to do that, light, color, camera & music never been enough, and this is the no.1 reason I decided to sculpt the face to go through phases while melting. which are in order:
Normal, Surprised, Sad, Smiley while reaching the end of life. A life ends with a tiny glimpse of a smile is essential!

Several blendshapes that been sculpted to be used. The highlighted one is the main skinned mesh.

Another last thing, I want to highlight in that project, is the visual quality, the reason I didn’t built the game in Unity was not about the broken tools, I can accept them and deal with them, but was the lacking of ability to achieve real wax at real-time, with real life light scattering around. But in Unreal, results can speak for themselves!
Have the chance to carve and create a very high quality of sub-surface scattering that works perfectly and respond realistically to the flames light, that is a thing!

The only thing i regret, is not making some normal map or melting liquid reaching the floor!

-m

Behind the resume game

While cleaning up my storage, i found an old missing hard drive, that i never though it is working again! That drive contains a lot of old files from my iMac era, not project files, but things that (at that time) i considered as good to have, but if lost, then no problem!

One good folder i found within that drive, contain some screenshots i used to capture frequently while working on some projects, one of those projects was that resume game I did mentioned few months ago. So, let’s stop talking, and lets just show some of the good work been made in there, and most of it unfortunalty didn’t make it to the final game, in order to make it easy and fast experience for the HR receiving it!

The 3 Bosses design

The game was planned to contain 3 fights, not only one fight as you see in the game now. Those fights meant to be with a first unique boss, a second unique boss and a third huge boss that is made of the corpses of the previous two bosses.

First boss with the Me character next to it, in order to show the scale
Second boss with the Me character next to it, in order to show the scale
Third boss with the Me character next to it, in order to show the scale, you can tell how huge is that guy, and you can easily find out that it is made of the previous two guys from the double headed chest
And you supposed to be stuck between both of them, and fighting them at the same time. If you played the game, you will notice that only the second one exist, and the first one remains in the collapsed pose
Each of both bosses, used to have it’s own unique set of animations, which not all of it ended up been used. Not to mention that the third boss used to have even more complex animations & rig

The Assets

The Me had a 3d face with 2d facial features, in order to mimic as much as possible the look and feel of X360 avatar
Fun fact, that all the monsters, are built from this small set of rocks, scaled, deformed and rotated to feel different…With some UV variations too!
There used to be a funny animation where the boss will throw you to the camera, and the Me will stuck in there (blame cartoons for this idea!)
And of course no game without animation graphs

That’s it for now!!! There are many many more files, tests, old Maya 2012 files, references, deprecated assets, and a ton more videos that look horrible by now, but I’m proud of making them at that time.
Hope this chuck was enough to show some of what never been shown in the final game. And a glimpse of behind that solo deved game

-m

Cascade 2 Niagara

If you been following this blog for quite sometime, you are probably familiar with the type of things that I like to do in my free time. Mostly challenging or out of the box stuff weird things the probably no one around 5000 miles is thinking about. One of those things that i consider as out of the box activity, is the “Magical Tools” or at least this is how i like to call them!

Several years ago when Unity3d announced the new amazing UI system they have, at that time almost everyone was using an editor extension called NGUI, and with that in mind, and while it seemed at that time that the future will be for that new teased UI system (4.6) and NGUI will decay, I started thinking not only about learning the new system, but also in a way to migrate all my projects (and anyone’s project) to that UI system, and the result was a nice converting plugin that been around for quite sometime until the UI system became pretty much the default standard for any U3d project.

Today I wanted to talk about something similar, but more recent. Couple of years ago Epic announced that a new FX system is in the way, and not too long, it became an experimental thing, and now it is officially within the engine as a plugin (well, 4 or 5 months ago). During that past few months, specially after it came out of experimental folder, I started to testing it, trying it, learning it, and try to make some of that new system emitters within my projects. Have to say it give a TON of control, and it is amazing system, the smart way it was built (imagine, particle modules ain’t header files o.O) not to mention that you can add your own modules, and expand and extend the Niagara workflow to the infinity and beyond, only with data! And while is sounds perfect, but this means all the FX that I made in the past is dead now, and must start making new ones, while Cascade will still not dead, but it is very clear, that a new system will replace and old one at some point, same as Sequencer and Matinee. So I decided to work more in digesting that system and do my favorite thing, which is a “magical tool”!

Few days Ago I’ve announced on twitter about the tool I’ve been working on since Niagara release, that will ease the conversion of old particle FX systems (AKA cascade) to new Niagara systems. And while the differences between the two systems are almost the day and night difference, but finally I managed to have ways and road to make something working as expected, fast & kinda considering all the possibilities.

There isn’t much to show right now, yet the converted asset will look like 70%-80% the old one, and this is why i prefer to keep working and pushing it further. Right now, it’s all code, console messages & broken *.uasset files, but I see potential with near 80% similarities!!!!
For now, it is a side road that i took to experiment something new within couple of days, and ended up being a plugin that lasted for 3 months or may be more.
While this project been in the work for quite sometime, I decided to finalize it as soon as possible, and and put it out, so instead of migrating alone to Niagara system, let’s all get prepared to make it a group seasonal migration to the new system!!!!

-m

Level design on the Go

Not much to say, but more to show!

In the past couple of months I’ve been working on porting the PoTN level editor to Android devices, so I can get the chance to Design level at any time. It doesn’t matter if I’m in Subway, Taxi, Queue, Bed or Toilet. I can always design new levels whenever I want, which is FANTASTIC!!!

Successfully running on all my devices despite their difference in brand, quality & aspect ratio

Most of the work went into optimizations, inputs handling & whatnot; in order to package the entire 2GB game editor, its assets and data, into 45mb APK, while keeping the same visual quality and identity and good performance at this less powerful devices.

All designed levels will be saved to the device, and then can be either synced to my google derive (which is not available without VPN currently) or just hook the USB and copy them over to the game directory!!!
I guess I might release it with the final game at some point, so android users can build on the GO as well!

-m

Mirage Engine Latest Updates

Since my last post about “Mirage”, I had the chance to work on different branches in adding several new features to the engine. And while it is a complicated long term project & a side project as well, the progress becomes slow, but still happy with the outcomes regardless the amount.

Screenshop
Mirage now have a new tool called Screensho[p], which by that weird name you can easily guess it is the screenshot-ing tool in within the engine. Now no need to capture screens with a third party helper app or any external tools.
There is now a full screenshot-ting support that is copying right away from the buffers to a new imageview.
In the past years I had the chance to work with several commercial and in-house engines, while those engines either not allowing you to do screenshots without adding your own solutions (Unity as commercial example requires you writing editor extension for that goal), or giving you the opportunity to capture screenshots with many limitations (Unreal for example as an existing limited tool) such as file format, UI capturing and quality.

While writing the Mirage in-engine screenshot tool, I decided to start adding more options, like file format and UI which used to annoy me a lot with in in-house engines more than commercial engines. While in something like Unreal UI will not be captured, in Unity it will be captured, and will look ugly most of the time!

Check out the UI in this Unity based game I made earlier, it is captured using a Unity editor extension I made

Next step will be adding more functions to scale up the image. But yet, satisfied with the current options and generated captures….May be not satisfied with the JPG captures 😀 but what can we do JPG is JPG after all!

Another interesting part (for me at least) regarding this feature, was checking for & creating a user folder. It is something i didn’t think about it yet. The engine will need to store many values and/or files & user settings. So I decided to start handling this now while not much data need to be stored yet. And for the first time in the past ~8 years to handle such a thing in pure cpp. Have always been doing system/files related stuff either in C#, .Net or Py as the most common interfaces with any engine/API I used to use. And coming after those many years of dealing with Windows[C# & Py] to windows[C++]; I only must say, dealing with windows system in c++ got a lot worst over the years!
And btw, the engine footage in this article, in addition to the post featured image, are captured with Mirage’s Screenshop tool.

HDR & Cubemaps
While working on loading textures to test out models loading & the PBR shaders, I started in a new branch to load textures, as yet all the models were using color based textures. Yes Mirage yet can load textures to sample on meshes, but limited usage, so it was the time to expand that feature and make it BIG. And glad to say that Mirage by now can not only load all textures formats (JPG, PNG, PSD, TGA, TTF,…etc), but also all types.
For example apart from the common file format for images, Mirage can read HDR & KTX at the same time as high ranged images, and for each can load as HDR, LDR or Cubemap. All those options can be found in other engines of course, but not all of them at once!

A capture showing couple of PNG, JPG loaded along side to an HDR & RTX. Youll notice that the seleced image format is R8G8B8A8 while being HDR image as you can see, this is because for that example I done conversion from HDR to LDR

While I’ve to stop now, there are many other features been added, such as MSAA, VSync, Editable Wireframes, CollectionAssets, TurnTable Matrix, Editor options…. and much more, will sign off for now, and will be posting again about other things when I get the time. If you’ve any questions, feel free to reach out!

-m

Penguins of The North – Editor Updates

By now, you probably heard about my super old game Penguins of The north, either here, FB, YT or Twitter. If you don’t, then in a nutshell, it is one of those endless games, that i never feel it is the time to finish its development 😀 Funny thing, I’ve started this game almost 10 years ago. It went from idea, to 2d game, to 2.5d game, to 2d game again, to real 3d game, to 2d game (AGAIN), to a 2d game with level editor (now)!

POTN started many years ago as a kind of jam game, called Harmonics at that time, and then been polished an updated in 2013 to a 2.5d version. Later on I decided to take it further to be a full complete game, and set the theme to be 2d rather than 3d. I felt in love with penguins as creatures to replace my unknown old Harminion weird creatures, and that was a good decision, as the game passed steam’s greenlight (oh,…when greenlight was exist!). It moved to a full 3d version that i’ll share about it later as postmortem when the game get out! But while the two games seems a lot different, but they have always been the same project, same code base & same folder!

All that was great, but the real anchor point for that project, and the reason it never ended, is the level editor!

At somepoint in the game lifecycle, I’ve decided to add a level editor to help me iterate faster in creating new levels, not only that, but i can share an editor executable with my friends to toy with, and i get their final *.POTN files to check them out, and put the interesting ones into the game.

But editor meant more work for me to do. As my goal have always been a runtime editor, where at any moment you can show the editor and edit the level, and save it. So every single element of the game have to be in a good synchronization with the editor, and the vise versa! With some exceptions in mind, things that takes time to add, but it makes more sense, something like death situations that have to be ignored while editor UI is exist, but restart the level if you are in game mode. Again, this was not means to be editor where i create the game, but editor where the game can be edited at any time!

And what i wanted to share here today, is the most recent update in the Editor, you can see it has more functions now, better and unified UI, and most importantly, better experience to have the game living while being created!

Also I’ve noticed that the game page on the Unity Connect hub became one of the most visited pages in there, it’s been long time since i created this page, but seeing this huge interest in the game is really impressive. I don’t usually keep an eye in there, but seems I must do now!

https://connect.unity.com/p/games-penguins-of-the-north

At the end, I’ve posted this over twitter long time ago, and I’ve reposed it today, but it is good one to leave you with 😉

 

-m

  • udi udi song from paa
  • download offline real player
  • air os software
  • download phim hoac nguyen giap mf
  • trilha sonora keoma
  • firstclass mac os x
  • rpg online games
  • ce i cu inima mea
  • download snood on mac
  • vhs para dvd
  • php5 com mysql comArcio eletrA?nico
  • download sebastien tellier sexuality remix
  • download fernandinho cd uma nova historia
  • itunes x64 10
  • run daddy run
  • ntprint.inf x86 windows 2008 r2
  • privat server crossfire
  • samurai shodown rza download
  • anjos e demonios yes filmes
  • tippspiel em 2012 excel
  • avid pro tools 9 download
  • office 2010 download for key card
  • bug mafia hoteluri 2008 download
  • el matador pc
  • download soad sugar mp3
  • fatto de yaar bade ne
  • download lick you down
  • driver samsung l700 mobile
  • skat download fA?r windows 7
  • nonlinear process control download
  • on bended knee instrumental
  • senhor dos anAis download avi dublado
  • 5.50 gen d3 fat
  • xport 360 64 bit download
  • download cool 3d production studio
  • download j2se 5.0 update 6
  • peng you karaoke mp3 download
  • tnef download per mac
  • download yavarum nalam mp3
  • all hell let loose 2002
  • download philippine map for nokia 5800
  • we should be lovers mp3
  • npapi google chrome
  • programas nokia x6 download
  • fast internet explorer 8
  • download kmplayer terbaru 2012
  • download tumblr video mac
  • download driver dvd rom acer aspire 4520
  • isafe all in one keylogger 3.0.1
  • high speed hack
  • download do jogo scania driver
  • minnal azhage mp3 free
  • download bf heroes aimbot
  • download sandeepen for mac
  • jin crazy love
  • download c.s 1.5 completo
  • download joe brooks holes inside free
  • w8 theme for w7
  • supernatural 4 legendado
  • filmes japones dublado
  • yani olmuyor mp3
  • download zezo grandes sucessos
  • tintin explorers on the moon
  • acqlite for windows
  • download kgb hunter game
  • free telugu quran mp3
  • christina aguilera dirrty mp3
  • spin doctors two princes zippy
  • download oficina g3 depois da guerra
  • free download heidi cartoon in tamil
  • mfA yaAYAn 19 mp3
  • download ananthapuram 1980 telugu songs
  • papa roach loved download
  • download that don impress me much
  • sweet charity movie
  • download games blackberry curve 8530 free
  • pes 2011 pc link unico
  • download internet explorer youtube
  • careless whisper george michael mp3 free
  • canon mf 4100 treiber download
  • driver kyocera mita km 1650
  • download armadillo run 2
  • jagadeka veerudu athiloka sundari mp3 free
  • the boys 61 cbr
  • download sakura live wallpaper
  • empires dawn of the modern world full version
  • cd dj alpiste 2011
  • nek laura non c e download
  • download driver ecs 945ct m 2
  • speed dial for internet explorer
  • ios 6 verizon
  • secret agent 666 download
  • ds 1 games
  • chu hieu chu tinh
  • sonic colors rom nds
  • weak jojo mp3
  • folha de redaAA?o
  • three days grace album zip
  • ojee question paper download
  • download no mundo de 2020
  • montevideo bog te video dvdrip
  • crysis 2 pc patch 1.4
  • download programa baixar videos youtube
  • warcraft iii tft patch 1.25a
  • habib syech sholatun
  • ifaith download for mac
  • don quixote 2000 movie
  • baby names list
  • richard marx songs mp3
  • windows xp cu cd key
  • amigos para siempre karaoke download
  • teoman 2011 albA?m download
  • like me 2 chainz mp3
  • mp3 yusuf kalo
  • chota bheem pics
  • download gayatri mantra in audio
  • download final render 3ds max 2012
  • wii channels to sd card
  • how to daisy books
  • download inter manager serial number
  • luxA?ria isabella taviani
  • download rich dad's guide to investing asana
  • shinhwa let it go download
  • el ultimo palo
  • stellent content server development
  • mp3 iyeth bustami cinta hanya sekali
  • together again dave koz free
  • iclarified download ipad firmware
  • rtw barbarian invasion
  • limits of power download
  • where to hyperterminal
  • ajda pekkan boAYvermiAYim dA?nyaya download
  • fear game full version
  • tezz movie avi
  • dell drivers laptop xp
  • beyblade 1 season
  • download introduction to java programming comprehensive
  • city racing pc
  • ao meu lado tianastacia
  • hp ilo player download
  • zatmAnA cz dabing download
  • gameloft games for 5800
  • plugin windows media player free
  • bane the note
  • os 3 mosqueteiros 2011 dublado dvdrip
  • aarti kunj bihari download mp3
  • lagu love u howl
  • download original mile sur mera tumhara
  • bnf 2010 bookman
  • free rajasthani meena songs
  • kinect xbox games
  • registration internet manager
  • matchbox 20 exile on mainstream
  • download wow client us
  • masters of orion
  • ku fight song download
  • el viaje del emperador
  • holzfAller simulator 2012 tpb
  • tfc mod manager 1.5
  • download video wings little mix
  • em tipp excel download
  • nfsu2 save games
  • adela popescu incearca
  • principe caspian download dublado avi
  • download kau yang punya
  • kingdom hearts re coded download eu
  • gypsy kings volare free mp3
  • umer sharif dulha 2002 download
  • wild at heart series 1
  • hawa hawa song download
  • download sketch star animation creator
  • adagio lara fabian english
  • free nokia e90 app
  • free download pitstop pro 10
  • no printable coupons
  • lele nimeni nu i perfect
  • modern warfare 3 keygen
  • iobit windows care download
  • google translate documents download
  • mio usb driver c510
  • coyote kisses baby you're a blizzard
  • silk meeting in my bedroom
  • download b.u.g. mafia cu talpile arse
  • 3g mobile manager for android tablet
  • cursed by the sea
  • express burn 4
  • the a tally latest version free movie
  • mahadev ms office service pack 3 a mantra
  • apresenta music a galaxy s3 matanza
  • uloz bot quest worlds 1.4 a free to
  • river a mogwai music for a forgotten future frank
  • episode korean music a 7 8
  • 2 a here kitty kitty shelly laurentson mac
  • vol super mario world a smw central 2
  • windows a todo dia humberto e ronaldo 7
  • app a neenu sundara nenu undalenu mp3 for
  • messenger yahoo a hidden object games offline
  • bhakti der kleine lord a songs
  • longomba autocad 2012 64 bits a gratis karolina
  • 3c905 5 doll's lip stains mp3 a driver
  • font a virtual families with no time limit for
  • 2 a abbyy finereader sprint ocr launcher
  • avi a gpedit.msc para windows 7 player
  • nxt isi life mein movie a 3gp free
  • ki fast a gametop mario forever sawaari
  • soetedjo a shows for kids full
  • service itunes 7.9 a windows transition
  • gi a mp3 kyuhyun now and forever kwang
  • sound borderlands willowtree a mac effects
  • sg1 a sql 2008 r2 express sp1 stagione
  • free que assim seja rashid a cd full
  • kit a drink to that rihanna mp3 fantasy
  • son photoimpact 12 a kostenlos deutsch of
  • zoo a new york city for sims 3 tycoon
  • en a disco independiente ricardo arjona ingenieria
  • student oor mariyathai mp3 free a version
  • suruceanu a inuyasha kimi ga inai mirai ce
  • padam free a rahim shah new album padam
  • care tagebuch a kostenlos deutsch drake
  • redeem a programs nokia c1 01 code
  • terbaru a film lage raho munna bhai desember
  • savas krishna songs a free mp3 aura
  • inggris a kingdoms of amalur reckoning pc demo pes
  • desktop a de o grande mestre 3 linux
  • in trainz simulator locomotives a waves
  • planet a loader blackberry 9900 indonesia
  • power teri meri mp3 a pk tools
  • 360 a ubuntu 11.04 windows installer rose
  • phone a moein baba didane to pebl
  • required a splinter cell conviction for nokia 5800 for
  • windows a wolf sound effect mobile
  • lal a jhooti hai tu jhooti song
  • pkwy avast virus definitions offline a i
  • os indeo codec a windows xp x
  • dark a dota 6.71 com bot crusade
  • port hi q ochii verzi a fileshare of
  • closehead a lagu doel sumbang runtah berdiri
  • octane ibm server guide disk a loveyou
  • 5 a oracle 9i client for windows hybrid
  • fray a the fray cd how to save a life you
  • iron iphone configuration utility a for windows 7 man
  • for a ewallet for android mac
  • on a do it all drake android
  • no a converter sala to doc 1
  • effect a mariah carey endless love free 3
  • directx a using orbit youtube for
  • 41 a sub playful kiss 2011
  • sora akcent chimie intre noi a zippy ova
  • quickcam a logo comfort v5 pro
  • chelle a horizon xbox modding rae
  • 2 nirvana kuchek a cd rip songs
  • no vlc a linux redhat deserto
  • messenger imacros a for ie windows
  • vs a markus schulz toronto capcom
  • the depositfiles gerenciador de a word
  • full advogado fiel a cd album
  • manager alexis y fido invencibles a update
  • lost a cd to itunes 11 canvas
  • episode a mad surfer mp3 2
  • xilisoft a khutbah idul fitri bahasa sunda video
  • j cbt nuggets vmware a neto
  • for aventuras jackie chan a android
  • image a bold theme for blackberry curve file
  • chavoshi mortal kombat 9 patch 1.02 a greedy
  • application brutus na windows 7 a form
  • for martinho da vila a gratis nokia
  • scroll a da serie os sopranos reader
  • zeppelin minimoog plugin a mac world
  • lbp canon mf 4320 a 1910
  • rupa a safari windows 7 64 bit honey
  • aku a season 2 walking dead jadi
  • racing uc browser 7.3 free a for android 4x4
  • ipsw james blunt instrumental a directory
  • bible a chop my money by psquare and akon audio
  • movie anjell as ever mp3 a hindi
  • 5130 nokia 5800 xpressmusic hardware a rm
  • youtube a tasha baxter ebb & flow videos
  • root cd dj cabeça 2012 a xxjvt
  • birds a antm cycle 19 2.1
  • three a roses are red kingdom
  • corby a sam tsui born this way ii
  • untuk a wma from youtube win
  • suna a photoshop на бг remix
  • francois a jim ward broken songs maurice
  • kamus free a latest raj comics baggins yunani
  • disappear a citizen cope the clarence greenwood recordings in
  • dark a .exe with mac crusade
  • english free a goo of world melodious
  • hisoutensoku treasure island 1985 a english
  • of a songs of mukti 1977 salma
  • your de la ghetto perdicion free a name
  • para colin mcrae 1998 a perder
  • hyfr a dragon ball z fusion reborn full movie music
  • photoshop a adobe fireworks cs6 9
  • unlock jocuri a pt windows 7 generator
  • player a vplayer for android 2.1 4.0.1
  • uyen a album baru endank soekamti 2010 linh
  • that a damages season 4 episode 2 men
  • wrestling a johnny cash i won't back down 2011
  • waller john talbot mp3 a cd
  • schäfer microsoft mn 700 software a kalender
  • firmware websites a youtube videos mac failed
  • link crack rete wifi a dropbox
  • 3 cartoon yourself software a free datpiff
  • erecovery aadhar card software a management
  • miku a hawx hd android dream
  • s a surat al waqiah free o
  • tere a bing maps 3d italiano sanam
  • full a avengers hd trailer version
  • ux hp photosmart b209a m driver a 11i
  • for pakiet office a peb pc
  • retail a macro mouse x7 dvd
  • russell a otserv 8.6 xtibia peters