您当前的位置: 首页 >  unity

VT LI

暂无认证

  • 4浏览

    0关注

    126博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

unity code-shader的拆解为顶点着色以及片元着色(opengles3)

VT LI 发布时间:2022-02-20 23:45:44 ,浏览量:4

opengles3的shader

在GlslGpuProgramGLES30中是针对gles3的shader的识别和提交到opengl渲染的类。

GlslGpuProgramGLES30::Create (const std::string &shaderString, ChannelAssigns& channels)是把shader代码字符串拆解下来放到channels这个shader的缓存内。

m_Programs[0] = glCreateProgram())是创建shader的program。

 

这里就是对顶点着色和片元着色的拆分,识别vertex和fragment的标识来放到顶点和片元shader里面去。

CompileProgram:

CompileProgram(0, vertexShaderSource, fragmentShaderSource, channels)

然后通过BindVProgAttrbutes(vprog, channels, m_Programs[0])这个来让顶点的属性绑定,通过glBindAttribLocation来绑定属性,

CompileGLSLVertexShader这里是绑定属性信息并且通过

 

编译出顶点着色。

然后CompileGLSLFragmentShader是创建片元着色并且编译片元着色。GlslGpuProgramGLES30::CompileGlslShader

写入文件:

最后写入文件内。

 

有错误的提醒:

如果是有编译错误则执行ParseGlslErrors。

GlslGpuProgramGLES30::GetGLProgram

这个是获取shader信息然后拆解,在GLSLUtilities的GetGLSLFogData来设置fog的属性,ParseGLSLVersion是版本相关信息的写入,SkipGLSLDirectives是去掉没用的字符串,

srcVS.insert和srcPS.insert是写入顶点和片元shader的字符串,InsertFogVertexCodeGLES和InsertFogFragmentCodeGLES是插入fog的字符串到shader中,

shader绑定glCreateProgram

PatchShaderFogGLES做完后就设置到gl的shader中,

 

同样的在dx11中就是在GpuProgramsD3D11中。

关注
打赏
1649603425
查看更多评论
立即登录/注册

微信扫码登录

0.0602s