如何在质心计算光线的情况下实现平面着色? [英] How to achieve flat shading with light calculated at centroids?

查看:36
本文介绍了如何在质心计算光线的情况下实现平面着色?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想编写一个GLSL着色器程序,用于逐面着色。我的第一次尝试使用flat插值限定符和触发顶点。我对法线和位置顶点属性都使用平面插值,这为我提供了所需的实心绘制曲面的老式效果。

虽然渲染看起来正确,但着色器程序实际上没有正确执行工作:

  1. 灯光计算仍以每个碎片为基础(在碎片着色器中),
  2. 位置矢量取自挑衅顶点,而不是三角形的质心(对吗?)。

是否可以对三角形的质心应用一次照明公式,然后对整个基元使用计算出的颜色值?如何做到这一点?

推荐答案

使用输入为三角形、输出为三角形的几何着色器。将法线和位置从顶点着色器传递到片段着色器,自己计算质心(通过平均位置),并进行照明,将输出颜色作为输出变量传递给片段着色器,片段着色器只是将其读入并写出。

这篇关于如何在质心计算光线的情况下实现平面着色?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆