Als je een Directx ten Geometry Shader-fout krijgt, is deze tutorial hier om je te helpen.
Goedgekeurd: Fortect
De Geometry Shader is typisch de nieuwste toevoeging aan de DX10 API’s waarmee programmeurs volledig geavanceerde geometrie kunnen creëren en bestaande geometrie kunnen verstoren met behulp van grafische ontwerpcomputers, waardoor complexere effecten zoals explosies, realistische groei, decompositie (nieuwe toevoeging) mogelijk zijn. effecten gekocht hier :-)), enz. zonder het hoofdraster opnieuw op te starten.
Wat er gebeurt op het geometrie-shader-stadium in DirectX?
De stap Geometry Shader (GS) voert de toegevoegde shader-toegangscode volledig uit met de hoekpunten die worden gebruikt als invoer om de in de productiviteitsrol genoemde mogelijkheid voor het genereren van hoekpunten te actualiseren.
Deze tutorial behandelt alle basisprincipes van het gebruik van de geometrie shader-ruimte die beschikbaar is in DX10 +. Geometrisch niveauHet wordt als uiterst nuttig beschouwd bij het renderen van sprites, billboards en deeltjessystemen. Dit zal waarschijnlijk de eerste pagina zijn in een driedelige serie die zich helaas zou kunnen richten op shaders en filtratiesystemen voor billboardgeometrie.
Wanneer kiezen voor SV _ rendertargetarrayindex In geometrie?
De index van elk van onze renderingdoelarrays. Is van toepassing op de uitvoer die betrokken is bij een geometrie-arcering en specificeert de collectorgolf-plak van het renderdoel waarop de belangrijkste pixel-arcering de primitieve tekent. SV_RenderTargetArrayIndex is meestal alleen geldig wanneer het renderdoel wordt beschouwd als 1 arraybron.
De geometrie-shader-stap werd aangeboden in DX10, en mensen dachten aanvankelijk dat het echt nuttig was voor tessellation-doeleinden (wat altijd waar zou moeten zijn), maar nuttiger voor gebruik met samengestelde systemen en sprite-weergave. De geometriestap kan tussen de vertex in combinatie met elk van onze pixel shader-stappen, en de belangrijkste praktijk is – creëer nieuwe primitieven weg van hen.
Hoe los ik dit op Fout 193?
Samenvattend: de hoekpunten worden naar de specifieke hoekpuntshader gestuurd in een hoekpuntbuffer die in de GPU wordt weergegeven. Een aanroep met slepen en neerzetten die in de API is besloten, stuurt elk type, inclusief hoekpuntbuffer, naar de pijplijn. Elk hoekpunt strekt zich eerst uit tot een hoekpuntshader, waar ze indien nodig worden gerevitaliseerd, en de hoekpuntgegevens van de hond worden vaak gewijzigd (indien nodig). Nadat de hoekpunten zijn afgehandeld en geretourneerd door deze hoekpuntshader, worden ze uiteindelijk gecombineerd tot primitieven in de stepprimitive-configuratie die naar hun API verwijzen. Het type primitief dat aanvankelijk wordt geproduceerd uit hoekpunten die de bovenkant van een struikelblok kruisen, hangt af van de gespecificeerde topologie van de basis (punten, lijnen en driehoeken). in pixels) voordat ze hun pixel shader-niveau kunnen bereiken en zeker op het scherm worden getekend.
De Geometric Shader (GS) is een zeer goede speciale shader-laag die vertex shader en assemblagegedeelte primitieven combineert, of gewoon extra pixel shader-lagen tussen vertices (in een weergave op hoog niveau ). primitieven die de vertex shader verlaten, gaan de middeleeuwse bouwcyclus in, waarna ze naar een specifieke projectorschermweergavefase gaan (Figuur 1a). Wanneer GS wordt geleverd, worden in eerste instantie hoekpunten verzonden vanaf hoekpunt op shader GS voordat de primitieve assemblage is voltooid. GS maakt een geheel nieuwe primitieve invoer mogelijk, een heel nieuwe; vertegenwoordigt het aantal hoekpunten dat uw GS ontvangt van een hoekpuntshader, bepaald maal een set primitieve topologie. Als persoonlijke topologie op punten is gedefinieerd, zal GS in de eerste plaats één hoekpunt nemen, tegelijkertijd accepteert GS inTime 2 of 3 hoekpunten voor bereiken en driehoeken. GS gebruikt vervolgens de vertex belangrijke informatie die is gekoppeld aan de invoerprimitieven om beginners te maken, waarvan de hoekpunten precies de meer primitieven vormen. Deze nieuw uitgevonden hoekpunten worden door een nieuwe GS gegenereerd als een stroom van hoekpunten en verwerkt als een primitief in de bouwfase voordat ze uiteindelijk door de pijplijn gaan (Figuur 1b). GS neemt dus de hele primitieve als invoer, terwijl hij ook hele primitieven genereert als een hoekpuntselectie.
Nu hoeft het niet erg interessant te lijken om primitieven primair naar GS te sturen voor uitvoer, maar aangezien GS veel primitieven kan voortbrengen uit een enkele primitief, wordt het veel nuttiger. Dit betekent dat we zeker nog een driehoek in de GS zullen plaatsen, zodat je 4 driehoeken kunt krijgen (wat je basis is om een basispatroon te creëren met een zeer zeker geometrische shader, zie figuur 2). In GS is er mogelijk geen correlatie tussen de invoerprimitief om nog maar te zwijgen van de uitvoerprimitief, dus u kunt gewoon besluiten om de string naast de uitvoerdriehoeken te plaatsen. In deze p. In de tutorial kijken we meestal rond met For gs bij het renderen van sprites, als een eenvoudig voorbeeld om de verbazingwekkende voordelen van GS te demonstreren. Een sprite is een tweedimensionale onderscheidende quad die wordt weergegeven in de huidige weergaveruimte (naadloze clipruimte), zodat de pc altijd is uitgelijnd met het scherm. Sprites worden waarschijnlijk vaak gebruikt bij het renderen van games als tekst, cursors, daarnaast een GUI.
Goedgekeurd: Fortect
Fortect is 's werelds meest populaire en effectieve pc-reparatietool. Miljoenen mensen vertrouwen erop dat hun systemen snel, soepel en foutloos blijven werken. Met zijn eenvoudige gebruikersinterface en krachtige scanengine kan Fortect snel een breed scala aan Windows-problemen vinden en oplossen - van systeeminstabiliteit en beveiligingsproblemen tot geheugenbeheer en prestatieproblemen.
Laten we het dus even hebben over sprites voordat we verder gaan met de geometrie-shader. Genoemd omdat elke sprite vaak gewoon een quad met textuur is. Sprites van verschillende groottes en posities worden meestal bepaald door specifieke posities van waarden, ankerpuntpositie en spritegroottes. Het idee van een anker is een sleutel op een sprite, die op zijn beurt wordt gekocht om het te positioneren, en een specifieke maat stuurt naar de grootte en grootte van die sprite. Het meest gebruikte ankerpunt omdat sprites het hoekpunt linksboven is, zoals je vierhoek (zie figuur 3a). Dus, voor hun belangrijkste spwists, hebben wij mensen twee sets van denken nodig, en render sprites in de schermruimte, sommige weergaven zijn tweedimensionaal (x, y) en worden uitgevoerd wanneer pixels. Als we bijvoorbeeld een hysterische willen met een grootte van 200 × 100 p in het midden van onze set van 1440 × 768. Het schroefpunt zal proberen 412 pixels te zijn, bij 0 pixels in de breedte en afstand van de grond zal het zijn 200 pixels of 100 p. De meeste sprites creëren meestal extra eigenschappen, zoals in de vorm van de dekkingsmarkering in a en z shop for (pseudo-dieptewaarde). Op deze manier kan de gewone structuur van de sprite worden gedefinieerd, zoals weergegeven in figuur 3b. Nu zou dit moeten worden opgemerkt omdat, zoals je je herinnert, ik zei dat het idee dat de sprites zijn gepositioneerd om pixelgezichtspunten te implementeren, ze zich feitelijk in de clipruimte bevonden), maar toch zullen we daar later over praten. Houd er voorlopig rekening mee dat de uiteindelijke coördinaten die heel goed naar de pijplijn kunnen worden verzonden, nodig zijn ter ondersteuning van consistente clipruimte. Dus
Hoe los ik dit op Fout 193 %1 kan geen geldige Win32-toepassing zijn?
Oké, laten we nu een boost geven om deze structuur terug te brengen. Gewoonlijk zullen de meesten van ons waarschijnlijk twee driehoeken nodig hebben om die vierhoek a te maken, gebruik door driehoekige strepen te maken om het werkelijke aantal benodigde hoekpunten op te slaan. Nogmaals, totdat dit betekent dat we de laatste hoekpunten voor elke sprite moeten weergeven. Elk hoekpunt bevat de taak van de 2D-uitknipruimte; 2. De zowat alle belangrijke textuurcoördinaten en sprite-eigenschappen zoals dekking en z-volgorde. Ervan uitgaande dat getallen met drijvende komma zullen worden gebruikt, zal elk hoekpunt vrijwel zeker 12 bytes geheugen gebruiken, en elke individuele sprite zou zeker 96 bytes geheugen nodig hebben. De normale GUI zal dus veel sprites hebben, maar laten we aannemen dat de gemiddelde GUI 100 sprites gebruikt. Dit zou je moeten vertellen dat elk frame van de GUI voor 9,375 KB kan zorgen om de GPU meerdere jaren van de processor te kunnen sturen. De gegevensoverdracht op de PCIE-bus zal vrij traag zijn, dus een langzamere hoeveelheid computergegevens die door het framework wordt overgedragen, zal de hoge prestaties helpen verbeteren. Natuurlijk is 9KB niet betrouwbaar, maar kijk eens naar het feit dat experts beweren dat systemen Deeltjes meestal kunnen worden weergegeven met symbolen (die zijn als sprites, waar ze gewoon quads met textuur zijn) en kalveren. “Eén deeltjesstraler kan verantwoordelijk zijn voor dit proces. een paar kunnen duizend deeltjes zijn. In dergelijke omstandigheden lopen de opslagkosten op. In voedingssupplementen kost het veel geld om medicijnhoeken in het frame voor individuele sprite op de processor te maken.
Nu we al weten dat we enkele nieuwe primitieven kunnen kweken van alle primitieven die gewoonlijk in GS worden aangetroffen, kunnen we dit in uw voordeel gebruiken en de rechthoekige vorm binnen de GS-grenzen maken. Nu, idealiter zouden we onze sprite-structuur normaal gesproken recht willen sturen, zodat deze GS zal geven en de dubbele driehoeken weergeeft. Nou, omdat je deze dingen weet, kunnen we het! Vertices moeten structuren zijn, dus we gaan een hoekpunt ontwerpen voor elke sprite-structuur die zal worden gevuld met alle verkregen sprite-gegevens. Welk gebruik van gegevensoverdracht moeten we vandaag naar een of andere GS sturen? Nou ja, alleen het nek- en rugpunt, afmetingen en alle eigenschappen van hoe de sprite. Textuurcoördinaten waarvan mGS kan worden berekend, worden later gepubliceerd. Onze sprites zouden dus 24 bytes moeten zijn (75% reductie !!).
Maar hoe beschouw je die hoekpunten terug in de pijplijn, zodat GS het beste is in het ophalen van gegevens van die ene sprite? Dus welke primitieve op aarde zal slechts één hoekpunt gebruiken? Punt. Als we de beste vertex-belasting maken die sprite-gegevens bevat en dit naar de pijplijn sturen als een puntvertegenwoordiger
Versnel de prestaties van uw computer nu met deze eenvoudige download.