Nodes aspectors¶
Cycles aplica una sèrie d’optimitzacions de node aspector tant en temps de compilació com d’execució. En explotar-los és factible dissenyar complicats grups de nodes estil «Uber Shader» que incorrin en un sobretemps de revelat mínim per a funcionalitats en desús.
Optimitzacions de nodes¶
Com a primer pas en la preparació d’un node aspector per a l’execució, Cycles expandeix tots els grups de nodes, com si fes ús d’una eina de Desagrupar i descarta els elemtns que són només de la IU com ara marcs i nodes de redirecció.
Després d’això, aplica algunes transformacions òbvies, per exemple, pot (la llista no és exhaustiva):
Reemplaçar els següents nodes amb el resultat constant de la seva avaluació si totes les seves ingressions es determina que siguin constants:
RGB, Valor, Mesclar RGB, Matemàtica, Matemàtica vectorial, RGB a BN, Gamma, Contrast brillant, Invertir, Separar/combinar RGB/XYZ/TSV, Cos Negre, Corbes RGB, Corbes vectorials, Gradacions de color.
Detecta els nodes Mesclar RGB, Matemàtica i Matemàtica vectorial que esdevenen no-op (sense Retenció) o s’avaluen a 0 com a resultat de la suma, resta, multiplicació, divisió o producte escalar/vectorial amb una ingressió coneguda constant de 0 o 1 i ho substitueixen per l’enllaç d’entrada apropiat o resultat constant.
Elimineu els nodes Mesclar RGB (sense Retenir) i Mesclar aspector quan se sap que el Factor és 0 o 1 reemplaçant amb el valor d’ingressió o enllaç apropiat.
Elimina nodes Mesclar RGB no-op (excepte Cremar color, Bloquejar color, Aclarir o Retenir habilitat), Invertir, Corbes RGB i Corbes Vectorials amb Factor conegut zero.
Elimineu els nodes aspectors Emissiu i Rerefons que no emeten cap llum i afegiu nodes Aspectors amb una o ambdós arguments d’ingressió sense ocupar.
Eliminar el Relleu amb una entrada constant de l’Alçada, fent ús de la seva entrada de Normal o alternativament la Normal de geometria. És útil per implementar entrades de grup de nodes que per defecte es posen a normal mitjançant l’encaminament a través d’un Relleu no-op abans d’aplicar-hi els càlculs.
Substitueix els nodes d'Atribut de ls Capa de visió pel valor de l’atribut avaluat (és constant dins de tota la Capa de revelat).
Combina en una sola instància múltiples còpies del mateix node amb les mateixes entrades.
Finalment, s’eliminen tots els nodes que acabin sense connectar-se directament o indirectament al node d’Egressió.
Optimitzacions de temps d’execució¶
Quan s’executen aspectors, s’aplica una optimització especial als nodes Mesclar aspector. Si el Factor avalua a 0 o 1, no s’avaluarà cap node que només sigui accessible a través de la branca no utilitzada del de mescla.
Això pot reduir substancialment el cost de rendiment de combinar múltiples materials d’un aspector amb un Atribut de color, textura, o una altra ingressió utilitzada com a alternador.
Llenguatge d’aspecció obert¶
Si s’opta pel Llenguatge d’aspecció obert com a basament del revelat, els nodes aspectors es tradueixen al codi OSL i després es compilen i executen en l’entorn d’execució d’OSL. Dins el procés, hi aplica el seu propi joc d’àmplies optimitzacions, tant en temps de compilació com d’execució.
el Llenguatge d’aspecció obert pot optimitzar els nodes de Protocol si les seves sortides no estan en ús o són constants, fins i tot si els seus aspectors OSL tenen efectes secundaris com el traçat de depuració i el passatge de missatges, que pot resultar confús. Per aquesta raó, el passatge de missatges amb setmessage i getmessage generalment no s’hauria d’utilitzar per a avançar informació cap a la gràfica; s’ha de preferir de passar informació explícitament a través dels borns.