问题标签 [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.

0 投票
1 回答
2587 浏览

opengl - 如何在 OpenGL 中为 Phong 着色插入法线?

目前,我正在实施良好的旧 Phong 着色。总体而言,它看起来很正确,但出现了一种常态,我无法解释。

我认为,如果不仔细观察,斯坦福兔子看起来很正确。 在此处输入图像描述

但在耳朵上,例如有一个奇怪的模式: 在此处输入图像描述

在这张图片中,我可视化了法线并提高了饱和度以使问题更加明显。 在此处输入图像描述

这是我的顶点着色器:

这是我的片段着色器:

有人可以解释这种行为吗?

0 投票
1 回答
29 浏览

unity3d - Unity3D:我希望我的移动 3D 对象具有一致的阴影

我在场景中有 2 个定向灯,灯 1 平行于 Y 轴(我希望它在球体下方产生阴影),灯 2 平行于 x 轴。

我有一些障碍物(3d 立方体对象)正在移动到屏幕的左侧(速度 = (-20,0,0))。

我希望障碍物在场景中移动时具有一致的颜色/阴影。当物体位于屏幕右侧时,它会变暗,而当它向左移动时,就在它离开屏幕之前,它会变得更亮。我不知道为什么!

我做了什么:

我发现如果我从场景中移除所有灯光,效果就不会发生。

我已经从场景中移除了所有其他对象。

在照明选项中,我关闭了 RealtimeGI 和 Baked GI。我已移除 Skybox 并将 Ambient Intensity、Reflection Intensity 设置为 0。

这是帮助理解它的效果:

障碍

障碍物移动

谢谢,如果你能帮助我!

0 投票
0 回答
238 浏览

android - PopupWindow 周围的阴影层,最好以编程方式

我正在寻找在 PopupWindow 周围设置阴影层以增加其可见性的最简单方法。我已经查看了涉及制作 custom-9-patch-graphic 的解决方案,但这似乎很难动态定制(我的 PopupWindow 根据输入等显示不同的内容,因此它具有不同的大小)。在 XML 中,它被设计为一个 Box,实现为具有透明背景的 RelativeLayout。

阴影的一个例子

(我在谷歌上找到了一些随机的例子。不过是我想要的。)

0 投票
2 回答
797 浏览

opengl - 当 NdotL <= 0 时,Cook-Torrance 着色器会中断非常奇怪

所以我一直在尝试在我正在做的一个玩具项目中实现 Cook-Torrance 着色器模型,从正确的角度看它看起来相当不错: 普通的 但是当你从一个浅的角度看时,你的视觉效果会变得明亮工件和周围的截止。

发生截止是因为我正在检查 NdotL > 0,但如果我删除它,事情开始变得更加奇怪: 删除了 NdotL 检查 颜色反转,在 NdotL == 0 的地方出现某种线,并且 NdotH < 0 的每个片段都变成黑色,使得它有一个鸡蛋的形状。

这是着色器代码:

我知道有一些未使用的值,但那是因为着色器尚未完成。

0 投票
2 回答
2456 浏览

graphics - How to implement Lambertian shading

I'm working on a ray tracer using C++ and OpenGL (glDrawPixels), and it is going well so far. However, my shading seems to be a bit off. I want my spheres to look a little smoother without having the blatant lines between intensities. At the moment, I am just trying to implement Lambertian shading, which is Intensity = Id * pd * (N dot L). I know how I need to calculate the (N dot L) by normalizing the normal vector and light vector, but what about the Id and pd (intensity diffuse and factor of proportionality)? I am just using a constant value of 2.5 to achieve the following:

(Here is a picture of what my shading looks like)

Obviously, 2.5 is completely arbitrary, and I'm only using it because my other attempts did not even resemble proper shading. The equation above seems to suggest that I should multiply the color by the intensity. This is my method:

Assume that the normal vector and the light vector are correct. Color is just a color struct I made that has an unsigned int for each of the RGB values. The parameter Color color is the color of the sphere I want to shade, e.g. red = Color(255,0,0). To modify the intensity of the color, I simply multiply each value by the intensity I calculated, but it doesn't look right when I run it.

Can someone explain what I am missing and show me what the correct function should look like given the vectors and sphere color? I've looked everywhere, but I can't find a good solution. I might also be doing my float to unsigned int conversion wrong, but I'm not sure. Any help is appreciated.

0 投票
1 回答
476 浏览

postscript - 后脚本中的类型 3 函数过程

我是后期脚本的初学者,刚刚开始研究后期脚本。我想创建一个后期脚本程序,可用于后期脚本的阴影效果。这种阴影可以有超过 2 种颜色,所以我需要定义类型 3 的拼接功能。

我正在考虑为 function2 定义一个过程,稍后我可以使用这个过程来定义类型 3 函数。

以下是我尝试过的...

我面临的问题是如何从堆栈中读取绑定变量。我不确定这是否可行。请检查并让我知道其中的问题。

0 投票
0 回答
469 浏览

java - PBR GGX 镜面去饱和颜色

我正在尝试实现 PBR 渲染器。我的镜面高光颜色不饱和(尤其是在掠射角中),并且超出了我的光体积边界球。为什么会这样?

我用来计算 GGX 镜面反射的函数:

然后在我将它与漫反射朗伯项合并在一起:

从顶部观看时,镜面高光有颜色,但随着相机靠近地面,颜色开始褪色。

镜面高光是彩色的 从放牧角度看,颜色被洗掉了

这是正确的行为吗?因为在查看湿沥青的照片时,反射的颜色似乎被保留了下来。

在此处输入图像描述

我设法通过将F0颜色更改为light.color

vec3 specular = mix(light.color, albedo * light.color, metallic);

但我读过,非金属的 F0 值应该是 0.04 左右,并且我的镜面反射超出了我的边界球。

0 投票
1 回答
1640 浏览

opengl - 在 openGL 中使用光照进行法线映射

我正在尝试在我的片段着色器中实现法线贴图和照明。但是我的代码似乎不起作用。我的想法是将 ModelMatrix 的额外副本传递给片段着色器,以便它可以转换存储在纹理中的法线。但反射光实际上发生在另一侧。

[更新] 在得到一些建议后,我在顶点着色器中计算了 TBN 矩阵,将 TBN 基础转换为世界空间,将 lightPosition 和 eyePosition 转换为 tangentSpace。但这一次,这颗星球甚至一点都不亮!仅显示环境光。然后我发现这是因为漫反射分量计算为负值,然后将其限制为 0。我似乎无法在着色器中找到错误。

顶点着色器:

片段着色器:

0 投票
3 回答
1359 浏览

apache-spark - Scala + SBT - 如何为着色的 Akka 库配置 reference.conf

TL;博士

我正在尝试遮蔽akka库的一个版本并将其与我的应用程序捆绑在一起(以便能够在 的版本上运行spray-can服务器)。着色过程弄乱了's 的默认配置,并且在手动为shaded提供了一个单独的's版本之后,看起来这两个版本仍然以某种方式混淆了。CDH 5.7Spark 1.6akkaakkareference.confakka

是否已知着色akka版本会导致问题?我究竟做错了什么?

背景

我有一个Scala/Spark应用程序当前Spark 1.6.1独立运行。该应用程序使用 运行spray-canhttp 服务器spray 1.3.3,这需要akka 2.3.9Spark 1.6.1独立包括兼容的akka 2.3.11)。

我正在尝试将应用程序Cloudera迁移到Spark运行. 问题是与in捆绑在一起不足以正常运行。CDH 5.7Spark 1.6Spark 1.6CDH 5.7akka 2.2.3spray 1.3.3

尝试的解决方案

按照这篇文章中的建议,我决定将akka 2.3.9它与我的应用程序一起遮蔽并捆绑在一起。虽然这次我偶然发现了一个新问题——akka它的默认配置是否定义在一个reference.conf文件中,该文件应该位于应用程序的类路径中。由于的着色功能中的一个已知问题sbt-assembly,着色akka库似乎需要单独的配置。

因此,我最终akka使用以下阴影规则进行着色:

reference.conf并在我的项目中包含一个附加文件,该文件与akka's original相同reference.conf,但所有出现的“akka”都替换为“akka_2_3_9_shade”。

但是,现在似乎Spark-providedakka以某种方式与 shaded 混淆了akka,因为我收到以下错误:

我的应用程序文件中的相关代码Boot.scala如下:

0 投票
1 回答
762 浏览

vba - 选择特定底纹颜色的文本(VBA 宏)

我正在尝试使用宏来选择 word 中特定阴影的文本(我稍后想更改该阴影并突出显示它)。

我在选择特定底纹颜色的文本时遇到问题。

使用

char.Font.Shading.BackgroundPatternColor <> wdColorAutomatic

工作,选择自动以外的任何阴影的字符,但使用

char.Font.Shading.BackgroundPatternColor = wdColorYellow

不起作用。我希望能够选择具有特定阴影颜色的文本。关于为什么这不起作用或什么可能更有效的任何想法?

谢谢