jjzjj

Filament

全部标签

【Filament】材质系统

1前言​本文主要介绍Filament的材质系统,官方介绍详见→FilamentMaterialsGuide。材质系统中会涉及到一些空间和变换的知识点,可以参考:【Unity3D】空间和变换、【Unity3D】Shader常量、变量、结构体、函数、【OpenGLES】MVP矩阵变换、【OpenGLES】透视变换原理。​需要注意的是,Unity世界空间是左手坐标系,OpenGL和Filament的世界空间是右手坐标系,Filament的世界空间坐标轴如下。红+X,绿+Y,蓝+Z​读者如果对Filament不太熟悉,请回顾以下内容。Filament环境搭建绘制三角形绘制矩形绘制圆形绘制立方体纹理贴图

【Filament】自定义Blinn Phong光照模型

1前言​光照元素主要有环境光(ambient)、漫反射光(diffuse)、镜面反射光(specular),基础的光照模型主要有兰伯特(Lambert)光照模型、冯氏(Phong)光照模型和改进的冯氏(BlinnPhong)光照模型。​Lambert光照模型只包含漫反射光的计算,Phong光照模型和BlinnPhong光照模型都包含环境光、漫反射光、镜面反射光的计算,两者的区别在与镜面反射光的计算,Phong光照模型根据反向量和观察向量计算镜面反射光,BlinnPhong光照模型根据半向量和法向量计算镜面反射光。​BlinnPhong光照模型中环境光、漫反射光、镜面反射光的计算如下。vec3a

【Filament】立方体贴图(6张图)

1前言​本文通过一个立方体贴图的例子,讲解三维纹理贴图(子网格贴图)的应用,案例中使用6张不同的图片给立方体贴图,图片如下。​读者如果对Filament不太熟悉,请回顾以下内容。Filament环境搭建绘制三角形绘制矩形绘制圆形绘制立方体纹理贴图2立方体贴图​本文项目结构如下,完整代码资源→Filament立方体贴图(6张图)。2.1基础类​为方便读者将注意力聚焦在Filament的输入上,轻松配置复杂的环境依赖逻辑,笔者仿照OpenGLES的写法,抽出了FLSurfaceView、BaseModel、Mesh、MaterialUtils和TextureUtils类。FLSurfaceView

【Filament】绘制矩形

1前言​Filament环境搭建中介绍了Filament的Windows和Android环境搭建,绘制三角形中介绍了绘制纯色和彩色三角形,本文将使用Filament绘制纯色和彩色矩形。2绘制矩形​本文项目结构如下,完整代码资源→Filament绘制矩形。2.1自定义基类​为方便读者将注意力聚焦在Filament的输入上,轻松配置复杂的环境依赖逻辑,笔者仿照OpenGLES的写法,抽出了FLSurfaceView和BaseModel类。FLSurfaceView与GLSurfaceView的功能类似,承载了渲染环境配置;BaseModel中提供了一些VertexBuffer、IndexBuffe

【Filament】Filament环境搭建

1前言​Filament是一个实时物理渲染引擎,用于Android、iOS、Linux、macOS、Windows和WebGL平台。该引擎旨在提供高效、实时的图形渲染,并被设计为在Android平台上尽可能小而尽可能高效。Filament支持基于物理的渲染(PBR),这意味着它可以模拟光线、材质和阴影等物理效果,以创建更逼真的图形场景。该引擎的设计注重性能和资源效率,使其成为移动设备和其他平台上渲染复杂图形的理想选择。​Filament官方资料如下。Filament仓库:https://github.com/google/filamentFilament中PBR原理及实现:https://go

Google Filament 源码学习(二):三方库分类总结

前言拿到Filament代码一头雾水,到底要怎么看呢,先从第三方库看起吧,如下对三方库进行了分类梳理。注:刚刚开始学习,有很多库和基本概念都不是很清楚,有不当之处请大家随时指出,本人一定虚心接受。文章目录前言1.压缩相关1.1draco1.2libz2.图像、纹理操作2.1basisu2.2libpng2.3stb2.4tinyexr3.测试框架3.1benchmark3.2libgtest4.三维模型操作4.1cgltf4.2libassimp5.UI界面及硬件交互库5.1imgui5.2gltumble5.3libsdl26.渲染相关6.1glslang6.2meshoptimizer6.

Google Filament 源码学习(一):Filament 编译

一、前言  之前做过一段OpenGL开发,也看过vulkan,但都是一知半解,所以一直想找一个经典的、跨平台的渲染引擎来学习。直到找到Filament这个东东。Filament是Google开发的轻量级跨平台实时渲染引擎,支持PBR材质,可用于开发游戏渲染引擎或构建音视频编辑工程。希望后期能够逐步深入,在此做好笔记,希望通过此能够同大家一起从入门到精通。二、ubuntu平台编译1、开发环境准备  开发环境注意以下几点:操作系统:我使用的是ubuntu20.04,安装完git。开发工具:ubuntu平台下,Filament推荐使用的是CLion,我使用的是CLion2022.2.3。CMake: