diff options
Diffstat (limited to 'shaders/main/frag.glsl')
-rw-r--r-- | shaders/main/frag.glsl | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/shaders/main/frag.glsl b/shaders/main/frag.glsl index 8aa9a6a..f6ed7c3 100644 --- a/shaders/main/frag.glsl +++ b/shaders/main/frag.glsl @@ -2,25 +2,27 @@ * Copyright (C) 2018 Tomasz Kramkowski <tk@the-tk.com> * SPDX-License-Identifier: MIT */ -in vec3 fnorm; -in vec3 fpos; -in vec2 fuv; -in vec3 lipos; +in iface { + vec3 norm; + vec3 pos; + vec2 uv; + vec3 lipos; +} i; void main() { - vec3 fdiff = vec3(texture(tdiff, fuv)); - vec3 fspec = vec3(texture(tspec, fuv)); + vec3 fdiff = vec3(texture(tdiff, i.uv)); + vec3 fspec = vec3(texture(tspec, i.uv)); vec3 lico = vec3(1.0, 1.0, 1.0); vec3 amb = vec3(0.1, 0.1, 0.1); - vec3 norm = normalize(fnorm); - vec3 lidir = normalize(lipos - fpos); + vec3 norm = normalize(i.norm); + vec3 lidir = normalize(i.lipos - i.pos); vec3 diff = max(dot(norm, lidir), 0.0) * fdiff; float specen = max(sign(dot(lidir, norm)), 0.0); - vec3 vwdir = normalize(-fpos); + vec3 vwdir = normalize(-i.pos); vec3 mid = normalize(lidir + vwdir); vec3 spec = pow(max(dot(norm, mid), 0.0), 256) * specen * fspec; |