English

I had some more Blender coding late night hours and I decided that the custom texture patch was stable enough for tests and feedbacks. I still have to adjust part of the code, but I don’t want to spend so much time in that if this is not going to be implemented in Blender (in one way or another).

Therefore I compiled this patched “home-made” version of Blender and will need some positive return regarding how usefull this is. Can you see a good use for that? Can you produce some nice shaders with that which you couldn’t do before?

If the awnser is yes, please share your artwork and opinion and we can find the better way to do this. Technical code-wise comments are very-welcome as well.

Brasilês

Se você leu meu último post sabe o que ando tentando implementar ultimamente. Acontece que hoje eu terminei uma animação que estamos fazendo no serviço e resolvi comemorar dedicando um tempinho pra finalizar o Custom Textures para os filtros 2D.

Se você quiser testar é só abaixar a versão compilada abaixo e se divertir. Se você gostaria de ver isto implementado nas versões oficiais do Blender tem uma coisa muito simples que pode ajudar bastante. Eu preciso saber se mais acha isto útil, e se possível saber em que shaders seria interessante usar este recurso. Pode enviar imagens, idéias ou simplesmente dizer se acha isso relevante ou não.

Sempre às ordens e aproveite 🙂

Splash Screen 2dFilters patch

Links:

How to use it:

* Select your image using Actuator->2DFilter->Uniform Texture (temporarily the texture most be applied to any object in your scene – the object don’t need to be in a visible layer though)

* Choice the name you want to use in your shader (remember: you can’t use names starting with gl_)

* Enable your custom filter as usual – Actuator->2DFiter->Custom Filter

* In your shader, acess your texture using sampler2d your_texture_name;

Tip: If can use the built-in VideoTexture to change your initial texture and it will be updated in your shader as well.

Thanks for the Blender developers that patiently have been helping in my coder-to-be journey 🙂
(Campbell, Jester, Benoit, thank you dudes !)

Como usar:

* Selecione sua imagem através de Actuator->2DFilter->Uniform Texture (por enquanto a imagem selecionada tem que já estar na cena aplicada em algum objeto – mas se quiser pode botar o objeto num layer invisível)

* Escolha o nome que você quer usar no seu filtro (lembrando: não é possível usar nomes que comecem com gl_)

* Ative seu Custom Filter como de costume – Actuator->2DFiter->Custom Filter

* E dentro do código do seu shader acesse sua textura usando uniform sampler2D nome_da_sua_textura;

É isso. Espero que vocês abusem e usem C&A 🙂

Até breve …

Dalai Felinto

Português – artigo semi-técnico – fuja enquanto é capaz 🙂

A Game Engine do Blender (BGE) utiliza um sistema de filtros 2D muito interessante. Ele permite a você utilizar a linguagem GLSL para escrever seus próprios filtros, que por sua vez são aplicados à tela.

Basicamente o Blender desenha um retângulo em cima da tela da Game Engine, com um fragment shader GLSL aplicado a ele. Simples e engenhoso. Pode não ser a coisa mais rápida do mundo, mas funciona bem.

O filtro é basicamente um loop dentro da imagem aplicada ao retângulo, que para cada pixel da imagem, são feito alguns cálculos (o shader propriamente dito) e o pixel é alterado de acordo com seu filtro. Com isso pode-se obter desde efeitos simples de desfocagem, nitidez, sépia, até efeitos mais avançados como DoF (profundidade visual) e SSAO (iluminação global aproximada).

Além de contar com a imagem que se vê no jogo (o chamado color buffer, ou GL_RGBA) ainda pode-se acessar o mapa de luminância (GL_LUMINANCE) e o mapa de profundidade (GL_DEPTH).

O que ainda não dava para fazer era passar uma imagem qualquer que você quisesse para ser usada dentro do shader … e aqui começa minha diversão 🙂

English

Sometimes I wonder how many people use the 2dfilter system in the Blender Game Engine. Anyways, even though this feature demands a nice graphic card, it’s really fun to play with it.

You can even make your own custom shaders. Basically you load some textures from Blender and use them in your filter.

Originally we have three diferent textures: the color (bgl_RenderedTexture), the luminance (bgl_LuminanceTexture) and the depth (bgl_DepthTexture).

Each one of them correspond to an openGL buffer (respectively GL_RGBA, GL_LUMINANCE and GL_DEPTH).However, some GLSL shaders may need other textures as input.

As an example I can think in the effect we have in some games when we run out of the water. In games like Crysis and Turok you can see the water running through the screen, as if you were getting dryer.

Inspired by that, I started to figure out a way to pass a new, custom texture straight to the shader.

If you click in the image below you can see my fullscreenshot with the LogicBricks and the shader script.

GLSL_Screenshot_01

Read More →