| 261 | } |
| 262 | |
| 263 | func (s *blendmapShader) bindTexturePack(tp *TexturePack) { |
| 264 | engo.Gl.ActiveTexture(engo.Gl.TEXTURE1) |
| 265 | engo.Gl.BindTexture(engo.Gl.TEXTURE_2D, tp.Fallback.Texture()) |
| 266 | engo.Gl.TexParameteri(engo.Gl.TEXTURE_2D, engo.Gl.TEXTURE_WRAP_S, engo.Gl.REPEAT) |
| 267 | engo.Gl.TexParameteri(engo.Gl.TEXTURE_2D, engo.Gl.TEXTURE_WRAP_T, engo.Gl.REPEAT) |
| 268 | |
| 269 | engo.Gl.ActiveTexture(engo.Gl.TEXTURE2) |
| 270 | engo.Gl.BindTexture(engo.Gl.TEXTURE_2D, tp.RChannel.Texture()) |
| 271 | engo.Gl.TexParameteri(engo.Gl.TEXTURE_2D, engo.Gl.TEXTURE_WRAP_S, engo.Gl.REPEAT) |
| 272 | engo.Gl.TexParameteri(engo.Gl.TEXTURE_2D, engo.Gl.TEXTURE_WRAP_T, engo.Gl.REPEAT) |
| 273 | |
| 274 | engo.Gl.ActiveTexture(engo.Gl.TEXTURE3) |
| 275 | engo.Gl.BindTexture(engo.Gl.TEXTURE_2D, tp.GChannel.Texture()) |
| 276 | engo.Gl.TexParameteri(engo.Gl.TEXTURE_2D, engo.Gl.TEXTURE_WRAP_S, engo.Gl.REPEAT) |
| 277 | engo.Gl.TexParameteri(engo.Gl.TEXTURE_2D, engo.Gl.TEXTURE_WRAP_T, engo.Gl.REPEAT) |
| 278 | |
| 279 | engo.Gl.ActiveTexture(engo.Gl.TEXTURE4) |
| 280 | engo.Gl.BindTexture(engo.Gl.TEXTURE_2D, tp.BChannel.Texture()) |
| 281 | engo.Gl.TexParameteri(engo.Gl.TEXTURE_2D, engo.Gl.TEXTURE_WRAP_S, engo.Gl.REPEAT) |
| 282 | engo.Gl.TexParameteri(engo.Gl.TEXTURE_2D, engo.Gl.TEXTURE_WRAP_T, engo.Gl.REPEAT) |
| 283 | |
| 284 | // always go back to texture 0 since all other shaders might rely on it. |
| 285 | engo.Gl.ActiveTexture(engo.Gl.TEXTURE0) |
| 286 | } |
| 287 | |
| 288 | func (s *blendmapShader) updateScale(bm Blendmap) { |
| 289 | engo.Gl.Uniform2f(s.uf_scaleFB, bm.Width()/bm.Fallback.Width(), bm.Height()/bm.Fallback.Height()) |