Oolite Bulletins
http://bb.aegidian.org/

Shaders’ Outpost
http://bb.aegidian.org/viewtopic.php?f=4&t=3460
Page 24 of 29

Author:  Griff [ Thu May 05, 2011 8:42 pm ]
Post subject:  Re: Shaders’ Outpost

Hi no, that won't work, you can't specify shaders in 'materials =' they have to go inside 'shaders =', something like this:-
edit: sorry, that was bad advice - see Ahruman's post below
Code:
shaders = 
	{ 
		"accipiter_no_shaders.png" = 
		{ 
			vertex_shader = "ahruman-generic-accipiter.vertex"; 
			fragment_shader = "accipiter-effects.fragment"; 
			textures = 
					(
						"accipiter_diffuse.png", 
						"accipiter_lights.png",
						"accipiter_effects.png"
					);
			uniforms =
					{
					tex0 = { type = texture; value = 0; };
					tex1 = { type = texture; value = 1; };
					tex2 = { type = texture; value = 2; };
					time = "universalTime";
					engine_level = "speedFactor"; 
					hull_heat_level = "hullHeatLevel";
					laser_heat_level = "laserHeatLevel";
					}; 	
		}; 
	};
although the rocket shader oxp is really old now and will need a re-write to work with the current Oolite so it's not worth bothering with it now and just using materials which have really come on in leaps and bounds since the rocket oxp was made, you can get nearly all the effects from the rocket shader oxp just using them (exceptions are the engine glow and laser gun heat glow effects - both generated using the effects_map texture, so if you leave the effects_map line out of your materials code you posted you should be set, you might also want to add in your materials some specularity settings eg:-
Code:
specular_color = ( 0.2, 0.2, 0.2 );  // Applies when specular map is not used (no shaders) 
shininess = 5;

Author:  JensAyton [ Thu May 05, 2011 8:54 pm ]
Post subject:  Re: Shaders’ Outpost

Quote:
Hi no, that won't work, you can't specify shaders in 'materials =' they have to go inside 'shaders =', something like this:-
Griff, you really should read the fine manual some time. :-)

It is necessary to set up the textures the way Griff demonstrated if you’re using custom shaders, though.

Author:  Staer9 [ Fri May 06, 2011 10:20 am ]
Post subject:  Re: Shaders’ Outpost

Thanks Griff and Ahruman,

although the rocket shader seems to work fine on my game.

Author:  ace\56 [ Wed Nov 09, 2011 11:14 am ]
Post subject:  Re: Shaders’ Outpost

I need a shader with diffuse, ilumination, specular and normal map support (can be spec baked to diffuse and illumination baked to normal)

Author:  Svengali [ Wed Nov 09, 2011 1:58 pm ]
Post subject:  Re: Shaders’ Outpost

You could simply use the materials entries. All of the requested functionality is supported there.

Or should this shader do something special?

Author:  MiMoriarty [ Fri Jan 20, 2012 8:59 am ]
Post subject:  Re: Shaders’ Outpost

Hi, I'm trying to add some engine heat effect through shaders to my ships. I have been following Griff and Ahruman's examples but I'm unable to understand how they work and i've failed. Should 3D models be normal mapped for the shaders to work? I thought they don't but now I've doubts about that.

Programing fragment vertex its beyond my possibilities because i'm not programer. I believed i will be able to tweak the examples' shaders but i've failed by now. Is there any DON'T PANIC, shaders for dummies, tutorial you can spare with me, please?

Author:  Griff [ Fri Jan 20, 2012 9:08 am ]
Post subject:  Re: Shaders’ Outpost

Hi MiMoriarty
You don't need to have the model normalmapped for shaders to work - I think the problem here is that that rocket shader example is so old that it no longer works in the way that Oolite expects it to, the main problem being that nowadays Oolite needs a list of all your textures written out as 'Uniforms' in the shipdata.plist, when the rocket shader was written you didn't need to do this as Oolite automatically assigned the uniform names Tex0, Tex1 etc to your textures and the shader is written to use these names.
I can have a go at updating the rocket shader example to work again this weekend and i'll try and write out a guide that explains how i'm doing this engine heat effect in the shaders in my shipset, it's not a very complex effect, just a matter of mixing some extra glowmaps onto the ship

Author:  MiMoriarty [ Fri Jan 20, 2012 9:15 am ]
Post subject:  Re: Shaders’ Outpost

Quote:
I can have a go at updating the rocket shader example to work again this weekend and i'll try and write out a guide that explains how i'm doing this engine heat effect in the shaders in my shipset, it's not a very complex effect, just a matter of mixing some extra glowmaps onto the ship
Griff. That would be very nice from you. :o

Author:  Griff [ Fri Jan 20, 2012 9:48 am ]
Post subject:  Re: Shaders’ Outpost

Seems to be a bit quiet at work so i had a quick look at the oxp, well, what a balst from the past! i grabbed the "Griff Rocket Shader Test - Engine Level Lights.zip file" from http://www.box.com/shared/h95rd0n25x (listed as Griff Rocket Example 2 in the first post of this thread), if you change the shipdata.plist to this
Code:
{
// ++++++           Griff Rocket Example               ++++++
"griff_rocket" = 
	{
	like_ship = "cobra3-trader";
	exhaust = ("0 0 -49.0 10.0 10.0 25.0");
	model = "griff_rocket.dat"; 
	name = "Griff Rocket";	
	roles = "griff_rocket";
	smooth = true;	
	shaders = 
		{ 
            "griff_rocket_unshaded_diffuse.png" = 
			{ 
                vertex_shader = "ahruman-generic.vertex"; 
                fragment_shader = "griff_rocket.fragment"; 
                textures = 
						(
							"griff_rocket_shaded_diffuse.png", 
							"griff_rocket_enginelevel_glowmap.png",
							"griff_rocket_effects.png"
						);
				uniforms =
						{
						tex0 = { type = texture; value = 0; };
						tex1 = { type = texture; value = 1; };
						tex2 = { type = texture; value = 2; };	
						time = "universalTime";
						engine_level = "speedFactor";	
						hull_heat_level = "hullHeatLevel";
						laser_heat_level = "laserHeatLevel";					
						}; 	
			}; 
		};
	};	
}
(Sorry, i had to change it from XML to Openstep format - i could't remember how to do the XML code)
and also change the script.js file in the Config folder to this:
Code:
// Configuration -- customize here 
this.role = "griff_rocket"; 
this.count = 3; 

// Standard attributes 
this.name           = "Spawn-" + this.role; 
this.author         = "Jens Ayton"; 
this.copyright      = "This script is hereby placed in the public domain."; 
this.version        = "1.0.1"; 
this.description    = "Script to make several ships of a given role appear at the witchpoint after every jump." 


this.shipWillLaunchFromStation = function() 
{ 
    system.legacy_addSystemShips(this.role, this.count, 1.0); 
    log("testscript.spawn", "Generated " + this.count + " " + this.role + " for testing purposes."); 
} 
it should get the oxp working again, although it still used the macro lighting code that we shouldn't be using!
When you launch the ammended script.js will spawn 3 rocket example ships near the station.
The next step i think will be to change the fragment shader to the normal map one that uses the Function to calculate lighting and re-post the oxp

How do you want to do the engine glows for your ship MiMoriarty, the current method is to just use the red and blue channels in a texture map recolour them orange and cyan in the shader and mix them into the texture - you don't have to do it this way - a simpler method would just be to paint out your final engine glow as a standard texture and add this onto the ship without having to mess around with single colour channels etc
here's a post where i seem to be trying to explain the single channel effects texture painting method
http://www.aegidian.org/bb/viewtopic.ph ... &start=285

Author:  MiMoriarty [ Fri Jan 20, 2012 10:07 am ]
Post subject:  Re: Shaders’ Outpost

Quote:
Seems to be a bit quiet at work so i had a quick look at the oxp, well, what a balst from the past! i grabbed the "Griff Rocket Shader Test - Engine Level Lights.zip file" from http://www.box.com/shared/h95rd0n25x (listed as Griff Rocket Example 2 in the first post of this thread), if you change the shipdata.plist to this
Code:
{
// ++++++ Griff Rocket Example ++++++
"griff_rocket" =
{
like_ship = "cobra3-trader";
exhaust = ("0 0 -49.0 10.0 10.0 25.0");
model = "griff_rocket.dat";
name = "Griff Rocket";
roles = "griff_rocket";
smooth = true;
shaders =
{
"griff_rocket_unshaded_diffuse.png" =
{
vertex_shader = "ahruman-generic.vertex";
fragment_shader = "griff_rocket.fragment";
textures =
(
"griff_rocket_shaded_diffuse.png",
"griff_rocket_enginelevel_glowmap.png",
"griff_rocket_effects.png"
);
uniforms =
{
tex0 = { type = texture; value = 0; };
tex1 = { type = texture; value = 1; };
tex2 = { type = texture; value = 2; };
time = "universalTime";
engine_level = "speedFactor";
hull_heat_level = "hullHeatLevel";
laser_heat_level = "laserHeatLevel";
};
};
};
};
}

(Sorry, i had to change it from XML to Openstep format - i could't remember how to do the XML code)
and also change the script.js file in the Config folder to this:
Code:
// Configuration -- customize here
this.role = "griff_rocket";
this.count = 3;

// Standard attributes
this.name = "Spawn-" + this.role;
this.author = "Jens Ayton";
this.copyright = "This script is hereby placed in the public domain.";
this.version = "1.0.1";
this.description = "Script to make several ships of a given role appear at the witchpoint after every jump."


this.shipWillLaunchFromStation = function()
{
system.legacy_addSystemShips(this.role, this.count, 1.0);
log("testscript.spawn", "Generated " + this.count + " " + this.role + " for testing purposes.");
}

it should get the oxp working again, although it still used the macro lighting code that we shouldn't be using!
When you launch the ammended script.js will spawn 3 rocket example ships near the station.
The next step i think will be to change the fragment shader to the normal map one that uses the Function to calculate lighting and re-post the oxp

How do you want to do the engine glows for your ship MiMoriarty, the current method is to just use the red and blue channels in a texture map recolour them orange and cyan in the shader and mix them into the texture - you don't have to do it this way - a simpler method would just be to paint out your final engine glow as a standard texture and add this onto the ship without having to mess around with single colour channels etc
here's a post where i seem to be trying to explain the single channel effects texture painting method
viewtopic.php?f=4&t=3460&start=285
Many thanks, Griff. I'm in the office too and some kind of busy now. I'll give it a try this evening.

Author:  JensAyton [ Fri Jan 20, 2012 3:44 pm ]
Post subject:  Re: Shaders’ Outpost

I’ve made a simplified version of the Griff Adder shader. It does everything the original does except decals, but with less and better-organized code, and lots of comments. It also does away with obsolete stuff like trying to deal with two light sources.

It doesn’t include the model or textures, so the Griff Adder or all-in-one OXP must be installed for it to be usable in-game.

Author:  Thargoid [ Fri Jan 20, 2012 5:37 pm ]
Post subject:  Re: Shaders’ Outpost

The shaders in Vortex OXP does simply the engine glow and a heat effect on the whole ship. It may be a simpler example than Griffs, as I stripped things right back to only those two items.

The colormap there is the texture (the diffuse map used by the main model) and the emission map is basically just the engine glow.

Author:  MiMoriarty [ Mon Jan 23, 2012 1:08 pm ]
Post subject:  Re: Shaders’ Outpost

Many Thankx, Ahruman, Thargoid and Griff.

I took the vortex.oxp's shaders and they worked pretty well in the engines of my OXP. Now that it works i'd start learning how IT really WORKS using Ahruman and Griff's code and try to make it on my own shaders for other effect.

Author:  Griff [ Mon Jan 23, 2012 1:51 pm ]
Post subject:  Re: Shaders’ Outpost

Quote:
...Now that it works i'd start learning how IT really WORKS using Ahruman and Griff's code and try to make it on my own shaders for other effect.
It's best to use Ahruman's shaders to study as all the ones in my shipsets are just badly cobbled together versions of his originals. :D
The Adder shader Ahruman posted a few posts up is stuffed full of comments explaining what's going on in the code.
Shader .vertex and .fragment files can be opened and edited in a text editor program, some sort of shader development program can really help too - they're really handy for previewing your work without having to launch Oolite and finding your ship - if you're on a Windows PC, AMD have a really cool free program called Rendermonkey and i think there's something available for free from Apple if you're on a Mac (might be part of some sort of development suite of programs)

Author:  MiMoriarty [ Mon Jan 23, 2012 3:19 pm ]
Post subject:  Re: Shaders’ Outpost

Quote:
if you're on a Windows PC, AMD have a really cool free program called Rendermonkey and i think there's something available for free from Apple if you're on a Mac (might be part of some sort of development suite of programs)
No, I don`t :lol: . I will try with XCODE's OpenGL Shader Builder. It's the only one i've found.

Page 24 of 29 All times are UTC
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/