Gamestudio Links
Zorro Links
Newest Posts
Trading Journey
by howardR. 04/28/24 09:55
basik85278
by basik85278. 04/28/24 08:56
Zorro Trader GPT
by TipmyPip. 04/27/24 13:50
Help with plotting multiple ZigZag
by M_D. 04/26/24 20:03
Data from CSV not parsed correctly
by jcl. 04/26/24 11:18
M1 Oversampling
by jcl. 04/26/24 11:12
Why Zorro supports up to 72 cores?
by jcl. 04/26/24 11:09
Eigenwerbung
by jcl. 04/26/24 11:08
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
2 registered members (SBGuy, Quad), 768 guests, and 5 spiders.
Key: Admin, Global Mod, Mod
Newest Members
wandaluciaia, Mega_Rod, EternallyCurious, howardR, 11honza11
19049 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 36 of 45 1 2 34 35 36 37 38 44 45
Re: Fotorealistisches Mittelalter: Farbkorrektur [Re: Slin] #419430
03/09/13 23:00
03/09/13 23:00
Joined: Dec 2002
Posts: 3,363
Vindobona (Ostarichi)
Harry Potter Offline OP
Expert
Harry Potter  Offline OP
Expert

Joined: Dec 2002
Posts: 3,363
Vindobona (Ostarichi)
Originally Posted By: Slin
Um es nochmal ganz klar zu sagen: Ohne Shader würdest du überhaupt nichts sehen.
Ist das wirklich so? Ich kämpfe gerade mit dem Problem, dass die Grafikkarte von meinem Notebook meinen Shader nicht darstellen kann.

Selbst die sehr einfache Fallback-Technique (siehe unten) funktioniert dort nicht.
Code:
float4 ps_red() : COLOR { return float4(1, 0, 0, 1); }
technique fallback { pass one { PixelShader = compile ps_1_0 ps_red(); } }


Polygone kann die Grafikkarte jedoch problemlos rendern. Nur die Shader funktionieren nicht. Es gibt halt auch Grafikkarten, die nicht für Spiele entworfen wurden, sondern z.B. für CAD, und für schnelles Rendern von Polygonen. Und dort funktionieren dann halt keine Shader.


Originally Posted By: Slin
Boneanimationen kann ich dir nur sehr empfehlen, da diese sich viel schöner Interpolieren lassen als Vertexanimationen und außerdem kannst du einfach so schöne Übergänge zwischen animationen haben.
Da stimme ich Dir zu.

Allerdings haben auch Vertexanimationen ihre Daseinsberechtigung. Es kommt nämlich darauf an, welches Programm Du zum Animieren der Vertexanimationen verwendest. Ich verwende dafür 3dsMax, und dort hast Du neben Bones noch sehr viele andere Möglichkeiten, ein Model zu animieren. Ich sage nur mal z.B. physikalisch korrekt berechneter Wind und Stoffanimation, oder Muskelsimulation, etc. etc.! Und das kannst Du dann als Vertexanimation nach Gamestudio exportieren. Da hat man dann mit Vertexanimationen viel mehr Möglichkeiten als nur mit Bones.

Ich verwende Vertex-Animationen, bestehend aus nur einem einzigen Polygon, auch sehr gerne als Dummy-Objekte, um andere Objekte zu positionieren. Weil dieses eine einzige Polygon benötigt für die Animation nicht viel Speicher. Und mit einem Animationsprogramm wie z.B. 3dsMax kann ich dieses eine Polygon die tollsten "Flugbewegungen" durchführen lassen. Und dann kann ich z.B. die virtuelle Kamera an einem Vertex dieses Dummy-Models positionieren/anhängen, und in die Richtung eines zweiten Vertex blicken lassen. Und schon lassen sich die atemberaubensten Kameraflüge realisieren (mit Loopings, Beschleunigung, Abbremsung, etc. etc., ohne dass man viel programmieren muss).

Oder ich kann einen 3D-Drachen, der sehr viele Polygone hat, diese komplexen Flugbewegungen des einen einzigen Dummy-Polygons durchführen lassen. Und die Bones für den Flügelschlag des Drachen könnte ich anhand der Position eines weiteren Vertex im Dummy-Model animieren.

Man kann das auch als Pfad verwenden, um NPCs einem sehr komplexen Pfad folgen zu lassen (inkl. Beschleunigung und Abbremsung).

Oder man kann diese Dummy-Vertexanimation einfach nur zum Speichern von beliebigen vorberechneten Daten verwenden - anstatt einem Array. Die Position der Vertices entspricht dann den einzelnen Daten, der Animationsframe dem Array-Index.

Dummy-Objekte sind eine tolle Sache, die meiner Meinung nach viel zu selten eingesetzt werden.

Re: Fotorealistisches Mittelalter: Farbkorrektur [Re: Harry Potter] #419434
03/10/13 02:55
03/10/13 02:55
Joined: May 2005
Posts: 2,713
Lübeck
Slin Offline
Expert
Slin  Offline
Expert

Joined: May 2005
Posts: 2,713
Lübeck
Originally Posted By: Harry Potter

Selbst die sehr einfache Fallback-Technique (siehe unten) funktioniert dort nicht.
Code:
float4 ps_red() : COLOR { return float4(1, 0, 0, 1); }
technique fallback { pass one { PixelShader = compile ps_1_0 ps_red(); } }


Polygone kann die Grafikkarte jedoch problemlos rendern. Nur die Shader funktionieren nicht. Es gibt halt auch Grafikkarten, die nicht für Spiele entworfen wurden, sondern z.B. für CAD, und für schnelles Rendern von Polygonen. Und dort funktionieren dann halt keine Shader.

Ich weiß jetzt nicht was für eine Grafikkarte du da hast, aber diese "speziellen" Grafikkarten sind in der Regel nicht besonders anders, bzw sind teilweise sogar genau die gleiche Hardware wie entsprechende Gaming Modelle, nur dass es andere Treiber gibt, die andere Schwerpunkte und Features haben.

Das Problem in deinem Beispiel ist nicht die tatsache dass es ein Shader ist, sondern viel mehr die, dass der so nicht erlaubt ist. Eigentlich brauchst du nämlich auch einen Vertexshader (der wenn du keinen angibst quasi automatisch erzeugt wird), was zumindest schonmal unschön ist an dem was du da machst, aber vor allem gibst du Shadermodel 1_0 an, dass selbst von DirectX 9 seit Jahren nicht mehr unterstützt wird.

Vollständig und funktionsfähig könnte der Shader zum Beispiel so aussehen:
Code:
float4x4 matWorldViewProj;

float4 Shader_VS(float4 inPos : POSITION, float2 inTex : TEXCOORD0) : POSITION
{
	return mul(inPos, matWorldViewProj);
}

float4 Shader_PS() : COLOR
{
	return float4(1.0f, 0.0f, 0.0f, 1.0f);
}

technique tech_00
{
	pass pass_00
	{
		VertexShader = compile vs_3_0 Shader_VS();
		PixelShader = compile ps_3_0 Shader_PS();
	}
}



Oder im Falle deines Projektes, wo du einfach nur deine Textur sehen möchtest, könnte er z.B. so aussehen:
Code:
float4x4 matWorldViewProj;
texture entSkin1;

sampler2D smpDiffuse = sampler_state
{
	Texture = <entSkin1>;
	
	MinFilter = linear;
	MagFilter = linear;
	MipFilter = linear;
	
	AddressU = Wrap;
	AddressV = Wrap;
};

struct VS_OUT
{
	float4 Pos : POSITION;
	float2 Tex : TEXCOORD0;
};

VS_OUT Shader_VS(float4 inPos : POSITION, float2 inTex : TEXCOORD0)
{
	VS_OUT Out = (VS_OUT)0;
	
	Out.Pos = mul(inPos, matWorldViewProj);
	Out.Tex = inTex;
	
	return Out;
}

float4 Shader_PS(float2 inTex : TEXCOORD0) : COLOR
{
	float4 Color = tex2D(smpDiffuse, inTex);
	return Color;
}

technique tech_00
{
	pass pass_00
	{
		VertexShader = compile vs_3_0 Shader_VS();
		PixelShader = compile ps_3_0 Shader_PS();
	}
}



Originally Posted By: Harry Potter

Dummy-Objekte sind eine tolle Sache, die meiner Meinung nach viel zu selten eingesetzt werden.

Klar kann man das machen, aber dann wäre es eigentlich auch etwas eleganter dafür ein eigenes Dateiformat das speziell auf den jeweiligen zweck ausgelegt ist zu nutzen, bei dem man dann im Fall von paths zum Beispiel auch noch verschiedene Interpolationsmöglichkeiten anbieten könnte. Also klar kannst du auch Vertexanimationen dafür nutzen, aber damit hat das dann nicht mehr viel zu tun. Und klar, für Stoff oder auch Gesichtsanimationen und sicher noch ein paar andere Dinge sind Vertexanimationen recht gut geeignet. Für Gesichter will man aber in der Regel mehr Kontrolle (bzw muss sich ein umfangreicheres System überlegen wie man Vertexanimatonen kombinieren könnte, was mit Gamestudios ent_animate dann nicht mehr funktioniert) was mit nem haufen Bones dann ziemlich genauso gut funktioniert und für Stoff würde ich inzwischen eher Physik nutzen. Aber es gibt natürlich noch andere Dinge bei denen Bones einfach viel umständlicher wären.

Re: Fotorealistisches Mittelalter: Farbkorrektur [Re: Harry Potter] #419436
03/10/13 09:29
03/10/13 09:29
Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
Kartoffel Offline
Expert
Kartoffel  Offline
Expert

Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
Originally Posted By: Harry Potter
Originally Posted By: Slin
Um es nochmal ganz klar zu sagen: Ohne Shader würdest du überhaupt nichts sehen.
Ist das wirklich so? Ich kämpfe gerade mit dem Problem, dass die Grafikkarte von meinem Notebook meinen Shader nicht darstellen kann.

Selbst die sehr einfache Fallback-Technique (siehe unten) funktioniert dort nicht.
Code:
float4 ps_red() : COLOR { return float4(1, 0, 0, 1); }
technique fallback { pass one { PixelShader = compile ps_1_0 ps_red(); } }


Polygone kann die Grafikkarte jedoch problemlos rendern. Nur die Shader funktionieren nicht. Es gibt halt auch Grafikkarten, die nicht für Spiele entworfen wurden, sondern z.B. für CAD, und für schnelles Rendern von Polygonen. Und dort funktionieren dann halt keine Shader.
Wie schon gesagt wurde, wird alles mit Shadern dargestellt, ob du nun custom Shader verwendest oder die standartmäßig gesetzten einfach zugewiesen lässt.

Und zu dem Problem, dass Shader nicht gehen: Liegt daran, dass in denem Shader keine VertexShader-Funktion ausgeführt wird.
Bei manchen Grakas mag das klappen (bei mir nur mit Shader Model 1 und 2), aber so, wie Slin den Shader gepostet hat, müsste es funktionieren.


POTATO-MAN saves the day! - Random
Re: Fotorealistisches Mittelalter: Farbkorrektur [Re: Slin] #419449
03/10/13 13:43
03/10/13 13:43
Joined: Dec 2002
Posts: 3,363
Vindobona (Ostarichi)
Harry Potter Offline OP
Expert
Harry Potter  Offline OP
Expert

Joined: Dec 2002
Posts: 3,363
Vindobona (Ostarichi)
@Slin und Hummel: Danke euch beiden für eure Antworten.
Hier ein paar Kommentare dazu:
Originally Posted By: Slin
Eigentlich brauchst du nämlich auch einen Vertexshader
Sorry, mein Fehler. War etwas verwirrend formuliert. Natürlich verwende ich auch einen Vertexshader. Ich hatte nur einen kleinen Ausschnitt aus dem Shader (die technique fallback) gepostet - die erst gestern zum Testen eingebaut wurde.
Der komplette Shader sieht so aus:
Code:
float4x4 matWorld;
float4x4 matWorldViewProj;
float4 vecViewPos;
float4 vecTime;
float4 vecSkill41;

float4 ps_red() : COLOR { return float4(1, 0, 0, 1); }

bool PASS_SOLID;

texture entSkin1;
texture entSkin2;
texture bmp_spiegelung_bmap;

sampler2D smpTextur = sampler_state
{
	Texture = <entSkin1>;
	
	MinFilter	= linear;
	MagFilter	= linear;
	MipFilter	= linear;
	
	AddressU		= Wrap;
	AddressV		= Wrap;
};

sampler2D smpBump = sampler_state
{
	Texture = <entSkin2>;
	
	MinFilter	= linear;
	MagFilter	= linear;
	MipFilter	= linear;
	
	AddressU		= Wrap;
	AddressV		= Wrap;
};

sampler2D smpSpiegelung = sampler_state
{
	Texture = <bmp_spiegelung_bmap>;
	
	MinFilter	= linear;
	MagFilter	= linear;
	MipFilter	= linear;
	
	AddressU		= Mirror;
	AddressV		= Mirror;
};

struct VS_OUT
{
	float4 Pos : POSITION;
	float2 Tex : TEXCOORD0;
	float3 ProjTex : TEXCOORD1;
};

VS_OUT Shader_VS(float4 inPos : POSITION, float2 inTex : TEXCOORD0)
{
	VS_OUT Out = (VS_OUT)0;
	
	Out.Pos = mul(inPos, matWorldViewProj);
	Out.Tex = inTex;
	Out.ProjTex = Out.Pos.xyw;
	
	return Out;
}

float4 Shader_PS(float2 inTex : TEXCOORD0, float3 ProjTex : TEXCOORD1) : COLOR
{
	ProjTex.xy =ProjTex.xy/ProjTex.z; 
	ProjTex.xy = ProjTex.xy*0.5+0.5;
	
	float4 Textur = tex2D(smpTextur, inTex);
 	float4 Bump = tex2D(smpBump, float2(inTex.y,inTex.x))*2.0-1.0;
	float4 Spiegelung = tex2D(smpSpiegelung, ProjTex.xy+vecSkill41.x*0.01*Bump);
	
	float Intensitaet = Spiegelung.rgb;
	
	Intensitaet *= Intensitaet;
	Intensitaet += -0.1+vecSkill41.z;
	
	Textur.a = 1;
	
	float4 Ergebnis = (1-vecSkill41.y)*Textur+vecSkill41.y*Spiegelung*float4(Intensitaet,Intensitaet,Intensitaet,1.0);
	
	Ergebnis = float4(Ergebnis.xyz,1.0)+vecSkill41.y*0.15*float4(Bump.r,Bump.r,Bump.r,0);
	
	return Ergebnis;
}

technique tech_00
{
	pass pass_00
	{
		VertexShader = compile vs_2_0 Shader_VS();
    	PixelShader = compile ps_2_0 Shader_PS();
	}
}


// fallback if nothing works (change color to red for testing)
technique fallback 
{
	 pass one 
	 {
	 	 PixelShader = compile ps_1_0 ps_red(); 
	 } 
}


Der Shader funktioniert auf meiner NVIDIA-Grafikkarte perfekt.
Nur auf der "ATI Mobility Radeon HD 5470" von meinem Laptop wird immer nur die reine Textur, ohne diesem Spiegel-/Verzerrungs-Shader, gerendert. Mein Laptop ist auch noch nicht soooo alt (immerhin war Windows 7 vorinstalliert).

Ich habe vorhin nach dieser Grafikkarte gegoogelt. Interessanterweise soll sie laut Internet das Shader Model 5.0 unterstützen. Aber sie will einfach nicht.

Kann es sein, dass eine Grafikkarte, die Shader Model 5.0 unterstützt, Probleme mit Shader Model 1.0 oder 2.0 hat?
Und hat jemand eine Idee, wie ich im Programmcode erkennen könnte, dass mein Shader nicht unterstützt wird? Damit ich dem Spieler beim Starten des Spieles eine Warnung ausgeben kann, oder im laufenden Spiel andere Models laden kann, die auch ohne Shader gut aussehen.

Re: Fotorealistisches Mittelalter: Farbkorrektur [Re: Harry Potter] #419451
03/10/13 13:50
03/10/13 13:50
Joined: Oct 2011
Posts: 1,082
Germany
C
Ch40zzC0d3r Offline
Serious User
Ch40zzC0d3r  Offline
Serious User
C

Joined: Oct 2011
Posts: 1,082
Germany
Nehm doch einfach Modell 3.0 oder höher, wie Slin schon sagte ist 1.0 outdated.

Last edited by Ch40zzC0d3r; 03/10/13 13:51.
Re: Fotorealistisches Mittelalter: Shader [Re: Harry Potter] #419452
03/10/13 13:57
03/10/13 13:57
Joined: Dec 2002
Posts: 3,363
Vindobona (Ostarichi)
Harry Potter Offline OP
Expert
Harry Potter  Offline OP
Expert

Joined: Dec 2002
Posts: 3,363
Vindobona (Ostarichi)
Nachtrag:
Auch der Shader von Slin (siehe unten) läuft auf der Radeon-Karte nicht. Auf der NVIDIA läuft er aber perfekt.

Code:
float4x4 matWorldViewProj;

float4 Shader_VS(float4 inPos : POSITION, float2 inTex : TEXCOORD0) : POSITION
{
	return mul(inPos, matWorldViewProj);
}

float4 Shader_PS() : COLOR
{
	return float4(1.0f, 0.0f, 0.0f, 1.0f);
}

technique tech_00
{
	pass pass_00
	{
		VertexShader = compile vs_3_0 Shader_VS();
		PixelShader = compile ps_3_0 Shader_PS();
	}
}


Re: Fotorealistisches Mittelalter: Shader [Re: Harry Potter] #419455
03/10/13 14:24
03/10/13 14:24
Joined: May 2005
Posts: 2,713
Lübeck
Slin Offline
Expert
Slin  Offline
Expert

Joined: May 2005
Posts: 2,713
Lübeck
Das Problem ist garantiert nicht die Grafikkarte sondern irgendwas anderes.
Hast du aktuelle Grafikkartentreiber installiert?
Was bedeutet "läuft nicht"? Kommt da irgendeine Fehlermeldung, wenn ja, welche?

Re: Fotorealistisches Mittelalter: Shader [Re: Slin] #419458
03/10/13 14:41
03/10/13 14:41
Joined: Dec 2002
Posts: 3,363
Vindobona (Ostarichi)
Harry Potter Offline OP
Expert
Harry Potter  Offline OP
Expert

Joined: Dec 2002
Posts: 3,363
Vindobona (Ostarichi)
Originally Posted By: Slin
Was bedeutet "läuft nicht"? Kommt da irgendeine Fehlermeldung, wenn ja, welche?
Nein, es kommt keine Fehlermeldung. Anstatt das Shaders wird einfach nur die Textur des Models gerendert.

Originally Posted By: Slin
Hast du aktuelle Grafikkartentreiber installiert?
Ist noch der ursprüngliche Treiber. Wie gesagt, so alt dürfte der noch nicht sein, da Windows 7 auf dem Laptop läuft.

Und ich möchte auch keinen neuen Treiber installieren. Weil mir geht es nicht darum, dass der Shader auf meinem Laptop funktioniert. Sondern ich bin sogar froh, dass er dort nicht funktioniert. Weil so habe ich eine geeignete Testumgebung.

Kann schließlich immer wieder vorkommen, dass Shader auf einem PC nicht funktionieren (mein Laptop ist da sicher weltweit kein Einzelfall). Das möchte ich aber in meinem Spiel irgendwie erkennen können. Ich möchte einfach nicht, dass ein Spieler mein Spiel startet, und dann irgendwann anstelle eines wunderschönen Sees mit Spiegelung eine schwarze Fläche sieht. Das möchte ich vorher irgendwie abfangen.

Also mir geht es weniger darum, dass der Shader läuft. Sondern viel mehr darum, wie ich im Programm erkennen kann, dass der Shader nicht unterstützt wird.

Re: Fotorealistisches Mittelalter: Shader [Re: Harry Potter] #419459
03/10/13 14:57
03/10/13 14:57
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline
Senior Expert
Superku  Offline
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
In dieser Richtung ist mir nur die Variable d3d_shaderversion bekannt. Zur Überprüfung, ob individuelle Shader bzw. die gedachten techniques funktionieren, gibt es meines Wissens nach keine Möglichkeit, da dies wohl auch alles von DirectX gehandhabt wird. Das verleitet mich zu der Frage, ob auf deinem Laptor denn eine aktuelle DX9 Version installiert ist? Wenn sich bereits DX10/ 11 auf diesem befindet, heißt das aber nicht zwangsläufig, dass auch alle Fixes aus der neuesten 9er Version enthalten sind. Daher empfehle ich dir, bspw. folgende Version auf dem Problemkind zu installieren:
http://www.chip.de/downloads/DirectX_13002926.html


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends
Re: Fotorealistisches Mittelalter: Shader [Re: Harry Potter] #419461
03/10/13 15:08
03/10/13 15:08
Joined: May 2005
Posts: 2,713
Lübeck
Slin Offline
Expert
Slin  Offline
Expert

Joined: May 2005
Posts: 2,713
Lübeck
Wenn der Shader nicht unterstützt wird sollte eine Fehlermeldung kommen und nicht das was im moment passiert. Das spricht eher dafür, dass der aus irgendwelchen gründen garnicht erst benutzt wird.
Was man machen kann ist das unterstützte shader model zu überprüfen mit irgendsoeiner d3d_irgendwas variable, aber deine Grafikkarte wird da mindestens shader model 3 zurückgeben, da sie das ja auch unterstützt.
Ich seh aber auch dein Problem nicht, wenn du eine ATI Karte hast, dann ist die schon etwas älter und das Grafikkartentreiber Bugs haben ist absolut nichts neues. Außerdem schreibst du hier, dass du keine Shader nutzen willst, weil die Hardware in 10 Jahren eventuell nicht damit umgehen kann und gleichzeitig machst du dir sorgen um support für 10 Jahre alte Hardware, denn 2003 gab es durchaus schon shader. Anfang 2004 ist das Spiel FarCry erschienen und ob du es glaubst oder nicht, es hat Shader Model 3 unterstützt, weil es dafür schon Hardware gab.
Wenn mit shadern irgendetwas nicht funktioniert, dann kann es viele Gründe geben, aber nicht dass die Grafikkarte das nicht kann.

Page 36 of 45 1 2 34 35 36 37 38 44 45

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1