molstar
Version:
A comprehensive macromolecular library.
33 lines (32 loc) • 1.61 kB
JavaScript
"use strict";
/**
* Copyright (c) 2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.texture3d_from_1d_trilinear = void 0;
exports.texture3d_from_1d_trilinear = `
vec4 texture3dFrom1dTrilinear(const in sampler2D tex, const in vec3 pos, const in vec3 gridDim, const in vec2 texDim, const in float offset) {
float gdYZ = gridDim.z * gridDim.y;
float gdZ = gridDim.z;
vec3 p0 = floor(pos * gridDim);
vec3 p1 = ceil(pos * gridDim);
vec3 pd = (pos * gridDim - p0) / (p1 - p0);
vec4 s000 = readFromTexture(tex, offset + p0.z + p0.y * gdZ + p0.x * gdYZ, texDim);
vec4 s100 = readFromTexture(tex, offset + p0.z + p0.y * gdZ + p1.x * gdYZ, texDim);
vec4 s001 = readFromTexture(tex, offset + p1.z + p0.y * gdZ + p0.x * gdYZ, texDim);
vec4 s101 = readFromTexture(tex, offset + p1.z + p0.y * gdZ + p1.x * gdYZ, texDim);
vec4 s010 = readFromTexture(tex, offset + p0.z + p1.y * gdZ + p0.x * gdYZ, texDim);
vec4 s110 = readFromTexture(tex, offset + p0.z + p1.y * gdZ + p1.x * gdYZ, texDim);
vec4 s011 = readFromTexture(tex, offset + p1.z + p1.y * gdZ + p0.x * gdYZ, texDim);
vec4 s111 = readFromTexture(tex, offset + p1.z + p1.y * gdZ + p1.x * gdYZ, texDim);
vec4 s00 = mix(s000, s100, pd.x);
vec4 s01 = mix(s001, s101, pd.x);
vec4 s10 = mix(s010, s110, pd.x);
vec4 s11 = mix(s011, s111, pd.x);
vec4 s0 = mix(s00, s10, pd.y);
vec4 s1 = mix(s01, s11, pd.y);
return mix(s0, s1, pd.z);
}
`;