GLSL下几个简单的Shader

Opengl GLSL和DX Shader Model对应关系 Opengl 3.3以上对应DX10以上,对应Shader Model4.0以上,GLSL版本3.3以上。 OpenGL 3.3以上的,Opengl版本和GLSL版本一致,例如:Opengl4.1和GLSL4.1一致。 1.2009/2012-至今win7/win8时代,Opengl 4.3(2012)也就是GLSL4.3对应D3D的Shader Model5.0 DX11-11. 阅读详情

在ShaderDesigner下编Shader是最为方便的,但这里先用OpenGL下的编程来举例

转载请注明http://blog.csdn.net/boksic 如有疑问欢迎留言

这几个Shader的实际效果:


1.最简单的固定单色Shader

Vertex Shader

坐标经过投影矩阵变换:vTrans = projection * modelview * incomingVertex

void main()
{
	gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;
}
或者更简单的方式,使用ftransform函数

void main()
{
	gl_Position = ftransform();
}
Fragment Shader

赋予像素一个固定值的颜色

void main()
{
	gl_FragColor = vec4(0.4,0.4,0.8,1.0);
}



2.颜色Shader

在OpenGL程序当中使用 glColor函数指定颜色时,接收该颜色值的Shader

例如OpenGL程序当中画一个红色茶壶:

    glColor3f(1, 0, 0);
    glutSolidTeapot(1);

glColor在Shader当中总共涉及四个值

	attribute vec4 gl_Color;

	varying vec4 gl_FrontColor; // writable on the vertex shader
	varying vec4 gl_BackColor; // writable on the vertex shader

	varying vec4 gl_Color; // readable on the fragment shader


流程如下

GLSL语言内置变量 <br />GLSL语言内置的变量,包括内置的顶点属性(attribute)、一致变量(uniform)、易变变量(varying)以及常量(const),一方面加深印象,另一方面今天的文章可以为以后的编程做查询之用。<br />顶点属性——指顶点的信息,OpenGL据此绘制各个图元,对于传统的顶点属性包括坐标、纹理坐标、颜色等GLSL都会设置一个内置变量与之对应,以便在需要时可以在顶点或片元着色器中直接引用,这也体现了GLSL与HLSL的一个最大的不同,HLSL里顶点的属性是通过语义来定义的,而GLSL 阅读详情

相关推荐

Shader 入门:GLSL ES(简介和基本语法)

前言 欢迎来到我的 Shader 入门系列文章,在本系列文章中我将和大家一起学习 Shader 相关知识,以便于我们阅读和编写 Shader。 我们将从 GLSL ES 开启我们的学习之路,本篇文章作为该系列的开篇,将给大家简单介绍 GLSL ES 并学习它的基本语法。 话不多说,我们开始吧! 在本系列文章中主要针对 GLSL ES 3.0 进行讲解 正文 简介 在正式学习 GLSL ES 之前,我们先大概了解下以下内容: OpenGL OpenGL 全称为 Open Graphics Library

菜鸟小栈 2991

Shader 编程:GLSL 重要的内置函数

前面发了一些关于 Shader 编程的文章,有读者反馈太碎片化了,希望这里能整理出来一个系列,方便系统的学习一下 Shader 编程。由于主流的 Shader 编程网站,如 ShaderToy, gl-transitions 都是基于 GLSL 开发 Shader ,加上 MSL 和 GLSL 语法上差别不大,后面系列文章将以 GLSL 为主来介绍 Shader 编程。后面 Shader 编程将使用 VSCode + ShaderToy 插件作为编程环境,步骤如下:下载安装 VSCode;

字节流动 3万+

Vulkan中shader glsl编spv spv反编译glsl方式

前言 由于我经常容易遗忘编译的方式,故在此进行记录,因为用Vulkan做RayTracing,所以传统的glslc因version不够会经常报错,识别不到GL_EXT_ray_tracing等东西 GLSL->SPV github上找到的一个库,spirv-cross,clone后,cd在SPIRV-Cross\目录,然后输入以下命令即可,封装成.bat set shader_path=B:\repos\Vulkan\src\RayTracing\assets\shaders glslangValid

shadow-lr的博客 7660

着色器语言(GLSL)基础学习三

内置的常量 glsl提供了一些内置的常量,用来说明当前系统的一些特性. 有时我们需要针对这些特性,对shader程序进行优化,让程序兼容度更好. 在 vertex Shader 中: 1.const mediump int gl_MaxVertexAttribs>=8 gl_MaxVertexAttribs 表示在vertex shader(顶点着色器)中可用的最大attributes数.这...

凌风子夜 1824

GLSL 高级教程 – Vertex Shader

A vertex shader operates on individual vertices, one vertex at a time. The shader has no knowledge of the other vertices that make up the graphical primitive, and has no clue of what type of primitive

aquathinker的专栏 -- AquaMarine Animation 1860

shader 获取法线_Shader快速复习:Per Pixel Lighting(逐像素光照)

Shader快速复习,巩固知识加强感觉。今天的内容是Per Pixel Lighting(逐像素光照)。——ZwqXin.com抛开光线跟踪和辐射度算法,现在的实时渲染主要用的是GOURAUD模型和PHONG模型,粗俗地说,就是一个是顶点级别的一个是像素级别的,对应per vertex lighting和per pixel lighting。细节点说,就是一个是对顶点插值,一个是对法线插值。具体的...

weixin_29489791的博客 352

opengl ftransform

主场景模型用的是固定管线来渲染阴影效果,把主场景模型的一部分做了二次渲染,来实现反射效果,用的是glsl4.3的shader,运行发现二次渲染的部分总是抖动,后来分析可能是固定管线和可编程管线在这部分计算顶点的坐标有误差导致的,然后把发射效果的shader中顶点坐标计算改成了内置函数 gl_Position = ftransform(); 参考: 自己执行变换的另一种方式是使用内置函数ftransform,它对需要处理的顶点模拟了固定功能管线的顶点变换。这在混合固定功能和顶点着色器绘制同一个几何..

ljhtdcq的专栏 1706

GLSL几个简单Shader (转载)

ShaderDesigner下编Shader是最为方便的,但这里先用OpenGL下的编程来举例 转载自 http://blog.csdn.net/boksic 这几个Shader的实际效果: 1.最简单的固定单色Shader Vertex Shader 坐标经过投影矩阵变换:vTrans = projection * modelview * incomingVertex ...

weixin_30411997的博客 487

OpenGL学习笔记(四):Shader 着色器(GLSLShader类封装)

着色器(Shader)是运行在GPU上的小程序,从本质上来说,是一种把输入转化为输出的程序。使用GLSL编写着色器程序,并封装Shader类调用。

qq_39281631的博客 1383

GLSL教程】(四)shader简单示例

GLSL教程】(四)shder的简单示例

danshiming的博客 840

掌握GLSL Lightmap Shader技术

在三维图形渲染领域,Lightmap技术是一项重要的预计算光照技术,用于在渲染静态场景时获得更真实的光照效果。它通过预先计算场景中的光照和阴影信息,并将这些信息存储在纹理贴图上,从而在运行时减轻了实时计算的负担。Lightmap特别适用于不经常变化的环境,例如建筑可视化和视频游戏中的建筑内部。使用Lightmap技术可以显著提升渲染效果的真实感,尤其在静态物体上表现出复杂光照交互的细节。

weixin_35756373的博客 1022

GLSL Tessellation Shader的编程入门介绍

Tessellation Shader是OpenGL4.0引入的新特性,由Tessellation Control Shader和Tessellation Evaluation Shader两部分构成,这两个Shader正如其名,是为了做曲面细分而存在。 本文主要讲Tessellation Shader的基础编程入门。

码码代码,种种庄稼 3036

GLSL快速入门,用Shader实现彩虹特效

GLSL快速入门,用Shader实现彩虹特效导语Shader简介GLSL基础语法常用内置函数彩虹效果实现如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 导语 本文将先简要介绍一下ShaderGLSL,然后用一个简单的fragment shader的例子来实现一个彩虹的特

SakuraMashiro的博客 2537

GLSL实现对Shader编译链接

GLSL中对Shader的编译、链接、使用流程: #创建编写shader程序 顶点着色器程序: //文件名:shaderv.vsh 后面会使用 attribute vec4 position; attribute vec2 textureCoor; varying lowp vec2 varyTextCoor; void main() { varyTextCoor = textureC...

weixin_30527143的博客 302

怎么在unity中使用 glsl shader

转载链接 :            http://www.58player.com/blog-2532-69127.html  我猜你一定想写一个可以变换任意颜色而不仅仅只是显示红色的shader。你需要从Unity的编辑器给shader传递参数。这篇文章我们会用到shader的Properties和GLSL的特殊变量类型uniforms。

lynon的专栏 3752

GLSL基础概念和用法

图形图像顶点和片段像素的渲染,只能用固定管线或可编程着色器任何一种进行处理。 一、顶点着色器 顶点着色器,根据应用程序的设计,只是选择处理: 1.视觉空间变换(模型,法线,纹理). 2.主颜色和辅助颜色的计算生成(光照在摄像机坐标系中进行实时光照计算). 3.纹理坐标计算。 4.雾坐标设置和处理。 5.点大小。 新的顶点着色器或者支持更多的处理。并不是顶点管线的所有操作都可

自由理想的足迹 1万+

Unity Shader - GLSL Shader programs GLSL 着色器程序

GLSL Shader programs GLSL 着色器程序 除了使用Cg/HLSL shader programs(Cg/HLSL着色程序),OpenGL着色语言(GLSL)着色器可以直接编写。 然而,使用原生GLSL的话仅推荐用于测试,或是当你明确指定你的项目最终仅允许与Mac OS X,或是OpenGL ES的移动设备,或是Linux上。正常情况下,Unity会根据发布平台将Cg/HLSL...

Jave.Lin 的学习笔记 1578
上一篇: Winx64下OpenGL附加库(glew,glut)安装时遇到的几个注意点
下一篇: OpenGL下的VBO的图形绘制
boksic
博客等级 码龄22年 103粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值