Three.js 如何在WEBGL中使用gl_LastFragData?
我目前正在做一个THREE.JS项目。我需要使用可编程的混合而不是使用预定义的混合来定制片段_着色器。为此,我想在片段着色器中使用gl_LastFragData。但我犯了这个错误 如何在WEBGL中使用gl_LastFragData或是否有其他等效方法?WEBGL中没有gl_LastFragData。WebGL基于OpenGL ES 2.0,WebGL2基于OpenGL ES 3.0。这两个都不支持gl_LastFragData 使用上一个结果的传统方法是在生成下一个结果时将其作为纹理传入Three.js 如何在WEBGL中使用gl_LastFragData?,three.js,webgl,Three.js,Webgl,我目前正在做一个THREE.JS项目。我需要使用可编程的混合而不是使用预定义的混合来定制片段_着色器。为此,我想在片段着色器中使用gl_LastFragData。但我犯了这个错误 如何在WEBGL中使用gl_LastFragData或是否有其他等效方法?WEBGL中没有gl_LastFragData。WebGL基于OpenGL ES 2.0,WebGL2基于OpenGL ES 3.0。这两个都不支持gl_LastFragData 使用上一个结果的传统方法是在生成下一个结果时将其作为纹理传入 so
someOperation1(A, B) -> TempTexture1
someOperation2(TempTexture1, C) -> TempTexture2
someOperation3(TempTexture2, D) -> TempTexture1
someOperation4(TempTexture1, E) -> TempTexture2
someOperation5(TempTexture2, F) -> resultTexture/fb/canvas/window
webgl或opengl规范中不存在gl_LastFragData。
但是,这些API中有一种机制
您可以在程序启动时查询可用的扩展,并查看所需的功能是否可用。若要在着色器程序中使用可用扩展,应在着色器源代码中使用它
您的错误消息表明,当扩展功能不可用时,您尝试使用扩展功能
说到你的病例检查分机。同样值得检查的是,NV_着色器_帧缓冲区_fetch
这些扩展是针对OpenGL2.0、OpenGLES2.0编写的。我不确定他们是否真的存在
帧缓冲区提取功能应存在于移动设备上,而不存在于桌面设备上。据我所知,这是由于基于移动和桌面平铺的GPU架构与即时模式光栅化器之间的差异造成的。基于平铺的gpu可以使用平铺本地内存进行有效查找。hi@gman,我使用的是WEBGL1,我正在覆盖MeshPhsicalFramework\u着色器。我需要使用自定义混合函数,而不是预定义的blendFunggl.ONE、gl.ONE等混合函数,因此我想做一些类似gl_FragData[0]=color+gl_LastFragData[0]*weight的事情;有什么想法吗?嗨@gman,在WEBGL1中是否有等同于blendFunc的东西?嗨@mlnk,我如何分别为gl_FragData[0]和gl_FragData[1]应用blendFunc?