JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

ShaderEditor

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Projekte
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 05.07.2006, 15:11    Titel: ShaderEditor Antworten mit Zitat

Hi,
ich plane einen ShaderEditor ähnlich dem der projectoffset Leute zu basteln.

Nun wollte ich euch mal fragen was ihr als Entwickler so alles für spielereien haben möchtet?

Aktuell plane ich folgende Dinge welche der Editor können soll:

- Serialisierung des Projektes in XML Dateien damit diese weiter verwendet werden können

- SupportDLL welche es ermöglicht die XML Dateien zu lesen und für die Benutzung in Anwendungen aufzubereiten:
CPP:
// datei MyProject.xml auslesen
k_ShaderPlugin lk_Shader("MyProject.xml");
// VertexShader des ersten Passes fuer GLSL generieren
std::string vs = k_ShaderPlugin.GetVertexShader("GLSL", 0);


- Erweiterbarkeit durch einfache XML Datenbanken für zusätzliche Sprachaspekte, Sprachen, sowie diverse andere Dinge (typecast Rules, Funktionstemplates)
Code:

<Function Language="GLSL,HLSL" Code="
%s<LightIntensity,Vector1> = dot(%i<Normal,Vector3>,%i<LightDirection,Vector3>);
%o<FinalLightColor,Vector3> = LightIntensity * %i<LightColor,Vector3> + %c<AmbientColor,Vector3>;
"/>
<TypeRule Language="GLSL" Name="Vector3" Type="vec3">
  <CastRule From="Vector1" Rule="$(#.x,0.0,0.0)"/>
  <CastRule From="Vector2" Rule="$(#.x,#.y,0.0)"/>
  <CastRule From="Vector4" Rule="$(#.x,#.y,#.z)"/>
</TypeRule>
<TypeRule Language="HLSL" Name="Vector3" Type="float3">
  <CastRule From="Vector1" Rule="$(#.x,0.0,0.0)"/>
  <CastRule From="Vector2" Rule="$(#.x,#.y,0.0)"/>
  <CastRule From="Vector4" Rule="$(#.x,#.y,#.z)"/>
</TypeRule>


- erstellen von Shadercode für diverse Sprachen (HLSL; GLSL, Cg) durch simplen Knopfdruck

- komfortabler WYSIWYG Editor (zieht ein Ergebniss auf ein Parameter eines Funktionsblockes)
Hier ein Bild der ProjectOffset Leute: http://www.projectoffset.com/images/shaderbuilder_large.jpg

- Vorschaufunktion

- Fehleranalyse
Code:

Fehler 1. Fehlendes Verbindungsglied für Parameter <LightPosition, Vector3>

Dabei soll der Funktionsblock/Fehlerquelle rot hervorgehoben werden

Ich habe schon kleinere Testläufe unternommen und der Code sieht gut aus und meine kleineren Klassen funktionieren alle hervorragend.

Also was meint ihr, was sollte noch dazu kommen?
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 11.07.2006, 21:04    Titel: Antworten mit Zitat

Klingt sehr vielversprechend.
Was ich mir eventuell wünschen würde ist eine simple erweiterbare export funktion.
Einige Engines wollen ein eigenes Dateiformat, oder eine zusätzliche Beschreibungsdatei oder so. Diese könnte man dann durch ein exporter plugin automatisch generieren lassen.
Bin auf jeden Fall mal SEHR gespannt was daraus so wird Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 11.07.2006, 21:54    Titel: Antworten mit Zitat

bin ebenfalls sehr gaspannt Wink

machst du das denn jetz in C# oder C++?

gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 12.07.2006, 08:05    Titel: Antworten mit Zitat

Das gesammte Grundsystem schreibe ich in C++, den zugehörigen editor eventuell n C# oder gleich in C++ .Net. Mit Fensterapplikationen habe ichs nicht so Wink

xardias: mhhh sowas war eigentlich nicht geplant, aber da ich ja die Sache mit der dll machen werde so sollte es nicht allzu schwer sein sich da selber etwas zu basteln.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
David
Super JLI'ler


Alter: 39
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 12.07.2006, 09:28    Titel: Re: ShaderEditor Antworten mit Zitat

Fallen hat Folgendes geschrieben:

Nun wollte ich euch mal fragen was ihr als Entwickler so alles für spielereien haben möchtet?


Du Scherzkeks, wenn du schon fragst solltest du auch auf die Wünsche der "Entwickler" eingehen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 12.07.2006, 09:34    Titel: Antworten mit Zitat

Ob ich etwas einbaue oder nicht entscheide immer noch ICH. Ausserdem sagte ich das die Möglichkeit existent ist, welche xardias wollte.

Ich halte das für einen guten Kompromiss.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
David
Super JLI'ler


Alter: 39
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 12.07.2006, 09:44    Titel: Antworten mit Zitat

Hachgott... reg dich doch nich so auf.
Du solltest nicht fragen wenn du sowiso nicht auf Wünsche und Vorschläge eingehst.
Dann kannst du auch gleich sagen: "Das ist geplant und mehr gibts nicht".
Der Kompromiss ist zwar nett, aber viele würden, mit Sicherheit, die Pluginvariante vorziehen, da das einfach sehr viel leichter handzuhaben ist.

Aber nunja... Is ja deine Sache, die Kunden werdens dir danken... Rolling Eyes
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 12.07.2006, 09:54    Titel: Antworten mit Zitat

David hat Folgendes geschrieben:
Hachgott... reg dich doch nich so auf.
Du solltest nicht fragen wenn du sowiso nicht auf Wünsche und Vorschläge eingehst.
Dann kannst du auch gleich sagen: "Das ist geplant und mehr gibts nicht".
Der Kompromiss ist zwar nett, aber viele würden, mit Sicherheit, die Pluginvariante vorziehen, da das einfach sehr viel leichter handzuhaben ist.

Aber nunja... Is ja deine Sache, die Kunden werdens dir danken... Rolling Eyes

ich finde es durchaus angemessen, wenn Fallen hier sein Projekt vorsellt und nebenbei nach tipps, anregungen oder wünschen fragt. Das Projekt kann doch nur besser werden, oder? So merkt er vielleicht auch einige Sachen, die er vergessen haben könnte Smile

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
David
Super JLI'ler


Alter: 39
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 12.07.2006, 09:56    Titel: Antworten mit Zitat

DirectXer hat Folgendes geschrieben:
David hat Folgendes geschrieben:
Hachgott... reg dich doch nich so auf.
Du solltest nicht fragen wenn du sowiso nicht auf Wünsche und Vorschläge eingehst.
Dann kannst du auch gleich sagen: "Das ist geplant und mehr gibts nicht".
Der Kompromiss ist zwar nett, aber viele würden, mit Sicherheit, die Pluginvariante vorziehen, da das einfach sehr viel leichter handzuhaben ist.

Aber nunja... Is ja deine Sache, die Kunden werdens dir danken... Rolling Eyes

ich finde es durchaus angemessen, wenn Fallen hier sein Projekt vorsellt und nebenbei nach tipps, anregungen oder wünschen fragt. Das Projekt kann doch nur besser werden, oder? So merkt er vielleicht auch einige Sachen, die wer vergessen haben könnte Smile

Gruß DXer


Wenn du richtig mitgelesen hättest, würdest du wissen das ich dir voll und ganz zustimme...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
GreveN
JLI Master


Alter: 37
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 12.07.2006, 10:09    Titel: Antworten mit Zitat

Ach Mädels, jetzt zickt euch doch nicht so an, ist ja fast wie in den guten alten Zeiten hier... ;)

Fallen wird schon was Nettes daraus basteln, vielleicht nicht für jedermann 100% ideal, aber ganz sicher nett, also immer schön weitermachen Fallen... ;)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 12.07.2006, 11:28    Titel: Antworten mit Zitat

Um nochmal auf xardias Frage zurück zu kommen...

Ich lasse das deshalb weg weil es wirklich nicht sonderlich schwer ist sich dafür selber eine Helper funktion/klasse zu schreiben. Ich habe mir nämlich auch überlegt ob ich dafür ein System erstelle, da zB das HLSL Format weit fortschrittlicher ist als das GLSL Format was solche Sachen wie States, Passes etc angeht.

Aus diesem Grund wird sich der Output auf den Shader selber beschränken also bei HLSL wäre das sowas:

Code:
struct PS_Output
{
    float4 Color : COLOR0;   
};

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

PS_OUTPUT P0_main( PS_Input In)
{
   PS_Output Output;
   // tu was tolles
   return Output;
}


Anstatt sowas:

Code:
struct PS_Output
{
    float4 Color : COLOR0;   
};

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

PS_OUTPUT P0_main( PS_Input In)
{
   PS_Output Output;
   // tu was tolles
   return Output;
}

///////////////////////////////////////
//Technique
///////////////////////////////////////


technique Effect
{
    pass Pass0
    {
   AlphaBlendEnable= False;
   ColorOp[0] = SelectArg1;
   ColorArg1[0] = Texture;
   ColorOp[1] = Disable;
   AddressU[0] = CLAMP;
   AddressV[0] = CLAMP;
   VertexShader = NULL;
   PixelShader  = compile ps_2_0 P0_main();
    }
}


Alleine das Strukturen erstellen passt mir schon nicht, da ich den Editor soweit wie möglich Sprachunabhängig machen möchte.

Der Editor selbst wird allerdings in der Lage sein alle nötigen Daten zu liefern, unter anderem was die States betrifft so das man sich sein Format aufbauen kann wie man möchte.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Projekte Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum