光照只有叠加,没有覆盖

第九章 更复杂的光照 阅读详情
#include "stdafx.h"
#include<gl/glew.h>
#include <stdlib.h>
#include<iostream>
#include <GL/glut.h>
#include<gl/gl.h>
#include <windows.h>


void init(void) 
{
// all parameters of lighting attrubutes
float  light_specular[]={0.8, 0.8, 0.8, 1.0};
float  light_ambient[]={0.8, 0.8, 0.8, 1.0};
float  light_diffuse[]={0.8, 0.8, 0.8, 1.0};
float  light_position[]={0.0, 0.0, 3.0,0.0};
float  spot_direction[]={0.0, 0.0, 0.0,0.0};


//// glLight0 gets the parameters
glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
    glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
    glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
/*
// attenuation parameters are set
glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1.5);
    glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.5);
    glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.2);
// spot cutoff and direction and eponent
    glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 45.0);
    glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spot_direction);
    glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, 2.0);
*/
// all parameters of material attributes
    //float  mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };
    //float  mat_shininess[] = { 50.0 };
    //float  mat_ambient[]={1.0, 1.0, 1.0, 1.0};
    //float  mat_diffuse[]={1.0, 1.0, 1.0, 1.0};


// material is set 
//glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
 //   glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
//glMaterialfv(GL_FRONT, GL_SPECULAR,mat_specular);
 //   glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);


// ligthtmodel information 
//GLfloat lightmodel_ambient[] = { 0.0, 0.0, 0.0, 1.0 };
    //glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lightmodel_ambient);


// fundanmental information 
    glClearColor (0.0, 0.0, 0.0, 0.0);
    glShadeModel (GL_SMOOTH);

// enable lighting 
    glLightfv(GL_LIGHT0, GL_POSITION, light_position);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);


glEnable(GL_DEPTH_TEST);
}


void display(void)
{
   glColorMask(1.0,1.0,1.0,1.0);
   glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);


   //left teapot
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
   glColorMask(0.0,0.0,1.0,0.0);
   glPushMatrix();
   glTranslatef(-0.2,0.0,0.0);
   glutSolidTeapot(2.0);
   glPopMatrix();


   //right teapot
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
   glPushMatrix();
   glColorMask(1.0,0.0,0.0,0.0);
   glTranslatef(0.2,0.0,0.0);
   glutSolidTeapot(2.0);
   glPopMatrix();
   glFlush();


   
   //left teapot
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
   glColorMask(0.0,0.0,1.0,0.0);
   glPushMatrix();
   glTranslatef(-0.2,0.0,0.0);
   glutSolidTeapot(2.0);
   glPopMatrix();


   
   //right teapot
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
   glPushMatrix();
   glColorMask(1.0,0.0,0.0,0.0);
   glTranslatef(0.2,0.0,0.0);
   glutSolidTeapot(2.0);
   glPopMatrix();
   glFlush();


   
}


void reshape(int w, int h)
{
   glViewport(0, 0, (GLsizei) w, (GLsizei) h);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   glOrtho (-5, +5, -5, +5, -5.0, 5.0);
}


int main(int argc, char** argv)
{
   glutInit(&argc, argv);
   glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
   glutInitWindowSize(500, 500);
   glutInitWindowPosition(100, 100);
   glutCreateWindow(argv[0]);
   init();
   glutReshapeFunc(reshape);
   glutDisplayFunc(display);
   glutMainLoop();
   return 0;

}

无意中写了上面的一段代码,在学长的教导下,终于解决了问题,就是光照根据深度检测,和模型glcolor进行深度检测,在深度比较浅时,采用的不同的机制。一种是覆盖,另一种是叠加。深度较深时,是直接抛弃。

如下图所示。




IAF R-CNN:针对多光谱行人目标检测的光照感知Faster R-CNN Illumination-aware Faster R-CNN:针对多光谱行人目标检测的光照感知Faster R-CNN 阅读详情

相关推荐

UE数字孪生中动态天气与Cesium地理光照冲突的5种解决方案

在Unreal Engine数字孪生与地理空间可视化项目中,动态天气系统与真实地理光照的集成是一个常见的技术挑战。其核心原理在于两套独立的光照与曝光管理系统——例如Cesium for Unreal的物理精确光照与Ultra Dynamic Sky等天气插件的艺术化控制——在渲染管线底层对光源方向、强度及自动曝光(Eye Adaptation)等关键参数存在控制权冲突。理解并解决这一冲突具有重要的技术价值,它直接决定了数字孪生场景的视觉一致性、沉浸感与真实性。典型的应用场景包括智慧城市、工业仿真、环境监测等

weixin_34205826的博客 1048

Unity Shader入门教程(十) :多光源的光照处理以及光照衰减

首先,我们来了解渲染路径。之前我们在代码中设置标签: 该标签表示告诉Unity,该Pass使用前向渲染中的ForwardBase路径。而前向渲染路径还有一种路径叫ForwardAdd,分别对应了下文说到的Base Pass已经Addtional Pass。这里我们将讨论最常用的前向渲染路径,即ForwardBase和ForwardAdd。而Pass的LightMode标签还支持如下的渲染路径...

qq_34818497的博客 5283

UE4-灯光烘焙效果质量不佳解决方法

一、灯光烘焙参数设置 1.灯光的强度及灯源范围、衰减范围之类的参数自行设定。 2.灯光属性Lightmass 设置及烘焙影响

Stone的博客 6273

unity3d学习笔记-光照(5.光照探测器Light Probes)

一、什么是光探头Light Probes? 当您烘焙光照贴图时,您会将光照静态表面的快照存储在场景中。场景中的灯光不会继续在这些表面上投射更多的光。当一个动态对象(如您的球体)通​​过烘焙光时,渲染器需要有关通过动态对象行进的空白空间的光的信息,以便能够正确地照亮它。 Unity 有一个工具可以解决这个问题:Light Probes 。您已经在光照贴图中存储了有关光线如何照射场景中不同表面的数据。您可以使用 Light Probes 测量(或探测)有关穿过场景中空白空间的光的数...

Amateur_master的博客 3501

研一脑电小白日记 之 EEGLAB预处理实战指南

本文为脑电研究新手提供了一份详尽的EEGLAB预处理实战指南。从MATLAB与EEGLAB环境搭建、使用NeuracleEEGFileReader插件导入BDF格式数据开始,逐步讲解了电极定位、滤波、降采样、ICA去伪迹等核心步骤,旨在帮助初学者高效完成脑电数据预处理,为后续分析奠定坚实基础。

weixin_29230649的博客 555

CORS(跨域资源共享)漏洞解决方法

最近,测试环境上的项目被360测试人员检测出来有一个CORS漏洞,以下记录下漏洞问题与解决方法。 一、低危漏洞:CORS漏洞问题 测试人员访问某个url,将请求头中的Origin字段修改为任意值,结果仍然能获得正确的响应报文,就说明有CORS漏洞。 当CORS的设置不正确时,就会带来安全问题;当响应头中的Access-Control-Allow-Origin设置为null或*时,表示信任任何域,这时候就可能引入安全问题。 修复方法是合理配置CORS,判断Origin是否合法;具体说就是不让在nginx或t

BHSZZY的博客 3万+

如何用UnitySpriteShaders实现像素光照和顶点光照:完整教程

如果你正在寻找一个强大的Unity Sprite渲染解决方案,那么UnitySpriteShaders绝对是你不能错过的工具。这个专门为Unity精灵渲染设计的超级着色器(Uber Shader)提供了完整的像素光照和顶点光照支持,让你的2D游戏画面效果瞬间提升到专业水准。无论你是Unity新手还是经验丰富的开发者,这个教程将带你全面了解如何使用UnitySpriteShaders实现惊艳的2D光

gitblog_00914的博客 656

Outlook邮件备份全攻略:从导出到导入的完整流程(附常见问题解决)

本文提供了一份详尽的Outlook邮件备份全攻略,涵盖从导出到导入的完整流程。重点解析了经典桌面版Outlook的.pst文件备份方法、进阶的智能筛选备份策略,以及如何通过导入恢复和工具验证确保备份可用。同时,文章还介绍了构建自动化备份体系与异地容灾的最佳实践,并附有常见问题解决方案,帮助用户建立可靠的邮件数据安全防线。

weixin_29248611的博客 890

OpenGL第七讲——三维物体、光照模型

OpenGL三维物体和光照

weixin_47524903的博客 1268

如何使用ArcGIS自动矢量化建筑

在显示的重分类对话框内,输入栅格选择提取单波段后的栅格,重分类分为三个层级,旧值分别为100-249、250-251和252-255,对应新值为1、2和3,旧值的最小和最大值不用修改,保持和原有的一致。同样在ArcToolbox内点击Spatial Analyst工具点击“重分类\重分类”,在重分类对话框内输入栅格选择之前重分类过后的图片,将旧值3的新值设置为1,这样分类后就只有两类。在显示的新建Shapefile对话框内,名称命名为折线,要素类型选择折线,点击编辑,设置坐标系为WGS 1984。

2162

华为OD机试双机位C卷-FLASH坏块监测系统(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【FLASH坏块监测系统】,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - FLASH坏块监测系统。

qq_45776114的博客 1928

OpenGL学习笔记:光照

人眼看见物体,是因为光线直接或间接的从那里到达了眼睛。人眼对光线强弱变化很敏感,胜过于颜色变化。现实生活中,有些物体本身就可以发光,比如太阳,而有的,只会反射光,如木头。OpenGL光照系统:OpenGL对光线的模拟如下:在光照系统中,分为三部分,光源(light)(发光的东西)

lcphoenix的专栏 2126

分布式训练中All-Reduce、All-Gather、Reduce-Scatter原理

Reduce-Scatter = 先对所有进程的数据做 Reduce(如 sum / mean),再把结果“切分”分发给各进程。(是 Reduce + Scatter 的融合操作。

comli_cn的博客 339

Unity异步场景加载与光照烘焙协同优化实战指南

在游戏开发中,资源加载与渲染优化是提升用户体验的核心技术。异步加载通过后台线程处理资源读取,有效避免了主线程阻塞导致的卡顿问题。其原理是将资源加载与场景激活分离,允许在加载过程中保持交互响应。这项技术的核心价值在于实现流畅的场景切换,尤其对开放世界、大型室内场景等复杂项目至关重要。光照烘焙作为渲染管线的重要环节,将预先计算的光照信息存储为光照贴图,能极大提升运行时渲染效率与画面质量。然而,当异步加载场景时,若其依赖的光照贴图、光照探针等烘焙数据未能同步就绪,会导致场景激活后出现短暂的光影缺失或异常,破坏视觉

weixin_30861797的博客 315

全面解析智能座舱芯片参数:高通 (SA8295)vs 联发科,真实案例一行行讲给你听!

使用场景推荐芯片中低端车型 + 1屏导航语音SA8155P / MT8628(性价比高)中控+副驾+仪表+全景影像SA8255P / MT8678(性能强)高阶自动驾驶+域控融合SA8295P(顶级安全+算力)

weixin_43199439的博客 2073

【DaVinci Configurator专题】-2-将CAN 2.0或CANFD Matrix的Arxml/DBC文件导入到CFG

共9页 目录 1 打开DaVinci Configurator,导入Arxml文件 2 解决导入Arxml文件后可能会出现的一些错误 3 验证CFG的配置 4 根据CFG的配置生成代码 5 结尾 <--返回「实战篇」博文-总目录--> <--返回「Autosar从入门到精通-实战篇」专栏主页--> 关键词: Open the Input Files Assistant Complete update process Update ECU configurati

「汽车电子助手」的博客 6122

实时全局光照RSM-Reflective Shadow Maps(RSM)

现实世界光处于线性空间,光照效果是可以叠加的,最终的光照结果 = 直接光照 + 间接光照,结果也被称为全局光照(Global illumination)。与之对比的是局部光照——仅考虑直接光照。那么自然在目前线性空间的渲染技术当中,同样符合光照结果 = 直接光照(direct light) + 间接光照(indirect light)。直接光:光源直接照射到物体上,后被反射进眼睛,来自被指定的光源。间接光:光经过多次弹射(至少大于等于两次)后进入眼睛,来自被着色位置正半球的所有可能方向。

dx1313113的博客 2333

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

OpenGL编程指南-光照

OpenGL通过光源、材料和光照模型,渲染光照物体,模拟现实世界1.光源1.创建光源 OpenGL至少支持8个光源,即GL_LIGHT0到GL_LIGHT7,可以使用glEnable开启光源 2.设置光源属性 设置光源方向:glLightfv(GL_LIGHT0, GL_POSITION,position) 设置环境光:glLightfv(GL_LIGHT0,GL_AMBIENT,light_a

yanglusheng的专栏 783

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

shader-光照

unity渲染路径 渲染路径(Rendering Path)决定光照如何应用到shader中 ----> 在Pass中指明使用的渲染路径。 通过设置Pass的 LightMode标签实现; 向前渲染路径 没进行一次完整的前向渲染,我们需要渲染该对象的渲染图元,并计算两个缓冲区的信息:一个颜色缓冲区,一个深度缓冲区。利用深度缓冲来决定一个片元是否可见,如果可见就更新颜色缓冲区的...

birdswillbecomdragon的博客 532

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

unity shader学习---光照模型(二)

unity中的光照模式,渲染模式 多光源前向渲染,阴影的实现

qq_39542170的博客 5117

Vulkan_Shader_Day04—光照(光照贴图_Lighting maps)

光照贴图 在上一节中,我们讨论了让每个物体都拥有自己独特的材质从而对光照做出不同的反应的方法。这样子能够很容易在一个光照的场景中给每个物体一个独特的外观,但是这仍不能对一个物体的视觉输出提供足够多的灵活性。 在上一节中,我们将整个物体的材质定义为一个整体,但现实世界中的物体通常并不只包含有一种材质,而是由多种材质所组成。想想一辆汽车:它的外壳非常有光泽,车窗会部分反射周围的环境,轮胎不会那么有光泽...

qq_35312463的博客 746

Unity Shader编程】之复杂光照

在Unity Shader的LightMode标签中,除了前向渲染和延迟渲染外,还支持多种渲染模式设置。以下是主要分类及用途:一、核心渲染路径模式前向渲染相关ForwardAdd延迟渲染相关Deferred二、辅助功能模式3. 阴影处理三、特殊用途模式5. 无条件渲染AlwaysVertexVertexLM四、选择建议DeferredForwardAdd。

qq1342753906的博客 1267

Filament引擎(四)——光照渲染Froxelizer实现分析

Froxelizer是Filament引擎实现高效光照渲染的核心技术,它采用"分簇着色"方案将视锥体划分为3D网格(Froxel),预先计算每个Froxel受哪些光源影响。这种指数型深度划分方式优化了近景渲染精度,同时支持大量动态光源。Filament通过材质系统构建光照Shader,在渲染前将Froxel数据传入GPU,实现前向渲染中高效的多光源处理。该技术平衡了光照效果与性能,解决了传统前向渲染处理多光源的瓶颈问题。

偶尔记录的一些学习笔记 2282

Vision引擎里光照 延迟渲染

引言 延迟渲染提供了多种对性能影响适中的动态光照、更多的后期处理器,以及更好的整体环境观感。 什么是延迟渲染? 延迟渲染系统在初始通路中使用多重渲染目标(MRT)来设置一组所谓的几何体缓存(G-Buffers)。 在这一初始通路中,有关每个像素的位置、法线、散射色、高光色等信息被储存在四个独立的渲染目标中。 之后,这一信息被用于计算动态照明、阴影和所有特殊效果,即后期处理特...

projectanarchy2的专栏 228

Unity中的HDRP(三十三):间接光照控制器(Indirect Lighting Controller)

《HDRP间接光照控制器应用指南》摘要(149字) 间接光照控制器是HDRP中的Volume组件,用于全局调控烘焙和预计算间接光照。核心功能包括通过统一参数控制所有间接光源强度,简化光照动画流程,支持动态调整场景氛围(如昼夜交替)。使用需在Volume对象添加IndirectLightingController组件,通过漫反射/反射乘数调整光照强度,结合LightLayers实现精准控制。典型应用如区域光照渐变:设置触发体积并动画化Weight参数,配合碰撞体实现平滑过渡。该系统作为"光照总开关&

分享知识,拥抱变化 1031
上一篇: 生活大爆炸soft kitty
下一篇: 一个比较简单的红蓝图opengl程序
Savitch
博客等级 码龄16年 84粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值