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.
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.
Naja, Fred hat die Funktion nicht implementiert. Und da dann das Objekt sowie die Funktionsadresse zu finden ist unmöglich wenn man sauber arbeiten will . 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.
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.
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.
dllfreak2001 hat geschrieben: 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.
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?