问题标签 [shading]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
opengl - 编译 OpenGL 4 Shading Language Cookbook,第 3 版的示例时出错
我从PacktPublishing github下载了 OpenGL 4 Shading Language Cookbook, 3rd Edition 的源代码
我已经下载了glm源代码版本glm-0.9.9.3,我已经下载了glfw源代码版本glfw-3.2.1。我使用“cmake”成功编译、构建和安装了 glm 和 glfw。
为了找到 GLFW 安装,我在 src (examples) 文件夹中执行了以下命令
cmake -D CMAKE_PREFIX_PATH=e:\mysrcpath\glfw-3.2.1\src 。
我收到以下错误
glfw3Config.cmake 有代码
“CMAKE_CURRENT_LIST_DIR”是
但是 glfw3Targets.cmake 位于
“cmake”构建无法在正确的路径中找到 glfw3Targets.cmake。
如何解决这个问题?
graphics - 带有平方衰减的阴影总是使一切变黑
我最近尝试改变我在 RayTracer 中计算漫反射照明的当前方式。以前是这样计算的:
其中 coef 是一个衰减系数,从每个像素的 1 开始,然后针对这条线生成的每个反射光线进行衰减:
这运作良好。
但我决定尝试一些更现实的东西并实现了这个:
其中 LIGHT_FALLOFF 它是一个常数值:
长度是从点光源中心到相交点的向量的长度:
问题是,这一切都只会产生黑屏!罪魁祸首是作为 light_intensity.set 中除数的长度。它使最终的颜色值成为某个值^ -5。但是,即使我将其替换为一个(破坏了我实现真实光衰减的目标),我仍然会得到接近于零的颜色值,因此是黑色图像。
我尝试在更靠近对象的位置添加另一个光源,但是要着色的模型由具有不同坐标的多个多边形组成,因此很难为它们确定一个好的位置。
所以我问。这对您来说似乎很正常,或者这似乎是一个错误?对我来说,理论对我来说并不奇怪,因为衰减是二次的。
似乎没有,有一些关于在哪里放置光源的提示,或者任何可以获得不是全黑的图像的东西?
感谢您阅读这一切!
PS:Intensity 被注释掉了,因为在我用来编写代码的示例中,它是一个
c++ - 带有 phong 着色和光线追踪溢出的“镜面”颜色
我在光线追踪器上实现了 phong 着色。不幸的是,我在运行它时收到了分段错误。可能的原因与“specular_color”Vec3f 变量有关(其中是由三个浮点数组成的对象)。当我打印它的值时,我收到:
specular_color: inf inf inf
找出原因并不复杂:
它是这样计算的:
其中 mat.ns 是镜面反射指数,它展示了预期值。
reflect*camera_dir 是原因,因为它总是以一个很大的值结束。在我的四个测试用例中,有三个是一个五位数的值。另一个是六位数的值(接近七)。因此,任何不接近 1 的指数的五位或六位数值都可能会溢出浮点变量。
现在的问题是为什么这些价值如此之大,如果它们可以或不能那样。如果他们不能,那么之前的代码中可能存在错误。如果可以的话,所缺少的只是对反射向量进行归一化(camera_dir 已经是单一的)
反射矢量是这样计算的:
其中 light_ray_dir 计算为:
current 是光源的名称,intersection 是光线与三角形的交点。
当它只漫射光时,它总是工作得很好。
然而,hit_normal 是新代码,计算方式如下:
u 和 v 是重心坐标,vertX 是三角形的顶点。
那么什么看起来更有可能呢?上述代码中可能存在更复杂的错误,或者只是缺少对反射向量的规范化。或者也许是别的什么?谢谢你的时间。
javascript - 如何在 WebGl 中使用漫反射照明进行 Gouraud 着色?
我坚持实施 Gouraud 平滑着色。我错过了一些东西,我需要帮助。
首先是漫射照明。为了获得漫射光,我使用这个公式:
ID * Kd * 最大值(点(N,L),0.0)
我应该得到我的漫反射颜色,并将它添加到我的环境颜色中。
下一个阴影。Gouraud 着色是每个顶点的着色。我在这个讲座中发现了 Gouraud 着色算法
据我了解这个算法:
- 确定每个多边形顶点的法线
- 将光照模型应用于每个顶点以计算顶点强度
- 在曲面多边形上线性插值顶点强度
这是输出图像
我在这里想念什么?顶点着色器:
片段着色器:
c++ - 在光线追踪器上进行 phong 着色的奇怪颜色
matlab - 如何在 Matlab 中将单个二维曲线绘制到颜色图上?
我用 Matlab 中现有的编译数据创建了一个平滑的颜色渐变二维等高线图。我将 x 轴、y 轴和 z 数据轮廓绘制为颜色图。我的目标是在颜色图上绘制一条二维曲线,表示单个 z 数据值,但我不知道如何。
有谁知道如何将 2-D 曲线绘制到 3-D 颜色图上?我提供了一个指向当前颜色图的链接,我希望在该颜色图上将单个 z 值绘制为曲线。
opengl - OpenGL 漫反射/镜面光不在多边形上渲染(仅环境光)
我已经根据我的理解设置了照明,但渲染的只是环境照明。它似乎适用于 glutSolidSphere 和 glutSolidCube 等内置形状,但不适用于我手动编码的多边形。
我花了几个小时查看教程和 StackOverflow,但我自己无法解决它。
我错过了什么?我正在使用 Netbeans (Windows)、C++、FreeGlut。
图片:3D 飞机
编辑:我编写了一个名为 calcNormal 的普通计算函数,并将我的 glVertex 调用转换为顶点的四边形数组......
...但它仍然没有渲染漫射光,即使我现在为每个多边形设置 glNormal。
我的多边形/顶点结构现在看起来像这样:
blender - 就新材料/BSDF 而言,开放着色语言 (OSL) 到底有哪些限制?
我正在研究 BRDF 描述和实现技术,而 OSL 是这样做的主要语言之一。我很好奇使用 OSL 实现新 BRDF 的方式,或者是否可以在不弄乱源代码的情况下这样做。
OSL 文档提供了一组任何渲染器都应该使用的材料。例如,Blender 提供了一组可在 OSL 中使用的扩展的已实现材质(这些材质实际上已作为 Cycles 中的节点提供)。我对创建新材料 (BRDF) 很感兴趣。根据这个线程,OSL 不应该像这样使用,而是用户应该利用已经可用的材料闭包(BSDF)来创建新材料。该线程中的 OP 试图实现 BRDF 但无法取得进展,因为他找不到获得所需某些向量的方法。
最后,我的问题是:为了创建用于 OSL 的新材料(BRDF),是否有必要先在 C++ 中实现它们并重新编译 OSL,才能最终使它们可用?我无法找到这个问题的明确答案。