Pular para o conteúdo

dxCreateShader

Cliente Texturas, shaders e render targets OOP DxShader.create(...)DxShader(...)

Compila um shader a partir de um arquivo do resource ou de um texto com o código.

shader, string dxCreateShader ( string caminhoOuCodigo [, table macros, number prioridade = 0, number distanciaMaxima = 0, bool emCamada = false, string tiposDeElemento = "world,vehicle,object,other" ] )
NomeTipoPadrãoDescrição
caminhoOuCodigostring—Caminho de um arquivo do resource ou o código do shader direto na string.
macrostable—Tabela de ["NOME"] = "valor" definida antes da compilação. É opcional, mas quando informada vem sempre logo depois do primeiro argumento.
prioridadenumber0Para shaders aplicados a texturas do mundo com engineApplyShaderToWorldTexture: quando vários shaders pegam a mesma textura, vence o de maior prioridade.
distanciaMaximanumber0Para texturas do mundo: a geometria mais longe da câmera do que isso é desenhada sem o shader. 0 significa sem limite.
emCamadaboolfalsePara texturas do mundo: o shader é desenhado como uma camada extra por cima da textura, em vez de substituí-la.
tiposDeElementostring"world,vehicle,object,other"Para texturas do mundo: lista separada por vírgulas do que o shader pode afetar — "world", "ped", "vehicle", "object", "other", "all" ou "none".

Dois valores:

PosiçãoDescrição
1O elemento de shader.
2O nome da técnica que foi escolhida.

Se o arquivo não existir ou o código não compilar, devolve apenas false, com o motivo no console de debug. O mesmo acontece no modo de teste "no_shader" de dxSetTestMode. Um argumento errado (inclusive uma string vazia ou um tipo de elemento desconhecido) devolve nil com um aviso.

local shader, tecnica = dxCreateShader("shaders/tinta.fx")
if shader then
outputDebugString("shader compilado com a tecnica " .. tecnica)
dxSetShaderValue(shader, "gCor", 1, 0, 0, 1)
end

Um shader pode ser desenhado como qualquer outra imagem, com dxDrawImage.