Jump to content

Recommended Posts

Posted

Hello Josh, hello everybody,

 

I come back on a well-known topic: texture baking (or lightmap)

Well, I posted one or two years ago on that topic, and someone (very kind) proposed me a shader, which multiplied the diffuse texture with the baked one.

Here is an extract of the _mesh.frag related to this shader, inserted in the Bloom shader:

//Bloom

#ifdef LW_BLOOM

vec4 bloomcolor = texture2D(LW_BLOOM,texcoord) * fragcolor;

gl_FragData[3] = bloomcolor;

gl_FragData[3].w = 0;

#else

#ifdef LW_GIMAP

vec4 gicolor = texture2D(LW_GIMAP,vec2(texcoord1.x,texcoord1.y));

gicolor *= diffuse;

gicolor.w = 1.0;

gl_FragData[3] = gicolor;

#else

 

The issue with that algo, is that we do not have exactly the same result with the real-time engine as the “non-realtime”rendering engine (for example mental ray,…).

I searched a lot by myself, and on the Internet. The fact is, when you combine linearly both maps, you will never get the exact result (Example: if you try diffuse*Baked or diffuse+baked, or diffuse*Baked+y*diffuse, etc…)

 

Here is an example of this, with some pictures (based on a forum post on the game engine “Nova”):

 

With the “classic algo” Diffuse Map*BakedMap (too dark result):

cf doc file attached...

 

With the algo Diffuse Map+BakedMap (too bright result):

cf doc file attached...

 

What we would like:

cf doc file attached...

 

The proposed algo, which is only an approximation of the wanted result, is the following:

1) For each pixel of Baked Map, convert the value RGB as HSL, and test the V value.

2) If V > 0,5 (in fact, this value can be modified…), perform DiffuseMap+BakedMap for that pixel

3) If V < 0,5 (in fact, this value can be modified…), perform DiffuseMap*BakedMap for that pixel

 

Well, as I know nothing about shader coding, I hope that someone could help me to code this shader, which will be probably very useful for many people.

 

Thanks in advance

 

PS: And for those who will ask "why don't you use deferred rendering ?", I will say "try to dvelop a video game, with IA, Navmesh,...And you will know why ;-)..TO SAVE FRAMES PER SECONDS !!!

Baking_00.doc

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...