As funções de estado local controlam a renderização ou do estado corrente - ou do estado da primitiva correntemente pega(grabbed). Em Fluxus estado significa significa a forma que as coisas são mostradas, tanto ligando/desligando opções de render, mudando o estilo de diferentes opções, ou alterando a transformação corrente.
Returns void
Empurra uma cópia do estado corrente de desenho para o topo da pilha. O estado de desenho contém informação sobre coisas como cor corrente, transformação e dicas(hints).
Example
(colour (vector 1 0 0)) ; aplica cor corrente pra vermelho (push) ; copia e empurra estado de desenho (colour (vector 0 1 0)) ; aplica cor corrente pra verde (draw-cube) ; desenha um cubo verde (pop) ; esquece estado de desenho antigo ; cor corrente é vermelha de novo.
Returns void
Destrói o estado de desenho corrente, e aplica para o estado corrente o antigo anteriormente empurrado na pilha. O estado de desenho contém informação sobre coisas como cor corrente, transformação e dicas(hints).
Example
(colour (vector 1 0 0)) ; aplica cor corrente pra vermelho (push) ; copia e empurra estado de desenho (colour (vector 0 1 0)) ; aplica cor corrente pra verde (draw-cube) ; desenha um cubo verde (pop) ; esquece estado de desenho antigo ; cor corrente é vermelha de novo.
Returns void
Pega o objeto especificado. Uma vez que o objeto foi pego seu estado pode ser modificado usando os mesmos comandos usados pra ajustar o estado de desenho atual. (ungrab) precisa ser usado para retornar ao estado de desenho normal. "grabbing" também pode ser "pilhado", neste caso (ungrab) pula para a próxima primitiva pega.
Example
(colour (vector 1 0 0)) ; aplica a cor atual para vermelho (define mycube (build-cube)) ; faz um cubo vermelho (grab mycube) (colour (vector 0 1 0)) ; aplica a cor do cubo como verde (ungrab) ; retorna ao estado normal
Returns void
Solta o objeto pego atualmente, e ou retorna ao estado de desenho normal, ou tira a ultima primitiva pega do topo da pilha.
Example
(colour (vector 1 0 0)) ; aplica a cor atual para vermelho (define mycube (build-cube)) ; faz um cubo vermelho (grab mycube) (colour (vector 0 1 0)) ; aplica a cor verde ao cubo (ungrab) ; retorna ao estado normal
Returns void
Aplica a transformação corrente às posições dos vértices do objeto dado e ajusta sua tranformação para identidade.
Example
(rotate (vector 45 0 0)) (define mycube (build-cube)) ; faz um cubo com uma rotação (with-primitive mycube (apply-transform)) ; aplica a rotação aos pontos do cubo
Returns void
Ajusta a opacidade do estado de desenho atual, ou da primitiva pega atualmente.
Example
(opacity 0.5) (define mycube (build-cube)) ; faz um cubo semi-transparente.
Returns void
Ajusta a opacidade das beiradas da malha no estado ou da primitiva atual.
Example
(hint-none) (hint-wire) (backfacecull 0) (line-width 5) (wire-colour (vector 1 1 1)) (wire-opacity 0.5) (build-cube) ; makes a half transparent wireframe cube
Returns void
Ajusta o brilho do estado atual de desenho, ou da primitiva atualmente pega. Esse valor ajusta a densidade do brilho especular.
Example
(shinyness 100) (specular (vector 1 1 1)) ; ajusta a cor especular (define mysphere (build-sphere 10 10)) ; makes a shiny cube
Returns void
Ajusta a cor do estado de desenho atual, ou a primitiva atualmente pega.
Example
(colour (vector 1 0.5 0.1)) ; mmm laranja... (define mycube (build-cube)) ; faz um cubo laranja
Returns vetor
Converte a cor RGB para HSV.
Example
(rgb->hsv (vector 1 0.5 0.1))
Returns vetor
Converte a cor HSV para RGB
Example
(clear) (for* ((x (in-range 0 10)) ; builds a 10x10 HSV colour pattern (y (in-range 0 10))) (identity) (translate (vector x y 0)) (colour (hsv->rgb (vector (/ x 10) (/ y 10) 1))) (build-cube))
Returns void
Ajusta a cor do "wire frame" do estado de desenho atual, ou a primitiva atualmente pega. Visível com (hint-wire) na maioria das primitivas.
Example
(wire-colour (vector 1 1 0)) ; ajusta a cor do fio como amarelo (hint-wire) (define mycube (build-cube)) ; faz um cubo com wireframe amarelo
Returns void
Ajusta a cor especular do estado de desenho corrente, ou o objeto atualmente pego.
Example
(specular (vector 0 0 1)) ; ajusta azul como a cor especular (define mysphere (build-sphere 10 10)) ; faz uma esfera azul brilhante.
Returns void
Ajusta a cor ambiente do estado de desenho corrente, ou a primitiva atualmente pega.
Example
(ambient (vector 0 0 1)) ; ajusta a cor ambiente como azul (define mysphere (build-sphere 10 10)) ; faz uma chata esfera azul
Returns void
Ajusta a cor emissiva do estado de desenho atual, ou da primitiva atualmente pega.
Example
(emissive (vector 0 0 1)) ; ajusta a cor emissiva para azul (define mysphere (build-sphere 10 10)) ; faz uma esfera azul brilhante
Returns void
Ajusta a transformação do estado de desenho para identidade, no estado da pilha, ou a primitiva atualmente pega.
Example
(define mycube (with-state (scale (vector 2 2 2)) ; ajusta o tamanho atual pro dobro em cada dimensão (build-cube))) ; faz um cubo aumentado (with-primitive mycube (identity)) ; apaga a transformação e coloca o cubo de volta ao seu ; estado original
Returns void
Concatena (multiplica) uma matriz para o estado de desenho atual ou primitiva pega.
Example
(define mymatrix (mrotate (vector 0 45 0))) ; faz uma matriz (concat mymatrix) ; concat ela no estado atual (build-cube) ; faz um cubo com esta rotação
Returns void
Aplica uma translação ao estado de desenho atual ou primitiva pega
Example
(translate (vector 0 1.4 0)) ; translada a transformação atual pra ; cima um pouco (build-cube) ; constrói um cubo com esta transformação
Returns void
Aplica uma rotação ao estado de desenho atual ou primitiva pega.
Example
(rotate (vector 0 45 0)) ; vira 45 graus no eixo Y (build-cube) ; constrói um cubo com esta transformação
Returns void
Aplica uma escalagem ao estado de desenho atual ou primitiva pega.
Example
(scale (vector 0.5 0.5 0.5)) ; escala a tranformação atual para ; metade do tamanho (build-cube) ; constrói um cubo com esta transformação
Returns vetor-matriz
Retorna uma matriz representando o estado de tranformação corrente ou para a primitiva pega.
Example
(clear) ; build a hierarchy (define a (with-state (colour (vector 1 0.5 0.5)) (build-cube))) (define b (with-state (colour (vector 0.5 1 0.5)) (parent a) (translate (vector 2 0 0)) (build-cube))) (define c (with-state (colour (vector 0.5 0.5 1)) (parent b) (translate (vector 2 0 0)) (build-cube))) (define (animate) ; animate the heirarchy (with-primitive a (rotate (vector 0 0 (sin (time))))) (with-primitive b (rotate (vector 0 0 (sin (time))))) (with-primitive c (rotate (vector 0 0 (sin (time))))) ; position a yellow sphere with c's local transform (with-state (concat (with-primitive c (get-transform))) (opacity 0.5) (colour (vector 1 1 0)) (draw-sphere)) ; position a purple sphere with c's global transform (with-state (concat (with-primitive c (get-global-transform))) (opacity 0.5) (colour (vector 1 0 1)) (draw-sphere))) (every-frame (animate))
Returns matriz-vetor
Retorna uma matriz representando a transformação global atual para a primitiva atual
Example
(clear) ; build a hierarchy (define a (with-state (colour (vector 1 0.5 0.5)) (build-cube))) (define b (with-state (colour (vector 0.5 1 0.5)) (parent a) (translate (vector 2 0 0)) (build-cube))) (define c (with-state (colour (vector 0.5 0.5 1)) (parent b) (translate (vector 2 0 0)) (build-cube))) (define (animate) ; animate the heirarchy (with-primitive a (rotate (vector 0 0 (sin (time))))) (with-primitive b (rotate (vector 0 0 (sin (time))))) (with-primitive c (rotate (vector 0 0 (sin (time))))) ; position a yellow sphere with c's local transform (with-state (concat (with-primitive c (get-transform))) (opacity 0.5) (colour (vector 1 1 0)) (draw-sphere)) ; position a purple sphere with c's global transform (with-state (concat (with-primitive c (get-global-transform))) (opacity 0.5) (colour (vector 1 0 1)) (draw-sphere))) (every-frame (animate))
Returns void
Parenteia a primitiva correntemente pega à primitiva pai dada. A primitiva corrente vai ser agora movida junto com o pai por adquirir todas as suas transformações.
Example
(define parent-prim (build-cube)) ; make a parent cube (translate (vector 2 0 0)) ; move a bit in x (parent parent-prim) ; set parent-prim as the current parent (define child-prim (build-cube)) ; make a child cube (grab parent-prim) (rotate (vector 0 45 0)) ; the child will now be moved by this transform in addition to its own (ungrab)
Returns void
Ajusta a largura da linha (em espaço de tela) do estado de desenho corrente, ou da primitiva correntemente pega, Afeta wireframe e afins.
Example
(line-width 5) (hint-wire) (build-sphere 10 10) ; faz uma esfera com um denso wireframe
Returns void
Ajusta o tamanho do ponto (em espaço na tela) do estado de desenho corrente, ou da primitiva pega. Afeta a renderização de pontos e particulas no hardware.
Example
(point-width 5) (hint-points) (build-sphere 10 10) ; faz uma esfera com pontos grossos
Returns void
Ajusta o modo de mistura do estado de desenho corrente, ou da primitiva pega. Esse é o modo que o alpha é composto no superficie renderizada.
Example
; list out all the possible blendmodes (define src-blend (vector 'zero 'one 'dst-color 'one-minus-dst-color 'src-alpha 'one-minus-src-alpha 'dst-alpha 'one-minus-dst-alpha 'src-alpha-saturate)) (define dst-blend (vector 'zero 'one 'src-color 'one-minus-src-color 'src-alpha 'one-minus-src-alpha 'dst-alpha 'one-minus-dst-alpha)) ; picks a random element (define (pick-rnd-item l) (vector-ref l (random (vector-length l)))) ; make lots of random spheres (define (rnd-sphere n) (push) (hint-depth-sort) (opacity 0.5) (colour (vector (flxrnd) (flxrnd) (flxrnd))) ; set a random blendmode (blend-mode (pick-rnd-item src-blend) (pick-rnd-item dst-blend)) (translate (vector (flxrnd) (flxrnd) (flxrnd))) (scale (vector 0.1 0.1 0.1)) (build-sphere 10 10) (pop) (if (zero? n) 0 (rnd-sphere (- n 1)))) (clear) (clear-colour (vector 0.5 0.5 0.5)) (rnd-sphere 100)
Returns void
Ajusta as dicas pra renderizar como solid no estado de desenho corrente, ou a primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.
Example
(hint-solid) ; esse é o estilo de render original então não deve ; muito estimulante (build-cube) ; faz um cubo renderizado sólido
Returns void
Ajusta o render para wireframe no modo de estado corrente, ou da primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.
Example
(hint-wire) (build-cube) ; faz um cubo em wireframe
Returns void
Ajusta as dicas de render para fios pontilhados no estado de desenho ou primitiva atual.
Example
(hint-none) (hint-wire-stippled) (build-cube) ; make a stippled wirefame cube
Returns void
Ajusta as dicas de render para ativar frustum culling no estado de desenho, ou primitiva atual. Dicas de render muda a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou não ter efeito em certos tipos de primitivas, por isso o nome dica. Quando usar frustum culling, certifique-se de chamar (recalc-bb) na primitiva também.
Example
(hint-frustum-cull)
Returns void
Se o estado de transformação atual contém uma escalagem, as normais transformadas podem não ser unitárias em tamanho, resultando em problemas indesejáveis em relação à iluminação. (hint-normalise) faz todas as normais serem de tamanho unitário depois de terem sido transformadas. Isto é requerido se o estado de desenho atual contém escalagem não uniforme.
Example
(clear) (hint-normalise) (build-cube) ; non uniform scaling (with-primitive (build-cube) (translate #(.5 0 0)) (scale #(3 1 1)) (translate #(.5 0 0))) ; uniform scaling (with-primitive (build-cube) (translate #(0 0 2)) (scale 2))
Returns void
Desativa blending. Útil se objetos com blending render estão num pixelprimitive.
Example
(clear) (hint-wire) (scale #(9.8 8 1)) (translate #(-1 -.5 0)) (define p0 (build-pixels 512 512 #t)) (with-pixels-renderer p0 (hint-ignore-depth) (with-primitive (build-particles 2048) (pdata-map! (lambda (p) (vmul (crndvec) 2)) "p") (pdata-map! (lambda (c) #(1 .5)) "c"))) (hint-noblend) (translate #(1 0 0)) (define p1 (build-pixels 512 512 #t)) (with-pixels-renderer p1 (hint-ignore-depth) (with-primitive (build-particles 2048) (pdata-map! (lambda (p) (vmul (crndvec) 2)) "p") (pdata-map! (lambda (c) #(1 .5)) "c")))
Returns void
Desativa escrita em z. Útil para algumas transparencias hackeadas.
Example
(clear) (hint-noblend)
Returns void
Fator especifica um multiplicador para cada bit no padrão da linha pontilhada. Padrão especifica um inteiro de 16 bits em que o padrão do bit determina qual fragmento da linha vai ser desenhado quando a linha é rasterizada.
Example
(hint-none) (hint-wire-stippled) (line-pattern 4 #x0aaaa) (build-cube) ; make a stippled wirefame cube
Returns void
Ajusta as dicas de render para fazer aparecer normais no estado de desenho corrente, ou da primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.
Example
(hint-normal) (build-cube) ; mostra as normais do cubo
Returns void
Ajusta as dicas para aparecer pontos no estado de desenho corrente, ou da primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.
Example
(hint-points) (build-cube) ; mostra os pontos dos vertices deste cubo
Returns void
Ajusta as dicas de render para anti-alias no estado de desenho atual, ou da primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.
Example
(hint-anti-alias) (build-cube) ; mostra um cubo macio
Returns void
Ajusta as dicas de render para luzes desligadas no estado de desenho corrente, ou da primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.
Example
(hint-unlit) (build-cube) ; mostra um cubo sem iluminação
Returns void
Ajusta as dicas de render pra usar cores de vértices no estado de desenho corrente, ou da primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas. Cores de vértices modificam o estado atual de (colour).
Example
(clear) (hint-vertcols) (define mycube (build-cube)) ; make a cube with vertcols enabled (with-primitive mycube (pdata-map! (lambda (c) (rndvec)) ; randomise the vertcols "c"))
Returns void
Ajusta as dicas de render para mostrar a caixa envolvente no estado de desenho corrente, ou a primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.
Example
(hint-box) (build-sphere 10 10) ; faz uma esfera com a bounding box
Returns void
Limpa as dicas de render no estado de desenho corrente, ou da primitiva pega. Isso permite que você se livre do estilo sólido default, mas também significa que voce pode ligar e desligar dicas sem usar push ou pop
Example
(hint-none) (hint-wire) (build-cube) ; faz um cubo vísivel apenas em wireframe
Returns void
Ajusta as dicas de render para mostrar a origem espacial do objeto no estado de desenho corrente, ou da primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.
Example
(hint-origin) (build-sphere 10 10) ; make a sphere with the origin displayed
Returns void
(nota: não implementado ainda) Ajusta as dicas de render para fazer sombra para o estado de desenho atual, ou a primitiva pega. Dicas de render podem mudar a forma que as primitivas são renderizadas, mas pode ter efeitos diferentes- ou nenhum efeito em certas primitivas, portanto o nome dica.
Example
(hint-origin) (build-sphere 10 10) ; make a sphere with the origin displayed
Returns void
Ajusta as dicas de render para separar em profundidade o estado corrente, ou a primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.
Example
(hint-depth-sort) (build-sphere 10 10)
Returns void
Ajusta as dicas de render para ignorar tested de profundidade no estado corrente de desenho, ou da primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas. Essa capacidade é util para renderizar objetos transparentes, já que ela significa que objetos vão aparecer atrás de outros já renderizados.
Example
(clear) (with-state (hint-ignore-depth) (opacity 0.6) (with-state (colour (vector 1 0 0)) (build-cube)) (with-state (colour (vector 0 1 0)) (translate (vector 1 0 0)) (build-cube)))
Returns void
Ajusta as dicas de render para prevenir esta primitiva de passar suas transformações a um filho. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.
Example
(hint-lazy-parent) (build-sphere 10 10) ; make a sphere with the origin displayed
Returns void
Vira as faces das quais a face anterior é excluida(culled).
Example
(hint-cull-ccw) (build-sphere 10 10) ; make an inside out
Returns void
Ajusta as dicas para renderizar objetos como se eles fossem perfeitamente refletivos para o estado ou primitiva atual.
Example
(clear) (hint-sphere-map) (texture (load-texture "test.png")) (define p (build-torus 1 2 20 20)) (every-frame (with-primitive p (rotate #(.543 .59 .87))))
Returns void
Ajusta a textura do estado corrente, ou da primitiva pega. Ids de textura podem ser geradas pela função load-texture.
Example
(texture (load-texture "mytexture.png")) (build-sphere 10 10) ; faz uma textura com mytexture.png
Returns void
Ajusta a textura do estado corrente de desenho, ou da primitiva pega da mesma forma que a função textura, mas permite que você especifique a unidade de textura (0-7) para aplicar-lá.Multitextura permite você aplicar diferentes texturas e coordenadas ao mesmo objeto de uma vez. Unidade de textura 0 é o padrão (que usa a pdata "t" para suas coordenadas) unidade de textura n olha pela pdata "tn" - ie multitexture 1 olha por "t1". Você precisa adicionar estas você mesmo usando (pdata-add) ou (pdata-copy). Multitexturas é útil quando a textura contém alpha, já que elas podem ser sobrepostas, por exemplo adesivos colocados em texturas de fundo.
Example
(define obj (build-sphere 10 10)) ; make a sphere (grab obj) (multitexture 0 (load-texture "mytextureA.png")) (multitexture 1 (load-texture "mytextureB.png")) (pdata-add "t1" "v") ; make some texture coords for texture B (pdata-copy "t" "t1") ; copy them from the default texture coords (ungrab)
Returns void
Mostra o scene graph corrente, útil para debug.
Example
(print-scene-graph) ; exciting...
Returns void
Ajusta o estado escondido para a primitiva pega (tbm afeta todas as primitivas filhas). Primitivas escondidas podem ser tratadas normalmente em todas as formas - elas apenas não serão renderizadas.
Example
(define obj (build-cube)) (grab obj) (hide 1) ; hide this cube (ungrab)
Returns void
Ajusta os estado escondido para a primitiva atual, com a camêra atual (também afeta todas as primitivas descendentes). Permite que você desligue a renderização para as primitivas em camêras diferentes.
Example
(define obj (build-cube)) (with-primitive obj (camera-hide 1)) ; hide this cube
Returns void
Ajusta se a primitiva pega pode ser selecionada ou não, usando o comando select.
Example
(define obj (build-cube)) (grab obj) (selectable 0) ; agora ela nao vai ser "vista", quando chamar select (ungrab)
Returns void
Liga ou desliga o corte de face-traseira. Backface culling acelera a renderização removendo faces não orientadas em direção da câmera. É ligado por padrão, mas isto não é desejado sempre, eg para poligonos com dupla face.
Example
(backfacecull 0)
Returns void
Abre, compila e ajusta o par de GLSL hardware shader para o estado de desenho atual, ou a primitiva pega. Requer OpenGL 2. Os dados uniformes do shader podem ser controlados via shader-set! e todas as pdatas são enviadas como um atributo por vértice ao shader.
Example
; you need to have built fluxus with GLSL=1 (clear) (define s (with-state ; assign the shaders to the surface (shader "simple.vert.glsl" "simple.frag.glsl") (build-sphere 20 20))) (with-primitive s ; add and set the pdata - this is then picked up in the vertex shader ; as an input attribute called "testcol" (pdata-add "testcol" "v") ; set the testcol pdata with a random colour for every vertex (pdata-map! (lambda (c) (rndvec)) "testcol")) (define (animate) (with-primitive s ; animate the deformamount uniform input parameter (shader-set! (list "deformamount" (cos (time)))))) (every-frame (animate))
Returns void
Example
; you need to have built fluxus with GLSL=1 (clear)
Returns número-id-primitiva
Limpa o cache do shader.
Example
(clear-shader-cache)
Returns void
Ajusta os parâmetros do shader uniforme para o shader GLSL. A lista contém valores pares simbolos-strings, que relacionam os parâmetros de shader correspondentes nomes e valores
Example
; you need to have built fluxus with GLSL=1 (clear) (define s (with-state ; assign the shaders to the surface (shader "simple.vert.glsl" "simple.frag.glsl") (build-sphere 20 20))) (with-primitive s ; add and set the pdata - this is then picked up in the vertex shader ; as an input attribute called "testcol" (pdata-add "testcol" "v") ; set the testcol pdata with a random colour for every vertex (pdata-map! (lambda (c) (rndvec)) "testcol")) (define (animate) (with-primitive s ; animate the deformamount uniform input parameter (shader-set! (list "deformamount" (cos (time)))))) (every-frame (animate))
Returns void
Ajusta o estado de textura atual para a unidade de textura especificada. Esse estado controla como a textura é aplicada à superfície do objeto, e como é filtrada nos texels, ou miplevels. A unidade de textura é usada se você está usando multitextura - o padrão da unidade de textura é 0. Você talvez precise ler um pouco sobre OpenGL ou experimentar para descubrir mais sobre essas opções.
Example
; parameters are the following: ; tex-env : [modulate decal blend replace] ; min : [nearest linear nearest-mipmap-nearest linear-mipmap-nearest linear-mipmap-linear] ; mag : [nearest linear] ; wrap-s : [clamp repeat] ; wrap-t : [clamp repeat] ; wrap-r : [clamp repeat] (for cube maps) ; border-colour : (vector of length 4) ; priority : real number 0 -> 1 ; env-colour : (vector of length 4) ; min-lod : real number (for mipmap blending - default -1000) ; max-lod : real number (for mipmap blending - default 1000) (texture-params 0 '(min nearest mag nearest))