So, I made some progress with the pbr code. I think its usable in the current state. It hardly differs from the ioq3 shader. I added a neat little thing to it from Xycaleths code.
No wonder they can't be really seen. It's the same for every engine. Like UE4. The Lightmap doesn't store light positions. It only lighten and darken areas and only applies to stationary light sources. UE4 simply uses the normalmaps for genereating the lightmap. You can do the same thing in GTK Radiant with the material shaders.
q3map_normalimage textures/.../aaa_normalmap
q3map_lightmapsamplesize 1
There is a tutorial in JKHubs tutorial section. So, on my front: I added the pbr cvar and some other stuff on my repository. Just needs some testing and validating the correctness of the code, but it works. Next thing I want to update is the complete cubemapping code. ioQ3 allows to render cubemaps to files and read them back without rerendering them.
Yea, I tested if I could simply do a 1 on 1 port with the vanilla weather system. I'm positive that this can be worked out. Though a complete new weather system would be nice. But right now, I'm trying to make refraction work like a charm. Learned a lot about the renderer and I have a plan to completely rework the refraction code to fit the overall coding "style". Right now it's unnecessarily redundant and hacky. I also need to find a fix for the force speed effect. My guess is, that a renderfx flag (something with skipping the shadow calculation on the mesh) is unnoticed by the renderer. Just need to find the right place to add the exception. I also noticed that my shader is not doing what it's actually supposed to do.
Actually a nice idea, but the code doesn't differentiate between push and pull. Could look strange if you use pull and the refraction looks like push. One could change that in the game code though. Simply change the models of push and pull from the half-sphere to something cone like.
Nonono, force speed has nothing to do with refraction. I just hated the fact that it looked so bad in rend2 and found an easy fix. Actually I really like the spherical effect. I could add an alternative shading for it, if somebody tells me how it should look like. If you dislike the force push and pull effect, you can easily disable it now. Simply set "r_refraction 0". I think there are only 3 to 4 effects that use refraction now. 3 of them are push, pull and the shield. Can't remember the last one. I guess it was the sniper trail. I doesn't know for sure right now. ?_?
Oh yea, the pause is caused by the way the alpha is calculated. It counts down from like 240 to 10. Should be easy to fix. I guess I can fix that later today.
Ok, good news everyone. I got the refraction rendering working in SP. @@DT85 There seems to be a little mistake in your RB_RenderDrawSurfList . I just copied the first part (first line to the part where my code hooks in) from the mp rend2 and it starts to recognise the refractive surfaces. I'll try to figure out what causes the problem. Also the cull type for the refractive surfaces should be CT_BACK_SIDED. I have no idea why, but it works for force push and pull. I guess I'll add the rest of vanilla features and make a pull request on github. So stay tuned.
@@DT85 Oh, the cvar is r_refraction. Maybe this is the problem? After looking briefly at the vanilla code, I'm pretty sure the sp vanilla code handles the refraction/distortion like the mp renderer. I will still look at it when I'm home.
If you need a start for the refraction rendering: https://github.com/SomaZ/OpenJK Needs a lot of optimiziation though and some stuff of the vanilla refraction rendering is missing. Eg the wobble effect, refractive surfaces are not sorted in the right way and so on. Maybe someone finds a better way of doing it. Right now it uses another framebuffer, which is memory consuming. The shader is poorly written.... and so on At least it doesn't look to bad.
Oh, haven't even noticed that there is some google doc. I want to participate if there are still some people interested. I can't change anything in the doc btw. Only readable for me.
Looks good, but imo you should use an environment stage for some stronger highlight. Right now it looks pretty dull. Also, the scratches along the edges are to continuous and repetitive for my taste.
I'd say it's a light entity, but it doesn't get computed while compiling but in real time in the game itself, like the saber lights or light emitted by blaster shots.
I know it sucks, but I can only say: I'll release it when it's done. Some models are still missing, I want to fake the water caustics, add moving light shafts, make it playable (means adding propper collision to everything, add pickups, some spawnpoints and so on) and then add rend2 support (maybe later). So this could still take some time. :/
Thank you for the kind words. There is still a lot to do, but progress is steady. I guess I will start tomorrow with fixing the models since some normals are messed up, also adding the missing pipes and adding the railings. I'd love to add my terrain to the map, but it is one very large model (in model scale not file size or polycount) and I'm not sure if the model formats of jka will allow such a large model. Maybe anyone has an idea for a solution without separating the model in little pieces? It has only one 4k texture. I don't want to make the terrain a cubemap, because I want to fake caustics on it.