Here are the inputs for the lighting function:
RenderLighting(material, materialInfo, vertexWorldPosition.xyz, n, v, NdotV, f_diffuse, f_specular, renderprobes, ibldiffuse, iblspecular);
Material was generated automatically for a set of PBR textures I downloaded. The algorithm guesses which textures go in which slot, and if needed compresses them with the optimal format and converts them to DDS.
The orange texture is ambient occlusion / metal / roughness, which was automatically merged into a single image from separate files.
Well, the way things are right now there is no need for a file requester. You can just select the item you want from the combobox, which is much simpler.
based on this screenshot, I think everything is in good shape. All those numbers are reasonable. You can see the rendering time on the CPU is only 2 milliseconds, so it is likely you are GPU-limited. this means the shaders just process as fast as the GPU allows and there are no other bottlenecks.
1.0.3
In this build the mouse has to be dragged a certain distance before it will start drawing a new brush. This is intended to reduce the number of accidental object creation actions that can happen when working. If you press the mouse and move a couple of pixels, then release the mouse, the underlying object will be selected, instead of how previously object selection had zero tolerance for mouse movement.
Grab-and-rotate now works in 3D viewport as well. Hold Alt to rotate pitch / roll. I'm not going to tell you what the rules are for which is chosen, just try it and see if it feels intuitive to you.
The new scaling tool actually allows this, with no changes. It works on all objects.
For creation, I plan to make it so environment probes get drawn like a brush when they are created.
The material files currently just store the name of the shader family. They do not store the "Shaders" folder to the path, even though the files are located there.
I can't say exactly why but it feels intuitively right to me.
So explicitly declaring the file extension also feels like a strange thing to do.
Any money that was spent on the Ultra Engine early access subscription will be discounted from the price of a new license, for any version of Ultra Engine.
How do you feel about the rendering modes? I haven't implemented the solid / textured / lighting rendering modes that Leadwerks and Hammer have but I'm not sure these are needed.
Resizing isn't implemented in the 2D views yet.
One alternative approach for rotation in the 2D viewports would be if you just click and drag anywhere on a selected object, it starts rotating around the center. This would be like the way movement in 2D viewports currently works.
1.0.3
Crude implementation of terrain sculpt. Select "Heightmap Terrain" in the objects list, create a terrain, select the terrain toolbar button, start sculpting. Alt key digs. Terrain is using 16-bit floating point format for heightmaps, so you can raise or lower the terrain with no constraints. I had to hack the Newton library to add support for half-floats, and I am a little bit proud of myself for this.