Usar para contornos em sua rede ShaderFX

Usar um nó de código personalizado

Você pode criar um para contorno de formas diferentes. É possível criar um nó personalizado de código. Selecione Ferramentas Alternar modo avançado para inserir modo avançado e, em seguida, escolha os nós HW Shader Diversos códigos personalizados. No painel Propriedades, clique no botão Editar para inserir o código na caixa de diálogo Editor de código padrão que aparece. Utilize funções que são compatíveis com o driver da viewport do DirectX.

Usar um nó para contorno

Você também precisa estar no modo avançado para criar um nó de contorno.

O exemplo a seguir demonstra como utilizar um para contorno para a amostra de uma textura três vezes com diferentes deslocamentos de UV. As valores de amostras são adicionados, o total dividido por três e o valor médio aplicado ao canal de cor difusa do TraditionalGameSurfaceShader.

Configure o contorno:

  1. Na área de trabalho do ShaderFX, clique com o botão direito do mouse e selecione Ferramentas Alternar modo avançado para assegurar-se de que o modo avançado está ativo.
  2. Clique com o botão direito do mouse e escolha nós de HW Shader Controle de fluxo Para o contorno criar um nó de ForOp.
    Dica: Uma porta quadrada significa que a porta pode aceitar mais de uma entrada.
  3. Escolha nós de sombreador HW Valores Int para criar um nó Inteiro. No painel Propriedades, defina o valor como 3. Conecta-o ao atributo B do nó de contorno.
    • O atributo A representa o início do contorno.
    • O atributo B representa o fim do ciclo.
    • O atributo C representa o intervalo do contorno.
    • Por padrão, o valor de A é 0 e o valor de C é 1. Se você utilizar estes valores padrão para o contorno, não será necessário conectar esses atributos.

      Nesse exemplo, podemos definir para i = 0; i < 3, i++; portanto, não é necessário definir explicitamente os valores de C e A.

  4. Escolha nós de sombreador HW nós Vários Sequência de caracteres para criar uma sequência de caracteres que será utilizada como um iterador. No painel Propriedades, selecione i da lista suspensa Opções padrão (você tem que rolar para baixo para ver essa opção). Conecte a porta de Saída do nó Sequência de caracteres ao atributo Iterador do nó Para contorno.
  5. Escolha nós de sombreador HW Valores Float3 para criar uma variável para armazenar os valores que são calculados dentro do contorno.
    Dica: Utilize Float3 ou Float4 para armazenar os valores. Não use um nó de cor.
  6. No painel Propriedades, renomeie o nó Float3 para LoopResult e verifique se os três valores são iniciados como 1.0.
  7. Conecte o nó LoopResult ao atributo Variáveis do nó Para contorno. Como este é um contorno simples onde somente uma variável é utilizada, conecte LoopResult ao atributo de Para contorno também.

Configure as amostras de textura:

  1. Escolha nós de sombreador HW Texturas Mapa de textura para criar um nó TextureMap. No painel Propriedades, utilize os controles MyTexture/Caminho para atribuir um arquivo de textura a esse nó.

    Também no painel Propriedades, verifique se os atributos da amostra/coordenada U e da amostra/coordenadas V estão definidos como EMPACOTAR.

    Como a amostra da textura será apresentadas com um deslocamento, a amostragem poderá exceder a faixa de UV de 0 - 1. Definir esses atributos com EMPACOTAR garante que os pixels sejam apresentados no início da textura quando o intervalo de UV exceder 1.0.

  2. Escolha nós de sombreador HW Valores Matriz para criar um nó Matriz. Os três conjuntos de valores de deslocamento são armazenados na matriz.
  3. Escolha nós de sombreador HW Valores Float2 três vezes para criar três nós Float2 para armazenar três conjuntos de valores de deslocamento. Use o painel Propriedades para definir os três atributos Float2, como segue:
    • Nome: Deslocamento1, X: 0,1, Y: 0,3
    • Nome: Deslocamento2, X: 0,2, Y: -0.4
    • Nome: Deslocamento3, X: 0,3, Y: 0,2Y:
  4. Conecta todos os três nós Float2 ao atributo Valores do nó Matriz.
  5. Escolha nós de sombreador HW Entradas comuns Nós de conjunto UV e sombreador HW Matemática Adicione para criar um nó de conjunto de UV e Adicionar nó.
  6. Conectar os nós como segue:
    • Conecte o atributo valor de Matriz ao atributo Valor de Adicionar.
    • Conecte o atributo UV de Conjunto de UV ao atributo Outro valor de Adicionar.
    • Conecte o atributo Resultado de Adicionar ao atributo UV de TextureMap.
    • Conecte o atributo de Saída do interador (nó de sequência de caracteres) ao atributo Índice da Matriz. Isso permite que a opção Para contorno para obtenha os valores de deslocamento.
    • Conecte o atributo Cor do Mapa de textura ao atributo Cálculos de Para contorno. Isso define os cálculos na opção para contorno, que cria amostras do mapa de textura três vezes.

Calcular a média dos resultados da amostra:

  1. Escolha nós de sombreador HW Vários Sequência de caracteres para criar um nó de sequência de caracteres. No painel Propriedades, selecione += da lista suspensa Opções padrão.
  2. Conecte o valor de Saída ao novo nó da Sequência de caracteres ao atributo Operadores do nó Para contorno.

    Para contorno adiciona os resultados das amostras de textura à variável de resultado do contorno.

  3. Escolha nós de sombreador HW Matemática Dividir para criar um nó de divisão. Conecte o atributo Saída de Para contorno ao primeiro Valor do atributo Dividir.

    Como o resultado do contorno é a soma de três valores de amostra, ele deve ser dividido por três para obter sua média.

  4. Escolha nós de sombreador HW Valores Flutuante para criar um nó flutuante. No painel Propriedades, defina o valor como 3. Conecte o seu atributo Flutuar ao outro atributo Valor de Dividir para dividir a soma dos resultados da amostra por três.
  5. Conecte o atributo Resultado de Dividir ao atributo Cor difusa de TraditionalGamesSurfaceShader.

Resultado de iteração um padrão xadrez (renderizado com o renderizador Quicksilver)

Você pode exportar o material do ShaderFX para um sombreador de arquivo e examine o sombreador código para ver o para contorno que você acabou de criar:

float3 LoopResult = float3(1.0, 1.0, 1.0);	
for(int i=0; i<3; i+=1)	
{		
    float2 AddOp = (Array_bphdfiwhhj[i] + IN.map1.xy);		
    float4 Sampler = chessboard_woodjpg.Sample(MMMLWWWSampler, AddOp);		
    LoopResult += Sampler.xyz;
}

Para obter mais informações sobre como exportar para um arquivo de sombreador, consulte Exportar para HLSL, CgFX e GLSL.