Model TCP/IP to warstwowy model struktury protokołów komunikacyjnych w sieciach komputerowych, opracowany razem z odpowiadającym mu zestawem protokołów w latach 70. w agencji DARPA (Stany Zjednoczone); sam model jak i zestaw protokołów TCP/IP został zaprojektowany w otwartej architekturze i nie jest ograniczony żadnymi patentami ani prawami autorskimi.
W modelu TCP/IP wyróżnia się 4 warstwy:
Każda z warstw jest niezależna od pozostałych. Przykładowo, na poziomie warstwy aplikacji po drugiej stronie łącza widoczna jest bezpośrednio aplikacja, z którą zostało nawiązane połączenie, niezależnie od trasy pokonywanej przez pakiety w warstwie internetowej. Z kolei z perspektywy warstwy internetowej po przeciwnej stronie łącza znajduje się następne urządzenie na trasie posiadające adres IP, niezależnie od fizycznej struktury sieci i przykładowo liczby przełączników, jakie musi pokonać ramka przenosząca pakiet IP. Dzięki temu można łatwo wykorzystać w sieci różne technologie i z punktu widzenia wyższych warstw nie ma na przykład znaczenia, czy fizycznie transmisja odbywa się kablem w standardzie Ethernet, czy bezprzewodowo w jednym ze standardów Wi-Fi – dowolny rodzaj danych da się przesłać dowolnym łączem.
Metoda śledzenia promieni (ang. ray tracing) służy do generowania fotorealistycznych scen 3D z odwzorowaniem efektów oświetlenia (cienie, odbicia światła od obiektów). W metodzie śledzenia promieni analizowane są tylko promienie docierające do obserwatora, w kierunku odwrotnym do padania światła – od pozycji obserwatora, przecinając rzutnię (ekran), wgłąb sceny. Dzięki temu metoda śledzenia promieni pozwala zaoszczędzić wiele obliczeń w porównaniu z metodą próbkowania przestrzeni, w której promienie analizowane są od źródeł światła w kierunku sceny i wiele z nich jest rozpraszana po odbiciu od obiektów na scenie, w ogóle nie trafiając w ekran.
Zasada działania algorytmu śledzenia promieni jest następująca:
Podstawową wadą metody śledzenia promieni jest jej (wciąż) duża złożoność obliczeniowa, znacznie rosnąca wraz z liczbą obiektów na scenie lub źródeł światła – natomiast dzięki niezależnym obliczeniom dla każdego piksela, stosunkowo łatwo można ją zrównoleglić np. dzięki możliwościom współczesnych kart graficznych.
Model Phonga pozwala wyliczyć oświetlenie lokalne jako sumę trzech rodzajów światła:
Dla każdego typu sceny (pochmurny środek dnia, bezchmurny wieczór, ksieżycowa noc, bezksiężycowa noc, itd.) określa się różne wartości współczynników dla tych rodzajów światła.
Przy okazji: model Phonga ładnie tłumaczy dlaczego pochmurna pogoda jest najlepsza do fotografowania na tekstury modeli 3D, prawie nie ma wtedy cieni i refleksów ;-)
Układy PLD, CPLD oraz FPGA należą do specjalizowanych scalonych układów cyfrowych (ASIC) konfigurowanych przez użytkownika – w odróżnieniu od typowych układów ASIC konfigurowanych maską przez producenta na zamówienie użytkownika. Układy programowalne mogą być dzięki temu produkowane i sprzedawane masowo, co w porównaniu z układami konfigurowanymi maską pozwala znacząco ograniczyć koszty stałe projektu użytkownika (właściwie każdy może taki układ kupić). Wyższy jest natomiast ich jednostkowy koszt i przy seriach rzędu kilkudziesięciu tysięcy urządzeń stają się przez to mniej opłacalne od układów konfigurowanych maską.
W porównaniu z układami ogólnego przeznaczenia, przystosowane do określonych zastosowań układy ASIC cechują się wyższą wydajnością i efektywnością, na przykład umożliwiając zrównoleglenie na etapie projektu operacji, które przez mikroprocesor musiałyby być wykonywane sekwencyjnie. Układy ASIC stosuje się często do sterowania urządzeniami i szybkiego przetwarzania dużych ilości danych – na przykład w kryptografii, w urządzeniach sieciowych (przełączniki), czy też przy cyfrowym przetwarzaniu sygnałów. Układów programowalnych używa się zwykle do prototypowania układów cyfrowych i produkcyjnie dla małych serii (lub większych serii, które szybko powinny trafić na rynek).
Najprostszym i najstarszym rodzajem omawianych układów są układy PLD (Programmable Logic Device). Składają się one z 2 matryc bramek logicznych, AND-OR, sprzętowo najczęściej realizowanych jako NAND-NAND (prawa de Morgana) i występują w trzech odmianach:
Układy PLD składają się z małej liczby bramek logicznych (typowo posiadają 8-10 wejść i wyjść oraz kilkadziesiąt bramek), a zwiększanie rozmiarów matryc bardzo szybko zaczyna powodować powolne działanie. Dlatego jako ich rozwinięcie opracowano układy CPLD (Complex PLD), składające się z wielu układów PLD połączonych szybką globalną matrycą połączeń – takie układy mogą posiadać już kilka tysięcy bramek logicznych. W układach PLD i CPLD jako pamięć konfiguracji wykorzystuje się różne rodzaje pamięci nieulotnej, we współczesnych konstrukcjach najczęściej EEPROM (elektrycznie programowalną i kasowalną).
Układy FPGA (Field Programmable Gate Array) to najbardziej skomplikowany rodzaj układów programowalnych o największych możliwościach, pierwotnie opracowany przez firmę Xilinx, ich pojemności dochodzą do kilkuset tysięcy bramek logicznych. Podstawową różnicą w stosunku do CPLD jest sposób realizacji funkcji logicznych – w FPGA zamiast klasycznych bramek logicznych wykorzystuje się generatory LUT (LookUp Table), tablicujące tabele prawdy funkcji. Układy FPGA składają się z wielu połączonych globalną matrycą bloków CLB (Configurable Logic Block), zawierających LUT, przerzutniki i multipleksery. Jako pamięć konfiguracji wykorzystywana jest pamięć statyczna RAM (SRAM) – ponieważ jest to pamięć ulotna, często do układów FPGA dołącza się oddzielne układy pamięci EEPROM, z których FPGA po podłączeniu zasilania automatycznie może odczytać konfigurację połączeń. Jest to kolejna ważna różnica w porównaniu z CPLD.
Do konfigurowania współczesnych układów programowalnych wykorzystuje się języki opisu sprzętu (HDL – Hardware Description Language), 2 najczęściej stosowane to VHDL i Verilog. Za ich pomocą opisuje się zachowanie projektowanego układu w pewnej określonej konwencji (zwanej szablonem), którą narzędzia syntezy tworzone przez producentów układów są w stanie przetłumaczyć na konfigurację konkretnego układu FPGA lub CPLD.
Nośniki optyczne służą do przechowywania informacji w postaci, którą odczytuje się za pomocą wiązki światła (promienia lasera). Pierwszym optycznym nośnikiem danych były płyty LaserDisc o średnicy około 30 cm, opracowane w latach 70. w Stanach Zjednoczonych do zapisu wideo (obraz w formacie analogowym, dźwięk w formacie analogowym lub cyfrowym).
Współcześnie jako optyczne nośniki danych wykorzystuje się płyty o średnicy 12 cm, przechowujące informacje w postaci cyfrowej:
Płyty te mogą być zapisywane fabrycznie (jak w przypadku płyt muzycznych CD-ROM), ale mogą też być dostosowane do jednokrotnego zapisu (np. DVD-R) lub wielokrotnego zapisu i kasowania (np. CD-RW, BD-RE) przez użytkownika za pomocą nagrywarki – szczególnie duże znaczenie miały tutaj płyty CD-RW przed upowszechnieniem się nośników pamięci USB.
Dane cyfrowe są zapisywane na płytach w spiralnej ścieżce od środka nośnika w stronę krawędzi w postaci fragmentów powierzchni odbijających (land) lub pochłaniających (pit) wiązkę światła lasera. Wykorzystywane jest kodowanie NRZI – zmiana powierzchni (pitu w land lub landu w pit) oznacza jedynkę logiczną w odczytywanym sygnale. Odbita od płyty wiązka jest wykorzystywana równocześnie do odczytu danych oraz do utrzymywania lasera w ścieżce i ogniskowania światła na płycie (odległość między płytą a laserem może się zmieniać z powodu tzw. bicia płyty, wynikającego z jej nierówności).