Tenho alguma experiência em programação de geometria e computação de sombreadores - mas nunca me aventurei em realmente brincar com os sombreadores de fragmento. Atualmente, estou tentando entender melhor como eles funcionam e seu potencial. Uma das coisas que li em vários lugares é que um fragmento (isto é, um pixel da tela) não pode se estender além de si mesmo dentro do sombreador de fragmentos. O que significa que um determinado fragmento sendo iterado só pode afetar a si mesmo.
Portanto, e para o aprendizado, eu gostaria de saber se o seguinte é possível (e se é, como, em linhas gerais, ele pode ser alcançado). Suponha que tenhamos, por uma questão de simplicidade, uma malha de pontos que consiste em apenas dois vértices (localizados no espaço do mundo 3D). Podemos programar um sombreador de forma que cada um desses dois vértices seja pintado na tela na posição exata do WorldToViewport, mas também que um círculo ao redor de cada um deles de raio = R também seja pintado nos pixels adjacentes, mesmo que eles se estendam além da malha original à qual o shader está conectado? Como na figura abaixo (onde o quadrado vermelho no centro dos círculos representa os vértices pintados na tela):
Se isso for possível, um sombreador também pode ser programado de tal forma que esses círculos que se estendem além dos vértices influenciam a cor (RGBA) um do outro? Como na figura abaixo:
Como eu disse, se essas são possíveis, eu gostaria de ouvir um pouco de como conseguir isso - em termos conceituais ou práticos. Isso é feito no shader de fragmento ou precisa ser calculado antes no shader de vértice ou geometria? Como calcular e passar "fragmentos adicionais" que se estendem além dos fragmentos ocupados pelo corpo da malha?