Om du får det senaste Directx 10 Geometry Shader-felet, är den här handledningen här för att hjälpa dig.
Godkänd: Fortect
Geometry Shader är det senaste tillägget till DX10 API:er som ger programmerare möjligheten att skapa i helt ny geometri och störa befintlig geometri med hjälp av bilddesignhårdvara, vilket möjliggör mer komplexa effekter som explosioner, naturtrogen tillväxt, nedbrytning (nytt tillägg). köpte resultat här :-)), etc. utan att starta om det välkända nätet.
Vad krävs geometriskuggningssteg i DirectX?
Steget Geometry Shader (GS) exekverar fullständigt den bifogade huvudskuggningskoden med de hörn som används som information för att tillhandahålla vertexgenereringsförmågan som nämns inom bara utdatarollen.
Den här handledningen täcker alla grunderna för att använda geometriskuggningsutrymmet som finns att köpa i DX10+. Geometrisk nivåDen anses vara mycket användbar för att rendera sprites, skyltar och partikelarrangemang. Detta är den första sidan i den tredelade serien som kan fokusera på skyggning av skyltgeometri och som en följd av detta blockeringssystem.
När som ett sätt att använda SV _ rendertargetarrayindex i geometri?
Genomsökningen av renderingsmålmatrisen. Gäller hur utdata från en geometriskuggare och anger en ny samlarskiva av renderingsmålet på den burken som pixelskuggningen ritar det primitiva. SV_RenderTargetArrayIndex måste vanligtvis endast vara giltigt när renderingsmålet kommer att betraktas som en arrayresurs.
Saken med geometriskuggning introducerades i DX10, och folk trodde från början att det skulle vara användbart för tessellationsfunktioner (vilket borde vara sant), men mer användbart för att komma igång med partikelsystem och sprite-rendering. Geometristeget är mellan vertex i kombination i pixelskuggningsstegen, och dess huvudsakliga genomlopp är att skapa nya primitiver bort från dina barn.
Hur återupplivar jag Fel 193?
Sammanfattningsvis matas hörnen till vertexshadern i en vertexbelastning lagrad i GPU:n. Ett dra och sätt-anrop som görs i API:et skickar valfri kategori av vertexbuffert till pipelinen. Varje vertex går först till en vertex shader, där dessa killar transformeras efter behov, och valpens vertexdata modifieras (efter behov). Efter att dessa hörn har bearbetats och returnerats av denna vertex shader, som de kombineras till primitiver i ofta den stegprimitiva konfigurationen av deras API. Den typ av bas som ursprungligen skapades från hörn som korsar toppen med avseende på ett hinder beror på den specificerade topologin som är kopplad till det primitiva (punkter, linjer och trianglar). på de inre pixlarna) innan de når sin pixelskuggningsnivå för att inte tala om ritas slutligen på skärmen.
Geometric Shader (GS) är ett mycket okej extra shader-lager som kombinerar vertex shader med primitiver för monteringslager, eller bara extra pixel shader-nivåer mellan hörn (i en högnivåvy ). primitiver som lämnar vertex shader går in i medeltidens byggfas, varefter de går till en bestämd specifik skärmvisningsfas (Figur 1a). När GS är närvarande skickas hörn initialt ut från vertex till shader GS innan primitiv montering detaljeras. GS accepterar en helt ny primitiv som port, en helt ny; representerar antalet inom hörn som GS tar emot från en vertex shader, avslöjad av en uppsättning primitiv topologi. Om vår topologi är definierad på punkter, tar GS definitivt bara ett hörn, vid samma dagstid kommer inTime GS att acceptera 2 eller 10 hörn för linjer och trianglar. GS använder sedan huvudpunktsdata som är associerade med ingångsprimitiven för att hjälpa dig att skapa nya, vars hörn exakt bildar de faktiska nya primitiva. Dessa nyuppfunna hörn är designade av GS som en ström för hörn och skickas som en primitiv i formstadiet innan de slutligen passerar genom röret (Figur 1b). Sålunda tar GS hela primitiva ser den ingången och genererar även hela primitiver som en funktionell vertexlista.
Nu verkar det inte särskilt intressant att flytta primitiver till GS främst för utdata, men eftersom GS kan mata ut många primitiver från en enda grundläggande blir det mycket mer användbart. Detta innebär att många vi dessutom kan placera en triangel i de flesta av GS för att få 4 trianglar (vilket är en bas för att skapa en grundläggande tessellation med en annan definitivt geometriskuggning, se figur 2). I GS skulle det inte finnas någon korrelation mellan involveringsprimitiven och utgångsprimitiven, så du har förmågan att bara sätta strängen bredvid resultattrianglarna. I denna p I handledningen brukar individer utforska användningen av For gs när de kopierar sprites, eftersom detta är ett enkelt exempel för att förmedla fördelarna med GS. En sprite är en helt ny tvådimensionell texturerad quad som visas i vårt eget nuvarande skärmutrymme (sömlöst klipputrymme) så att programvaran alltid är anpassad till pekskärmen. Sprites används ofta när du renderar spel trots text, markörer och ett grafiskt användargränssnitt.
Godkänd: Fortect
Fortect är världens mest populära och effektiva PC-reparationsverktyg. Det litar på miljontals människor för att hålla sina system igång snabbt, smidigt och felfritt. Med sitt enkla användargränssnitt och kraftfulla skanningsmotor hittar och fixar Fortect snabbt ett brett utbud av Windows-problem – från systeminstabilitet och säkerhetsproblem till minneshantering och prestandaflaskhalsar.
Så låt oss prata lite om sprites innan vi går vidare till geometriskuggningen. Nämnd eftersom sprite bara är en texturerad quad. Sprites på grund av olika storlekar och positioner styrs vanligtvis helt enkelt av specifika uppsättningar värden, ankarpunktsposition och dessutom spritedimensioner. Idén med ett ankare är egentligen en punkt på en sprite, som i shut används för att placera den, och en kvalificerad storlek hänvisar till spritens storlek och storlek. Den vanligaste ankarbetydelsen för sprites är det övre vänstra hörnet, till exempel nästan som en fyrkant (se figur 3a). Så för sina egna personliga mest grundläggande spwrists behöver vi människor två blad av värden, och rendering sprites finns i pekskärmsutrymmet, dessa vyer är tvådimensionella (x, y) tillsammans med körda i pixlar. Till exempel, om vi föredrar en banner med en storlek på 300 × 100 pixlar i mitten av vårt skapande på 1024 × 768. Skruvpunkten är vanligtvis 412 pixlar, vid 0 pixlar bredare och höjd blir den 200 pixlar eller 100 pixlar . De flesta sprites skapar vanligtvis ytterligare lägenheter som opacitetsmärket i a till z-ordning (pseudodjupvärde). På detta sätt kan spritens grundläggande struktur definieras, som visas i figur 3b. Nu bör distinkta noteras eftersom, som du minns, jag sa att sprites är placerade för att använda pixelvärden, de var faktiskt placerade i onlinevideoutrymme), men vi ska prata om det senare. För nu, tänk på att de slutliga harmoniserna som kommer att skickas till pipelinen slutar behövas för konsekvent klipputrymme. Så
Hur fixar jag Fel 193 %1 är inte ett giltigt Win32-program?
Okej, låt oss motivera nu att ta med den här strukturen igen. Vanligtvis kommer vi förmodligen att behöva två trianglar för att göra en fyrhörning a, använd Genom att skapa triangulär slag för att minska det faktiska antalet hörn som är lämpligt. Återigen betyder detta att vi måste göra våra egna fjärde hörn för varje sprite. Varje vertex producerade positionen för 2D-klippningsutrymmet; till. De viktigaste texturkoordinaterna och sprite-uthyrningar som opacitet och z-order. Om man antar att flytande momentnummer används, kommer varje vertex nästan i sanning att använda 24 byte minne, och varje sprite kommer att kräva 96 byte minne. Så det genomsnittliga GUI kommer att ha många sprites, låt oss ändå säga att det genomsnittliga GUI använder $ 100 eller så sprites. Detta innebär att varje ram i GUI kan hantera 9,375 KB för att försöka kunna skicka GPU från valet flera gånger. Dataöverföringen på PCIE-bussen är ganska långsam, så en långsammare del av data som överförs av ramverket kommer att förbättra prestandan. Naturligtvis respekteras inte 9KB, men tänk på det faktum att experter hävdar att majoriteten av systempartiklar vanligtvis renderas med symboler (som förmodligen är som sprites, där de bara är ojämna quads) och quads. “En partikelutsändare kan vara ansvarig för detta. några få kan vara en lastpartiklar. Under sådana omständigheter ökar lagringskostnaderna. Dessutom kostar det mycket ekonomi att skapa läkemedelshörn i ramen på grund av varje sprite på processorn.
Nu som experter hävdar att vi vet att vi kan odla några heta primitiver från de som vanligtvis finns i GS, jag kan faktiskt använda detta till din fördel och formulera rektangeln inom GS-gränsen. Nu, familj och vänner, skulle vi vilja skicka vår sprite-layout direkt till GS och rendera de dubbla trianglarna. Tja, du vet de här sakerna, vi kan det! Vertices måste vara strukturer, så vi kommer att designa en vertex för varje sprite-struktur som kommer att fyllas med all nödvändig sprite-data. Vilken användning av dataregel ska vi skicka till någon GS? Tja, främst ryggradsspetsen, dimensioner och spritens alla hus. Texturkoordinater mGS kan sluta beräknas som kommer att publiceras senare. Våra sprites bör nu vara 24 byte (75 % underskott !!).
Men hur får du tillbaka dessa hörn i riktningen så att GS är bäst på att hämta detaljer från en enda sprite? Så vilken primitiv efter jorden använder bara en vertex? Punkt. Om våra medarbetare skapar en vertexlast som innehåller spritedata skicka den till pipelinen som en problemrepresentant
Snabba upp din dators prestanda nu med denna enkla nedladdning.