¿Qué son los nodos del Diseñador de sombras?
El Diseñador de sombras en Visual Studio representa los efectos visuales como un gráfico. Estos gráficos se compilan a partir de nodos que se eligen y se conectan de forma precisa para lograr el efecto buscado. Cada nodo representa un fragmento de información o una función matemática, y las conexiones entre ellos representan cómo fluye la información a través del gráfico para generar el resultado. Los tipos de nodo incluyen filtros, texturas, parámetros, constantes, nodos de utilidad y nodos matemáticos.
Estructura de los nodos
Todos los nodos se componen de una combinación de elementos comunes. Cada nodo tiene al menos un terminal de salida en el lado derecho (excepto el nodo de color final, que representa la salida del sombreador). Los nodos que representan cálculos o muestras de textura tienen terminales de entrada en el lado izquierdo, pero los nodos que representan información no tienen terminales de entrada. Las terminales de salida se conectan a las terminales de entrada para mover información de un nodo a otro.
Promoción de entradas
Dado que en última instancia el Diseñador de sombras debe generar código fuente HLSL para que el efecto se pueda usar en un juego o aplicación, los nodos del Diseñador de sombras están sujetos a las reglas de promoción de tipos que se usan en HLSL. Como el hardware gráfico funciona principalmente sobre valores de punto flotante, no es habitual la promoción entre tipos diferentes, por ejemplo, de int
a float
o de float
a double
. En su lugar, como el hardware gráfico usa la misma operación en varios fragmentos de información a la vez, puede producirse un tipo de promoción diferente en la que la entrada más corta de muchas entradas se alarga para que coincida con el tamaño de la entrada más larga. La forma en que se alargue depende del tipo de la entrada y también de la propia operación:
Si el tipo más pequeño es un valor escalar, entonces:
el valor de la expresión escalar se replica en un vector que es del mismo tamaño que la entrada más grande. Por ejemplo, la entrada escalar 5,0 se convierte en el vector (5,0, 5,0, 5,0) cuando la entrada más grande de la operación es un vector de tres elementos, sea cual sea la operación.
Si el tipo más pequeño es un vector y la operación es de multiplicación (*, /, %, etc.), entonces:
el valor del vector se copia en los elementos iniciales de un vector del mismo tamaño que la entrada más grande, y los elementos finales se establecen en 1,0. Por ejemplo, la entrada de vector (5,0, 5,0) se convierte en el vector (5,0, 5,0, 1,0, 1,0) cuando se multiplica por un vector de cuatro elementos. Esto conserva el tercer y cuarto elemento de la salida mediante el uso de la identidad de multiplicación, 1,0.
Si el tipo más pequeño es un vector y la operación es de suma (+, -, etc.), entonces:
el valor del vector se copia en los elementos iniciales de un vector del mismo tamaño que la entrada más grande, y los elementos finales se establecen en 0,0. Por ejemplo, la entrada de vector (5,0, 5,0) se convierte en el vector (5,0, 5,0, 0,0, 0,0) cuando se suma a un vector de cuatro elementos. Esto conserva el tercer y cuarto elemento de la salida mediante el uso de la identidad de suma, 0,0.
Nodos y tipos de nodo
El Diseñador de sombras proporciona seis tipos de nodo diferentes (filtros, nodos de textura, parámetros, constantes, nodos de utilidad y nodos matemáticos) y varios nodos individuales pertenecen a cada tipo.
Nodos de constante
En el Diseñador de sombras, los nodos de constante representan valores literales y atributos de vértice interpolados en los cálculos de sombreador de píxeles. Dado que los atributos de vértice se interpolan, y por tanto son diferentes para cada píxel, cada instancia de sombreador de píxeles recibe una versión diferente de la constante. Esto proporciona a cada píxel una apariencia única.
Interpolación de atributos de vértice
La imagen de una escena 3D en un juego o aplicación se crea mediante la transformación matemática de muchos objetos —que se definen por los vértices, atributos de vértice y definiciones primitivas— en píxeles en pantalla. Toda la información necesaria para proporcionar a un píxel su aspecto único se proporciona a través de los atributos de vértice, que se fusionan según la proximidad del píxel a los vértices diferentes que componen su primitiva. Una primitiva es un elemento de representación básico, es decir, una forma sencilla como un punto, una línea o un triángulo. Un píxel que está muy cerca de solo uno de los vértices recibe constantes que son casi idénticas a ese vértice, pero un píxel que tenga un espaciado uniforme entre todos los vértices de una primitiva recibe constantes que son el promedio de esos vértices. En la programación de gráficos, las constantes que reciben los píxeles se consideran interpoladas. Proporcionar datos constantes a los píxeles de este modo produce buena calidad visual y al mismo tiempo reduce los requisitos de superficie de memoria y ancho de banda.
Aunque cada instancia de sombreador de píxeles recibe solo un conjunto de valores constantes y no puede cambiar estos valores, las instancias de sombreador de píxeles diferentes reciben conjuntos diferentes de datos constantes. Este diseño permite que un programa de sombreador produzca una salida de color diferente para cada píxel de la primitiva.
Referencia de nodos de constante
Nodo | Detalles | Propiedades |
---|---|---|
Vector de cámara | El vector que se extiende desde el píxel actual a la cámara en el espacio global. Puede usarlo para calcular los reflejos en el espacio global. Salida Output : float3 El vector desde el píxel actual a la cámara. |
None |
Constante de color | Un valor de color constante. Salida Output : float4 Valor del color. |
Salida Valor del color. |
Constante | Un valor escalar constante. Salida Output : float Valor escalar. |
Salida Valor escalar. |
Constante 2D | Una constante de vector de dos componentes. Salida Output : float2 Valor del vector. |
Salida Valor del vector. |
Constante 3D | Una constante de vector de tres componentes. Salida Output : float3 Valor del vector. |
Salida Valor del vector. |
Constante 4D | Una constante de vector de cuatro componentes. Salida Output : float4 Valor del color. |
Salida Valor del vector. |
Posición normalizada | La posición del píxel actual, expresada en coordenadas de dispositivo normalizadas. Las coordenadas X e Y tienen valores en el intervalo de [-1, 1], la coordenada Z tiene un valor en el intervalo de [0, 1] y el componente W contiene el valor de profundidad de punto en el espacio de vista y no está normalizado. Salida Output : float4 La posición del píxel actual. |
None |
Color de punto | El color difuso del píxel actual, que es una combinación de los atributos de color difuso de material y de color de vértice. Salida Output : float4 El color difuso del píxel actual. |
None |
Profundidad de punto | La profundidad del píxel actual en el espacio de la vista. Salida Output : float La profundidad del píxel actual. |
None |
Profundidad de punto normalizada | La profundidad del píxel actual, expresada en coordenadas de dispositivo normalizadas. El resultado tiene un valor en el intervalo de [0, 1]. Salida Output : float La profundidad del píxel actual. |
None |
Posición de pantalla | La posición del píxel actual, expresada en coordenadas de pantalla. Las coordenadas de pantalla se basan en la ventanilla actual. Los componentes X e Y contienen las coordenadas de pantalla, el componente Z contiene la profundidad normalizada en un intervalo de [0, 1] y el componente W contiene el valor de profundidad en el espacio de vista. Salida Output : float4 La posición del píxel actual. |
None |
Normal a la superficie | El valor normal a la superficie del píxel actual en el espacio de objeto. Se puede usar para calcular las reflexiones y las contribuciones de la iluminación en el espacio de objeto. Salida Output : float3 El valor normal a la superficie del píxel actual. |
None |
Vector de cámara de espacio tangente | El vector que se extiende desde el píxel actual a la cámara en el espacio tangente. Se puede usar para calcular las reflexiones en el espacio tangente. Salida Output : float3 El vector desde el píxel actual a la cámara. |
None |
Dirección de la luz de espacio tangente | El vector que define la dirección en la que se proyecta la luz desde una fuente de luz en el espacio tangente del píxel actual. Se puede usar para calcular las contribuciones de reflexión especular y de iluminación en el espacio tangente. Salida: Output : float3 El vector desde el píxel actual a una fuente de luz. |
None |
Normal global | El valor normal a la superficie del píxel actual en el espacio global. Se puede usar para calcular las reflexiones y las contribuciones de la iluminación en el espacio global. Salida Output : float3 El valor normal a la superficie del píxel actual. |
None |
Posición global | Posición del píxel actual en el espacio global. Salida Output : float4 La posición del píxel actual. |
Ninguno |
Nodos de parámetro
En el Diseñador de sombras, los nodos de parámetro representan entradas al sombreador que están bajo el control de la aplicación por cada dibujo, por ejemplo, propiedades de material, luces direccionales, posición de la cámara y tiempo. Dado que se pueden cambiar estos parámetros con cada llamada a draw, se puede usar el mismo sombreador para proporcionar diferentes aspectos a un objeto.
Referencia de nodos de parámetro
Nodo | Detalles | Propiedades |
---|---|---|
Posición global de la cámara | Posición de la cámara en el espacio global. Salida: Output : float4 Posición de la cámara. |
None |
Dirección de la luz | El vector que define la dirección en la que se proyecta la luz desde una fuente de luz en el espacio global. Se puede usar para calcular las contribuciones de reflexión especular y de iluminación en el espacio global. Salida: Output : float3 El vector desde el píxel actual a una fuente de luz. |
None |
Color ambiental de material | La contribución de color difuso del píxel actual que se atribuye a la iluminación indirecta. El color difuso de un píxel simula cómo interactúa la iluminación con superficies desiguales. Se puede usar el parámetro Color ambiental de material para determinar aproximadamente cómo contribuye la iluminación indirecta a la apariencia de un objeto en el mundo real. Salida: Output : float4 El color difuso del píxel actual debido a la iluminación indirecta o ambiental. |
Acceso Público para que esta propiedad se pueda establecer desde el Editor de modelos. De lo contrario, Privado. Valor El color difuso del píxel actual debido a la iluminación indirecta o ambiental. |
Color difuso de material | Un color que describe cómo difumina la iluminación directa el píxel actual. El color difuso de un píxel simula cómo interactúa la iluminación con superficies desiguales. Se puede usar el parámetro Color difuso de material para cambiar cómo difumina el píxel actual la iluminación directa, es decir, la luz direccional, puntual y focal. Salida: Output : float4 Un color que describe cómo difumina la iluminación directa el píxel actual. |
Acceder Público para que esta propiedad se pueda establecer desde el Editor de modelos. De lo contrario, Privado. Valor Un color que describe cómo difumina la iluminación directa el píxel actual. |
Color emisor de luz de material | La contribución de color del píxel actual que se atribuye a la iluminación que se le proporciona. Se puede usar para simular un objeto resplandeciente, es decir, aquel que proporciona su propia luz. Esta luz no afecta a otros objetos. Salida: Output : float4 La contribución de color del píxel actual debida a la iluminación propia proporcionada. |
Acceder Público para que esta propiedad se pueda establecer desde el Editor de modelos. De lo contrario, Privado. Valor La contribución de color del píxel actual debida a la iluminación propia proporcionada. |
Reflexión especular de material | Un color que describe cómo refleja la iluminación directa el píxel actual. El color especular de un píxel simula cómo interactúa la iluminación con superficies suaves y reflectantes. Se puede usar el parámetro Reflexión especular de material para cambiar cómo refleja el píxel actual la iluminación directa, es decir, la luz direccional, puntual y focal. Salida: Output : float4 Un color que describe cómo refleja la iluminación directa el píxel actual. |
Acceder Público para que esta propiedad se pueda establecer desde el Editor de modelos. De lo contrario, Privado. Valor Un color que describe cómo refleja la iluminación directa el píxel actual. |
Potencia especular de material | Valor escalar que describe la intensidad de los reflejos especulares. Cuanto mayor sea la potencia especular, más intensidad y alcance tiene la iluminación especular. Salida: Output : float Un término exponencial que describe la intensidad de los reflejos especulares en el píxel actual. |
Acceder Público para que esta propiedad se pueda establecer desde el Editor de modelos. De lo contrario, Privado. Valor El exponente que define la intensidad de los reflejos especulares en el píxel actual. |
Tiempo normalizado | El tiempo en segundos, normalizado en el intervalo [0, 1], de forma que cuando el tiempo llega a 1, se restablece en 0. Se puede usar como parámetro en los cálculos del sombreador, por ejemplo, para animar coordenadas de textura, valores de color u otros atributos. Salida: Output : float El tiempo normalizado, en segundos. |
None |
Time | Tiempo en segundos. Se puede usar como parámetro en los cálculos del sombreador, por ejemplo, para animar coordenadas de textura, valores de color u otros atributos. Salida: Output : float El tiempo, en segundos. |
Ninguno |
Nodos de textura
En el Diseñador de sombras, los nodos de textura muestrean diversos tipos de textura y geometrías, y generan o transforman las coordenadas de textura. Las texturas proporcionan detalles de color e iluminación a los objetos.
Referencia de nodos de textura
Nodo | Detalles | Propiedades |
---|---|---|
Muestra de mapa de cubo | Toma una muestra de color de un mapa de cubo en las coordenadas especificadas. Un mapa de cubo se puede usar para proporcionar detalles de color para efectos de reflexión o para aplicar textura a un objeto esférico con menor distorsión que una textura 2D. Entrada: UVW : float3 Un vector que especifica la ubicación en el cubo de textura de la que se toma la muestra. La muestra se toma en la intersección de este vector y el cubo. Salida: Output : float4 El ejemplo de color. |
Textura El registro de textura asociado a la muestra. |
Muestra de mapa normal | Toma una muestra de un mapa 2D normal en las coordenadas especificadas. Un mapa normal se puede usar para simular la apariencia de un detalle geométrico adicional en la superficie de un objeto. Los mapas normales contienen datos empaquetados que representan un vector unitario en lugar de datos de color. Entrada: UV : float2 Las coordenadas en las que se toma la muestra. Salida: Output : float3 La muestra normal. |
Ajuste de ejes El factor que se usa para ajustar la muestra de mapa normal para diestros o zurdos. Textura El registro de textura asociado a la muestra. |
UV de panorámica | Mueve en panorámica las coordenadas de textura especificadas como una función de tiempo. Se puede usar para mover una textura o un mapa normal a través de la superficie de un objeto. Entrada: UV : float2 Las coordenadas para el movimiento panorámico. Time : float La duración del movimiento panorámico, en segundos. Salida: Output : float2 Las coordenadas de la panorámica. |
Velocidad X Número de elementos de textura distribuidos en el eje x por segundo. Velocidad Y Número de elementos de textura distribuidos en el eje y por segundo. |
UV de paralaje | Desplaza las coordenadas de textura especificadas como una función del alto y el ángulo de visión. El efecto se conoce como asignación de paralaje o de desplazamiento virtual. Se puede usar para crear una ilusión de profundidad en una superficie plana. Entrada: UV : float2 Las coordenadas para el desplazamiento. Height : float El valor de mapa de elevación que está asociado a las coordenadas UV .Salida: Output : float2 Las coordenadas desplazadas. |
Plano de profundidad La profundidad del efecto de paralaje. De forma predeterminada, el valor es 0,5. Los valores menores levantan la textura y los valores mayores la hunden en la superficie. Escala de profundidad La escala del efecto de paralaje. Esto hace que la profundidad aparente sea más o menos pronunciada. Los valores típicos oscilan entre 0,02 y 0,1. |
UV de rotación | Gira las coordenadas de textura especificadas alrededor de un punto central como una función de tiempo. Se puede usar para girar una textura o un mapa normal en la superficie de un objeto. Entrada: UV : float2 Las coordenadas para la rotación. Time : float La duración del movimiento panorámico, en segundos. Salida: Output : float2 Las coordenadas giradas. |
Centrar X Coordenada x que define el centro de rotación. Centrar Y Coordenada y que define el centro de rotación. Velocidad Ángulo, en radianes, por el que la textura rota por segundo. |
Coordenada de textura | Las coordenadas de textura del píxel actual. Las coordenadas de textura determinadas al interpolar entre los atributos de coordenada de textura de los vértices cercanos. Puede considerarse como la posición del píxel actual en el espacio de textura. Salida: Output : float2 Las coordenadas de textura. |
None |
Dimensiones de textura | Muestra el ancho y el alto de un mapa de textura 2D. Se pueden usar las dimensiones de textura para tener en cuenta el ancho y el alto de la textura en un sombreador. Salida: Output : float2 El ancho y el alto de la textura, expresados como un vector. El ancho se almacena en el primer elemento del vector. El alto se almacena en el segundo elemento. |
Textura El registro de textura que está asociado con las dimensiones de textura. |
Delta del elemento de textura | Muestra el delta (distancia) entre los elementos de textura de un mapa de textura 2D. Se puede usar el delta del elemento de textura para muestrear valores de elemento de textura contiguos de un sombreador. Salida: Output : float2 El delta (distancia) desde un elemento de textura al siguiente (con movimiento diagonal en la dirección positiva), expresado como un vector en el espacio de textura normalizado. Se pueden derivar las posiciones de todos los elementos de textura contiguos omitiendo o negando de forma selectiva las coordenadas U o V del delta. |
Textura El registro de textura asociado al delta del elemento de textura. |
Muestra de textura | Toma una muestra de color de un mapa de texturas en 2D en las coordenadas especificadas. Se puede usar un mapa de texturas para proporcionar detalles de color en la superficie de un objeto. Entrada: UV : float2 Las coordenadas en las que se toma la muestra. Salida: Output : float4 El ejemplo de color. |
Textura El registro de textura asociado a la muestra. |
Nodos matemáticos
En el Diseñador de sombras, los nodos matemáticos realizan operaciones algebraicas, lógicas, trigonométricas y otras operaciones matemáticas.
Nota
Cuando se trabaja con nodos matemáticos en el Diseñador de sombras, la promoción de tipos es especialmente evidente. Para obtener información sobre cómo afecta la promoción de tipos a los parámetros de entrada, vea la sección Promoción de entradas.
Referencia de nodos matemáticos
Nodo | Detalles | Propiedades |
---|---|---|
Abs | Calcula el valor absoluto de la entrada especificada por componente. Por cada componente de entrada X , los valores negativos se convierten en positivos de forma que todos los componentes del resultado tengan un valor positivo.Entrada: X : float , float2 , float3 o float4 Los valores para los que se va a determinar el valor absoluto. Output: Output : igual que la entrada X El valor absoluto, por componente. |
None |
Add (Agregar) | Calcula la suma por componente de las entradas especificadas por componente. Para cada componente del resultado se suman los componentes correspondientes de entrada X y entrada Y .Entrada: X : float , float2 , float3 o float4 Uno de los valores que se va a sumar. Y : igual que la entrada X Uno de los valores que se va a sumar. Salida: Output : igual que la entrada X La suma, por componente. |
None |
Ceil | Calcula el límite superior de la entrada especificada por componente. El límite superior de un valor es el entero más pequeño que es mayor o igual a ese valor. Entrada: X : float , float2 , float3 o float4 Los valores para los que se va a calcular el límite superior. Salida: Output : igual que la entrada X El límite superior, por componente. |
None |
Clamp | Fija cada componente de la entrada especificada a un intervalo predefinido. Para cada componente del resultado, los valores por debajo del intervalo definido se igualan al valor mínimo del intervalo, los valores por encima del intervalo definido se igualan al valor máximo del intervalo y los valores comprendidos en el intervalo no se modifican. Entrada: X : float , float2 , float3 o float4 Los valores que se van a fijar. Salida: Output : igual que la entrada X El valor fijado, por componente. |
Máx. El mayor valor posible en el intervalo. Mín. El menor valor posible en el intervalo. |
Cos | Calcula el coseno de la entrada especificada, en radianes, por componente. Para cada componente del resultado, se calcula el coseno del componente correspondiente, que se proporciona en radianes. El resultado tiene componentes con valores en el intervalo de [-1, 1]. Entrada: X : float , float2 , float3 o float4 Los valores de los que calcular el coseno, en radianes. Salida: Output : igual que la entrada X El coseno, por componente. |
None |
Cross | Calcula el producto cruzado de los vectores de tres componentes especificados. Se puede usar el producto cruzado para calcular el valor normal de una superficie que se define mediante dos vectores. Entrada: X : float3 El vector del lado izquierdo del producto cruzado. Y : float3 El vector del lado derecho del producto cruzado. Salida: Output : float3 Producto cruzado. |
None |
Distancia | Calcula la distancia entre los objetos especificados. El resultado es un valor escalar positivo. Entrada: X : float , float2 , float3 o float4 Uno de los puntos entre los que se va a determinar la distancia. Y : igual que la entrada X Uno de los puntos entre los que se va a determinar la distancia. Salida: Output : igual que la entrada X Distancia. |
None |
Dividir | Calcula el cociente por componente de las entradas especificadas. Para todos los componentes del resultado, el componente correspondiente de la entrada X se divide por el componente correspondiente de la entrada Y .Entrada: X : float , float2 , float3 o float4 Los valores del dividendo. Y : igual que la entrada X Los valores del divisor. Salida: Output : igual que la entrada X El cociente, por componente. |
None |
Punto | Calcula el producto escalar de los vectores especificados. El resultado es un valor escalar. Se puede usar el producto escalar para determinar el ángulo entre dos vectores. Entrada: X : float , float2 , float3 o float4 Uno de los términos. Y : igual que la entrada X Uno de los términos. Salida: Output : float Producto escalar. |
None |
Floor | Calcula el límite inferior de la entrada especificada por componente. Para todos los componentes del resultado, su valor es el valor entero mayor que sea inferior o igual al componente correspondiente de la entrada. Todos los componentes del resultado son números enteros. Entrada: X : float , float2 , float3 o float4 Los valores para los que se va a calcular el límite inferior. Salida: Output : igual que la entrada X El límite inferior, por componente. |
None |
Fmod | Calcula el módulo (cociente) por componente de las entradas especificadas. Para todos los componentes del resultado, se resta un múltiplo entero (un número entero), m, del componente correspondiente de la entrada Y del componente correspondiente de la entrada X , dejando un resto. El múltiplo, m, se elige de forma que el resto es menor que el componente correspondiente de la entrada Y y tiene el mismo signo que el componente correspondiente de la entrada X . Por ejemplo, fmod(-3,14, 1,5) es -0,14.Entrada: X : float , float2 , float3 o float4 Los valores del dividendo. Y : igual que la entrada X Los valores del divisor. Salida: Output : igual que la entrada X El módulo, por componente. |
None |
Frac | Quita la parte entera (un número entero) de la entrada especificada por componente. Para todos los componentes del resultado, se quita la parte entera del componente correspondiente de la entrada, pero se conservan la parte fraccionaria y el signo. Este valor fraccionario se encuentra en el intervalo [0, 1). Por ejemplo, el valor -3,14 se convierte en el valor -0,14. Entrada: X : float , float2 , float3 o float4 Los valores para los que se va a calcular la parte fraccionaria. Salida: Output : igual que la entrada X La parte fraccionaria, por componente. |
None |
Lerp | Interpolación lineal. Calcula la media ponderada por componente de las entradas especificadas. Para todos los componentes del resultado, la media ponderada de los componentes correspondientes de las entrada X e Y . La media la proporciona Percent , un valor escalar, y se aplica uniformemente a todos los componentes. Se puede usar para interpolar entre puntos, colores, atributos y otros valores.Entrada: X : float , float2 , float3 o float4 El valor de origen. Cuando Percent es cero, el resultado es igual a esta entrada.Y : igual que la entrada X El valor terminal. Cuando Percent es uno, el resultado es igual a esta entrada.Percent : float Una ponderación escalar que se expresa como un porcentaje de la distancia desde la entrada X a la entrada Y .Salida: Output : igual que la entrada X Un valor que es colineal con las entradas especificadas. |
None |
Multiply Add | Calcula la multiplicación-suma por componente de las entradas especificadas. Para todos los componentes del resultado, el producto de los componentes correspondientes de las entradas M e A se suman al componente correspondiente de la entrada B . Esta secuencia de operaciones se encuentra en fórmulas comunes, por ejemplo, en la fórmula de punto-pendiente de una línea y en la fórmula para escalar y después desviar una entrada.Entrada: M : float , float2 , float3 o float4 Uno de los valores que se va a multiplicar. A : igual que la entrada M Uno de los valores que se va a multiplicar. B : igual que la entrada M Los valores para sumar al producto de las dos entradas. Salida: Output : igual que la entrada M El resultado de la multiplicación-suma, por componente. |
None |
Máx. | Calcula el máximo por componente de las entradas especificadas. Para todos los componentes del resultado, se toma el mayor de los componentes correspondientes de las entradas. Entrada: X : float , float2 , float3 o float4 Uno de los valores para el que se va a calcular el valor máximo. Y : igual que la entrada X Uno de los valores para el que se va a calcular el valor máximo. Salida: Output : igual que la entrada X El valor máximo, por componente. |
None |
Mín. | Calcula el mínimo por componente de las entradas especificadas. Para todos los componentes del resultado, se toma el menor de los componentes correspondientes de las entradas. Entrada: X : float , float2 , float3 o float4 Uno de los valores para el que se va a calcular el mínimo. Y : igual que la entrada X Uno de los valores para el que se va a calcular el mínimo. Salida: Output : igual que la entrada X El valor mínimo, por componente. |
None |
Multiplicar | Calcula el producto por componente de las entradas especificadas. Para todos los componentes del resultado, se multiplican los componentes correspondientes de las entradas X e Y .Entrada: X : float , float2 , float3 o float4 Uno de los valores que se va a multiplicar. Y : igual que la entrada X Uno de los valores que se va a multiplicar. Salida: Output : igual que la entrada X El producto, por componente. |
None |
Normalize | Normaliza el vector especificado. Un vector normalizado mantiene la dirección del vector original, pero no su magnitud. Se pueden usar vectores normalizados para simplificar los cálculos en los que no es importante la magnitud de un vector. Entrada: X : float2 , float3 o float4 Vector que se va a normalizar. Salida: Output : igual que la entrada X Valor normalizado. |
None |
One Minus | Calcula la diferencia entre 1 y la entrada especificada por componente. Para todos los componentes del resultado, el componente correspondiente de la entrada se resta de 1. Entrada: X : float , float2 , float3 o float4 Los valores que se van a restar de 1. Salida: Output : igual que la entrada X La diferencia entre 1 y la entrada especificada por componente. |
None |
Power | Calcula la exponenciación (potencia) por componente de las entradas especificadas. Para todos los componentes del resultado, el componente correspondiente de la entrada X se eleva a la potencia del componente correspondiente de la entrada Y .Entrada: X : float , float2 , float3 o float4 Los valores de base Y : igual que la entrada X Los valores de exponente. Salida: Output : igual que la entrada X La exponenciación, por componente. |
None |
Saturate | Fija cada componente de la entrada especificada al intervalo [0, 1]. Se puede usar este intervalo para representar porcentajes y otras medidas relativas en los cálculos. Para todos los componentes del resultado, los valores correspondientes de componente de la entrada que son menores que 0 se igualan a 0, los valores mayores que 1 se igualan a 1, y los valores que están en el intervalo no se cambian. Entrada: X : float , float2 , float3 o float4 Los valores que se van a saturar. Salida: Output : igual que la entrada X El valor saturado, por componente. |
None |
Sin | Calcula el seno de la entrada especificada, en radianes, por componente. Para todos los componentes del resultado, se calcula el seno del componente correspondiente, que se proporciona en radianes. El resultado tiene componentes que tienen valores en el intervalo [-1, 1]. Entrada: X : float , float2 , float3 o float4 Los valores de los que calcular el seno, en radianes. Salida: Output : igual que la entrada X El seno, por componente. |
None |
Sqrt | Calcula la raíz cuadrada de la entrada especificada, por componente. Para todos los componentes del resultado, se calcula la raíz cuadrada del componente correspondiente. Entrada: X : float , float2 , float3 o float4 Los valores para los que se va a calcular la raíz cuadrada. Salida: Output : igual que la entrada X La raíz cuadrada, por componente. |
None |
Restar | Calcula la diferencia por componente de las entradas especificadas. Para todos los componentes del resultado, el componente correspondiente de la entrada Y se resta del componente correspondiente de la entrada X . Se puede usar para calcular el vector que se extiende desde la primera entrada a la segunda.Entrada: X : float , float2 , float3 o float4 Los valores de los que se va a restar. Y : igual que la entrada X Los valores que se van a restar de la entrada X .Salida: Output : igual que la entrada X La diferencia, por componente. |
None |
Transform 3D Vector | Transforma el vector 3D especificado en un espacio diferente. Se puede usar para poner puntos o vectores en un espacio común para que se puedan usar para realizar cálculos significativos. Entrada: Vector : float3 Vector que se va a transformar. Salida: Output : float3 Valor transformado. |
Desde el sistema Espacio nativo del vector. Al sistema Espacio en el que transformar el vector. |
Nodos de utilidad
En el Diseñador de sombras, los nodos de utilidad representan cálculos de sombreador habituales y útiles que no se ajustan perfectamente a las demás categorías. Algunos nodos de utilidad realizan operaciones simples como anexar vectores o elegir resultados condicionalmente y otros realizan operaciones complejas, como calcular contribuciones de iluminación según los modelos de iluminación populares.
Referencia de nodos de utilidad
Nodo | Detalles | Propiedades |
---|---|---|
Anexar vector | Crea un vector anexando las entradas especificadas. Entrada: Vector : float , float2 o float3 Los valores a los que se va a anexar. Value to Append : float Valor que se va a anexar. Salida: Output : float2 , float3 o float4 , en función del tipo de entrada Vector El nuevo vector. |
None |
Fresnel | Calcula la reducción de Fresnel según el normal de superficie especificado. El valor de la reducción de Fresnel expresa en qué medida coincide el valor normal de superficie del píxel actual con el vector de visualización. Cuando los vectores están alineados, el resultado de la función es 0; el resultado se incrementa a medida que los vectores son menos similares y alcanza su valor máximo cuando los vectores son ortogonales. Se puede usar para hacer que un efecto sea más o menos aparente en función de la relación entre la orientación del píxel actual y la cámara. Entrada: Surface Normal : float3 La normal de superficie del píxel actual, definida en el espacio tangente del píxel actual. Se puede usar para alterar la normal de superficie aparente, como en la asignación normal. Salida: Output : float La capacidad de reflexión del píxel actual. |
Exponente El exponente que se usa para calcular la reducción de Fresnel. |
If | Elige condicionalmente uno de los tres resultados posibles por componente. La condición se define por la relación entre otras dos entradas especificadas. Para cada componente del resultado, se elige el componente correspondiente de uno de los tres resultados potenciales en función de la relación entre los componentes correspondientes de las dos primeras entradas. Entrada: X : float , float2 , float3 o float4 El valor del lado izquierdo para comparar. Y : el mismo tipo que la entrada X El valor del lado derecho para comparar. X > Y : el mismo tipo que la entrada X Los valores que se eligen cuando X es mayor que Y .X = Y : el mismo tipo que la entrada X Los valores que se eligen cuando X es igual a Y .X < Y : el mismo tipo que la entrada X Los valores que se eligen cuando X es menor que a Y .Salida: Output : float3 El resultado elegido, por componente. |
None |
Lambert | Calcula el color del píxel actual según el modelo de iluminación Lambert, mediante el normal de superficie especificado. Este color es la suma de las contribuciones del color ambiental y la iluminación difusa bajo iluminación directa. El color ambiental se aproxima a la contribución total de iluminación indirecta, pero tiene un aspecto plano y apagado sin ayuda de iluminación adicional. La iluminación difusa hace que sea más fácil agregar forma y profundidad a un objeto. Entrada: Surface Normal : float3 La normal de superficie del píxel actual, definida en el espacio tangente del píxel actual. Se puede usar para alterar la normal de superficie aparente, como en la asignación normal. Diffuse Color : float3 El color difuso del píxel actual, normalmente el Color de punto. Si no se proporciona ninguna entrada, el valor predeterminado es blanco. Salida: Output : float3 El color difuso del píxel actual. |
None |
Vector de máscara | Enmascara los componentes de vector especificado. Se puede usar para quitar canales de color específicos de un valor de color o bien para evitar que determinados componentes afecten a cálculos subsiguientes. Entrada: Vector : float4 El vector que se va a enmascarar. Salida: Output : float4 El vector enmascarado. |
Rojo / X False para desenmascarar el componente rojo (X). De lo contrario, True. Verde / Y False para desenmascarar el componente verde (Y). De lo contrario, True. Azul / Z False para desenmascarar el componente azul (Z). De lo contrario, True. Alfa / W False para desenmascarar el componente alfa (W). De lo contrario, True. |
Vector de reflexión | Calcula el vector de la reflexión del píxel actual en el espacio tangente en función de la posición de la cámara. Se puede usar para calcular reflexiones, coordenadas de mapa de cubo y contribuciones de la iluminación especular. Entrada: Tangent Space Surface Normal : float3 La normal de superficie del píxel actual, definida en el espacio tangente del píxel actual. Se puede usar para alterar la normal de superficie aparente, como en la asignación normal. Salida: Output : float3 El vector de reflexión. |
None |
Especular | Calcula la contribución de iluminación especular según el modelo de iluminación Phong, mediante el normal de superficie especificado. La iluminación especular proporciona una apariencia reluciente y reflectante a un objeto, por ejemplo, agua, plástico o metales. Entrada: Surface Normal : float3 La normal de superficie del píxel actual, definida en el espacio tangente del píxel actual. Se puede usar para alterar la normal de superficie aparente, como en la asignación normal. Salida: Output : float3 La contribución de color de los reflejos especulares. |
Ninguno |
Nodos de filtro
En el Diseñador de sombras, los nodos de filtro transforman una entrada, por ejemplo, una muestra de color o de textura, en un valor de color figurativo. Estos valores de color figurativo se usan normalmente en representación no fotorrealista o como componentes en otros efectos visuales.
Referencia de nodos de filtro
Nodo | Detalles | Propiedades |
---|---|---|
Desenfoque | Desenfoca píxeles en una textura mediante una función gausiana. Se puede usar para reducir el detalle de color y el ruido de la textura. Entrada: UV : float2 Las coordenadas de la textura para probar. Salida: Output : float4 El valor de color difuminado. |
Textura El registro de textura asociado a la muestra que se usa durante el desenfoque. |
Desaturar | Reduce la cantidad de color en el color especificado. A medida que se elimina color, el valor de color se aproxima a su equivalente de escala de grises. Entrada: RGB : float3 El color que se va a desaturar. Percent : float El porcentaje de color que se va a quitar, expresado como un valor normalizado en el intervalo [0, 1]. Salida: Output : float3 El color desaturado. |
Luminancia Las ponderaciones asignadas a los componentes de color rojo, verde y azul. |
Detección de bordes | Detecta los bordes de una textura mediante un detector de bordes Canny. Los píxeles del borde se representan como blanco y los píxeles que no son del borde se representan como negro. Se puede usar para identificar los bordes de una textura para poder usar efectos adicionales para tratar los píxeles del borde. Entrada: UV : float2 Las coordenadas de la textura para probar. Salida: Output : float4 Blanco si la textura está en un borde. De lo contrario, negro. |
Textura El registro de textura asociado a la muestra que se usa durante la detección de bordes. |
Dar nitidez | Da nitidez a una textura. Se puede usar para resaltar detalles finos en una textura. Entrada: UV : float2 Las coordenadas de la textura para probar. Salida: Output : float4 El valor de color difuminado. |
Textura El registro de textura asociado a la muestra que se usa durante la operación de dar nitidez. |
Pasos siguientes
Para obtener más información, consulte Crear sombreadores con el Diseñador de sombras en Visual Studio.