Skip to content
Extraits de code Groupes Projets
Valider e1b21567 rédigé par ultrakatiz's avatar ultrakatiz
Parcourir les fichiers

fixes

parent 11a5662b
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Ce diff est replié.
......@@ -21,7 +21,7 @@ material.__index = material
function material.new(amb, diff, spec, sh, al)
local m = {ambient = vector.new(3, amb) or vector.new(3, {1, 1, 1}),
local m = {ambient = vector.new(3, amb) or vector.new(3, {1, 1, 1}),
diffuse = vector.new(3, diff) or vector.new(3, {1, 1, 1}),
specular = vector.new(3, spec) or vector.new(3, {1, 1, 1}),
shininess = sh or 1,
......@@ -62,7 +62,7 @@ function face.shade(N, P, mat, lights, ambient, cam)
-- Specular component
I = I + Ks * math.pow(math.max(vector.dot(R, V), 0), shine) * l.specular
end
return I:clamp(0, 255)
end
......@@ -107,18 +107,15 @@ function shape:draw(subs, line, tags, cull, cam, ambient, lights)
for i = 1, #self.faces do
local face = self.faces[i]
local norm = quaternion.mul_vector(r, face.normal)
local n = quaternion.mul_vector(cam_inv_rot, norm)
local vs = face.vertices
local v = m * (vs[#vs] + c)
v = (1 / v:w()) * v
local world_n = (tm * (face.normal + c) - p):set_size(3)
local n = (tm * (face.normal + c) - p):set_size(3)
local c_to_v = (tm * (vs[#vs] + c) - camp):set_size(3):normalize()
if not (cull and vector.dot(c_to_v, world_n) > 0) then
if not (cull and vector.dot(c_to_v, n) > 0) then
local l = table.copy(line)
l.text = (tags and "{" .. tags .. "}" or "")
.. (face.tags and "{" .. face.tags .. "}" or "")
......@@ -135,17 +132,15 @@ function shape:draw(subs, line, tags, cull, cam, ambient, lights)
.. (-v:y() * yres / 2) .. " "
end
local P = (p + sum) * (1/#vs)
face_center = (1 / #vs) * face_center
local color = face.shade(n, P, self.material, lights, ambient, cam)
local color = face.shade(n, face_center, self.material, lights, ambient, cam)
local colorstr = string.format("{\\c%s\\alpha%s}",
ass_color(color:x(), color:y(), color:z()),
ass_alpha(self.material.alpha)
)
l.text = colorstr .. str
face_center = (1 / #vs) * face_center
l.text = colorstr .. l.text
-- layers must be between 0 and 9999999999
l.layer = math.floor(-face_center:z())
l.effect = "fx"
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter