Ваше изображение определенно не выглядит правильным, и кажется, что вы неправильно вычисляете внутренний путь световых лучей, когда они проходят через вашу сетку. Исходя из этого, я бы сказал, что вы вычисляете расстояние между точкой, в которой луч обзора впервые входит в куб, и местом, где он впервые попадает во внутреннюю стену, и используете его в качестве расстояния поглощения. По сути, это предполагает, что свет будет всегда выходить из стекла при первом попадании на стену, что является плохим предположением.
В действительности, когда свет входит в стекло из воздуха, он часто не сразу выходит из стекла. Это происходит потому, что когда свет падает на поверхность раздела стекло / воздух, может возникнуть явление, известное как полное внутреннее отражение (TIR). МДП возникает, когда свет распространяется от среды с более высоким показателем преломления (IOR) к среде с более низким IOR, что в точности и происходит в случае попадания света на внутреннюю стенку стеклянного объекта. Это изображение из Википедии является хорошей визуальной демонстрацией того, как оно выглядит, когда оно происходит:
В общих чертах, это означает, что если свет падает под небольшим углом, свет будет полностью отражаться от внутренней части среды. Чтобы учесть это, вам нужно оценить уравнения Френелякаждый раз, когда ваш луч света попадает на поверхность раздела стекло / воздух (AKA - внутренняя поверхность вашей сетки). Уравнения Френеля подскажут вам отношение отраженного света к количеству преломленного света, а в случае МДП - 1. Затем вы можете рассчитать соответствующие направления отраженного и преломленного света и продолжить отслеживать путь света либо через среду, либо за ее пределами. Если принять простую выпуклую сетку с равномерным коэффициентом рассеяния, то расстояние, используемое для закона Бера, будет суммой всех внутренних длин пути до выхода из среды. Вот как выглядит куб с вашими коэффициентами рассеяния и IOR 1,526 (натриево-натриевое стекло), визуализированными с использованием моего собственного трассировщика пути, который учитывает как внутренние, так и внешние отражения и преломления:
В конечном счете, внутренние отражения и преломления являются основной частью того, что делает стекло похожим на стекло. Простые аппроксимации действительно не помогают, как вы уже узнали. Ситуация становится еще хуже, если вы добавляете несколько сеток и / или невыпуклых сеток, поскольку вам нужно не только учитывать внутренние отражения, но и учитывать лучи, которые покидают среду и входят в нее в другой точке.