Ogre3D ich will diese Funktion...

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Ogre3D ich will diese Funktion...

Beitrag von dllfreak2001 »

wie könnte man die nutzbar machen?

Immerhin könnte man dann schon deutlich atmosphärischere Szenen gestalten.

Code: Alles auswählen

void Ogre::Light::setAttenuation  	(  	Real   	 range,
		Real  	constant,
		Real  	linear,
		Real  	quadratic	 
	) 			

Sets the attenuation parameters of the light source i.e.

how it diminishes with distance.

Remarks:
    Lights normally get fainter the further they are away. Also, each light is given a maximum range beyond which it cannot affect any objects. 

    Light attenuation is not applicable to directional lights since they have an infinite range and constant intensity. 

    This follows a standard attenuation approach - see any good 3D text for the details of what they mean since i don't have room here! 

Parameters:
    	range 	The absolute upper range of the light in world units
    	constant 	The constant factor in the attenuation formula: 1.0 means never attenuate, 0.0 is complete attenuation
    	linear 	The linear factor in the attenuation formula: 1 means attenuate evenly over the distance
    	quadratic 	The quadratic factor in the attenuation formula: adds a curvature to the attenuation formula. 
I´a dllfreak2001
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Dynamisch vermutlich garnicht. Statisch über material scripts + shader.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

Warum denn nicht?
Gibt es da irgendwelche Probleme, weshalb diese und weitere Funktionen
nicht realisiert wurden bzw möglich sind?

Nichtmal nen Licht anpassen können aber schon mit Materialskripten und Shadern arbeiten. ;)
I´a dllfreak2001
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

berechtigte Frage!
meiner Ansicht nach sollte der komplette Funktionsumfang zumindest importierbar sein, wenn schon nicht nativ importiert.

... frag doch mal im englischen Forum, was Fred dazu meint.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Naja, Fred hat die Funktion nicht implementiert. :wink: Und da dann das Objekt sowie die Funktionsadresse zu finden ist unmöglich wenn man sauber arbeiten will :freak: . Desweiteren gibts in neueren OpenGL Versionen eh keine Lichter mehr, also ob da noch was draus wird ohne Shader in PureBasic glaube ich kaum. Alles wird nun durch uniforms, attributes und so gelöst.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

Naja, Ogre3D ist in der Windows-Version ja eine Direct3D-Engine.
Gibbet auch da keine Lichter mehr?

Bzw. wie macht man denn dann überhaupt ein vernünftige Beleuchtung wenn man keine Shader nutzen will?

Ich dachte nämlich immer, dass heutzutage auch immer noch Vertex lighting genutzt wird, für die Schatten und den Rest dann aber mit Shadern und Lightmaps gearbeitet wird.
I´a dllfreak2001
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

dllfreak2001 hat geschrieben:Naja, Ogre3D ist in der Windows-Version ja eine Direct3D-Engine.
Gibbet auch da keine Lichter mehr?

Bzw. wie macht man denn dann überhaupt ein vernünftige Beleuchtung wenn man keine Shader nutzen will?

Ich dachte nämlich immer, dass heutzutage auch immer noch Vertex lighting genutzt wird, für die Schatten und den Rest dann aber mit Shadern und Lightmaps gearbeitet wird.
Vertexlighting wird schon noch verwendet, als Fallback bei inkompatiblen Grafikkarten.
Ohne Shader kannst du in PB OGRE kaum was machen. Und selbst mit geht nur wenig, da man von PB aus keine Werte rüberschicken kann. Eine Alternative, die sogar auf Lowend-Büro-Computern läuft wär ein Binäres vertexprogramm. Das kannst du auch als Shader in einem Materialscript definieren.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

:cry: Mal echt, das ist Mist.

Obwohl du ja anhand deinem Normalmap-Code auch die Lichter verwendest. Würde da die light attenuation nicht auch hilfreich sein?
I´a dllfreak2001
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

dllfreak2001 hat geschrieben::cry: Mal echt, das ist Mist.

Obwohl du ja anhand deinem Normalmap-Code auch die Lichter verwendest. Würde da die light attenuation nicht auch hilfreich sein?
Such im englischen Forum nach nem Feature Request und wenns keins gibt, dann mach ein neues Topic auf, das müsste Fred relativ schnell hinbekommen ;-) (Obwohl du es dann erst in der nächsten Version bekommen würdest).
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

Wie läuft das denn nun heutzutage mit den Lichtern bzw. Shadern.

Sind das Lightmaps die in Echtzeit von der Grafikkarte berechnet werden,
oder wird da auf die Textur in Echtzeit für jeden Pixel ein Helligkeitswert berechnet.
Wie kann man eigentlich die Shafder Programmieren? Kann man das so in PB überhaupt machen oder braucht man da irgendwas anderes?
I´a dllfreak2001
Antworten