【TA 100】2.3 Introducción a las funciones comunes de HLSL

1. Operaciones matemáticas básicas

● max(a, b)
○ Devuelve el mayor
● min(a, b)
○ Devuelve el menor
● mul(a, b)
○ Multiplica dos vectores, frecuentemente utilizado en operaciones matriciales
● abs(a)
○ Devuelve el valor de a Valor absoluto
● round(x)
○ Devuelve el entero más cercano a x
● sqrt(x)
○ Devuelve la raíz cuadrada de x
● rsqrt(x)
○ Devuelve el recíproco de la raíz cuadrada de x
● grados(x)
○ Convierte radianes a ángulos
● redianos (x)
○ Convertir ángulos a radianes
● ruido (x)
○ Función de ruido
○ Pase las coordenadas de uv como x y devuelva aleatoriamente un valor de [0,1], y obtendrá un mapa de ruido
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

2. Funciones de pares de potencias y derivadas parciales

● pow (x, y)
○ x elevado a la potencia y (tanto x como y pueden ser variables independientes o números específicos) → xyx^yXy
● exp(x)
○ Devuelve la función exponencial con e como base →exe^xmix
● exp2 (valor x)
○ Devuelve la potencia con 2 como base y x como exponente →2 x 2^x2x
● ldexp(x, exp)
○ Devuelve el producto de 2 elevado a la potencia de exp →x ∗ 2 expx*2^expX2e xp
● log(x)
○ Devuelve el logaritmo en base e del valor especificado →lnx lnxl n x
● log10(x)
○ Encuentre el logaritmo en base 10 →log 10 x log_{10}xiniciar sesión _10x
● log2(x)
○ Encuentra el logaritmo con base 2 →log 2 x log_{2}xiniciar sesión _2x
● frexp (x, out exp)
○ Descomponer números de punto flotante en mantisa y exponente. El valor de retorno
de Descompuesto
■ por ejemplo: el número 1,2 se divide en dos partes, la mantisa es 12 y el exponente es 0,1
○ palabra clave out: exp también se pasará como valor de retorno, lo que significa que esta función tiene dos valores de retorno.
○ Si el parámetro x es 0, tanto la mantisa como el exponente de esta función devuelven 0

3. Funciones trigonométricas e hiperbólicas

● sin(x), cos(x), tan(x)
○ Funciones trigonométricas (radianes: 1°=π/180 rad)
● asin(x), acos(x), atan(x)
○ Funciones trigonométricas inversas
● sincos (x, out s, out c)
○ Devuelve el seno y coseno de x
● tan(y,x)
○ Devuelve la tangente de y/x
● atan2(y,x)
○ Devuelve el arco tangente de y/x
● Hiperbólico tangente Coseno
○ sinh(x) devuelve el seno hiperbólico de x → ( ex − e − x ) / 2 (e^{x}-e^{-x})/2miXmix )/2
○ cosh(x) devuelve el coseno hiperbólico de x →( ex + e − x ) / 2 (e^{x}+e^{-x})/2miX+mix )/2
○ tanh(x) devuelve el seno hiperbólico de x →( ex − e − x ) / ( ex + e − x ) (e^{x}-e^{-x})/(e ^ {x}+e^{-x})miXmix )/miX+mi−x _

4. Clase de rango de datos

● ceil(x)
○ Devuelve el entero más pequeño >=x (redondeado hacia arriba)
● floor(x)
○ Devuelve el entero más grande <=x (redondeado hacia abajo)
● step(x, y)
○ x<=y devuelve 1 (verdadero ), de lo contrario se devuelve 0
● saturar(x)
○ Devuelve un valor que limita x al rango [0,1]
● abrazadera(x, min, max)
○ Limita x al rango [min, max] Si el valor es menor que min, se devolverá min. Si es mayor que max, se devolverá max.
● fmod(x, y)
○ Devuelve el resto de x a y
● frac(x)
○ Toma la parte decimal de x
● modf (x, out ip)
○ Will x se dividirá en partes decimales y enteras (la ip de salida es la parte entera y el valor de retorno es la parte decimal)
● lerp (x, y, s)
○ Interpola entre xey según a s, devuelve x ∗ (1 − s) + y ∗ sx*(1-s)+y*sX( 1s )+ys
● smoothstep(min, max, x)
○ Si x está en el rango [min, max], devuelve una interpolación suave de Hermite entre [0, 1], usa smoothstep para crear directamente una transición suave entre los dos valores
○ Mezcla suave dos colores

5. Clase de sentencia de tipo

● all(x)
○ Determina si todos los componentes de la cantidad especificada son distintos de cero, devuelve verdadero si son distintos de cero; de lo contrario, devuelve falso (procesamiento de escalares, vectores o matrices definidos por datos booleanos, enteros o de punto flotante)
● clip(x)
○ Si el valor de entrada es menor que cero, descarta el píxel actual. A menudo se usa para determinar el rango (no solo para 0, el valor de retorno es nulo) ○ A menudo se
usa en Alpha Test, si cada componente representa la distancia al plano, también se puede utilizar Simular el plano de corte
● sign(x) Devuelve el signo de x
○ Devuelve -1 si x es menor que cero
○ Devuelve 0 si x es igual a cero
○ Devuelve 1 si x es mayor que cero
● isinf(x)
○ Si el argumento x es +INF o - INF (infinito + infinito sigue siendo infinito, 0x3f3f3f3f), devuelve verdadero; de lo contrario, devuelve Falso
● isfinito (x)
○ Juzgue que el parámetro x es finito, es decir , acotado, que es lo opuesto a isinf (x)
● isnan (x)
○ Si el parámetro x es NAN (no un número), devuelve verdadero; de lo contrario, devuelve falso

6. Clases de vectores y matrices.

● longitud(v)
○ Devuelve la longitud del vector
● normalizar(v)
○ Normalización de vector, normalización de vector de dirección x/longitud(x)
● distancia(a,b)
○ Devuelve la distancia entre dos vectores, no Dos vectores paralelos deberían ser 0, que se expresa aquí como la suma de los cuadrados de las diferencias entre los componentes bajo el signo raíz
● punto(a,b)
○ Producto escalar
● cruz(a,b)
○ Producto cruzado
●determinante(m)
○ Retorno Especifica el valor determinante de una matriz de punto flotante
● transponer(m)
○ Devuelve la matriz transpuesta de la matriz m

7. Clase de operación ligera

● reflejar(i,n)
○ La luz reflejada con i como vector incidente y n como dirección normal
● refractar(i,n,ri)
○ La luz refractada con i como vector incidente n como dirección normal y ri como el índice de refracción
● lit(n_dot_l,n_dot_h,m)
○ Escalar de entrada (normal, luz, vector de medio ángulo h, coeficiente de reflexión especular m)
○ Vector de iluminación de retorno (luz ambiental, luz difusa, reflexión de resaltado especular, 1)

8. Búsqueda de texturas

1. Algunos puntos a tener en cuenta:
Clasificación de la búsqueda de texturas
● Todas las funciones de búsqueda de texturas se pueden dividir en tres categorías: ordinaria, diferencial y proyectada.

—1.1 Función derivada parcial ddx ddy (microclasificación)
● Si el parámetro de la función ddx es myVar y el píxel correspondiente a este parámetro se registra como p(i,j), entonces el valor de ddx(myVar) es “pixel p (i+ 1, j) menos myVar" (lo mismo para ddy)
● Si los parámetros de entrada de las funciones ddx y ddy son constantes, el valor de retorno de la función siempre será 0.
● 1. Las funciones ddx y ddy se utilizan para encontrar la diferencia de un determinado atributo entre píxeles adyacentes;
● 2. Los parámetros de entrada de las funciones ddx y ddy suelen ser coordenadas de textura;
● 3. Las funciones ddx y ddy devuelven los atributos del píxel adyacente. claves Diferencia; el significado físico de la derivada parcial es: la velocidad del cambio en una determinada dirección.
○ 4 Entonces lo que ddx busca es el cambio en el valor de un determinado atributo de dos píxeles adyacentes
en
La instrucción ddy actúa en el nivel de píxel, por lo que las funciones ddx y ddy solo son compatibles con programas de fragmentos.
● Cuando mipmap elige qué nivel de mipmap a utilizar, se basa en derivadas parciales.

1.2 Clase de proyección
● Textura de proyección se refiere a proyectar la textura en la escena como una diapositiva. El uso de la tecnología de textura proyectada requiere calcular las coordenadas de la textura proyectada y luego usar las coordenadas de la textura proyectada para realizar consultas. La función que utiliza coordenadas de textura proyectada
para consultar es la función de consulta de textura proyectada.

1.3 Clase de mapa Mip
● lod toma muestras de un mapa mip
● el sesgo vuelve a muestrear después del sesgo (determinado por t, w)
● grad usa la diferenciación para seleccionar la capa mip para el muestreo

Búsqueda de texturas 1D (casi nunca se usa)
● tex1D(s, t) La búsqueda de texturas 1D ordinaria devuelve el color4 del muestreador de texturas en la posición escalar t
● tex1D(s,t,ddx,ddy) Consulta una textura 1D usando diferenciales, t y Ambos ddxy son vectores
● tex1Dlod(s, t) Utilice LOD para encontrar el color4 de la textura s en la posición tw
● tex1Dbias(s, t) Encuentre la textura unidimensional después de sesgar una determinada capa MIP determinada por tw
● tex1Dgrad(s, t,ddx,ddy) Use diferenciación y especifique la búsqueda de textura unidimensional de la capa MIP
● ex1Dproj(s, t) Proyecte la textura en la escena como una diapositiva. Primero use la tecnología de textura proyectada para calcular las coordenadas de la textura proyectada t (coordenada tw dividida por el valor de perspectiva) y luego consulta usando las coordenadas de textura proyectadas

Búsqueda de textura 2D
● tex2D(s, t) La búsqueda de textura 2D ordinaria devuelve el color del muestreador de textura s en la posición del vector t
● tex2D(s,t,ddx,ddy) Utilice consulta diferencial para consultar textura 2D, t y ddxy son ambos vectores
● tex2Dlod(s, t) Utilice LOD para encontrar el color4 de la textura s en la posición tw
● tex2Dbias(s, t) Encuentre la textura bidimensional después de sesgar una determinada capa MIP determinada por tw
● tex2Dgrad(s,t,ddx ,ddy ) Use diferenciación y especifique la búsqueda de textura 2D de la capa MIP
● tex2Dproj(s, t) Para proyectar la textura en la escena como una diapositiva, primero use la tecnología de textura proyectada para calcular la coordenada de textura proyectada t (coordenada tw dividida por el valor de perspectiva) y luego consultar usando coordenadas de textura proyectadas

Búsqueda de texturas 3D
● tex3D(s, t) La búsqueda de texturas 3D ordinaria devuelve el color del muestreador de texturas s en la posición del vector t
● tex3D(s,t,ddx,ddy) Utilice diferencial para consultar texturas 3D, t y ddxy son ambas vectores
● tex3Dlod (s, t) Utilice LOD para encontrar el color4 de la textura s en la posición tw
● tex3Dbias(s, t) Encuentre la textura tridimensional después de sesgar una determinada capa MIP determinada por tw
● tex3Dgrad(s,t, ddx,ddy) Usar diferencial Y especificar la búsqueda de textura tridimensional de la capa MIP
● tex3Dproj(s, t) Para proyectar la textura en la escena como una diapositiva, primero use la tecnología de textura proyectada para calcular la coordenada de textura proyectada t ( coordenada tw dividida por el valor de perspectiva), y luego use las coordenadas de textura proyectadas para consultar

Búsqueda de textura de cubo La
textura de cubo registra información en tres direcciones, desde adentro hacia afuera
● texCUBE(s,t) Devuelve el color del muestreador de textura s en la posición del vector t
● texCUBE(s,t,ddx,ddy) Usa diferencial para consultar el textura dimensional de cubo, tanto t como ddxy son vectores
● texCUBEDload(s,t) Utilice LOD para encontrar el color4 de la textura s en la posición tw
● texCUBEbias(s,t) Encuentre la textura del cubo después de sesgar una determinada capa MIP determinada por tw
● texCUBEgrad (s,t,ddx,ddy) Búsqueda de textura de cubo usando diferenciación y especificando la capa MIP
● texCUBEproj(s,t) Búsqueda de textura de cubo usando proyección

2. Prueba de uso real de ddx ddy

● Como se mencionó anteriormente, ddx y ddy buscan el cambio de un cierto valor de atributo de dos píxeles adyacentes en las direcciones x e y. ● Esto es lo que dijo
"GAMES101" cuando habló de la parte del mapa mip, píxeles adyacentes (píxeles) La distancia ( diferencia) entre ellos corresponde a la distancia en la textura (texel).
● Encuentre aleatoriamente un sombreador que muestree la textura. El lado izquierdo es el resultado del muestreo normal. Como comparación
● En el lado derecho, se declara un rango de coeficientes que modifica la diferencia en el sombreador y se agrega una parte ddx ddy a el sombreador de fragmentos.

   fixed4 frag (v2f i) : SV_Target
            {
    
    
                // sample the texture
                fixed4 col = tex2D(_MainTex, i.uv);
                col += (ddx(col), ddy(col)) * _Float;
                // apply fog
                // UNITY_APPLY_FOG(i.fogCoord, col);
                return fixed4(col.rgb,1.0);
            }

Por favor agregue la descripción de la imagen.

Supongo que te gusta

Origin blog.csdn.net/weixin_45810196/article/details/131067530
Recomendado
Clasificación