Jump to content

Rend2 - A Modern Renderer


Xycaleth

Recommended Posts

So I know this is sort of butting in. But I'm currently working on Jedi's Home III, I've been watching for some time your guy's progress. If you're willing I'd like to make a version of JH3 work/use rend2 in support of your guys's work. I'd need to know HOW to set up my end to build/compile but other then that you don't need to hold my hand. In other words, I want in on this XD!

Link to comment

So I know this is sort of butting in. But I'm currently working on Jedi's Home III, I've been watching for some time your guy's progress. If you're willing I'd like to make a version of JH3 work/use rend2 in support of your guys's work. I'd need to know HOW to set up my end to build/compile but other then that you don't need to hold my hand. In other words, I want in on this XD!

 

If I remember correctly there's no special compilation required. The gist of it is that when you switch cl_renderer to rd-rend2 the game uses .mat (material) files instead of .shader files. So you should prepare those accordingly. I'll have to dig into this myself too - @@AshuraDX might know more about .mat.

Link to comment

@@Sir Crusher You should know, that the video on youtube you commented on is from a fork of rend2, which was ported by DT85 to singleplayer and modified by me. I added some pbr cvars and some very little enhancements.

@@DT85 Is there a public build for people who want to play around with GL2?

 

Some things to notice:

- rend2 and GL2 (which is the sp fork of it right now) use a different layout for specular textures.

- both use the metal roughness workflow

- rend2 specular texture gets interpreted as:

red channel is the metalness

alpha channel is the roughness

- GL2 specular texture gets interpreted as:

red channel is roughness (can be gloss, smoothness or shininess too, but you need to make sure all your materials use only one of the values)

green channel is metalness

blue channel is occlusion

- shadows are only implemented for the sun

 

Ok here is a short form tutorial.

Mapping and compiling

 

 

Ok, first of all, mapping and compiling is nearly untouched by the new rendering engines. There are only a very few things you might want to consider. If you want to have crisp shadows coming from the sun, remove the sun in your sky in the shader files (maybe just comment them out) and compile the map without the sun. You have to add a new shader for the sun, but I'll explain it in the material shader part.

Second thing you want to do is placing cubemaps. You need to place new entities that are named "misc_cubemap" and give them a field "radius". This radius is not drawn in GTK radiant so you need to look at the rulers.

It should look something like this after placing them (without the radiuses):

demo1.png?w=494&h=203

There is nothing special to say about compiling. Compile as usual

Edit: Ups, forgot one could add -deluxe for the light stage of compiling. This is partially implemented in GL2 :P

 

 

materials and shaders

 

 

To support the old renderer, the shader files don't need to be changed, but you need to write some new shader files. To start with you can simply copy your shader file and rename the extension to ".mtr" instead of ".shader".

example of a shader for brushes:

 

 

textures/test/test_wall_d
{
	{
        map textures/test/test_wall_d
	}
	{
	stage normalmap
	map textures/test/test_wall_n
        }
	{
        stage specularmap
        map textures/test/test_wall_s
	}
        {
        map $lightmap
        blendfunc GL_DST_COLOR GL_ZERO
    }
}

 

 

example of a shader for models an playermodels:

 

 

models/weapons2/clonedummy/helmet
{
cull	disable
    {
        map models/weapons2/clonedummy/helmet
        rgbGen lightingDiffuse
    }
    {
	stage normalmap
	map models/weapons2/clonedummy/Helmet_normal
    }
    {
	stage specularmap
        map models/weapons2/clonedummy/helmet_Specular
    }
}

 

 

example for a sky shader

 

 

textures/skies/rend2
{
	surfaceparm	sky
	surfaceparm	noimpact
	surfaceparm	nomarks
	surfaceparm nolightmap
	notc
	//q3gl2_sun <red> <green> <blue> <intensity> <degrees> <elevation> <shadowScale>
	q3gl2_sun 240 238 200 500 195 35 0.5 0.2

        //q3gl2_tonemap <toneMapMin> <toneMapAvg> <toneMapMax> <autoExposureMin> <autoExposureMax>
	
	skyParms	textures/skies/desert 512 -
}

 

 

Can't think of anything else right now.

 

 

For more information, go to: https://github.com/ioquake/ioq3/blob/master/opengl2-readme.md

Smoo, Sir Crusher and Ramikad like this
Link to comment

If I remember correctly there's no special compilation required. The gist of it is that when you switch cl_renderer to rd-rend2 the game uses .mat (material) files instead of .shader files. So you should prepare those accordingly. I'll have to dig into this myself too - @@AshuraDX might know more about .mat.

Yea I think a good video or set of video's would be nice going over what to do correctly and how all the new thing's work and should be used. The new shader's, entities etc. The best way to get people to use a product is to correctly show them how to use it. :D I hope they do some thing like this!

Link to comment
  • 4 weeks later...

DISCLAIMER:

 

This single-player EXE & DLLs download is aimed at developers, not gamers and is intended to work with DF2 Mod. In saying that, some parts of the base game may work but others won't. The GL2 renderer will load as default, so no need to do cl_renderer. Also, GL1 is not included.

 

https://www.dropbox.com/s/xr2lb3tffaufyz6/OpenDF2.zip?dl=0

 

Hi,

 

I was planning to replay JO and JA singleplayer campaigns, or maybe some SP mods, and now I'm wondering if maybe I should wait for this new render. As I see in the firts page, Rend2 only works in windows MP right now, but... will this work with JO/JA singleplayer campaigns someday? Any ETA?

Link to comment

Hi,

 

I was planning to replay JO and JA singleplayer campaigns, or maybe some SP mods, and now I'm wondering if maybe I should wait for this new render. As I see in the firts page, Rend2 only works in windows MP right now, but... will this work with JO/JA singleplayer campaigns someday? Any ETA?

eezstreet made a port of my current GL2 version for his JK2:Enhanced. I wouldn't advise using it in the current state though. Some stuff is simply not implemented yet and this will take some time. There is no ETA. I can only say, that it's ready when it's ready and don't expect a release this year.

eezstreet and Aidor like this
Link to comment

eezstreet made a port of my current GL2 version for his JK2:Enhanced. I wouldn't advise using it in the current state though. Some stuff is simply not implemented yet and this will take some time. There is no ETA. I can only say, that it's ready when it's ready and don't expect a release this year.

 

The new renderer won't really do much without assets meant for it.

 

Ok guys, I see, thanks! I'll take a look to the JK2:Enhanced, and then I'll decide.

Link to comment
  • 4 weeks later...

Can't.

 

You didn't provide any info, but I think you might not be able to compile the provided source code on linux right?

Try this branch: https://github.com/RostakaGmfun/OpenJK/tree/linux-fixes

If there are warnings in the building process like "unfinished Block" or something like this, you need to resave the glsl shaders, else the compiled game will crash after the splashscreen with an "unable to link shader" message. Hope this helps.

Link to comment
  • 4 weeks later...

Hi guys,

I have problem with rend2:

 

----- Initializing Renderer ----
Trying to load "rd-rend2_x86.dll" from "D:\Gry\SteamLibrary\steamapps\common\Jedi Academy\GameData"...
Mismatched REF_API_VERSION: expected 8, got 3
Couldn't initialize refresh

 

 

Don't know what to do...
I lunch JK3 from steam library. Multiplayer ofc. OpenJK installed ofc. 

Link to comment

Hi guys,

I have problem with rend2:

 

 

Don't know what to do...

I lunch JK3 from steam library. Multiplayer ofc. OpenJK installed ofc. 

 

Looks like you want to use rend2 with a newer build of OpenJK. The rendering API changed afaik. You can currently only use rend2 with the latest build before that change. I have no idea which build this happened. Maybe @@ensiform knows more?

Else you can simply compile the latest code of Xyc's rend2 repro.

 

Wait, are you trying to use rend2 with the vanilla jamp?

Link to comment
  • 4 weeks later...

hey guys! Unfortunatly i got problems with the installation.

 

So as mentioned the rend2 doesn't work with the newest OpenJK release. But when using an older release it's starting up but i don't see any improvements except a bit hdr/bloom. Where am i wrong? Do i need to activate sth somewhere? (Of course i typed cl_renderer in console)

 

greetz!

Link to comment
  • 2 weeks later...

Sorry for my bad Eenglish. I mostly use google translate from Ukrainian to English.

 

I have a problem with a normal map.
On a test map, I can only see if I come to the wall with a sword (lightsaber). Other light sources do not affect the surface.

Please give me some advices about shaders, and how to do the compilation correctly.

Can I find a map created for rend2? I would look at the shader (mtr) files, and I would learn a lot.

 

And it would be nice if someone created a video tutorial. (Shader, mtr, сompilation...) Rend2 will revive the popularity of this game. So video tutorials will help attract more people to create models and maps.

Norm1-screenshot.png

Norm1-screenshot1.png

Smoo and DarthStiv like this
Link to comment

Sorry for my bad Eenglish. I mostly use google translate from Ukrainian to English.

 

I have a problem with a normal map.

On a test map, I can only see if I come to the wall with a sword (lightsaber). Other light sources do not affect the surface.

Please give me some advices about shaders, and how to do the compilation correctly.

Can I find a map created for rend2? I would look at the shader (mtr) files, and I would learn a lot.

 

And it would be nice if someone created a video tutorial. (Shader, mtr, сompilation...) Rend2 will revive the popularity of this game. So video tutorials will help attract more people to create models and maps.

 

For this you need to understand how normal mapping actually works. It fakes the normal direction of the surface and darkens the areas that point kind of the same direction as the light. Problem with that is, that you have to know where the light is, to compair the normal vector and the light incident vector. The real problem in this case is that all the surfaces lit by static lights only store the information of how much light there is and which color shines on it. This information is stored in the .bsp as a lightmap (actually several ones). You have no information about the incident light vector. This results in normal mapping that is only visible with (real) dynamic lights like saber and muzzleflashes.

 

You have multiple options.

First one: Tell the shader before compilation that there is a normal map and bake the occlusion information in the lightmaps. Pro: Easy to work out, you find a tutorial in the tutorials section about it. Con: You actually loose the advantage of very crisp normal mapping for static lights, because lightmaps have a low resolution. (you could krank it up in GTKRadiant, but you will loose lots of performance overall)

Second one: Use fxRunners. There was a map Scizo made for rend2 and he added dynamic ligths via fxRunners. I have no idea how this works, I guess you can find the map 2 or 3 pages prior this one. He included his map file (also all his shaders, textures and so on, so this is worth a look for you).

Third one: Use parallax mapping. Example also in the map made by Scizo.

Last one (not a real one I guess): Fix deluxe mapping in the rend2 branch and simply compile your map with -deluxe in the lighting stage. (this technique is not perfect, but it should suffice for most cases) GL2 can use deluxemapping, ioq3 too.

 

Hope this helps.

Link to comment

@@SomaZ -- any chance of you porting your GL2 enhancements back to rend2 MP? Or make a public version of your GL2 for SP? Or is it intended to be exclusive to DF2 until DF2 is released?

 

I already did with the cubemap convolution code, but it only works on the rend2 weather branch (simply because I did a port of this branch and it changed alot, so I didn't want to backport my code), which renders rain on every map, all the time. Every part of the code of DF2 is public. You simply have to search it on GitHub....

Archangel35757 likes this
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...