Notas de estudio 19

Continuación de la Representación 8 anterior

En cuanto a la diferencia entre metales y no metales, todos pueden tener reflejos especulares, y los reflejos especulares de los metales están dominados por un dominado, mientras que los no metales no son así, también tienen reflejos difusos. Esto se refleja principalmente en el hecho de que toda su bola todavía tiene el brillo de Lambert cuando se enfrenta a la luz y la oscuridad cuando se enfrenta a la luz, mientras que el metal no tiene este fenómeno en absoluto y el brillo general es relativamente uniforme.

En cuanto al color, lo principal es que las mechas metálicas tendrán color, ya sea directo o indirecto.

En primer lugar, considere cuál es la esencia de la proyección para bloquear la luz para usted, de modo que reciba menos luz, de modo que su brillo general sea más oscuro que la parte que no está en la sombra.

El punto culminante aquí sigue siendo el punto culminante ambiental, y solo se ve afectado por la cantidad de luz ambiental en este momento.

Como arriba, una bola metálica está bloqueada por un pilar. Aunque está bloqueada, nuestra luz ambiental proviene de todas las direcciones, por lo que solo puede bloquear parte de ella. Lo que consideramos aquí es el punto culminante, que es la luz de reflexión especular completa. Es decir, en cada punto que vemos su punto culminante, su luz incidente debe estar en una dirección específica. Si la luz en esta dirección específica está bloqueada, entonces el resaltado en este punto será oscuro, de lo contrario no se verá afectado. en absoluto.

Y aquí de hecho se está oscureciendo. La parte oscurecida son los pilares reflejados en la bola de metal. Si apuntamos un poco de luz, podemos ver la luz reflejada por la superficie especular. Esto se ve naturalmente afectado por el color del propio pilar (que determina cómo refleja la luz) y sus condiciones de luz.

Así que aquí hay un resultado físicamente correcto.

Considera las impurezas.

Esta es la discusión de algunas sondas. Cuando la posición no está en el medio, necesitamos hacer una separada para obtener un efecto más realista.

Pero, de hecho, no es correcto hacer uno solo. Lo que en realidad queremos obtener es la luz ambiental alrededor de cada fragmento. Pero si tenemos una sonda para cada objeto, todos nuestros fragmentos comparten esta, y cada fragmento se establecerá de manera predeterminada. está en la posición de la sonda central, por lo que el registro no es completamente preciso, pero este error ya no se considera y el efecto ya es bastante bueno.

Cuando reemplazamos la pelota con una superficie plana, el efecto es como el anterior. De hecho, esta desviación de la realidad es bastante grande.

Las razones de la formación anterior son en realidad similares al análisis anterior de la pelota. Solo necesitamos analizar. De acuerdo con la situación real, observamos un punto determinado y cuál debería ser su trayectoria de luz reflejada. Y está bien cuando el muestreo real se hace aquí.

Por ejemplo, por qué se vuelve más grueso, tome:

Para la parte que no debería reflejar el pilar aquí, nuestra línea de visión está más o menos frente a él ahora, por lo que cuando calculemos su reflejo, pensaremos que está en el centro, y luego el pilar se mostrará después de muestrear el cubo. Y solo aquellos puntos de reflexión cuyo ángulo de visión original esté más sesgado hacia los lados

Por ejemplo, en el punto límite aquí, nuestra línea de visión está conectada con el pasado, y la luz incidente debe provenir de la parte superior derecha. Cuando este punto se coloca en el centro para el muestreo, el muestreo se realiza desde la parte superior derecha, por lo que la muestra no puede llegar al pilar.

Y aquellos con ángulos de deflexión relativamente pequeños no deben reflejarse en los pilares, pero cuando se colocan en el centro, se muestrearán en los pilares, por lo que se muestrean más áreas en los pilares, por lo que los pilares se vuelven más gruesos cuando se ven.

Además, los pilares se acortan bajo el ángulo de visión actual.

Desde este punto de vista, se vuelve más largo y siempre se analiza de esta manera.

Por supuesto, la posición de la sonda colocada aquí también tendrá cierta influencia, ya sea que esté frente al pilar o no.

Cuando se cambia el ángulo de visión, surgen problemas mayores, pero todos se analizan de la misma manera.

De hecho, la aproximación aquí quiere tener un buen efecto.De hecho, hay dos situaciones: o el objeto reflejado está lo suficientemente lejos, por lo que no habrá demasiado error si se considera que el fragmento está muestreado en el centro.

O la pelota o la superficie son lo suficientemente pequeñas, y cuando se colocan en el centro, incluso si existe tal situación que no está en el centro pero se considera que es el centro, la desviación no será grande debido a la pequeña distancia

Esta es también la razón por la que el efecto de la pelota es mejor que el de la superficie. es pequeño.

En resumen, la razón de todo esto es que al muestrear, traducimos nuestra luz de muestreo real al centro antes del muestreo, lo que genera algunos errores.

Necesitamos usar la línea azul de abajo para inferir verde en lugar de usar azul.

Eso es lo que dice aquí.

En general, es el punto de intersección.

Pero el marco negro exterior es nuestro ideal, y no tiene el tamaño real, pero su tamaño real puede ser el que sea.

La modificación del desplazamiento del cuadro de la sonda hará que todo el cuadro se desplace. Tenga en cuenta que al muestrear, el entorno siempre se muestrea en la posición de la bola. El efecto del desplazamiento del cuadro es que los objetos en el cuadro han cambiado. La función de la caja es Deje que los objetos dentro de la caja usen esta sonda.

(119 mensajes) Unity Shader-reflection effect (CubeMap, Reflection Probe, Planar Reflection, Screen Space Reflection)_puppet_master's blog-CSDN blog_unity ground reflection

Hay muchas cosas que vale la pena mencionar en el blog. Una réplica del efecto del juego.

(119 mensajes) Unity Shader!!!_puppet_master's Blog-CSDN Blog

Después de que corrijamos la dirección de la reflexión como se describió anteriormente, en realidad habrá un requisito, es por eso que la caja de la sonda debe ser consistente con el límite de nuestra escena (para garantizar esta consistencia, a veces nuestra sonda necesita colocar Entonces la escena está en el centro, y el centro después de la alineación del cuadro puede no ser el centro de la escena. En este momento, se necesita la opción de desplazamiento que no se entendió antes).

Volviendo a esta imagen, en primer lugar, no hay duda de que la luz azul de abajo es la luz reflejada correcta, pero la pregunta es: la imagen en la intersección de la luz azul y nuestro cuadro de mapa de cubos es realmente la imagen que ve el reflejo real?

Este no es necesariamente el caso.

Si hay una bola morada en el espacio, entonces la imagen de la bola se almacena en el punto de intersección en el mapa de cubos, pero a juzgar por la ruta reflejada a continuación, esto no debería verse desde esta perspectiva en absoluto.

además:

Si es así, asumiendo que no hay nada entre la bola morada y el punto central, entonces la imagen en la intersección registrará la imagen de la bola nuevamente, pero si extendemos la línea de dirección azul debajo, lo que veremos no será esta bola morada. , este tampoco es el caso.

Entonces, ¿cuándo es correcto, es decir, cuando la bola morada se coloca en el borde de la caja, de modo que el mapa de cubos almacene lo que realmente se ve en la dirección de reflexión azul?

Esto también requiere que los límites de todo el cuadro y el mapa coincidan, y que no haya nada dentro de los límites.

para

esta opción. La diferencia es lo que está fuera de la caja.

Si decimos que parte de nuestro espejo está dentro del área de la sonda y parte está fuera de la sonda. De acuerdo con nuestro algoritmo anterior, creemos que todas las cosas muestreadas por el mapa de cubos se colocan en el borde del rango de la sonda, lo que no tiene mucho efecto en el efecto del skybox.

Si no habilita la opción de proyección de caja, simplemente siga el proceso y podemos obtener las siguientes conclusiones:

Esta parte está fuera de rango, el fragmento que calculan está fuera y el tiempo mínimo de cálculo es un número negativo, por lo que el mapa de cubos que muestrean es la mitad inferior de la caja completa, que se refleja en el suelo en lugar del cielo, por lo que El efecto aquí es obviamente incorrecto.

 

Y si está marcado,

Lo anterior no está fuera de rango, observe atentamente la diferencia con lo siguiente fuera de rango:

Hay estiramiento aquí, y una mirada más cercana al borde derecho muestra que el lado derecho está un poco agrandado.

Entonces, la conclusión es verificarlo. Después de que exceda el rango, ampliará el lado correspondiente del mapa de cubos. De hecho, esta también es la función de esta opción, que es garantizar que la parte más allá del rango de la sonda aún refleje el información de posición correcta del mapa de cubos. Es decir, el rango superior aún refleja la información almacenada en la mitad superior del mapa de cubos, y no se dirá que se derriba como la refracción. (Sin embargo, debido a que la posición está fuera del límite y el almacenamiento de cubemap se considera información sobre el límite, el efecto de reflejar objetos en el límite fuera del límite también es un poco extraño y el resultado final puede no ser correcto .Puede ser que su objeto en sí esté fuera del límite, él piensa que está en el límite, y nuestro reflejo lo refleja fuera del límite, lo cual puede ser correcto.Pero esta situación no debería estar involucrada, quien pone el espejo fuera del marco en el ocio.)

Reflexión de unidad desde la entrada hasta la desviación (BoxProjection to Fake Interior) - Zhihu (zhihu.com)

Aquí, siempre que el espejo esté dentro del rango de la sonda, el efecto será correcto, y si desea el estado de conexión simétrica anterior, debe ajustar el tamaño con cuidado, porque el pilar debe estar en el límite, y el el espejo debe sufrir con los pilares.

Aquí hay un punto de ajuste: es decir, dejamos que los pilares estén en el límite, y los pilares tienen grosor. ¿Cómo deben estar en el límite para obtener un efecto casi perfecto?

Esto realmente significa que pensamos que está en el límite, si realmente está en el límite, entonces el efecto debe ser completamente correcto.

De hecho, lo es: pensar que está en el límite significa que la superficie que vemos en el punto central está en el límite. Luego, al colocarlo, solo asegúrese de que la superficie que ve en el pasado esté en el límite.

Esta es la respuesta perfecta.

Por supuesto, el suelo no debería aparecer en el espejo aquí, lo que se puede lograr ajustando la altura.

En este momento, el efecto de cambiar el reflejo de la pelota también es bueno, y ha logrado que la pelota tenga diferentes reflejos en diferentes posiciones.

De hecho, esto explica la función de la caja de proyección exterior, es decir, esté marcada o no esta opción, debería corresponder aquí, si está marcada, el componente w será mayor que 0, de lo contrario será menor que 0 .

Así que esta función es: si se corrige o no. (Su función original es permitirnos usar macros, y luego está este juicio condicional en la macro. Pero esta función definitivamente no es solo ese juicio. De acuerdo con nuestra comparación anterior, existen diferencias relacionadas).

Además, el juicio if aquí, la rama if en el sombreador se optimizará, dejando solo un juicio de asignación:

Pero si queremos mantener esta rama, simplemente dígaselo al compilador.

Para tener un mejor efecto de reflejo en el exterior de la caja que acabamos de probar, los dos probados aquí no son perfectos:

Una es expandir directamente el rango, pero dado que el centro de la muestra está dentro de la caja, el efecto de reflexión de las bolas exteriores en su superficie sigue siendo algo dentro, y el efecto es incorrecto:

Otra forma de operar es: agregar una sonda más, pero esto causará problemas en la transición, y la transición es una mutación.

Luego comienza la interpolación:

Pero la redacción anterior es incorrecta. Aquí, el segundo muestreo de textura debe basarse en algunas cosas del primero.

El error que se volvió negro antes, de hecho, después de una cuidadosa consideración, hemos visto esta bola negra antes, es decir, la metalicidad y la suavidad se elevaron a 1, y luego se volvió así. De hecho, la bola del cielo todavía es negra aquí, lo que significa que la bola del cielo no tiene ningún efecto, por lo que el coeficiente de intensidad del reflejo de la luz ambiental aquí se escribe como 0.

Todavía hay un problema aquí, es decir, tenemos dos sondas. Cuando el multiplicador de intensidad en la parte superior se cambia a un valor más pequeño, como la mitad, movemos una pelota en el medio de ellos. Cuando la pelota se mueve al lugar donde se superponen, el brillo de repente se iluminó. No sé el motivo de este problema. Puede cambiar el multiplicador de intensidad anterior para que sea mayor, como 0,9 o más, y 1 está bien.

Lo que es aún más extraño es que cuando ajustamos el multiplicador de intensidad a 0, todo debería ser negro, pero el borde sigue siendo brillante. Impresionado. . . .

Configuraciones de mezcla relacionadas.

Una vez que se completa la mezcla, se considera que el muestreo requiere mucho trabajo y, a veces, no es necesario muestrear el segundo mapa de cubos, por lo que se realiza un juicio entre el muestreo. No hagas trabajos inútiles.

Algunas plataformas se están optimizando aquí y algunas plataformas no se pueden mezclar.

 

Para lograr un efecto de reflejo infinito, el espejo en el suelo debe cambiarse a estático.

Más reflexión

———————————————————————————————————————————————————— ———————————————————————————————————

RENDERIZADO 9

Si desea crear una GUI personalizada, debe usar la operación C#, el proceso de operación general:

Asegúrese de que nuestra clase se herede de ShaderGUI.

Es una nueva versión de la clase GUI.

Después de haber personalizado C#, arrástrelo al material, y si queremos desempeñar un papel, debemos declarar el sombreador:

Esta frase se añade al final del texto.

Después de la declaración, todo lo que queda es anular la función, que determina cómo se mostrará en el panel de materiales.

Aquí queremos imitar el coloreado y la escritura estándar.

Luego, para un solo atributo, primero debe obtener este atributo, de modo que lo que se muestra esté vinculado al valor del atributo.

Luego, para texto o información sobre herramientas, se crea GUIContent.

Para el tinte de color, esto está vinculado a los atributos y debe crearse en combinación con los atributos.

La escala y el desplazamiento son bastante especiales. No necesita crear una variable separada, solo cree una función directamente.

De hecho, aquí se definen tres cosas en una sola línea.Desde la perspectiva de la interfaz de función, estas tres cosas son irrelevantes.

Hay aproximadamente dos tipos de elementos que mostramos en el panel, uno son atributos y el otro es texto complementario.

De hecho, el formato aquí no necesita escribir texto complementario. Es decir, no hay relación entre el texto complementario y los atributos. La creación de atributos aquí requiere objetos de atributos, y luego Unity creará la GUI correspondiente según el tipo. Luego lo complementa agregando un texto al lado.

Para el desplazamiento, es especial, es un atributo, pero es un atributo adjunto a otros atributos, por lo que es un poco especial aquí.

En cuanto a la etiqueta, aquí también se puede realizar una simplificación del paquete. Solo necesita pasar el atributo, de modo que el nombre para mostrar se pueda obtener automáticamente internamente de acuerdo con el atributo, y luego pasar en la información sobre herramientas.

Aquí, lo normal agrega imágenes, etiquetas y escalas de relieve. Todas estas son operaciones básicas. Los atributos y las etiquetas ahora son funciones de llamada, y luego solo obtienen una línea.

Hay una cosa que debe decirse aquí: la escala de relieve del estándar solo se mostrará después de que el mapa normal se haya asignado correctamente, por lo que se puede agregar un juicio aquí.

Hay dos puntos aquí: uno es que cuando el atributo y la etiqueta se obtienen a través de la función y se agregan al editor, la función que usa cambia.

En segundo lugar, se dijo que la descripción de la etiqueta y los atributos son completamente independientes, y esto no está completo. Los parámetros aquí permiten especificar la etiqueta, pero no es necesario especificar el tinte.

¿Quizás especificar una etiqueta para una línea? ?

Entonces aquí logra un efecto de alineación cambiando el nivel de sangría.

En este punto, se completa el primer conjunto de mapas, y el siguiente es el segundo conjunto, y la jugabilidad es la misma.

 

Esta es la estructura general del código, y luego Domain y DoSecondary ellos mismos

En realidad, aquí hay una pregunta sobre la metalicidad, porque nuestro atributo metálico se aplica directamente a todo el modelo, es decir, toda la metalicidad en la superficie de todo el modelo es la misma, lo que afecta el rendimiento del material.

Por lo tanto, aparece el mapa metálico, y para cada texel, se establece un grado de metal específico.

Este tipo de noScaleOffset aquí es inútil, porque todo es para el ShaderGUI predeterminado, y ahora usamos nuestra propia GUI definida.

Después de agregar el mapa de metalicidad aquí, necesitamos cambiar el método de cálculo de metalicidad, por lo que aquí se encapsula una función.

También modifique un poco la GUI.

Esta es la estructura general del código, y luego Domain y DoSecondary ellos mismos

En realidad, aquí hay una pregunta sobre la metalicidad, porque nuestro atributo metálico se aplica directamente a todo el modelo, es decir, toda la metalicidad en la superficie de todo el modelo es la misma, lo que afecta el rendimiento del material.

Por lo tanto, aparece el mapa metálico, y para cada texel, se establece un grado de metal específico.

Este tipo de noScaleOffset aquí es inútil, porque todo es para el ShaderGUI predeterminado, y ahora usamos nuestra propia GUI definida.

Después de agregar el mapa de metalicidad aquí, necesitamos cambiar el método de cálculo de metalicidad, por lo que aquí se encapsula una función.

También modifique un poco la GUI.

Aquí hay otro detalle en la GUI, que es justo lo contrario de la escala de relieve que se procesó antes. Aquí, no hay necesidad de un valor si hay una textura, y el valor se usa si no hay textura.

 

Supongo que te gusta

Origin blog.csdn.net/yinianbaifaI/article/details/127607895
Recomendado
Clasificación