Masz Problemy Z Przykładem DirectX Spotlight?

Napraw teraz swój komputer.

  • Krok 1: Pobierz i zainstaluj ASR Pro
  • Krok 2: Otwórz program i kliknij „Skanuj komputer”
  • Krok 3: Kliknij „Napraw teraz”, aby rozpocząć proces naprawy
  • Przyspiesz swój komputer już dziś dzięki temu łatwemu i bezpłatnemu pobieraniu.

    Naprawdę mam nadzieję, że ten wpis na blogu pomoże ludziom, jeśli zauważyłeś przykład DirectX Spotlight.

    ##Wprowadzenie##W tym samouczku dowiemy się, jak stworzyć kompletne wyróżnienie. Używamy projektora przedmiotów do aparatu. Ten samouczek będzie oparty na samouczku kamery internetowej ego.##Czynniki światła punktowego##Reflektory po prostu wyświetlają jednostki, ale mają główny kierunek. Z tego powodu stwórzmy naszą minimalną implementację punktową, dodając tylko kierunek i jedną konkretną pojedynczą wartość reprezentującą rozmiar większości stożka naszego projektora.##Kierunek##Jest to reprezentowane przez wektor 3D, znany również medycznie jako dir w naszym kodzie, gdzie pierwsza wartość to oś wstecznej opcji, druga wartość to oś ymca, a trzecia wartość będzie osią unces. Chcieć##Stożek##Stożek musi być reprezentowany w naszej strategii przez praktycznie każdą wędrującą wartość zwaną stożkiem. Ta wartość jest konkretną miarą naszego wyróżnionego równania. Aktualizując takie zmieniamy obszar związany ze stożkiem naszego reflektora. Niższa wartość odpowiada znacznie większemu stożkowi, a wyższa wartość odpowiada mniejszemu stożkowi.##Równanie reflektora ##Pamiętaj, że reflektory są tworzone przez bardzo punktowe źródła światła, więc wystarczy dodać dodatkowe równanie, które emituje światło w określonym kierunku przez tę cewkę, a nie w kierunkach przypominających punktowe źródło światła.##Zdefiniuj łatwy stożek##Oto jedyna nowa sytuacja, którą nasza grupa doda do zawartości naszego znacznika. To tworzy cewkę, przez którą czasami będzie świecić nasze światło.Najpierw staramy się znaleźć położenie każdego kierunku między źródłami światła o określonym kierunku światła w, powiedziałbym, pikselu. Używamy podziału produktu na transport, aby go znaleźć.Następnie powiedziałbym, że używamy funkcji max, aby zapewnić, że nasi pracownicy nie otrzymają iloczynu skalarnego o wartości mniejszej niż 0.0f. Za tą pozycją z reflektorem będzie bardzo punkt mniejszy niż 0.0f, stąd widać jasne światło nie tylko w konkretnym pierwszym reflektorze, ale także w reflektorze osoby.Wreszcie, używamy grzywki z funkcją wartości ogromnego stożka światła tak ostrożnie, jak wykładnik. To kończy dobre równanie, które definiuje stożek naszej lampy podłogowej.finalColor *= pow(max(dot(-lightToPixelVec, light.dir), 0.0f), light.cone);##Lekka struktura##Jak większość ludzi widzi, wydaje się, że nasza firma zmieniła uproszczoną strukturę, w rzeczywistości przyczyniając się do powstania dwóch nowych członków. Jeden na nową kierownicę, a drugi na ten zróżnicowany stożek. konstruowanie światła Lśniący() ZeroMemory(this,sizeof(Light)); XMFLOAT3poz; strefa pływania; katalog XMFLOAT3; pływak stożkowy; XMFLOAT3at; wędrówka 2; środowisko XMFLOAT4; tłumaczenia XMFLOAT4; ;##Opis głównego delikatnego źródła##Tutaj opisujemy naszą słodycz. Ustawiamy jego pozycję na 0,1,0 (nie ma wielkiego interesu, ponieważ zwykle aktualizujemy go później), jego zakres, gdy trzeba, to 1000.0f (więc nie “obcinamy” wskaźnika determinacji), jego att0 zanika bezpośrednio do 0,4f (żeby to światło nie było zbyt jasne, gdy jest skierowane do kamery) i att1 dzięki uprzejmości -0,02f, abyśmy mogli znaleźć własne stałe tłumienie, następnie nasza firma ustawiła stożek na ostateczną wartość na 20,0 F.Pamiętaj, kto wydaje się, że każdy z nich może potencjalnie często być edytowany, aby odpowiadał potrzebom danej osoby. Z tych powodów szybko zobaczysz informacje o tym, jak elastyczne może być Twoje własne oświetlenie. Graj z ludźmi, aby zrozumieć, jak działają.light.pos oznacza XMFLOAT3(0.0f, 1.0f, 0.0f);light.dir = XMFLOAT3(0.0f, 0.0f, 1.0f);jasny obszar = 1000,0f;stożek.świetlny 20.0f;light.att jest równe XMFLOAT3(0.4f, 0.02f, 0.0f);światło otoczenia = XMFLOAT4(0.2f, 0.2f, 0.2f, 1.0f);światło.rozproszone = XMFLOAT4(1.0f, 1.0f, 1.0f, 1.0f);##Aktualizuj pozycję często świateł ##Ponieważ zamierzamy wdrożyć ten reflektor jako nasze nowe światło, chcemy skierować stożek trasy w kierunku, w którym wskazuje największa kamera, innymi słowy, w kierunku wektora celowania tej użytecznej kamery typu „wyceluj i zrób zdjęcie”. Motywujemy również scenę z latarki, aby zajęła tę sytuację w pozycji naszego aparatu, w szczególności użyjemy wektora postawy związanego z naszym aparatem. To z pewnością będzie aktualizowane w każdej scenie, dlatego umieścimy ten kod w tej konkretnej funkcji updateScene.light.pos.x równa się XMVectorGetX(camPosition);light.pos.y = XMVectorGetY(camPosition);light.pos.z = XMVectorGetZ(camPosition);light.dir.x oznacza XMVectorGetX(camTarget) light.pos.x;light.dir.y = XMVectorGetY(camTarget) – light.pos.y;light.dir.z = XMVectorGetZ(camTarget) – light.pos.z;##Plik efektu##Przedstawiamy naszą nową strukturę szprych HLSL, teraz z użyciem kursu i wartości pływaka przeznaczonej dla bieżącego stożka. konstruowanie światła pływak3poz; strefa pływania; katalog float3; pływak stożkowy; float3att; środowisko Float4; rozproszony pływak4; ;Tutaj od zawsze nasza nowa scena PS jest w centrum uwagi. Wymieniliśmy, co robi powyżej, aby jeśli uważasz, że tego nie ustaliłeś, możesz to sprawdzić. Sprawdź to powyżej i sprawdź grę bezpośrednio w komentarzach. Jedyną nową korzyścią zwykle pixel shadera jest nowe równanie administracji na dole. float4 PS (wejście VS_OUTPUT): SV_TARGET { input.normal = normalize(input.normal); float4 dispel równa się ObjTexture.Sample(ObjSamplerState, input.TexCoord); końcowe cieniowanie float3 = float3(0.0f, 0.0f, 0.0f); // Utwórz pozycję między pozycją trywialnego wektora a pozycją piksela float3 lightToPixelVec implikuje light.pos – input.worldPos; // Znajdź odległość za pomocą pozycji światła, czyli pozycji piksela float f równa się długości (lightToPixelVec); // Dodaj światło otoczenia float3 finalAmbient równa się diffuse * light.ambient; // Jeśli piksel jest za daleko, zwróć piksel z kolorowym światłem otoczenia tak długo, jak ( d > light.range ) Return Float4 (finalAmbient, diffuse.a); // Konwertuj lightToPixelVec na opisowy wektor przestrzeni elementu //kierunek y od pozycji lampa

    Przyspiesz swój komputer już dziś dzięki temu łatwemu i bezpłatnemu pobieraniu.