From a1d278b097d858690acf3798328bc073fe7e4372 Mon Sep 17 00:00:00 2001 From: Hajime Hoshi Date: Sat, 15 Aug 2020 21:36:10 +0900 Subject: [PATCH] examples/shader: Add water.go Updates #1284 --- examples/shader/generate.go | 1 + examples/shader/main.go | 1 + examples/shader/water.go | 42 +++++++++++++++++++++++++++++++++++++ examples/shader/water_go.go | 5 +++++ 4 files changed, 49 insertions(+) create mode 100644 examples/shader/water.go create mode 100644 examples/shader/water_go.go diff --git a/examples/shader/generate.go b/examples/shader/generate.go index d3dd1a159..249a2dd3d 100644 --- a/examples/shader/generate.go +++ b/examples/shader/generate.go @@ -19,3 +19,4 @@ package main //go:generate file2byteslice -package=main -input=radialblur.go -output=radialblur_go.go -var=radialblur_go //go:generate file2byteslice -package=main -input=chromaticaberration.go -output=chromaticaberration_go.go -var=chromaticaberration_go //go:generate file2byteslice -package=main -input=dissolve.go -output=dissolve_go.go -var=dissolve_go +//go:generate file2byteslice -package=main -input=water.go -output=water_go.go -var=water_go diff --git a/examples/shader/main.go b/examples/shader/main.go index 60a0aed6b..264e9b0ac 100644 --- a/examples/shader/main.go +++ b/examples/shader/main.go @@ -87,6 +87,7 @@ var shaderSrcs = [][]byte{ radialblur_go, chromaticaberration_go, dissolve_go, + water_go, } type Game struct { diff --git a/examples/shader/water.go b/examples/shader/water.go new file mode 100644 index 000000000..ad37bd038 --- /dev/null +++ b/examples/shader/water.go @@ -0,0 +1,42 @@ +// Copyright 2020 The Ebiten Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// +build ignore + +package main + +var Time float +var Cursor vec2 +var ScreenSize vec2 + +func Fragment(position vec4, texCoord vec2, color vec4) vec4 { + border := ScreenSize.y*0.6 + 4*cos(Time*3+texCoord.y*200) + if position.y < border { + return image2TextureAt(texCoord) + } + + srcsize := imageSrcTextureSize() + rorigin, rsize := imageSrcTextureSourceRegion() + + xoffset := (4 / srcsize.x) * cos(Time*3+texCoord.y*200) + yoffset := (20 / srcsize.y) * (1.0 + cos(Time*3+texCoord.y*50)) + bordertex := border / srcsize.y + clr := vec4(image2TextureBoundsAt(vec2( + texCoord.x+xoffset, + -(texCoord.y+yoffset-rorigin.y)+bordertex*2+rorigin.y, + ))) + + overlay := vec4(0.5, 1, 1, 1) + return mix(clr, overlay, 0.25) +} diff --git a/examples/shader/water_go.go b/examples/shader/water_go.go new file mode 100644 index 000000000..42ea2e4a8 --- /dev/null +++ b/examples/shader/water_go.go @@ -0,0 +1,5 @@ +// Code generated by file2byteslice. DO NOT EDIT. + +package main + +var water_go = []byte("// Copyright 2020 The Ebiten Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// +build ignore\n\npackage main\n\nvar Time float\nvar Cursor vec2\nvar ScreenSize vec2\n\nfunc Fragment(position vec4, texCoord vec2, color vec4) vec4 {\n\tborder := ScreenSize.y*0.6 + 4*cos(Time*3+texCoord.y*200)\n\tif position.y < border {\n\t\treturn image2TextureAt(texCoord)\n\t}\n\n\tsrcsize := imageSrcTextureSize()\n\trorigin, rsize := imageSrcTextureSourceRegion()\n\n\txoffset := (4 / srcsize.x) * cos(Time*3+texCoord.y*200)\n\tyoffset := (20 / srcsize.y) * (1.0 + cos(Time*3+texCoord.y*50))\n\tbordertex := border / srcsize.y\n\tclr := vec4(image2TextureBoundsAt(vec2(\n\t\ttexCoord.x+xoffset,\n\t\t-(texCoord.y+yoffset-rorigin.y)+bordertex*2+rorigin.y,\n\t)))\n\n\toverlay := vec4(0.5, 1, 1, 1)\n\treturn mix(clr, overlay, 0.25)\n}\n")