Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 试图实现FXAA,但不知道这是否是正确的代码_Go_Glsl_Fxaa - Fatal编程技术网

Go 试图实现FXAA,但不知道这是否是正确的代码

Go 试图实现FXAA,但不知道这是否是正确的代码,go,glsl,fxaa,Go,Glsl,Fxaa,这是代码,它是错误的,但我希望它得到的想法 基于 在没有opengl的情况下实现它是很困难的,只是想让线条更平滑 即使使用更好的算法也很好, 这是一个要消除锯齿的螺旋图像的屏幕截图 主程序包 进口( “fmt” “github.com/purringChaos/SpiralGo/vec/vec2” “github.com/purringChaos/SpiralGo/vec/vec3” “图像” “图像/颜色” “数学” ) func rgbaToVec3(i color.NRGBA)vec3.

这是代码,它是错误的,但我希望它得到的想法

基于

在没有opengl的情况下实现它是很困难的,只是想让线条更平滑 即使使用更好的算法也很好, 这是一个要消除锯齿的螺旋图像的屏幕截图

主程序包
进口(
“fmt”
“github.com/purringChaos/SpiralGo/vec/vec2”
“github.com/purringChaos/SpiralGo/vec/vec3”
“图像”
“图像/颜色”
“数学”
)
func rgbaToVec3(i color.NRGBA)vec3.vec3{
返回vec3.vec3{float64(i.R)、float64(i.G)、float64(i.B)}
}
func vec3ToNRGBA(i vec3.vec3)color.NRGBA{
返回颜色.NRGBA{uint8(i.X),uint8(i.Y),uint8(i.Z),255}
}
var lumaVec=vec3.vec3{0.299,0.587,0.114}
变量FXAA_SPAN_MAX=1.0
var FXAA_REDUCE_MUL=1.0/8.0
var FXAA_REDUCE_MIN=1.0/128.0
func getRelToVector(i*image.NRGBA,x int,y int,v vec2.vec2)color.NRGBA{
返回i.nrgbat(x+int(v.x),y+int(v.y))
}
func getRelToVectorVec(i*image.NRGBA,x int,y int,v vec2.vec2)vec3.vec3{
newVec:=vec2.vec2{
四舍五入负(v.X),
圆和负(v.Y),
}
返回rgbaToVec3(getRelToVector(i,x,y,newVec))
}
func getInbetween(col1 vec3.vec3,col2 vec3.vec3)vec3.vec3{
返回vec3.Mul(vec3.Add(col1,col2),1.0/2.0)
}
func areSameColor(c1,c2 color.NRGBA)bool{
返回c1.R==c2.R&&c1.G==c2.G&&c1.B==c2.B
}
func roundAndNegative(a float64)float64{
如果a>FXAA\u减少\u最小值{
return math.Ceil(a)
}否则,如果alumaMax){
colorToSet=vec3ToNRGBA(rgbA)
}否则{
colorToSet=vec3ToNRGBA(rgbB)
}
if!areSameColor(i.nrgbat(x,y),colorToSet){
fmt.Println(“OWO”)
newImage.Set(x,y,colorToSet)
}
}
}
返回新图像
}

如果您想查看代码,最好尝试一下。Stack Overflow主站点用于帮助解决特定问题。