1 registered members (TipmyPip),
18,449
guests, and 6
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
UNLIT funktioniert nicht
#376620
07/05/11 06:54
07/05/11 06:54
|
mercuryus
OP
Unregistered
|
mercuryus
OP
Unregistered
|
Trotz des gesetzen flags UNLIT (wed und/oder SED) werden Modelle von einer dyn. Lichtquelle erhellt. Auch "my.material=mat_unlit;" hilft nicht.
|
|
|
Re: UNLIT funktioniert nicht
[Re: ]
#376634
07/05/11 11:19
07/05/11 11:19
|
Joined: Dec 2002
Posts: 3,375 Vindobona (Ostarichi)
Harry Potter
Expert
|
Expert
Joined: Dec 2002
Posts: 3,375
Vindobona (Ostarichi)
|
Ist mir auch schon aufgefallen, dass das nicht mehr funktioniert. UNLIT kann man jetzt scheinbar nur noch dadurch bewirken, indem man das "mat_unlit"-Material setzt. Da in meinem Spiel alle Objekte UNLIT sein sollen, habe ich folgenden Code nach dem Laden des Levels eingebaut:
level_load("OSS_Virginia01.WMB");
wait(1);
you = ent_next(NULL); // hole den Pointer auf die erste Entity
while (you != NULL) // wiederhole bis es keine weiteren Entities mehr gibt.
{
you.material = mat_unlit; // Setze Material für UNLIT
you = ent_next(you); // hole die nächste Entity
}
Damit funktioniert es. Aber mich würde auch interessieren, warum das UNLIT-Flag nicht mehr funktioniert. Ob das beabsichtigt ist, oder ob es ein Bug ist? Edit: @mercuryus: Möglicherweise weist Du das "mat_unlit"-Material an der falschen Stelle im Coding zu? Oder Du hast das Wait(1) nach dem Laden des Levels vergessen?! Weil bei mir funktioniert es.
Last edited by Harry Potter; 07/05/11 11:28.
|
|
|
Re: UNLIT funktioniert nicht
[Re: Harry Potter]
#376648
07/05/11 13:07
07/05/11 13:07
|
Joined: May 2005
Posts: 2,713 Lübeck
Slin
Expert
|
Expert
Joined: May 2005
Posts: 2,713
Lübeck
|
unlit.fx:
float4x4 matWorldViewProj;
texture entSkin1;
sampler2D smpDiffuse = sampler_state
{
Texture = <entSkin1>;
};
struct VS_OUT
{
float4 Pos : POSITION;
float2 Tex : TEXCOORD0;
};
VS_OUT Shader_VS(float4 inPos : POSITION, float2 inTex : TEXCOORD0)
{
VS_OUT Out;
Out.Pos = mul(inPos, matWorldViewProj);
Out.Tex = inTex;
return Out;
}
float4 Shader_PS(float2 inTex : TEXCOORD0) : COLOR
{
return tex2D(smpDiffuse, inTex);;
}
technique tech_00
{
pass pass_00
{
VertexShader = compile vs_3_0 Shader_VS();
PixelShader = compile ps_3_0 Shader_PS();
}
}
effect_load(mat_unlit, "unlit.fx");
Könnte auf aktueller Hardware etwas schneller sein als ohne Shader... Übrigens braucht man nach einem level_load kein wait mehr 
|
|
|
Re: UNLIT funktioniert nicht
[Re: jcl]
#376731
07/06/11 07:04
07/06/11 07:04
|
Joined: Dec 2002
Posts: 3,375 Vindobona (Ostarichi)
Harry Potter
Expert
|
Expert
Joined: Dec 2002
Posts: 3,375
Vindobona (Ostarichi)
|
Vermutlich verwechseln Sie UNLIT und mtl_unlit? Das eine ist für PRV, das andere für Lichter. Es ist nicht wahrscheinlich, dass sich das simple mtl_umlit Material auf Ihrem PC falsch verhält. Ich glaube, die Verwirrung entstand dadurch, dass UNLIT jetzt wohl eine andere Bedeutung hat, als in früheren Engine-Versionen (A6). Früher konnte man in MED das Unlit-Flag setzen, und dadurch wurde eine Entity nicht mehr von Lichtern (dynamische Lichter, Sonne) beeinflusst. Die Textur(Model-Skin) wurde also 1:1 dargestellt, ohne irgendeinem Shading. Und der Hinweis im Handbuch, dass beim Setzen des Unlit-Flags im WED automatisch auch das Unlit-Material gesetzt wird, dürfte nicht stimmen. Wenn bei Ihnen was leuchtet, was nicht soll, heisst es also weitersuchen. Wenigstens muss man dann nicht im Dunkeln suchen. 
|
|
|
Re: UNLIT funktioniert nicht
[Re: jcl]
#376783
07/06/11 18:17
07/06/11 18:17
|
Joined: Dec 2002
Posts: 3,375 Vindobona (Ostarichi)
Harry Potter
Expert
|
Expert
Joined: Dec 2002
Posts: 3,375
Vindobona (Ostarichi)
|
Zum besseren Verständnis hier ein Screenshot mit ein paar Bemerkungen dazu (das Hintergrundbild zeigt einen Ingame-Screenshot, und das Popup zeigt die dazugehörigen Einstellungen im WED). Im ersten Bild (A) ist nur das Unlit-Flag gesetzt. Eigentlich sollte laut Handbuch dann auch das mat_unlit-Material automatisch gesetzt werden. Aber das ist nicht der Fall. Im zweiten Bild (B) wurde im WED zusätzlich zum Unlit-Flag auch manuell das mat_unlit-Material hinterlegt. Diesmal ist alles korrekt. Also bei Bild A wird offensichtlich ein anderes Material verwendet, als das mat_unlit, und das, obwohl das Unlit-Flag gesetzt ist. (Bild in Originalgröße)
|
|
|
|