Celestia 1.4.0 prerelease
-
- Posts: 18
- Joined: 08.03.2002
- With us: 22 years 8 months
- Location: France
- t00fri
- Developer
- Posts: 8772
- Joined: 29.03.2002
- Age: 22
- With us: 22 years 8 months
- Location: Hamburg, Germany
Re: STC catalog parameters
selden wrote:Here's what I have so far:
...
By default, the appearance of a Star is controlled by its SpectralType and magnitude (either AbsMag or AppMag).
...
.
In view of various different standards used to characterize (apparent) magnitudes, it might be worth specifying what Celestia actually wants:
++++++++++++++++++++++++++++++++++++++++++
In Celestia, AppMag corresponds to the so-called V-magnitude in the Johnson UBV photometric system!
++++++++++++++++++++++++++++++++++++++++++
Confusion may arise, since Celestia uses data from the Hipparcos catalog and that has introduced its own visual filter profile. The Hipparcos "visual" magnitude is called Hp.
This profile is much wider in wavelength than the "standard" Johnson one.
Moreover, Tycho data again use different photometry, designated with V_T and B_T for the visual and blue magnitudes, respectively.
There exist detailed mutual transformation algorithms and|or lookup tables. The relations are quite non-trivial in general and thus it is useful to be informed here...
For interested people, here is a good summary of transformations etc.
http://www.tass-survey.org/tass/catalogs/tycho.html
Bye Fridger
Yargth. I think I'll hold off on trying to make double systems for now. No matter what I do or how closely I follow the example of the Alpha Centauri stc, or the list of parameters above, I cannot get any of them to work.
Of course, everything else is falling apart right now, so my level of frustration is HUGE. Ack.
Of course, everything else is falling apart right now, so my level of frustration is HUGE. Ack.
"To make an apple pie from scratch, you must first create the universe..."
--Carl Sagan
--Carl Sagan
Thank you for the information Selden,
i will start working on an updated STC guide for the next release. Time to finish?? Well i will probably post a preliminary version sometime in the future, for those who can't wiat to create multiple systems and don't have a clue about what can be done (including myself [at least at the moment]).
The final version will exist, when the final 1.4.0 has been released.
REgards,
Guckytos
i will start working on an updated STC guide for the next release. Time to finish?? Well i will probably post a preliminary version sometime in the future, for those who can't wiat to create multiple systems and don't have a clue about what can be done (including myself [at least at the moment]).
The final version will exist, when the final 1.4.0 has been released.
REgards,
Guckytos
-
- Posts: 112
- Joined: 12.05.2002
- With us: 22 years 6 months
- Location: Toronto
Hi at all
the new celestia is very good,
I have used the Dr.evil's centauri file and the alfa and beta centauri ssc file of ArcBuilder and the sound...is gooooood... (I have a little poor ati 9100 he he....)....
a little question for Dr. evil: do you have too a stc file with proxima centauri,
because the centauri system it's a triple stars system...
Brunetto
the new celestia is very good,
I have used the Dr.evil's centauri file and the alfa and beta centauri ssc file of ArcBuilder and the sound...is gooooood... (I have a little poor ati 9100 he he....)....
a little question for Dr. evil: do you have too a stc file with proxima centauri,
because the centauri system it's a triple stars system...
Brunetto
-
- Posts: 1386
- Joined: 06.06.2003
- With us: 21 years 5 months
brunetto_64 wrote:Hi at all
the new celestia is very good,
I have used the Dr.evil's centauri file and the alfa and beta centauri ssc file of ArcBuilder and the sound...is gooooood... (I have a little poor ati 9100 he he....)....
a little question for Dr. evil: do you have too a stc file with proxima centauri,
because the centauri system it's a triple stars system...
Brunetto
It's EVIL DR, dammit!
And no, I don't have one for Proxima. I don't know how you'd add that, since it's so distant - could you just add its HIP number to the STC file and it'd remove the existing Proxima?
-
- Posts: 28
- Joined: 19.06.2002
- With us: 22 years 5 months
- Location: Germany
Hi,
if someone like to play with Sol in a quadruple Starsystem, try this. It?s just for fun and to learn, how the new parameters work.
I love the new version of Celestia. Great!
There?s no physical correctnes, but i try to make it as real as possible.
I also began with the code from Evil Dr Ganymede?s centaur file.
What means the parameters AscendingNode, ArgOfPericenter and MeanAnomaly?
And please, forgive my bad english.
[/code]
if someone like to play with Sol in a quadruple Starsystem, try this. It?s just for fun and to learn, how the new parameters work.
I love the new version of Celestia. Great!
There?s no physical correctnes, but i try to make it as real as possible.
I also began with the code from Evil Dr Ganymede?s centaur file.
What means the parameters AscendingNode, ArgOfPericenter and MeanAnomaly?
And please, forgive my bad english.
Code: Select all
Barycenter "SolAB"
{
OrbitBarycenter "Sol"
RA 119.916998
Dec 60.83748372
Distance 0.000395
}
171681 # Sol A
{
OrbitBarycenter "SolAB"
SpectralType "B8Ia"
AbsMag -6.69
EllipticalOrbit {
Period 1.914
SemiMajorAxis 0.08 # mass ratio ?
Eccentricity 0.1
Inclination 0.2
AscendingNode 67.71
ArgOfPericenter 3.77
MeanAnomaly 200.12
}
}
0 # Sol
{
OrbitBarycenter "SolAB"
SpectralType "G2V"
AbsMag 4.73
EllipticalOrbit {
Period 1500
SemiMajorAxis 258.8928 # mass ratio ?
Eccentricity 0.8
Inclination 0.3
AscendingNode 67.71
ArgOfPericenter 3.77
MeanAnomaly 200.12
}
}
#
# --------------------------------------------------------------------
#
Barycenter "SolBC"
{
OrbitBarycenter "SolAB"
RA 119.916998
Dec 60.83748372
Distance 0.0001
EllipticalOrbit {
Period 1.4
SemiMajorAxis 11.08928 # mass ratio ?
Eccentricity 0.5
Inclination 4.3
}
}
171682 # Sol B
{
OrbitBarycenter "SolBC"
SpectralType "WD"
AbsMag 12.73
EllipticalOrbit {
Period 0.34
SemiMajorAxis 0.8928 # mass ratio ?
Eccentricity 0.5
Inclination 4.3
AscendingNode 67.71
ArgOfPericenter 3.77
MeanAnomaly 200.12
}
}
171683 # Sol C
{
OrbitBarycenter "SolBC"
SpectralType "K4V"
AbsMag 5.73
EllipticalOrbit {
Period 0.13
SemiMajorAxis 0.0628 # mass ratio
Eccentricity 0.55
Inclination 4.3
AscendingNode 67.71
ArgOfPericenter 3.77
MeanAnomaly 200.12
}
}
Hi Astrojockel,
for a good explanation of the parameters AscendingNode, ArgOfPericenter and MeanAnomaly please take a look at the SSC-Guide (also in German) from Adirondack.
You can either get it from the motherlode or http://www.celestia.de.vu/
Regards,
Guckytos
for a good explanation of the parameters AscendingNode, ArgOfPericenter and MeanAnomaly please take a look at the SSC-Guide (also in German) from Adirondack.
You can either get it from the motherlode or http://www.celestia.de.vu/
Regards,
Guckytos
Ring systems+shadows request
Sir,
I played a bit around as a new user wth this very useful program, and looking foreward to new releases. But I have also a request for the moment:
Is it (technical) possible to add at least the ringshadows on the cloudtops of Saturn in the next release? This is missing now! (Not a complaint).
Far as I know does Jupiter and Neptune have ringsystems too:
Ring A B C D
JUPITER
Halo 92 -122.5 ~20.000 6*10^-6 -1
Main 122.5 -128.94 30 3*10^-6 5
Gossamer 128.94-214 ? 10^-7 <1
NEPTUNE
Galle 41.9 ? 10^-4 =<1
Le Verrier 53.2 ? 0.01-0.02 6
Lassell 53.2-59.1 ? 10^-4 =<1
Arago 57.2 ? ? <1
1989N6R 61.95 ? ? =<1
Adams 62.933 ? 0.01-0.1 4
A distance to planet *10^3 km
B width *10^3 km
C optical depth
D Albedo %
Jupiter's ring is only visible if the sun is backlightning the ring and viewed from a near edge (example: Voyager position on fly-by in 1991).
Is it an idea to add this ringsystems as well, to complete the solar system?
Cheers;
Ton Lindemann
I played a bit around as a new user wth this very useful program, and looking foreward to new releases. But I have also a request for the moment:
Is it (technical) possible to add at least the ringshadows on the cloudtops of Saturn in the next release? This is missing now! (Not a complaint).
Far as I know does Jupiter and Neptune have ringsystems too:
Ring A B C D
JUPITER
Halo 92 -122.5 ~20.000 6*10^-6 -1
Main 122.5 -128.94 30 3*10^-6 5
Gossamer 128.94-214 ? 10^-7 <1
NEPTUNE
Galle 41.9 ? 10^-4 =<1
Le Verrier 53.2 ? 0.01-0.02 6
Lassell 53.2-59.1 ? 10^-4 =<1
Arago 57.2 ? ? <1
1989N6R 61.95 ? ? =<1
Adams 62.933 ? 0.01-0.1 4
A distance to planet *10^3 km
B width *10^3 km
C optical depth
D Albedo %
Jupiter's ring is only visible if the sun is backlightning the ring and viewed from a near edge (example: Voyager position on fly-by in 1991).
Is it an idea to add this ringsystems as well, to complete the solar system?
Cheers;
Ton Lindemann
Ton,
What kind of graphics card and what version of its graphic drivers do you have?
Celestia already can draw Ring shadows cast onto Saturn. I'm not sure if you mean something different when you say "on the cloudtops". However, your card must have certain OpenGL features in order for it to be able to draw them. You also must enable "Show Ring Shadows" in Celestia's menu "Render" "View Options..."
Notice the dark shadow bands across the top of the planet.
(This links to a much larger picture.)
Also,please read the first few Q/As in the "Preliminary Users FAQ", which is at the top of the "Celestia Users Forum". They discuss graphics hardware issues.
Supposedly the rings of Jupiter and Neptune are not included in Celestia because they are invisible to the naked eye. Addons are available to include them if you want. Please take a look at the Web site
http://celestiamotherlode.net/
What kind of graphics card and what version of its graphic drivers do you have?
Celestia already can draw Ring shadows cast onto Saturn. I'm not sure if you mean something different when you say "on the cloudtops". However, your card must have certain OpenGL features in order for it to be able to draw them. You also must enable "Show Ring Shadows" in Celestia's menu "Render" "View Options..."
Notice the dark shadow bands across the top of the planet.
(This links to a much larger picture.)
Also,please read the first few Q/As in the "Preliminary Users FAQ", which is at the top of the "Celestia Users Forum". They discuss graphics hardware issues.
Supposedly the rings of Jupiter and Neptune are not included in Celestia because they are invisible to the naked eye. Addons are available to include them if you want. Please take a look at the Web site
http://celestiamotherlode.net/
Selden
selden wrote:Supposedly the rings of Jupiter and Neptune are not included in Celestia because they are invisible to the naked eye. Addons are available to include them if you want. Please take a look at the Web site
http://celestiamotherlode.net/
Seldon,
I've just noticed that the rings for Neptune are now included in 1.4.0p1, but there's still none for Jupiter.
Astrojackel,
Cheers for listing the experimental 'multi-Sol' .stc settings, it's kinda wierd viewing Saturn at present with the ring shadows on its South Pole.
1.6.0:AMDAth1.2GHz 1GbDDR266:Ge6200 256mbDDR250:WinXP-SP3:1280x1024x32FS:v196.21@AA4x:AF16x:IS=HQ:T.Buff=ON Earth16Kdds@15KkmArctic2000AD:FOV1:SPEC L5dds:NORM L5dxt5:CLOUD L5dds:
NIGHT L5dds:MOON L4dds:GALXY ON:MAG 15.2-SAP:TIME 1000x:RP=OGL2:10.3FPS
NIGHT L5dds:MOON L4dds:GALXY ON:MAG 15.2-SAP:TIME 1000x:RP=OGL2:10.3FPS
-
- Posts: 19
- Joined: 29.10.2004
- With us: 20 years 1 month
- Location: Maarssen, Netherlands
Graphic card
Thanks Selden,
I will switch the discussion to the your FAQ-list.
Ton.
I will switch the discussion to the your FAQ-list.
Ton.
-
- Posts: 1386
- Joined: 06.06.2003
- With us: 21 years 5 months
Re: Graphic card
Ton Lindemann wrote:Thanks Selden,
I will switch the discussion to the your FAQ-list.
Ton.
Er, don't do that.
The FAQ list appears to be for Selden to post official answers to commonly asked questions - not for random people to ask things on, because it all then gets confusing. (in fact, Selden - you should be able to lock the FAQ thread while keeping it sticky, that way only you can post to it as moderator)
It would be nice if you copied the text of your message in the FAQ thread, deleted that message, and reposted it here.
Chris,
I too have a problem with an ATI based 9600 Pro. First two planets ok, earth red with clouds - moon ok, mars ok then the rest red.
1.4 plus pre3 Basic install only, no addons
Shaders output
Vertex shader source:
1: uniform struct {
2: vec3 direction;
3: vec3 diffuse;
4: vec3 specular;
5: vec3 halfVector;
6: } lights[1];
7: varying vec2 diffTexCoord;
8: varying vec2 normTexCoord;
9: varying vec3 lightDir0;
10: attribute vec3 tangent;
11:
12: void main(void)
13: {
14: float nDotVP;
15: nDotVP = max(0.0, dot(gl_Normal, lights[0].direction));
16: vec3 bitangent = cross(gl_Normal, tangent);
17: lightDir0.x = dot(tangent, lights[0].direction);
18: lightDir0.y = dot(-bitangent, lights[0].direction);
19: lightDir0.z = dot(gl_Normal, lights[0].direction);
20: diffTexCoord = gl_MultiTexCoord0.st;
21: normTexCoord = gl_MultiTexCoord1.st;
22: gl_Position = ftransform();
23: }
Fragment shader source:
1: uniform vec3 ambientColor;
2: vec4 diff = vec4(ambientColor, 1);
3: uniform vec3 lightcolor0;
4: varying vec2 diffTexCoord;
5: uniform sampler2D diffTex;
6: varying vec2 normTexCoord;
7: varying vec3 lightDir0;
8: uniform sampler2D normTex;
9:
10: void main(void)
11: {
12: vec4 color;
13: vec3 n = texture2D(normTex, normTexCoord.st).xyz * 2.0 - vec3(1.0, 1.0, 1.0);
14: float l;
15: l = max(0.0, dot(lightDir0, n)) * clamp(lightDir0.z * 8.0, 0.0, 1.0);
16: diff += vec4(l * lightcolor0, 0.0);
17: color = texture2D(diffTex, diffTexCoord.st);
18: gl_FragColor = color * diff;
19: }
Vertex shader source:
1: uniform struct {
2: vec3 direction;
3: vec3 diffuse;
4: vec3 specular;
5: vec3 halfVector;
6: } lights[1];
7: uniform float shininess;
8: uniform vec3 ambientColor;
9: varying vec4 diff;
10: varying vec4 spec;
11: varying vec2 diffTexCoord;
12: varying vec2 nightTexCoord;
13: varying float totalLight;
14:
15: void main(void)
16: {
17: float nDotVP;
18: float nDotHV;
19: diff = vec4(ambientColor, 1);
20: nDotVP = max(0.0, dot(gl_Normal, lights[0].direction));
21: nDotHV = max(0.0, dot(gl_Normal, lights[0].halfVector));
22: diff += vec4(lights[0].diffuse * nDotVP, 1);
23: spec += vec4(lights[0].specular * (pow(nDotHV, shininess) * nDotVP), 0.0);
24: totalLight += nDotVP;
25: totalLight = 1 - totalLight;
26: totalLight = totalLight * totalLight * totalLight * totalLight;
27: diffTexCoord = gl_MultiTexCoord0.st;
28: nightTexCoord = gl_MultiTexCoord1.st;
29: gl_Position = ftransform();
30: }
Error compiling vertex shader:
ERROR: 0:25: '-' : wrong operand types no operation '-' exists that takes a left-hand operand of type 'const int' and a right operand of type 'varying float' (or there is no acceptable conversion)
ERROR: 0:25: 'assign' : cannot convert from 'const int' to 'varying float'
ERROR: 2 compilation errors. No code generated.
Fragment shader source:
1: varying vec4 diff;
2: varying vec4 spec;
3: varying vec2 diffTexCoord;
4: uniform sampler2D diffTex;
5: varying vec2 nightTexCoord;
6: uniform sampler2D nightTex;
7: varying float totalLight;
8:
9: void main(void)
10: {
11: vec4 color;
12: color = texture2D(diffTex, diffTexCoord.st);
13: gl_FragColor = color * diff + color.a * spec;
14: gl_FragColor += texture2D(nightTex, nightTexCoord.st) * totalLight;
15: }
Vertex shader source:
1: uniform struct {
2: vec3 direction;
3: vec3 diffuse;
4: vec3 specular;
5: vec3 halfVector;
6: } lights[1];
7: uniform vec3 ambientColor;
8: varying vec4 diff;
9: varying vec2 diffTexCoord;
10:
11: void main(void)
12: {
13: float nDotVP;
14: diff = vec4(ambientColor, 1);
15: nDotVP = max(0.0, dot(gl_Normal, lights[0].direction));
16: diff += vec4(lights[0].diffuse * nDotVP, 1);
17: diffTexCoord = gl_MultiTexCoord0.st;
18: gl_Position = ftransform();
19: }
Fragment shader source:
1: varying vec4 diff;
2: varying vec2 diffTexCoord;
3: uniform sampler2D diffTex;
4:
5: void main(void)
6: {
7: vec4 color;
8: color = texture2D(diffTex, diffTexCoord.st);
9: gl_FragColor = color * diff;
10: }
Vertex shader source:
1: uniform struct {
2: vec3 direction;
3: vec3 diffuse;
4: vec3 specular;
5: vec3 halfVector;
6: } lights[1];
7: varying vec4 diffFactors;
8: varying vec2 diffTexCoord;
9: uniform float ringWidth;
10: uniform float ringRadius;
11: varying float ringShadowTexCoord0;
12:
13: void main(void)
14: {
15: float nDotVP;
16: nDotVP = max(0.0, dot(gl_Normal, lights[0].direction));
17: diffFactors.x = nDotVP;
18: diffTexCoord = gl_MultiTexCoord0.st;
19: vec3 ringShadowProj;
20: ringShadowProj = gl_Vertex.xyz + lights[0].direction * max(0, gl_Vertex.y / -lights[0].direction.y);
21: ringShadowTexCoord0 = length(ringShadowProj) * ringWidth - ringRadius;
22: gl_Position = ftransform();
23: }
Error compiling vertex shader:
ERROR: 0:20: 'max' : no matching overloaded function found
ERROR: 1 compilation errors. No code generated.
Fragment shader source:
1: uniform vec3 ambientColor;
2: vec4 diff = vec4(ambientColor, 1);
3: uniform vec3 lightcolor0;
4: varying vec4 diffFactors;
5: varying vec2 diffTexCoord;
6: uniform sampler2D diffTex;
7: uniform sampler2D ringTex;
8: varying float ringShadowTexCoord0;
9:
10: void main(void)
11: {
12: vec4 color;
13: float shadow;
14: shadow = diffFactors.x;
15: shadow *= (1.0 - texture2D(ringTex, vec2(ringShadowTexCoord0, 0.0)).a);
16: diff += shadow * vec4(lightcolor0, 0.0);
17: color = texture2D(diffTex, diffTexCoord.st);
18: gl_FragColor = color * diff;
19: }
Vertex shader source:
1: uniform struct {
2: vec3 direction;
3: vec3 diffuse;
4: vec3 specular;
5: vec3 halfVector;
6: } lights[1];
7: uniform vec3 eyePosition;
8: varying vec4 diffFactors;
9: varying vec2 diffTexCoord;
10: uniform vec4 shadowTexGenS0_0;
11: uniform vec4 shadowTexGenT0_0;
12: varying vec3 shadowTexCoord0_0;
13:
14: void main(void)
15: {
16: float nDotVP;
17: vec3 eyeDir = normalize(eyePosition - gl_Vertex.xyz);
18: diffFactors.x = (dot(lights[0].direction, eyeDir) + 1.0) * 0.5;
19: diffTexCoord = gl_MultiTexCoord0.st;
20: shadowTexCoord0_0.x = dot(gl_Vertex, shadowTexGenS0_0);
21: shadowTexCoord0_0.y = dot(gl_Vertex, shadowTexGenT0_0);
22: shadowTexCoord0_0.z = dot(gl_Vertex.xyz, lights[0].direction);
23: gl_Position = ftransform();
24: }
Fragment shader source:
1: uniform vec3 ambientColor;
2: vec4 diff = vec4(ambientColor, 1);
3: uniform vec3 lightcolor0;
4: varying vec4 diffFactors;
5: varying vec2 diffTexCoord;
6: uniform sampler2D diffTex;
7: varying vec3 shadowTexCoord0_0;
8: uniform float shadowScale0_0;
9: uniform float shadowBias0_0;
10:
11: void main(void)
12: {
13: vec4 color;
14: float shadow;
15: vec2 shadowCenter;
16: float shadowR;
17: shadow = 1.0;
18: shadowCenter = shadowTexCoord0_0 - vec2(0.5, 0.5);
19: shadowR = clamp(dot(shadowCenter, shadowCenter) * shadowScale0_0 + shadowBias0_0, 0.0, 1.0);
20: shadow *= sqrt(shadowR);
21: shadow = min(1.0, shadow + step(0.0, shadowTexCoord0_0.z));
22: diff += (shadow * diffFactors.x) * vec4(lightcolor0, 0.0);
23: color = texture2D(diffTex, diffTexCoord.st);
24: gl_FragColor = color * diff;
25: }
Error compiling fragment shader:
ERROR: 0:18: '-' : wrong operand types no operation '-' exists that takes a left-hand operand of type 'varying 3-component vector of float' and a right operand of type 'const 2-component vector of float' (or there is no acceptable conversion)
ERROR: 0:18: 'assign' : cannot convert from 'varying 3-component vector of float' to '2-component vector of float'
ERROR: 2 compilation errors. No code generated.
Vertex shader source:
1: uniform struct {
2: vec3 direction;
3: vec3 diffuse;
4: vec3 specular;
5: vec3 halfVector;
6: } lights[1];
7: uniform float shininess;
8: uniform vec3 ambientColor;
9: varying vec4 diff;
10: varying vec4 spec;
11: varying vec2 diffTexCoord;
12: varying vec2 specTexCoord;
13:
14: void main(void)
15: {
16: float nDotVP;
17: float nDotHV;
18: diff = vec4(ambientColor, 1);
19: nDotVP = max(0.0, dot(gl_Normal, lights[0].direction));
20: nDotHV = max(0.0, dot(gl_Normal, lights[0].halfVector));
21: diff += vec4(lights[0].diffuse * nDotVP, 1);
22: spec += vec4(lights[0].specular * (pow(nDotHV, shininess) * nDotVP), 0.0);
23: diffTexCoord = gl_MultiTexCoord0.st;
24: specTexCoord = gl_MultiTexCoord1.st;
25: gl_Position = ftransform();
26: }
Fragment shader source:
1: varying vec4 diff;
2: varying vec4 spec;
3: varying vec2 diffTexCoord;
4: uniform sampler2D diffTex;
5: varying vec2 specTexCoord;
6: uniform sampler2D specTex;
7:
8: void main(void)
9: {
10: vec4 color;
11: color = texture2D(diffTex, diffTexCoord.st);
12: gl_FragColor = color * diff + texture2D(specTex, specTexCoord.st) * spec;
13: }
Regards
Andy
I too have a problem with an ATI based 9600 Pro. First two planets ok, earth red with clouds - moon ok, mars ok then the rest red.
1.4 plus pre3 Basic install only, no addons
Shaders output
Vertex shader source:
1: uniform struct {
2: vec3 direction;
3: vec3 diffuse;
4: vec3 specular;
5: vec3 halfVector;
6: } lights[1];
7: varying vec2 diffTexCoord;
8: varying vec2 normTexCoord;
9: varying vec3 lightDir0;
10: attribute vec3 tangent;
11:
12: void main(void)
13: {
14: float nDotVP;
15: nDotVP = max(0.0, dot(gl_Normal, lights[0].direction));
16: vec3 bitangent = cross(gl_Normal, tangent);
17: lightDir0.x = dot(tangent, lights[0].direction);
18: lightDir0.y = dot(-bitangent, lights[0].direction);
19: lightDir0.z = dot(gl_Normal, lights[0].direction);
20: diffTexCoord = gl_MultiTexCoord0.st;
21: normTexCoord = gl_MultiTexCoord1.st;
22: gl_Position = ftransform();
23: }
Fragment shader source:
1: uniform vec3 ambientColor;
2: vec4 diff = vec4(ambientColor, 1);
3: uniform vec3 lightcolor0;
4: varying vec2 diffTexCoord;
5: uniform sampler2D diffTex;
6: varying vec2 normTexCoord;
7: varying vec3 lightDir0;
8: uniform sampler2D normTex;
9:
10: void main(void)
11: {
12: vec4 color;
13: vec3 n = texture2D(normTex, normTexCoord.st).xyz * 2.0 - vec3(1.0, 1.0, 1.0);
14: float l;
15: l = max(0.0, dot(lightDir0, n)) * clamp(lightDir0.z * 8.0, 0.0, 1.0);
16: diff += vec4(l * lightcolor0, 0.0);
17: color = texture2D(diffTex, diffTexCoord.st);
18: gl_FragColor = color * diff;
19: }
Vertex shader source:
1: uniform struct {
2: vec3 direction;
3: vec3 diffuse;
4: vec3 specular;
5: vec3 halfVector;
6: } lights[1];
7: uniform float shininess;
8: uniform vec3 ambientColor;
9: varying vec4 diff;
10: varying vec4 spec;
11: varying vec2 diffTexCoord;
12: varying vec2 nightTexCoord;
13: varying float totalLight;
14:
15: void main(void)
16: {
17: float nDotVP;
18: float nDotHV;
19: diff = vec4(ambientColor, 1);
20: nDotVP = max(0.0, dot(gl_Normal, lights[0].direction));
21: nDotHV = max(0.0, dot(gl_Normal, lights[0].halfVector));
22: diff += vec4(lights[0].diffuse * nDotVP, 1);
23: spec += vec4(lights[0].specular * (pow(nDotHV, shininess) * nDotVP), 0.0);
24: totalLight += nDotVP;
25: totalLight = 1 - totalLight;
26: totalLight = totalLight * totalLight * totalLight * totalLight;
27: diffTexCoord = gl_MultiTexCoord0.st;
28: nightTexCoord = gl_MultiTexCoord1.st;
29: gl_Position = ftransform();
30: }
Error compiling vertex shader:
ERROR: 0:25: '-' : wrong operand types no operation '-' exists that takes a left-hand operand of type 'const int' and a right operand of type 'varying float' (or there is no acceptable conversion)
ERROR: 0:25: 'assign' : cannot convert from 'const int' to 'varying float'
ERROR: 2 compilation errors. No code generated.
Fragment shader source:
1: varying vec4 diff;
2: varying vec4 spec;
3: varying vec2 diffTexCoord;
4: uniform sampler2D diffTex;
5: varying vec2 nightTexCoord;
6: uniform sampler2D nightTex;
7: varying float totalLight;
8:
9: void main(void)
10: {
11: vec4 color;
12: color = texture2D(diffTex, diffTexCoord.st);
13: gl_FragColor = color * diff + color.a * spec;
14: gl_FragColor += texture2D(nightTex, nightTexCoord.st) * totalLight;
15: }
Vertex shader source:
1: uniform struct {
2: vec3 direction;
3: vec3 diffuse;
4: vec3 specular;
5: vec3 halfVector;
6: } lights[1];
7: uniform vec3 ambientColor;
8: varying vec4 diff;
9: varying vec2 diffTexCoord;
10:
11: void main(void)
12: {
13: float nDotVP;
14: diff = vec4(ambientColor, 1);
15: nDotVP = max(0.0, dot(gl_Normal, lights[0].direction));
16: diff += vec4(lights[0].diffuse * nDotVP, 1);
17: diffTexCoord = gl_MultiTexCoord0.st;
18: gl_Position = ftransform();
19: }
Fragment shader source:
1: varying vec4 diff;
2: varying vec2 diffTexCoord;
3: uniform sampler2D diffTex;
4:
5: void main(void)
6: {
7: vec4 color;
8: color = texture2D(diffTex, diffTexCoord.st);
9: gl_FragColor = color * diff;
10: }
Vertex shader source:
1: uniform struct {
2: vec3 direction;
3: vec3 diffuse;
4: vec3 specular;
5: vec3 halfVector;
6: } lights[1];
7: varying vec4 diffFactors;
8: varying vec2 diffTexCoord;
9: uniform float ringWidth;
10: uniform float ringRadius;
11: varying float ringShadowTexCoord0;
12:
13: void main(void)
14: {
15: float nDotVP;
16: nDotVP = max(0.0, dot(gl_Normal, lights[0].direction));
17: diffFactors.x = nDotVP;
18: diffTexCoord = gl_MultiTexCoord0.st;
19: vec3 ringShadowProj;
20: ringShadowProj = gl_Vertex.xyz + lights[0].direction * max(0, gl_Vertex.y / -lights[0].direction.y);
21: ringShadowTexCoord0 = length(ringShadowProj) * ringWidth - ringRadius;
22: gl_Position = ftransform();
23: }
Error compiling vertex shader:
ERROR: 0:20: 'max' : no matching overloaded function found
ERROR: 1 compilation errors. No code generated.
Fragment shader source:
1: uniform vec3 ambientColor;
2: vec4 diff = vec4(ambientColor, 1);
3: uniform vec3 lightcolor0;
4: varying vec4 diffFactors;
5: varying vec2 diffTexCoord;
6: uniform sampler2D diffTex;
7: uniform sampler2D ringTex;
8: varying float ringShadowTexCoord0;
9:
10: void main(void)
11: {
12: vec4 color;
13: float shadow;
14: shadow = diffFactors.x;
15: shadow *= (1.0 - texture2D(ringTex, vec2(ringShadowTexCoord0, 0.0)).a);
16: diff += shadow * vec4(lightcolor0, 0.0);
17: color = texture2D(diffTex, diffTexCoord.st);
18: gl_FragColor = color * diff;
19: }
Vertex shader source:
1: uniform struct {
2: vec3 direction;
3: vec3 diffuse;
4: vec3 specular;
5: vec3 halfVector;
6: } lights[1];
7: uniform vec3 eyePosition;
8: varying vec4 diffFactors;
9: varying vec2 diffTexCoord;
10: uniform vec4 shadowTexGenS0_0;
11: uniform vec4 shadowTexGenT0_0;
12: varying vec3 shadowTexCoord0_0;
13:
14: void main(void)
15: {
16: float nDotVP;
17: vec3 eyeDir = normalize(eyePosition - gl_Vertex.xyz);
18: diffFactors.x = (dot(lights[0].direction, eyeDir) + 1.0) * 0.5;
19: diffTexCoord = gl_MultiTexCoord0.st;
20: shadowTexCoord0_0.x = dot(gl_Vertex, shadowTexGenS0_0);
21: shadowTexCoord0_0.y = dot(gl_Vertex, shadowTexGenT0_0);
22: shadowTexCoord0_0.z = dot(gl_Vertex.xyz, lights[0].direction);
23: gl_Position = ftransform();
24: }
Fragment shader source:
1: uniform vec3 ambientColor;
2: vec4 diff = vec4(ambientColor, 1);
3: uniform vec3 lightcolor0;
4: varying vec4 diffFactors;
5: varying vec2 diffTexCoord;
6: uniform sampler2D diffTex;
7: varying vec3 shadowTexCoord0_0;
8: uniform float shadowScale0_0;
9: uniform float shadowBias0_0;
10:
11: void main(void)
12: {
13: vec4 color;
14: float shadow;
15: vec2 shadowCenter;
16: float shadowR;
17: shadow = 1.0;
18: shadowCenter = shadowTexCoord0_0 - vec2(0.5, 0.5);
19: shadowR = clamp(dot(shadowCenter, shadowCenter) * shadowScale0_0 + shadowBias0_0, 0.0, 1.0);
20: shadow *= sqrt(shadowR);
21: shadow = min(1.0, shadow + step(0.0, shadowTexCoord0_0.z));
22: diff += (shadow * diffFactors.x) * vec4(lightcolor0, 0.0);
23: color = texture2D(diffTex, diffTexCoord.st);
24: gl_FragColor = color * diff;
25: }
Error compiling fragment shader:
ERROR: 0:18: '-' : wrong operand types no operation '-' exists that takes a left-hand operand of type 'varying 3-component vector of float' and a right operand of type 'const 2-component vector of float' (or there is no acceptable conversion)
ERROR: 0:18: 'assign' : cannot convert from 'varying 3-component vector of float' to '2-component vector of float'
ERROR: 2 compilation errors. No code generated.
Vertex shader source:
1: uniform struct {
2: vec3 direction;
3: vec3 diffuse;
4: vec3 specular;
5: vec3 halfVector;
6: } lights[1];
7: uniform float shininess;
8: uniform vec3 ambientColor;
9: varying vec4 diff;
10: varying vec4 spec;
11: varying vec2 diffTexCoord;
12: varying vec2 specTexCoord;
13:
14: void main(void)
15: {
16: float nDotVP;
17: float nDotHV;
18: diff = vec4(ambientColor, 1);
19: nDotVP = max(0.0, dot(gl_Normal, lights[0].direction));
20: nDotHV = max(0.0, dot(gl_Normal, lights[0].halfVector));
21: diff += vec4(lights[0].diffuse * nDotVP, 1);
22: spec += vec4(lights[0].specular * (pow(nDotHV, shininess) * nDotVP), 0.0);
23: diffTexCoord = gl_MultiTexCoord0.st;
24: specTexCoord = gl_MultiTexCoord1.st;
25: gl_Position = ftransform();
26: }
Fragment shader source:
1: varying vec4 diff;
2: varying vec4 spec;
3: varying vec2 diffTexCoord;
4: uniform sampler2D diffTex;
5: varying vec2 specTexCoord;
6: uniform sampler2D specTex;
7:
8: void main(void)
9: {
10: vec4 color;
11: color = texture2D(diffTex, diffTexCoord.st);
12: gl_FragColor = color * diff + texture2D(specTex, specTexCoord.st) * spec;
13: }
Regards
Andy