GLSL

Android OpenGL ES 开发(八): OpenGL ES 着色器语言GLSL

前面的文章主要是整理的Android 官方文档对OpenGL ES支持的介绍。通过之前的文章,我们基本上可以完成的基本的形状的绘制。

这是本人做的整理笔记: https://github.com/renhui/OpenGLES20Study

目前到这里第一阶段的学习,也就是基本的图形绘制,基本的交互的实现。

  •  平面绘制:三角形、正方形、在相机视角下的三角形、彩色三角形
  •  立体绘制:正方体、圆柱体、圆锥体、球体
  •  基本交互:手绘点、旋转三角形

知道了基本的图形绘制,也知道了基本的交互的实现,现在可能大多数人还是对整个实现的流程有点懵,最主要的地方可能就是对顶点着色器和片元着色器了。前面的使用过程中,我们大概也对着色器语言有一定的了解了,但是在前面我们使用的着色器代码还是很简单的,做的事情也是很有限的,后面的开发过程中,我们用到的着色器会越来越复杂,So,这里我们想一下着色器语言GLSL。

我们知道,在OpenGL ES中着色器分为顶点着色器和片元着色器。顶点着色器是针对每个顶点执行一次,用于确定顶点的位置。片元着色器是针对每个片元,片元我们可以理解为每个像素,用于确定每个片元(像素)的颜色。

梳理 Opengl ES 3.0 (二)剖析一个GLSL程序

OpenGL ES shading language 3.0 也被称作 GLSL,是个 C风格的编程语言。

Opengl ES 3.0内部有两种可编程处理单元,即Vertex processor和Fragment processor,分别用来处理Vertex shader executable和Fragment shader executable。注意,Opengl ES 3.0不支持Geometry Shader。下图中,紫色部分就是可执行体了,即 executable .

梳理 Opengl ES 3.0 (二)剖析一个GLSL程序

先来一段Vertex shader代码

#version 300 es //版本号
in vec4 VertexPosition; //应用层输入逐顶点位置坐标数据
in vec4 VertexColor; //应用层输入逐顶点颜色数据
uniform float RadianAngle; //应用层输入数据

PowerVR的底层级别GLSL优化

作者:Lukasz Furmaniak

PowerVR SDK&Tools 2017 R2版本已经发布,现在是时候来看一下新版本所包含的新内容了。在这篇文章中,我们将仔细分析《PowerVR Low-Level GLSL Optimisation》这篇文档,它能够让我们充分了解PowerVR Rogue体系结构的每一项性能。

GLSL是OpenGL Shading Language的缩写,可以翻译为OpenGL着色语言,该语言是一种高级语言,通常与“上层”(高级)操作相关联,但它也可以进行一些底层的优化,很多时候这会被开发人员所忽略。

在PowerVR Rogue架构中,着色器的性能通常取决于执行一次着色所需的周期数。该架构提供了多种选项,用于配置如何通过流水线的方式在单个周期内执行USC ALU的多条指令,当然这还要取决于其硬件配置。例如,在一个周期内可以执行两条F16 SOP指令,也可以执行F32到F16的转换或者move / output / pack等指令。

【OpenGL】GLSL-双面渲染技术

当我们渲染一个完全封闭的物体的时候,多边形的背面都是隐藏的,我们无法看见。但是如果这个物体有一些空洞,那么一些背面就可以被看见了。然而因为这些多边形的法向量的方向在这个时候不是正确的,所以会渲染出错误的结果。为了合理的渲染这些背面,我们必须反转法向量,然后基于这些反转的法向量来计算光照。

同步内容
--电子创新网--
粤ICP备12070055号