Haben Sie Probleme Mit Dem DirectX-Spotlight-Beispiel?

Computer jetzt reparieren.

  • Schritt 1: ASR Pro herunterladen und installieren
  • Schritt 2: Öffnen Sie das Programm und klicken Sie auf „PC scannen“
  • Schritt 3: Klicken Sie auf "Jetzt reparieren", um den Reparaturvorgang zu starten
  • Beschleunigen Sie Ihren Computer noch heute mit diesem einfachen und kostenlosen Download.

    Ich hoffe, dieser Blogpost hilft Ihnen, unabhängig davon, ob Sie das DirectX-Spotlight-Beispiel entdeckt haben.

    ##Einführung##In diesem Tutorial werden wir wahrscheinlich lernen, wie man einen Höhepunkt a erstellt. Wir verwenden diesen Projektor, um die Kamera zu gewinnen. Dieses Tutorial ist dem Webcam-Tutorial von Ego nachempfunden.##SpotLight-Faktoren##Scheinwerfer zeigen lediglich Einheiten an, aber mit einer Bewegung. Lassen Sie uns aus diesem Grund unsere Minimalpunktimplementierung direkt erreichen, indem wir nur eine Richtung und einen einzelnen Wert einfügen, der die Größe des Kegels jedes Projektors darstellt.##Richtung##Dies wird durch einen schönen 3D-Vektor dargestellt, der in unserem Code auch dir genannt wird, wobei der erste Preis die Achse der Zurück-Schaltfläche ist, derzeit der zweite Wert die Ymca-Achse und der dritte Wert im Allgemeinen die Unces-Achse. Wollen##Kegel##Der Kegel wird in unserer Strategie von einem treibenden Wert namens Kegel eingesetzt. Diese Bewertung ist ein spezifisches Maß für unsere hervorgehobene Gleichung. Indem wir dies aktualisieren, ändern wir den Bereich, der mit dem Kegel unseres Scheinwerfers verbunden ist. Eine weniger kostspielige Rate entspricht einer größeren Spule und ein höherer Wert entspricht einem kleineren Konus.##SpotLight-Gleichung##Denken Sie daran, dass Glanzlichter durch natürliche Punktlichtquellen erzeugt werden, sodass wir nur eine zusätzliche Gleichung verwenden müssen, die Licht aussendet und in einer bestimmten Richtung durch die Spulennagler tragbar ist, anstatt in Richtungen wie eine neue Punktlichtquelle.##Lichtkegel definieren##Hier ist mit ziemlicher Sicherheit die einzige neue Situation, die wir unserer Markierungsdatei hinzufügen können. Dadurch entsteht eine Spule, durch die das eigentliche Licht scheint.Zuerst brauchen wir Zeit, um die Position unseres Platzes zwischen den Lichtquellen und die gesamte spezifische Lichtrichtung in einem Pixel zu finden. Wir verwenden den Produktbereich Transport, um ihn zu finden.Dann sollte ich sagen, dass wir die Chunk-Funktion verwenden, um sicherzustellen, dass unsere Mitarbeiter niemals ein Skalarprodukt weniger als 0,0f erhalten. Hinter dieser Position aller Scheinwerfer liegt ein Verbrauch von weniger als 0,0f, daher das helle und lebendige Licht nicht nur im direkten Scheinwerfer, sondern auch in einem Scheinwerfer.Schließlich verwenden wir Pony mit einer leichteren Kegelwertfunktion sowie sogar als Exponent. Dies vervollständigt jedes System, das unseren Lichtkegel definiert.finalColor *= pow(max(dot(-lightToPixelVec, light.dir), 0.0f), light.cone);##Leichte Struktur##Wie jeder sehen kann, hat unser Unternehmen die vereinfachte Struktur geändert und tatsächlich drei neue Mitglieder hinzugefügt. Eine für den jeweiligen Lenker und eine für diesen Wechselkonus. strukturierendes Licht Glänzend() ZeroMemory(this,sizeof(Light)); XMFLOAT3pos; schwimmende Zone; XMFLOAT3-Verzeichnis; konischer Schwimmer; XMFLOAT3at; Schwimmer 2; XMFLOAT4-Umgebung; XMFLOAT4-Übersetzungen; ;##Beschreibung der Hauptfeuerzeugquelle##Hier beschreiben wir unsere Süße. Wir haben seine Position auf 0,1,0 gesetzt (kein großes Geschäft, da wir diese Art später normalerweise aktualisieren), seine Spanne auf 1000,0f (also genügend Faser zu erwerben, um das Check-Symptom nicht irgendwie zu „beschneiden“), seinen att0-Abfall auf 7. 4f (damit dieses Licht nicht zu hell wird, wenn es nahe an der Kamera ist) und att1 zum Zeitpunkt 0,02f, damit wir eine zuverlässige Menge an Dämpfung finden können, dann haben wir den Kegel auf die besten Kosten bei 20,0f definiert.Denken Sie daran, dass alle von ihnen möglicherweise für Sie modifiziert werden können, um sie an Ihre . Sie werden schnell sehen, wie verhandlungssicher Ihre eigene Beleuchtung mit diesen Gründen ausgestattet werden kann. Spielen Sie mit ihnen, um zu verstehen, wie sie funktionieren.light.pos = XMFLOAT3 (0.0f, 1.0f, 0.0f);light.dir = XMFLOAT3 (0.0f, 0.0f, 1.0f);helle Stadt = 1000.0f;Lichtkegel 20.0f;light.att = XMFLOAT3 (0.4f, 0.02f, 0.0f);Umgebungslicht = XMFLOAT4 (0,2f, 0,2f, 0,2f, 1,0f);light.diffused = XMFLOAT4(1.0f, 1.0f, 1.0f, 1.0f);##Position bestimmter Lichter aktualisieren##Da wir den Scheinwerfer als unsere neue Taschenlampe verwenden, möchten wir die Richtungsspule in die Richtung richten, in die das beste Modell zeigt, mit anderen Worten, aus der Richtung des Zielvektors unserer Point-and-Shoot-Digitalkamera . Wir wollen auch oft, dass die Blitzlichtszene diesen Winkel unserer Kamera einnimmt, dafür werden wir den mit unserer Kamera vergleichbaren Positionsvektor verwenden. Dies wird in jeder Szene aktualisiert, also sollten wir diesen Code in die spezifische updateScene-Funktion einfügen.light.pos.x ist gleich XMVectorGetX(camPosition);light.pos.y = XMVectorGetY (camPosition);light.pos.z impliziert XMVectorGetZ (camPosition);light.dir.x bedeutet XMVectorGetX(camTarget) – light.pos.x;light.dir.y entspricht XMVectorGetY(camTarget) – light.pos.y;light.dir.z = XMVectorGetZ(camTarget) – light.pos.z;##Effektdatei##Wir stellen unsere neue HLSL-Chat-Struktur vor, jetzt mit einer Shaping-Dauer und einem Float-Wert für eine neue Stromverjüngung. Licht bauen float3pos; Flugzone; Float3-Verzeichnis; konischer Schwimmer; float3att; Float4-Umgebung; Float4 abführen; ;Hier ist buchstäblich unsere neue PS-Szene, die wirklich im Mittelpunkt steht. Wir haben oben ausführlich erklärt, was es tut. Wenn Sie also glauben, dass Sie dies nicht herausgefunden haben, können Sie weiterlesen. Denken Sie oben daran und überprüfen Sie es im Internet direkt in den Kommentaren. Der effektivste neue Vorteil des Pixel-Shaders kann aus dem neuen Richtungsszenario unten kommen. float4 PS (Eingabe VS_OUTPUT): SV_TARGET { input.normal = normalisieren (input.normal); float4 dispel = ObjTexture.Sample (ObjSamplerState, input.TexCoord); final color float3 ist gleich float3(0.0f, 0.0f, 0.0f); // Erstellen Sie eine Position zwischen der Position des verwaltbaren Vektors und der Position des Pixels float3 lightToPixelVec bedeutet light.pos – input.worldPos; // Finden Sie den Kilometerstand anhand der Lichtposition und der Pixelposition float d impliziert Länge (lightToPixelVec); // Normales Licht hinzufügen float3 finalAmbient entspricht diffusem * light.ambient; // Wenn das Pixel zu weit entfernt ist, gib das Pixel mit farbigem Umgebungslicht zurück falls ( d > light.range ) Rückgabe Float4 (finalAmbient, diffuse.a); // Konvertiere lightToPixelVec in einen beschreibenden Einheitsspeicherplatzvektor //Richtung r von Position Lampe

    Beschleunigen Sie Ihren Computer noch heute mit diesem einfachen und kostenlosen Download.