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

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

631

07.10.2015, 16:12

Debug-Code nicht rausgeräumt? Aber einmal true und einmal false ist zusammen doch recht seltsamer Debug-Code... :D
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

ByteJunkie

Alter Hase

Beiträge: 891

Wohnort: Deutschland

Beruf: Softwareentwickler

  • Private Nachricht senden

632

07.10.2015, 16:57

Mir gefällt besonders die 1. Zeile ... :pillepalle:
Mach was Du nicht lassen kannst und lass was Du nicht machen kannst. ;)

Maggot

Frischling

Beiträge: 51

Wohnort: Wien

Beruf: Software Entwickler

  • Private Nachricht senden

633

08.10.2015, 06:28

Quellcode

1
2
3
if (!!!sichtId) {
   . . .
}

634

14.10.2015, 21:57

HLSL-Quelltext

1
2
3
4
5
6
output.worldPosition = float4((((((SectorSize*lSectorPositionOffset)
    + (1024.0f*1024.0f*16.0f)*float3(PosHighDiff.x & 0xFFFF0000, PosHighDiff.y & 0xFFFF0000, PosHighDiff.z & 0xFFFF0000))
    + (1024.0f*1024.0f*16.0f)*float3(PosHighDiff.x & 0xFFFF, PosHighDiff.y & 0xFFFF, PosHighDiff.z & 0xFFFF))
    + (1.0f / 256.0f)*float3(PosLowDiff.x & 0xFFFF0000, PosLowDiff.y & 0xFFFF0000, PosLowDiff.z & 0xFFFF0000))
    + (1.0f / 256.0f)*float3(PosLowDiff.x & 0xFFFF, PosLowDiff.y & 0xFFFF, PosLowDiff.z & 0xFFFF))
    + input.radius*input.position.xyz, 1.0f);

Immerhin funktioniert es xD Ich bin mir nicht sicher, aber ich glaube sogar, dass es nicht anders geht. Ich hatte vorher die uint3 direkt in float3 konvertiert, aber dann waren die errechneten Positionen falsch.
Cube Universe
Entdecke fremde Welten auf deiner epischen Reise durchs Universum.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Magogan« (14.10.2015, 22:12)


Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

635

14.10.2015, 23:13

Das ist mal ein WTF Codeschnipsel ;) Ich bin mir ziemlich sicher dass das einfacher geht aber sträube mich stark dagegen mir das anzusehen ;) Aber auf die schnelle, da sind einige Magic Numbers drin die man austauschen könnte und ob man für eine Weltposition wirklich diese ganzen bitweisen Operationen benötigt bezweifle ich grad einfach mal. Aber wie gesagt da möchte ich auch einfach gar nicht genauer hinsehen müssen:) Thema des Threads auf jeden Fall genau getroffen:)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

636

15.10.2015, 07:19

Die bitweisen Operatoren sind nötig, die hatte ich vorher nicht drin und das hat zu falscher Darstellung geführt. Im Prinzip werden da 3x64 Bit unsigned integer in float3 konvertiert, sodass sowohl sehr nahe als auch sehr ferne Objekte an der korrekten Position dargestellt werden. Die Genauigkeit soll in der Nähe bis zu 1/256 Meter (rund 4 mm) betragen (wichtig für die Bewegung von Raumschiffen, vor allem, wenn diese sich sehr nahe kommen), während entfernte Objekte (Sterne) mehrere Lichtjahre entfernt sein können.

Den Abstand zum Betrachter könnte man vorher auf der CPU ausrechnen, dann müsste man das aber jeden Frame machen und die Daten an die GPU übertragen, was bei Sternen mit fester Position etwas sinnlos ist. Also bleibt wirklich nur diese umständliche Rechnung und Konvertierung, die ich derzeit ausführe. Für Sterne könnte man vielleicht die unteren 16 Bit weglassen, die dürften eh weggeschnitten werden bei der Addition, aber ich will das mal lieber nicht ausprobieren, da es jetzt funktioniert und die Performance auch in Ordnung ist.
Cube Universe
Entdecke fremde Welten auf deiner epischen Reise durchs Universum.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Magogan« (15.10.2015, 07:31)


637

15.10.2015, 15:24

Naja, was man auf jeden Fall machen könnte (und sollte), wäre Zwischenvariablen und Funktionen einzufügen. Derartiges bekommt der Compiler wunderbar wegoptimiert, zur sicherheit kann man sich ja auch nochmal den Assembly-Output anschauen um sicher zu stellen, dass wirklich der selbe Code generiert wird. Denn so wie es da steht ist es halt write-only Code, und sowas macht man einfach nicht.
Lieber dumm fragen, als dumm bleiben!

638

16.10.2015, 09:16

Ist ja eh nur der Shader, da ist mir das - ehrlich gesagt - egal.

Ach ja, noch ein Fail:

C-/C++-Quelltext

1
2
double CurrentTimeDeceleration = CurrentCourse->DecelerationTime - TimeToEnd;
Progress += (CurrentCourse->EndVelocity + 0.5*MaxAcceleration*CurrentTimeDeceleration)*CurrentTimeDeceleration;

MaxAcceleration ist übrigens positiv...
Cube Universe
Entdecke fremde Welten auf deiner epischen Reise durchs Universum.

639

20.10.2015, 11:50

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
XCCERROR Sample_SetCommandWord9808
(
                               XCCHANDLE dev,
                               bool itr,                        // Not relevant
                               bool gcap,                       // < Low gain mode
                               bool multiplereadouts,           // Not relevant \/
                               bool nondestructive,             // 
                               bool xinv,
                               bool yinv,
                               bool linerepeat,
                               bool refout,
                               bool reset,
                               bool skim,
                               int power,                           // Just use the highest values for these, range: 0 - 3
                               int current,                         // 0 = 73uA, ..., 3 = 93uA,... , 7 = 147uA
                               int bias,                            // 0 = 11nA, ..., 4 = 100 nA, ..., 7 = 167 nA
                               int bandwidth,                       // range: 0-1-2-3
                               int outputfactor,                    // Number of sensor outputs to use (1, 2 or 4)
                               const unsigned short CameraID,
                               bool hardwarePixelCorrection
)


Man beachte die Dokumentation von current und bias... (und ja, weitere Dokumentation dazu gibt es nicht.)
Lieber dumm fragen, als dumm bleiben!

Superwayne

Treue Seele

Beiträge: 242

Beruf: Student & App Entwickler (Xamarin)

  • Private Nachricht senden

640

20.10.2015, 12:11

C#-Quelltext

1
List<String> newList = new List<String>(perfectListOfAllNames.Distinct());


Die Kombination aus Bezeichner und Methodenaufruf ist nicht wirklich 'WTF', aber hat doch für einen kleinen Lacher gesorgt.

Werbeanzeige