Instruction for
Exécute de manière itérative une série d’instructions basées sur l’évaluation de l’expression conditionnelle.
[Attribut] pour ( Initialiseur ; Conditionnelle; Iterator ) { Statement Block; }
Paramètres
-
Attribut
-
Paramètre facultatif qui contrôle la compilation de l’instruction. Lorsqu’aucun attribut n’est spécifié, le compilateur tente d’abord d’émettre une version roulée de la boucle, et si cela échoue, ou si certaines opérations sont plus faciles si la boucle a été annulée, revient à une version annulée de la boucle.
Attribut Description unroll(x) Déroulez la boucle jusqu’à ce qu’elle cesse de s’exécuter. Peut éventuellement spécifier le nombre maximal d’exécutions de la boucle. Non compatible avec l’attribut [loop]. loop Générez du code qui utilise le contrôle de flux pour exécuter chaque itération de la boucle. Non compatible avec l’attribut [unroll]. fastopt Réduit le temps de compilation, mais produit des optimisations moins agressives. Si vous utilisez cet attribut, le compilateur ne déploie pas les boucles.
Cet attribut affecte uniquement les cibles de modèle de nuanceur qui prennent en charge les instructions d’arrêt . Cet attribut est disponible dans le modèle de nuanceur vs_2_x et le modèle de nuanceur 3 et ultérieur. Il est particulièrement utile dans le modèle de nuanceur 4 et les versions ultérieures lorsque le compilateur compile des boucles. Le compilateur simule des boucles par défaut pour évaluer s’il peut les désinscrire. Si vous ne souhaitez pas que le compilateur déroule les boucles, utilisez cet attribut pour réduire le temps de compilation.allow_uav_condition Permet à une condition d’arrêt de boucle de nuanceur de calcul d’être basée sur une lecture UAV. La boucle ne doit pas contenir d’intrinsèques de synchronisation. -
Initialiseur
-
Valeur initiale du compteur de boucle.
-
Conditionnelle
-
Expression conditionnelle. Si l’expression conditionnelle prend la valeur true, le bloc d’instructions est exécuté. La boucle se termine lorsque l’expression prend la valeur false.
-
Itérateur
-
Mettez à jour la valeur du compteur de boucles.
-
Bloc d’instructions
-
Une ou plusieurs instructions HLSL.
Notes
Les attributs [unroll] et [loop] s’excluent mutuellement et génèrent des erreurs du compilateur lorsque les deux sont spécifiés.
Les attributs [fastopt] et [allow_uav_condition] sont ignorés si [unroll] est spécifié.