Page 1 of 3

Specular Tex issue

Posted: 13 Feb 2015, 03:45
by aeonios
I've been trying to set up a specular texture for my map, but for some reason it isn't working properly. The texture is the same size as my diffuse texture and should match up properly.

I suspect that the problem is with the image format being wrong. I tried png and that didn't work, but after checking the image properties I saw that it had a 32bit color depth. So I tried setting the image to indexed mode->255 colors (optimized) in gimp and re-exporting to get a properly 8-bit depth image like the wiki says it should be. Still no luck, so I tried using a bmp image instead but with the same result.

I'm certain I set mapinfo.lua to point to the spectex correctly, and that I put it in the ./maps directory inside the map's sdd. Is there some special setting I need to know about in gimp?

Re: Specular Tex issue

Posted: 13 Feb 2015, 03:57
by enetheru
No special setting are needed, also it can be any size AFAIK its stretched over the terrain.

chuck up your mapinfo.lua somewhere to look at.

Re: Specular Tex issue

Posted: 13 Feb 2015, 04:04
by aeonios
enetheru wrote:No special setting are needed, also it can be any size AFAIK its stretched over the terrain.

chuck up your mapinfo.lua somewhere to look at.
Does that mean I can use a standard 32bit RGBa profile?

http://pastebin.com/6eHzZEXh

Re: Specular Tex issue

Posted: 13 Feb 2015, 07:29
by zoggop
i don't see any problem with the mapinfo.lua, maybe someone else does? i usually use RGBa .tga files, but a png should work. red comet v1.2 uses a 32 bit png as a specular. i believe you need all four channels for specular. i assume by 8bit depth, 8bit per channel was meant.

maybe upload the image somewhere?

Re: Specular Tex issue

Posted: 13 Feb 2015, 08:57
by aeonios
zoggop wrote:i don't see any problem with the mapinfo.lua, maybe someone else does? i usually use RGBa .tga files, but a png should work. red comet v1.2 uses a 32 bit png as a specular. i believe you need all four channels for specular. i assume by 8bit depth, 8bit per channel was meant.

maybe upload the image somewhere?
I think the problem is probably that I can't see speculars at all. I thought I could, but I see nothing on red comet v1.2 that looks like a specular (ie shinies that move with camera angle, which I assume is what it's supposed to look like). Spring and intel graphics don't get along very well, so I'm not terribly surprised, but it kind of sucks that I can't see what it looks like to test it. I do have advanced map shading set to 1, I at least checked on that.

If I understand correctly, the specular map is applied as a color add, so I should probably use the same colors as the diffuse (for gold metal spot graphics) and not a brightened version, right?

Re: Specular Tex issue

Posted: 13 Feb 2015, 09:25
by enetheru
Given this is the case, feel free to zip it up and put it on dropbox or something, I'll send back screenshots if you like. otherwise, you can really only simulate in blender what it might look like.

i used to do that before i upgraded my computer and got an nvidia card.

Re: Specular Tex issue

Posted: 13 Feb 2015, 11:44
by aeonios
enetheru wrote:Given this is the case, feel free to zip it up and put it on dropbox or something, I'll send back screenshots if you like. otherwise, you can really only simulate in blender what it might look like.

i used to do that before i upgraded my computer and got an nvidia card.
Well, that's less than ideal but I guess it works.

https://www.dropbox.com/s/jkyzdkqk4lvh5 ... 2.sd7?dl=0

current dev version.

Re: Specular Tex issue

Posted: 13 Feb 2015, 19:00
by zoggop
are you running windows? i have an intel i5 a few yeas old, and spring advanced map shading & shadows have been broken for me most versions in windows. there was one version that worked, it might've been 95. bizarrely, the same hardware works perfectly with spring in linux, so if you dual boot try that.

don't have time to reboot right now, but i can see that your specular image is 100% opacity the whole thing, and approaches white on the metal spots, which will make those metal spots blindingly shiny if the sun's at the right angle. these are the things you could test easily if advmapshading worked :-(

Re: Specular Tex issue

Posted: 13 Feb 2015, 19:32
by qray
aeonios wrote:If I understand correctly, the specular map is applied as a color add, so I should probably use the same colors as the diffuse (for gold metal spot graphics) and not a brightened version, right?
I would even rather try a darkened version (especially when using together with splat detail textures). Else it probably get's too shiny.

Screenshots:

With adv. map shading:
Image

Without adv. map shading:
Image

Specular image seems to work just fine. Could probably be resized to a smaller size without noticable impact.

Overall specularity is very (too?) high (the glare on the mountains is blinding in-game). AFAIK, tuning down groundSpecularColor (which is not set at all) would help here. Also groundDiffuseColor is set to 2.0, 2.0, 2.0 ; seems very high to me.

Re: Specular Tex issue

Posted: 13 Feb 2015, 20:00
by jK
iirc spectex uses all channels of the RGBA.

RGB for the specular color & A for the reflection term.


edit: yes it does, see https://github.com/spring/spring/blob/d ... .glsl#L369

Re: Specular Tex issue

Posted: 13 Feb 2015, 21:43
by smoth
specular uses all colors. Confirming


Specular is NOT for making the map brighter. It is for simulating a shiny surface. If you use it to brighten your map, you are going to have issues with it at different viewing angles.

Re: Specular Tex issue

Posted: 14 Feb 2015, 02:53
by aeonios
woah, ok the background specularity really is too high. I can't even tell what the mexes look like with all that noise, and it's really not supposed to look like that. The specmap is also pure black except for the metal spots and should contribute nothing at all to the specularity of anything else. I suspect a bad setting in mapinfo.

Unfortunately, I had to rip gentoo off this machine and destroy it with windows in order to get zero-k working. :| On the other hand linux had some weird performance issues with epic gui hangs and things. As is I'm basically stuck with windblows.

EDIT: ok new version is up here https://www.dropbox.com/s/c2mdriza0kfc5 ... 3.sd7?dl=0

I turned down anything that should affect general specularity so nothing except the mexes should have any noticeable shine.

Re: Specular Tex issue

Posted: 14 Feb 2015, 04:20
by zoggop
i just updated my intel gpu drivers and suddenly advmapshading and shadows work in windows spring 98. you might try that, too? http://www.intel.com/p/en_US/support/detect

the problem is your specmap.png has no alpha channel. as far as i can tell, a png's opacity channel is not the same as an alpha channel, and an alpha channel cannot be saved in a png. i think this is why i use tga. it's less confusing. here's my suggestion for the specmap: https://dl.dropboxusercontent.com/u/275 ... pecmap.tga

Re: Specular Tex issue

Posted: 14 Feb 2015, 04:42
by zoggop
Image
took this screenshot with the following lighting settings:

Code: Select all

		--// dynsun
		sunStartAngle = 0.0,
		sunOrbitTime  = 9000.0,
		sunDir        = { -0.25, 0.5, -0.5 },

		--// unit & ground lighting
		groundAmbientColor  = {0.5, 0.5, 0.5},
		groundDiffuseColor  = {0.5, 0.5, 0.5},
		groundSpecularColor = {1.0, 1.0, 1.0},
		groundShadowDensity = 0.8,
		unitAmbientColor    = {0.4, 0.4, 0.4},
		unitDiffuseColor    = {0.7, 0.7, 0.7},
		unitSpecularColor   = {0.7, 0.7, 0.7},
		unitShadowDensity   = 0.8,
		specularExponent    = 100.0,
okay i'll stop being a busybody now

Re: Specular Tex issue

Posted: 14 Feb 2015, 05:11
by qray
zoggop wrote:...as far as i can tell, a png's opacity channel is not the same as an alpha channel, and an alpha channel cannot be saved in a png.
Are you sure? Wiki states that PNG and TGA are valid formats. Would be interesting to confirm this.

Re: Specular Tex issue

Posted: 14 Feb 2015, 05:36
by aeonios
zoggop wrote:i just updated my intel gpu drivers and suddenly advmapshading and shadows work in windows spring 98. you might try that, too? http://www.intel.com/p/en_US/support/detect
Thanks, I think that should help. Kinda wish I'd known about that earlier.
zoggop wrote:the problem is your specmap.png has no alpha channel. as far as i can tell, a png's opacity channel is not the same as an alpha channel, and an alpha channel cannot be saved in a png.
No, png is fully capable of alpha. I applied the mex graphic to my map as a png with alpha border. I merely took the resulting layer and pasted it on a black bg for the specmap. :P I didn't bother using alpha for two reasons:

First is that if alpha is zero it creates visual artifacts, but a black bg should produce zero specular reflection regardless. It also compresses very well.

The second is that, since I can't see what I'm doing I can't make any sensible adjustments to it either. I think adjusting the alpha of the whole image to control the brightness would probably be the best approach here though.
zoggop wrote:i think this is why i use tga. it's less confusing. here's my suggestion for the specmap: https://dl.dropboxusercontent.com/u/275 ... pecmap.tga
I kind of don't like that you scaled it. The original was only like 300KB (while your scaled tga is 4MB!). :( I think the black bg should have worked, and I think reducing the alpha of the whole image would have been better than making the mexes darker. Maybe.

In your screenshot the mexes at bottom right looked too dark to me. I think that's because you have ground diffuse set so low though, which has nothing to do with the specmap. 1.0 1.0 1.0 would probably work, or 0.75** or something like that, but what you see and what I see are probably not the same given monitor settings, etc.

Re: Specular Tex issue

Posted: 14 Feb 2015, 05:56
by jK
zoggop wrote:the problem is your specmap.png has no alpha channel. as far as i can tell, a png's opacity channel is not the same as an alpha channel, and an alpha channel cannot be saved in a png. i think this is why i use tga.
just no, and NEVER use tga

Re: Specular Tex issue

Posted: 14 Feb 2015, 06:13
by smoth
qray wrote:
zoggop wrote:...as far as i can tell, a png's opacity channel is not the same as an alpha channel, and an alpha channel cannot be saved in a png.
Are you sure? Wiki states that PNG and TGA are valid formats. Would be interesting to confirm this.
PNG supports an alpha channel.

Re: Specular Tex issue

Posted: 14 Feb 2015, 07:38
by enetheru
aeonios wrote:I didn't bother using alpha for two reasons:

First is that if alpha is zero it creates visual artifacts, but a black bg should produce zero specular reflection regardless. It also compresses very well.

The second is that, since I can't see what I'm doing I can't make any sensible adjustments to it either. I think adjusting the alpha of the whole image to control the brightness would probably be the best approach here though.
In regards to this, if the alpha channel is missing, when loaded by image loaders it will assume a fully opaque alpha channel. and since this channel is being used as the specular exponent it creates a super shiny map.

Since this isnt super clear in the documentation do you mind editing it?
https://springrts.com/wiki/Mapdev:specular

Re: Specular Tex issue

Posted: 14 Feb 2015, 08:05
by aeonios
Ok, the intel updater didn't work worth anything so I had to upgrade my graphics driver manually, which also didn't help. Go figure.

What I ended up doing with the specmap is basically I set the black bg to 50% alpha and lowered the brightness of the mex layer. I may have to set the bg to 10% alpha, but a pure black specmap should reflect nothing either way.

@zoggop: I ended up adjusting the lighting settings sort of as a compromise to yours. Getting the lighting right is still an ongoing process though.

the current version is here: https://www.dropbox.com/s/7k9m92z248isb ... 4.sd7?dl=0
enetheru wrote:In regards to this, if the alpha channel is missing, when loaded by image loaders it will assume a fully opaque alpha channel. and since this channel is being used as the specular exponent it creates a super shiny map.

Since this isnt super clear in the documentation do you mind editing it?
https://springrts.com/wiki/Mapdev:specular
I don't quite understand it yet. :|