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

131

20.07.2006, 19:36

@ Phili

ich bin ja nicht blöde aber manchmal komme ich auf die einfachsten sachen nicht^^.

@ Steven77
also ist es besser wenn ich das ganze spiel mit shadern ausleuchte?
da habe ich ja nicht alle direct3D lichter umsonst, ich meine jetzt in meinem kleinen game.
das man das nicht in so riesen games macht weiß ich auch^^

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

132

20.07.2006, 20:01

@ Phili

wenn ich das so mache:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
float4 PS() : COLOR
{
    PixelFarbe.r = (PixelFarbe.r + PixelFarbe.g + PixelFarbe.b)/3;
    PixelFarbe.g = (PixelFarbe.r + PixelFarbe.g + PixelFarbe.b)/3;
    PixelFarbe.b = (PixelFarbe.r + PixelFarbe.g + PixelFarbe.b)/3;

    return PixelFarbe;
}


dann kommt ne fehlermeldung:
[list]
Schwarz-Weiß.fx : (1): error X5088: Too many arithmetic instruction slots used: 13. Max. allowed (counting any co-issued pairs as 1) is 8.
Schwarz-Weiß.fx : (1): error X5089: Total number of instruction slots used too high: 13. Max. allowed (counting any co-issued pairs as 1) is 12.
Schwarz-Weiß.fx : (47): ID3DXEffectCompiler::CompileEffect: There was an error compiling expression
Schwarz-Weiß.fx : ID3DXEffectCompiler: Compilation failed
[/list]
Der Gesamte 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
39
40
41
42
43
44
45
46
47
48
49
// Shader für die Darstellung in "Schwarz-Weiß"

//----------------------------------------------------------------------------


// Globale Variablen

float4x4    mAllMatrizen;   // Transformation*Sicht*Projektion


// Temp Variablen

float4      PixelFarbe;     // Farbe jedes einzelnen Pixels


//----------------------------------------------------------------------------

// VertexShader Struktur

struct VS_OUTPUT
{
    float4 Pos:POSITION;
};

// Der VertexShader selbst

VS_OUTPUT VS(float4 Pos:POSITION)
{
    VS_OUTPUT Out = (VS_OUTPUT)0;
    
    Out.Pos = mul(Pos, mAllMatrizen);
    
    return Out;
}

// PixelShader

float4 PS() : COLOR
{
    PixelFarbe.r = (PixelFarbe.r + PixelFarbe.g + PixelFarbe.b)/3;
    PixelFarbe.g = (PixelFarbe.r + PixelFarbe.g + PixelFarbe.b)/3;
    PixelFarbe.b = (PixelFarbe.r + PixelFarbe.g + PixelFarbe.b)/3;

    return PixelFarbe;
}

//----------------------------------------------------------------------------

// Technik 1

TECHNIQUE T1
{
    // Durchgang 1

    PASS P1
    {
        CullMode = CCW;
        
        VertexShader = compile vs_1_1 VS(); 
        PixelShader  = compile ps_1_1 PS();
    }
}




das dürfte jetzt nen problem sein oder??

Phili

unregistriert

133

20.07.2006, 20:08

@Ghostrider
Was? Nur höchstens 13 Slots? In wasfürner Shader-Version Compilierst du denn?

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

134

20.07.2006, 21:46

Zitat von »"Phili"«

@Ghostrider
Was? Nur höchstens 13 Slots? In wasfürner Shader-Version Compilierst du denn?

Steht da doch: 1.1
Ghostrider, versuch's mal mit Pixel-Shader-Version 2.0

@Ghostrider
Und zu der Frage davor: Ich wiederhole mich nochmal: Wenn du Shader benutzt, MUSST du dich um die Beleuchtung selber kümmern (im Shader), sofern du sie haben willst. Deine Direct3D-Lampen kannst du ausschalten. Wenn du neben deinen Shader-Darstellungen noch andere Nicht-Shader-Techniken verwendest, kannst du da natürlich weiterhin deine Direct3D-Lichter benutzen. Aber wenn schon, denn schon, oder?

PS: Die Rot-, Grün-, und Blaukomponenten zu dritteln ist nicht grad die beste Art. Das YUV-Modell ist dort besser geeignet, um aus RGB-Werten einen Grauwert zu machen: Y = 0,299R + 0,587G + 0,114B.
Kommen Sie nie mit einem Schwert zu einer Schießerei.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

135

21.07.2006, 10:22

Das einfachste ist in der tat die PS Version zu erhöhen. Wenn aber Deine Graka nur 1.1 kann, versuch mal ob es hilft,

C-/C++-Quelltext

1
2
3
    PixelFarbe.r = (PixelFarbe.r + PixelFarbe.g + PixelFarbe.b)/3;
    PixelFarbe.g = (PixelFarbe.r + PixelFarbe.g + PixelFarbe.b)/3;
    PixelFarbe.b = (PixelFarbe.r + PixelFarbe.g + PixelFarbe.b)/3;

durch

C-/C++-Quelltext

1
2
3
4
    int NeueFarbe = (PixelFarbe.r + PixelFarbe.g + PixelFarbe.b)/3;
    PixelFarbe.r = NeueFarbe;
    PixelFarbe.g = NeueFarbe;
    PixelFarbe.b = NeueFarbe;


zu ersetzen.
"Games are algorithmic entertainment."

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

136

21.07.2006, 10:32

naja ich habe in einem anderen thread schon geschrieben das ich 2x ne 7950 gtx habe und die kann soviel ich weiß 3.0 :D

war nen scherz,

die meldung wegen den slots kommt auch wenn ich auf 3.0 stelle
// EDIT: jetzt gehts von wegen den slots.^^

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

137

21.07.2006, 11:42

noch mal wegen dem ganzen bildschirm in schwarz-weiß zu kriegen.

wie erzeugt man so ein sogenanntes polynom??

Phili

unregistriert

138

21.07.2006, 13:21

Hab auch nochmal ne Frage, sollte aber leicht zu beantworten sein...

Ich hab nen Shader, der als einzige globale Variable

Quellcode

1
 float a
hat.
Wie kann ich die in meinem Programm setzen? mit

Quellcode

1
IDirect3DDevice9::SetVertexShaderConstantF
schätz ich mal, aber ich versteh die Parameter der Funktion nicht genau. der erste ist das Register, das ist c0, der zweite Parameter ist der Wert aber die 3. versteh ich überhauptnicht. Und auch bei der ersten kann ich ja schwer einfach c0 angeben(ist ja keine Zahl)...

Phili

unregistriert

139

21.07.2006, 15:48

Also wenn ichs gleich allen 96 Registern übergeb, klappts :D :D :D

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

140

21.07.2006, 16:12

ich übergebe das mit hilfe von D3DX oder eben mit der tribase engine

Werbeanzeige