commit 7c7d3b856a7f34a9f9e1e32bdb43a38d90dd0ec7
parent 9360873ea55df80f683402e47f5f79bb55efe620
Author: Matsuda Kenji <info@mtkn.jp>
Date: Wed, 13 Nov 2024 09:41:18 +0900
emission
Diffstat:
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/cmd/sample/fragment.glsl b/cmd/sample/fragment.glsl
@@ -3,6 +3,7 @@
struct Material {
sampler2D diffuse;
sampler2D specular;
+ sampler2D emission;
float shiness;
};
@@ -36,6 +37,8 @@ void main() {
float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shiness);
vec3 specular = vec3(texture(material.specular, texPos)) * spec * light.specular;
- fcol = vec4(ambient + diffuse + specular, 1.0);
+ vec3 emission = texture(material.emission, texPos).rgb;
+
+ fcol = vec4(ambient + diffuse + specular + emission, 1.0);
}
diff --git a/cmd/sample/main.go b/cmd/sample/main.go
@@ -22,7 +22,7 @@ func init() {
}
func processInput(app *App) {
- const speed = 0.1
+ const speed = 0.05
if tofu.IsKeyPressed(tofu.KeyQ) {
app.termination = true
return
@@ -141,10 +141,12 @@ type App struct {
startedAt time.Time
texture *tofu.Texture
specularMap *tofu.Texture
+ emission *tofu.Texture
}
func (app *App) Update() error {
now := float32(time.Since(app.startedAt).Seconds())
+ now = 0
processInput(app)
if app.termination {
return tofu.Termination
@@ -173,6 +175,7 @@ func (app *App) Update() error {
app.program.SetVec3("camPos", camera.Pos)
app.program.SetTexture("material.diffuse", app.texture)
app.program.SetTexture("material.specular", app.specularMap)
+ app.program.SetTexture("material.emission", app.emission)
app.program.SetFloat32("material.shiness", 32)
model := tofu.Translate(tofu.Vec3{0, 0, 0}).
Mul(tofu.Rotate(now, tofu.Vec3{math.Sqrt2 / 2, -math.Sqrt2 / 2, 0}))
@@ -214,6 +217,7 @@ func main() {
lightFpath := filepath.Join(filepath.Dir(f), "light_fragment.glsl")
texturePath := filepath.Join(filepath.Dir(f), "container2.png")
specularMapPath := filepath.Join(filepath.Dir(f), "container2_specular.png")
+ emissionPath := filepath.Join(filepath.Dir(f), "matrix.jpg")
app.program, err = tofu.NewProgram(vpath, fpath)
if err != nil {
@@ -231,6 +235,10 @@ func main() {
if err != nil {
log.Fatalf("NewTesture: %v", err)
}
+ app.emission, err = tofu.NewTexture(emissionPath)
+ if err != nil {
+ log.Fatalf("NewTesture: %v", err)
+ }
camera = tofu.NewCamera()
camera.MoveTo(tofu.Vec3{0, 0, 3})