初步了解3d着色器的概念(代码片段)

bcbobo21cn bcbobo21cn     2022-11-29     408

关键词:

Unity3D中,着色器定义如下,

    着色器是一个脚本,它应用材质中包含的属性来将 3D 对象的网格渲染到屏幕上的 2D 图像;

    每个着色器都是为特定的渲染管道编写的;

看一下panda3d中的一个例子;

此例子带有2个着色器文件,.sha;

Basic这个py文件是不带着色器运行,Advanced这个py文件带着色器运行;

带着色器运行如下;

不带着色器,具有光照,运行如下;

 

 加载原始模型如下;

 加载着色器的python代码,

    glowShader=loader.loadShader("glowShader.sha")

    。。。。。。

    blurXBuffer=makeFilterBuffer(glowBuffer,  "Blur X", -2, "XBlurShader.sha")
    blurYBuffer=makeFilterBuffer(blurXBuffer, "Blur Y", -1, "YBlurShader.sha")

一个着色器的示例如下;

void vshader(float4 vtx_position : POSITION, 
             float2 vtx_texcoord0 : TEXCOORD0,
	     out float4 l_position : POSITION,
	     out float2 l_texcoord0 : TEXCOORD0,
             uniform float4x4 mat_modelproj)

  l_position=mul(mat_modelproj, vtx_position);
  l_texcoord0=vtx_texcoord0;



void fshader(float2 l_texcoord0 : TEXCOORD0,
             out float4 o_color : COLOR,
             uniform sampler2D tex_0 : TEXUNIT0)

  float3 offset = float3(1.0/1024.0, 5.0/1024.0, 9.0/1024.0);
  o_color =  tex2D(tex_0, float2(l_texcoord0.x - offset.z, l_texcoord0.y)) * 5.0;
  o_color += tex2D(tex_0, float2(l_texcoord0.x - offset.y, l_texcoord0.y)) * 8.0;
  o_color += tex2D(tex_0, float2(l_texcoord0.x - offset.x, l_texcoord0.y)) * 10.0;
  o_color += tex2D(tex_0, float2(l_texcoord0.x + offset.x, l_texcoord0.y)) * 10.0;
  o_color += tex2D(tex_0, float2(l_texcoord0.x + offset.y, l_texcoord0.y)) * 8.0;
  o_color += tex2D(tex_0, float2(l_texcoord0.x + offset.z, l_texcoord0.y)) * 5.0;
  o_color = o_color * 0.030;

    着色器就是3D主程序之外,一段单独的脚本,从主程序中加载,用来实现某种增强效果的;根据需要编写自己的着色器;

我的opengl学习进阶之旅opengles着色语言(上)(代码片段)

...运算符未完待续前言通过前面几篇博客的介绍,我们了解了着色器是OpenGLES3.0API的一个基础核心概念。每个OpenGLES3.0程序都需要一个顶点着色器和一个片段着色器,以渲染有意义的图片。考虑到着色器是API概念的核心,... 查看详情

我的opengl学习进阶之旅opengles着色语言(上)(代码片段)

...运算符未完待续前言通过前面几篇博客的介绍,我们了解了着色器是OpenGLES3.0API的一个基础核心概念。每个OpenGLES3.0程序都需要一个顶点着色器和一个片段着色器,以渲染有意义的图片。考虑到着色器是API概念的核心,... 查看详情

glsl基本概念(代码片段)

1.GLSL(OpenGLShaderLanguage)OpenGL的着色器编程语言类C语言,为图形计算量身定制,包含一些针对向量和矩阵操作的有用特性。着色器的开头:声明版本、输入、输出变量、uniform和main函数。每个着色器的入口点都是main函数&... 查看详情

glsl基本概念(代码片段)

1.GLSL(OpenGLShaderLanguage)OpenGL的着色器编程语言类C语言,为图形计算量身定制,包含一些针对向量和矩阵操作的有用特性。着色器的开头:声明版本、输入、输出变量、uniform和main函数。每个着色器的入口点都是main函数&... 查看详情

初步了解panda3d粒子系统(代码片段)

运行panda3d示例Tut-Particle-Panel.py;出现一个基本粒子系统如下;同时出现粒子系统面板如下;   粒子系统的编程原理应该是通过指定粒子的发射位置、数量、粒子尺寸、颜色等参数,然后引擎就把它做出来;... 查看详情

初步了解panda3d粒子系统(代码片段)

运行panda3d示例Tut-Particle-Panel.py;出现一个基本粒子系统如下;同时出现粒子系统面板如下;   粒子系统的编程原理应该是通过指定粒子的发射位置、数量、粒子尺寸、颜色等参数,然后引擎就把它做出来;... 查看详情

初步了解panda3d雾(fog)(代码片段)

运行Panda示例Infinite-Tunnel,无限隧道;一个运动的,看不到尽头的隧道;ToggleFog,可切换Fog的颜色;Fog可显示或不显示;Fog颜色可切换;  看一下此示例的代码,主要功能代码有三部分;加... 查看详情

如何阅读着色器的汇编代码(代码片段)

上接第一篇《如何阅读着色器的汇编代码(一)》译文正文HLSL着色器代码:float4PSMain(PSInputinput):SV_TARGETfloat4result=tex.Sample(samplerLinear,input.uv); 查看详情

如何阅读着色器的汇编代码(代码片段)

上接第一篇《如何阅读着色器的汇编代码(一)》译文正文HLSL着色器代码:float4PSMain(PSInputinput):SV_TARGETfloat4result=tex.Sample(samplerLinear,input.uv); 查看详情

opengles(一.概念)

...序编程接口,主要的支持平台是iOS,Android,Linux和Windows1.顶点着色器他可以用于通过矩阵变换位置,计算照明公式来生成逐顶点颜色以及生成或者变换纹理坐标等基于顶点的传统操作顶点着色器的输入包括:1.着色器程序--描述顶点上执... 查看详情

初步了解panda3d音频和高级交互组件(代码片段)

运行panda3d Tut-Music-Box.py示例;如下图,点击按钮有一个打开关闭盒子的效果,还会播放不同音乐;Panda将音频系统分为两类:声音效果,音乐;Panda提供三种音频库:openAL,FMOD,Miles;sel... 查看详情

如何阅读着色器的汇编代码(代码片段)

上接第一篇《如何阅读着色器的汇编代码(三)》译文正文label_0017:s_waitcntvmcnt(0)v_mul_f32v0,s3,v0v_mul_f32v1,s3,v1v_mul_f32v2,s3,v2v_m 查看详情

爬虫初步了解(代码片段)

 一、爬虫的概念:口语版:也叫网络蜘蛛,它是批量下载网络资源的程序专业版:网络爬虫是伪装成客户端与服务端进行数据交互的程序二、爬虫的应用:1.数据采集例:收集数据,大数据2.搜索引擎例:百度,谷歌搜索引擎都属... 查看详情

socket初步了解(代码片段)

 在这之前我们先了解一下一些关于网络编程的概念  网络编程从大方面说就是对信息的发送和接收,中间传输为物理线路的作用,编程人员可以不用考虑  网络编程最主要的工作就是在发送端吧信息通过规定好的协议进行... 查看详情

webgpu开发详解(代码片段)

...(不使用任何3D网格或模型)做令人惊奇的事情来了解有关着色器的更多信息。这让我可以在PROXX中构建 查看详情

opengles几个概念-顶点着色器片元着色器egl(代码片段)

一、OpenGLESOpenGLES是使用在手机端和嵌入式里的3D图形应用程序编程接口,是跨平台的API。OpenGLES是OpenGL的简化版本。OpenGL2.x版本相比1.x版本有较大差异,1.x版本为fixedfunctionpipeline,即固定管线硬件,而2.x版本为progr... 查看详情

jdbc的初步了解及使用(代码片段)

一、概念1、什么是JDBC?  JDBC(JavaDataBaseConnectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的... 查看详情

初步了解panda3d音频和高级交互组件(代码片段)

运行panda3d Tut-Music-Box.py示例;如下图,点击按钮有一个打开关闭盒子的效果,还会播放不同音乐;Panda将音频系统分为两类:声音效果,音乐;Panda提供三种音频库:openAL,FMOD,Miles;sel... 查看详情