Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

121

13.07.2006, 19:48

die fehler die ich in einem anderen thread beschrieben habe (die fehler mit dem anzeigen von modelle)

könnte man sowas mit shader korrigieren??

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

122

14.07.2006, 20:24

ich habe mal wieder ne frage:

und zwar: ich mache gerade nen shader. jetzt gibt er mir ne fehler meldung aus:

Shader:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Test

float4x4 WorldMatrix;
float3   Speed;
float4   VertexColor;

struct VertexMotionBluring
{
    float3 Pos:POSITION;
    float4 Col:COLOR0;
};

VertexMotionBluring VS(float4 Pos:POSITION)
{
    VertexMotionBluring Out = (VertexMotionBluring)0;
    
    for(float f = 0; f <= 1.0f; f +=0.1f)
    {
        Out.Pos = mul(Pos, WorldMatrix);
        Out.Pos = Pos - f * Speed * 0.1f;
        
        Out.Col = VertexColor;
        
        return Out;
    }
}

TECHNIQUE T1
{
    PASS P1
    {
        AlphaBlendEnable = true;
        SrcBlend         = invsrcColor;
        CullMode         = CCW;
        ZWriteEnable     = false;
        
        VertexShader = compile vs_1_1 VS();
    }
}


Die dazugehörige Meldung:
[list]
test.fx : (12): error X4541: vertex shader must minimally write all four components of POSITION
test.fx : (36): ID3DXEffectCompiler::CompileEffect: There was an error compiling expression
test.fx : ID3DXEffectCompiler: Compilation failed
[/list]
fehler nummer eins bezieht sich auf zeile

C-/C++-Quelltext

1
VertexMotionBluring VS(float4 Pos:POSITION)


Fehlermeldung nummer zwei bezieht sich auf zeile

C-/C++-Quelltext

1
VertexShader = compile vs_1_1 VS();


meine frage:
Was bedeutet das??

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

123

14.07.2006, 20:37

Was ist an "vertex shader must minimally write all four components of POSITION " nicht zu verstehen?
"Games are algorithmic entertainment."

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

124

14.07.2006, 20:54

naja,
ich habe das bis jetzt immer sogemacht und jetzt auf einemal kommt diese meldung, sonst aber nicht.

ich weiß was das heißen soll, aber ich habe es immer sogemacht und plötzlich kommt das

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

125

15.07.2006, 09:41

noch mal ne frage 8)

und zwar:
ich wollte es so machen das in einem bestimmten modus (zeitlupe, rücksetztung in die vergangenheit etc...) der bildschirm nur noch schwarz weiß ist und nicht mehr farbig.

das geht am besten mit einem pixel shader, aber wie kriegen ich das hin das das ganze bild schwarz weiß wird. muss ich die komplette render methode einfassen oder nur einen bestimmten teil der render methode??

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

126

15.07.2006, 11:39

Du brauchst ein Polygon, was den ganzen Bildschirm abdeckt. Du kannst keinen Shader ohne Polygon aufrufen.
"Games are algorithmic entertainment."

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

127

15.07.2006, 12:25

hi,
ich mache gerade nen shader für Motion-Blur.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Effekt für Motion-Blur


// Gloable Variablen

float4x4 WorldMatrix;       // Alle Matizen zusammen

float4   VertexFarbe;       // Farbe des Objekts

float3   Speed;         // Geschwindigkeit des Objekts


struct MotionBlur
{
    float3 Pos:POSITION;    // Position des Objekts

    float4 Col:COLOR0;  // Farbe     "     "

};

MotionBlur VS(float3 Pos:POSITION)
{
    MotionBlur Out = (MotionBlur)0;
    
    Out.Pos = mul(Pos, WorldMatrix);
    Out.Pos = Pos - Speed * 0.1f;
    Out.Col = VertexFarbe;
    
    return Out;
}

TECHNIQUE T1
{
    PASS P1
    {


sollte eigentlich so stimmen.
jetzt fehlen halb noch die mehreren render druchgänge (P1...).
aber wie lasse ich jetzt in jedem Renderdurchgang die wert für das alphablending runterzählen, sodass das objekt immer transparenter wird??

danke

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

128

20.07.2006, 18:06

ein shader wird ja normaler weise für spezial effekte genommen.

wenn ich jetzt schon lichter in meinem level habe, kann ich die irgendwie mit einberechnen oder muss ich neue lichter im shader selbst erstellen??

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

129

20.07.2006, 18:35

Was meinst du damit, dass du bereits Lichter in deinem Level hast? Dass du Direct3D-Lichter definiert hast? Das bringt dir natürlich nix, weil du bei der Verwendung von Shadern ja den gesamten Prozess der Pipeline selbst übernehmen musst, also auch die Beleuchtung. (Hatte ich dasselbe nicht schonmal geschrieben?)
Du kannst aber natürlich die Parameter bzw. Eigenschaften deiner Lichter einem Shader mitteilen, der damit "umzugehen weiss"...
Kommen Sie nie mit einem Schwert zu einer Schießerei.

Phili

unregistriert

130

20.07.2006, 18:40

@Ghostrider
Das mit dem Schwarz-weiß sollte sich doch eigentlich einfach gestalten... Nimmst einfach für den Rot, Gelb und Blauwert den Durchschnitt der einzelnen Farbkomponenten...
Damits verständlich wird:

Quellcode

1
2
3
RotNeu=(Rot+Grün+Blau)/3;
BlauNeu=(Rot+Grün+Blau)/3;
GrünNeu=(Rot+Grün+Blau)/3;

Werbeanzeige