samedi 10 août 2019

Outil utilisé : löve2d

https://love2d.org/


Dans un récent projet d'exercice , j'ai dû modifier le code source d'un effet de shader.
Sur mon pc, l'effet ne fonctionne pas correctement.

voici le nouveau code que j'ai modifié et qui fonctionne sur ma machine


-- a black/white mask image: black pixels will mask, white pixels will pass.
-- un masque d'image blanc/noir : les pixels noirs vont masquer, les pixels blanc vont laisser passer.

local mask = love.graphics.newImage("kirk_mask.png") --[[faites une image de masque en noir et blanc (ce qui est à l'intérieur de la silhouette du personnage
va etre en blanc et ce qui est à l'extérieur de la silhouette en noir) . ]]

local mask_shader = love.graphics.newShader[[
   vec4 effect(vec4 color, Image texture, vec2 texture_coords, vec2 screen_coords) {
      if (Texel(texture, texture_coords).rgb == vec3(0.0)) {
         discard;
      }
      return vec4(1.0);
   }
]]
-- a l'intérieur du code newShader ci-dessus, mettez ".rgb == vec3(0.0)" et non pas ".rgba == vec4(0.0)"

-- a l'intérieur de la fonction "myStencilFunction()" ci-dessous, ajoutez la variable "mask" crée plus haut (et non pas "kirk.image") .
local function myStencilFunction()
  love.graphics.setShader(mask_shader)
  love.graphics.draw(mask, Kirk.x, Kirk.y) --"mask" remplace "kirk.image"
  love.graphics.setShader()
end
--la suite du code plus bas restera inchangée.


L'image ci-dessous est le masque appliqué au shader (cette image est tronquée par l'anti-aliazing,
normalement les contours noirs sont nets).

Aucun commentaire:

Enregistrer un commentaire