[w]browser is the central element of [w]tech. It contains packages with meshes, textures and
shaders as well as lights. To understand the system of our browser you should have some background knowledge about organizing content in [w]tech:
In most cases you need a mesh, for example a plant, many times in your world. Other engines create for every instance of that plant an own actor. You are able to configure each plant for itself and maybe duplicate it. All in all not bad, but mostly the only variables which are unique are Location, Rotation and Scale. But if you want to change something afterwards you have to select every single actor manual when you forgot to put everything in a group.
Though we decided to put into the packages not only the pure content itself but also actors: When you import a mesh there is automatically created a actor for it which is visible in the [w]browser instead of the mesh. Now you can configure this actor and put it as ContentMark into your world. This ContentMark is only capable of saving three different variables:
Location, Rotation and Scale.
If you want to change the settings of the actor you do it at the actor in [w]browser and every ContentMark, whether in the current world or in any other adopts the change.
Even lights are saved in packages and you insert them into your world as ContentMark.
On the right hand side you can see the [w]browser, which contains some packages (.wpk). At the top is a small toolbar with some useful buttons like "NewPackage" or "Save". The whole browser is rendered with Direct2D and runs very smooth. It does even support aero glass effects and adopts the color of your windows.
After a doubleclick on a package [w]browser shows you the content of it. On the right hand side are some examples.
For a better navigation we have made a adress bar with small tabs like the ones you know from windows. You can click on them and get to where they point.
Meshes are imported with the assimp import library and converted in our own binary format .wob that enables very fast mesh loading and less wasting of diskspace. Assimp supports many mesh formats, for example .obj, .3ds or .lwo.
Textures should be imported as .jpg or, if a alpha channel is used, as .png. Bitmap and .tga are also supported but not recommend because the texture is directly imported into the package and .jpg compression is very useful to save diskspace.
In addition to the packages you can create folders for a better organization.
With a click on the sheet of paper in the toolbar appears a small menu of things which could be created in a package. In the future we will probably replace the toolbar with a pop up menu in the browser and buttons at each content.
[w]shade (text-based) is our shader editor. Currently it has access to the vertex, pixel and geometry shader and is easy to use.
At the top is a small tool bar which contains simple things like "NewShaderTemplate", "NewTexture" or "CompileShader". On the left hand side is a library of all commands which can be used. In the middle of the image you can see the text editor with the standard template. If you want to write your own shader you have just to change the text a little bit. You do not need to know all the functions, everything that could be prepared automatically is there.
In addition to the text based [w]shade there will be a node based one. Whereas most professional users prefer to write it as text it is much more comfortable and easier to understand if you use a node editor.
[w]browser will be partly rewritten as already mentioned. We want to replace the toolbar, add previews instead of the standard images and make it more comfortable. At the moment you have to import a mesh a second time if you want to give it another shader whereas the original should be kept. Therefore we will make a container for each content where instances of each actor are saved. The instances can be manipulated independ form the core actor and will be put into world as ContentMark as they were actors.