Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Wanneer u waarden overdraagt tussen de hosttoepassing en een effectparameter, worden gegevens geschreven zoals verwacht wanneer het brongegevenstype (in de hosttoepassing) overeenkomt met het doelgegevenstype (in de effectparameter). Wanneer de gegevenstypen verschillen, zal er typeconversie plaatsvinden wanneer de brongegevens worden herschikt om aan de bestemming te voldoen.
DXSAS definieert de volgende typeconversieregels. Dit zijn een superset van de effectregels (.fx) en HLSL-typeconversieregels. DXSAS definieert ook enkele parameterwaarde modifiers die van invloed kunnen zijn op de waarde die wordt overgedragen van de hosttoepassing naar een afhankelijke parameter.
Typconversie
De volgende tabel bevat de conversie die plaatsvindt wanneer het ene gegevenstype wordt omgezet in een ander gegevenstype.
| Brontype | Doeltype | Gedrag |
|---|---|---|
| drijven | Int | Rond naar nul. |
| float, int | Boolean | Waarden die niet gelijk zijn aan 0 - op basis van een niet-gelijk-aan-vergelijking met 0 (int) of 0,0 (float) - worden beschouwd als waar, anders wordt de waarde als onwaar beschouwd. |
| Int | drijven | |
| Bool | int, float | Onwaar wordt omgezet naar nul. Waar wordt omgezet naar één. |
| texture1D, texture2D, texture3D, textureCUBE | textuur | Doeltextuur wordt als brontextuurtype behandeld. |
| snaar | texture1D, texture2D, texture3D, textureCUBE | Tekenreekswaarde wordt behandeld als een resourceadres en opgelost op dezelfde manier als de parameteraantekening. Als het adres van de bron niet kan worden opgelost, is de cast ongeldig en moeten de hosttoepassingen een fout teruggeven. Als de resource correct is opgelost, wordt het type expressie behandeld als hetzelfde type als de opgeloste resource. |
Klassecasting
Naast de hierboven beschreven type cast-regels definieert DXSAS de set cast-regels die nodig zijn om te converteren tussen klassetypen. Kolommatrices (N x 1), rijmatrices (1 x N) en numerieke structuren worden behandeld als vectoren.
Effectmatrixparameters en HLSL-matrixvariabelen kunnen bepalen of de waarde een rij- of kolom-georiënteerde matrix is; de DirectX-API's behandelen echter altijd D3DMATRIX en D3DXMATRIX als rij-georiënteerd.
| Bronklasse | Bestemmingsklasse | Gedrag |
|---|---|---|
| Scalaire | scalaire | Type cast toepassen. |
| Scalaire | Vector | Repliceer de scalaire bronwaarde naar elk onderdeel van de doelvector nadat u het type cast- en conversiegedrag hebt toegepast dat wordt beschreven in Type Casting. |
| Scalaire | Matrix | Repliceer de scalaire bronwaarde naar elk onderdeel van de doelmatrix na het toepassen van het type cast- en conversiegedrag dat wordt beschreven in Type Casting. |
| Scalaire | Object | Ongeldige typeconversie. Hosttoepassingen moeten een fout teruggeven. |
| Scalair | Structuur | Alleen geldig als de doelstructuur alleen numerieke elementen bevat. Indien geldig, repliceert u de scalaire bronwaarde naar elk onderdeel van de doelstructuur nadat u het type cast- en conversiegedrag hebt toegepast dat wordt beschreven in Type Casting. |
| Vector | Scalair | De doelschaal ontvangt de waarde van het eerste onderdeel van de bronvector na toepassing van het typecasting- en conversiegedrag dat wordt beschreven in Type Casting. |
| Vector | Vector | Ongeldige cast als de doelvector meer onderdelen heeft dan de bronvector. De doelvector ontvangt de meest linkse waarden van de bronvector nadat het type cast- en conversiegedrag is toegepast dat wordt beschreven in Type Casting. De resterende meest rechtse onderdelen van de bronvector gaan verloren. |
| Vector | Matrix | Ongeldige cast tenzij de bronvector hetzelfde aantal onderdelen heeft als de doelmatrix. Als de cast geldig is, wordt het gedrag van de vector-naar-vector-cast toegepast. |
| Vector | Object | Ongeldige cast. Hosttoepassingen moeten een fout teruggeven. |
| Vector | Structuur | Alleen geldig als de doelstructuur alleen numerieke elementen bevat en niet meer elementen bevat dan de bronvector onderdelen bevat. De elementen van de doelstructuur ontvangen de linker componenten van de bronvector na het toepassen van het typecasting- en conversiegedrag dat wordt beschreven in Type Casting. |
| Matrix | Scalar | De bestemmingsscalaire ontvangt de waarde van de meest linksboven in de bronmatrix, na toepassing van het typecast- en conversiegedrag beschreven in Type Casting. |
| Matrix | Vector | Ongeldige cast tenzij de bronmatrix hetzelfde aantal onderdelen heeft als de doelvector. Als de typeomzetting geldig is, wordt het gedrag van de typeomzetting van vector naar vector hierboven toegepast. |
| Matrix | Matrix | Ongeldige cast als de doelmatrix meer onderdelen heeft dan de bronmatrix. De doelmatrix ontvangt de linkerbovenste waarden van de bronmatrix na het toepassen van het typecasting- en conversiegedrag dat wordt beschreven in Type Casting. De resterende onderdelen rechtsonder van de bronmatrix gaan verloren. |
| Matrix | Object | Ongeldige typeconversie. Hosttoepassingen moeten een fout retourneren. |
| Matrix | Structuur | De grootte van de structuur moet gelijk zijn aan de grootte van de matrix en alle onderdelen van de structuur moeten numeriek zijn. |
| Object | Scalar | Ongeldige typeconversie. Hosttoepassingen moeten een fout teruggeven. |
| Object | Vector | Ongeldige typeconversie. Hosttoepassingen moeten een fout teruggeven. |
| Object | Matrix | Ongeldige typeconversie. Hosttoepassingen moeten een fout retourneren. |
| Object | Voorwerp | Geldig als de typen van de objecten identiek zijn en in overeenstemming zijn met het gedrag dat is gedefinieerd in Type Casting. |
| Structuur | Scalair | Geldig als de bronstructuur ten minste één numeriek lid bevat. De doelscalaire krijgt de waarde van het eerste numerieke lid van de bronstructuur na toepassing van het type cast- en conversiegedrag zoals beschreven in Type Casting. |
| Structuur | Vector | De bronstructuur moet ten minste de grootte van de vector zijn. De eerste onderdelen moeten numeriek zijn tot de grootte van de doelvector. |
| Structuur | Matrix | De bronstructuur moet ten minste de grootte van de vector zijn. De eerste onderdelen moeten numeriek zijn tot de grootte van de doelvector. |
| Structuur | Structuur | De doelstructuur mag niet groter zijn dan de bronstructuur. Er moet een geldige cast bestaan tussen alle respectieve bron- en doelonderdelen. |
Parameterwaardenmodificaties
Parameteraanpassingsaantekeningen voegen aanvullende informatie toe aan een parameter, zodat de gegevens van de parameter correct kunnen worden geïnterpreteerd. Een vector moet bijvoorbeeld worden uitgedrukt met genormaliseerde gegevens of een lengte kan worden gemeten in inches. Aantekeningen van parameterwaarden geven deze aanvullende informatie weer, zodat hosttoepassingen waarden correct kunnen transformeren wanneer gegevens worden overgebracht naar een effectparameter.
Dit zijn de parameteraanpassingen:
| Aantekeningen van parameterwaardewijzigers | Beschrijving |
|---|---|
| SasNormalize | Geef op of een vector al dan niet wordt genormaliseerd. |
| SasUnits | Geef de maateenheden voor een parameter op. |
SasNormalize
De sasNormalize-aantekening geeft aan dat de bijbehorende parameter een genormaliseerde waarde moet zijn wanneer deze wordt toegewezen. Deze aantekening is alleen van invloed op float2-, float3- en float4-parameters.
string SasNormalize = "Value";
waarbij waarde Waar of Onwaar is.
Hier volgt een voorbeeld:
float3 UpNormal
<
bool SasNormalize = "True";
>;
SasUnits
De effectparametergegevens zijn in de volgende eenheden:
string SasUnits = "Value";
waarbij waarde een van de volgende is:
| Meetsoort | Waarde | Beschrijving |
|---|---|---|
| Geen eenheden | lege tekenreeks | Geen eenheden |
| Afstand | Mm | Millimeters |
| centimeter | centimeters | |
| m | Meter | |
| kilometer | Kilometer | |
| Hoek | Rad | Radialen |
| Tijd | mevrouw | Milliseconden |
| seconde | Seconden | |
| Min | Notulen | |
| uur | Uren | |
| Lineaire snelheid | mm per seconde | Millimeters per seconde |
| cm per seconde | Centimeters per seconde | |
| m/sec | Meters per seconde | |
| m/hr | Meters per uur | |
| km/uur | Kilometer per uur | |
| Lineaire versnelling | mm/sec² | Millimeters per seconde in het kwadraat |
| cm/sec² | Centimeters per vierkante seconde | |
| m/sec² | Meters per seconde kwadraat | |
| m/hr² | Meters per uur in het kwadraat | |
| km/hr² | Kilometer per uur kwadraat | |
| Hoeksnelheid | rad/sec | Radialen per seconde |
| Hoekversnelling | rad/sec² | Radialen per seconde in het kwadraat |
| Gebied | mm² | Millimeters vierkant |
| cm² | Centimeters vierkant | |
| m² | Vierkante meter | |
| km² | Vierkante kilometer | |
| Volume | mm³ | Millimeters kubus |
| cm³ | Kubieke centimeters | |
| m³ | Kubieke meters | |
| km³ | Kubieke kilometer |
Verwante onderwerpen