1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- export const assign_color_varying = `
- #if defined(dRenderVariant_color)
- #if defined(dColorType_attribute)
- vColor.rgb = aColor;
- #elif defined(dColorType_instance)
- vColor.rgb = readFromTexture(tColor, aInstance, uColorTexDim).rgb;
- #elif defined(dColorType_group)
- vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;
- #elif defined(dColorType_groupInstance)
- vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb;
- #elif defined(dColorType_vertex)
- vColor.rgb = readFromTexture(tColor, VertexID, uColorTexDim).rgb;
- #elif defined(dColorType_vertexInstance)
- vColor.rgb = readFromTexture(tColor, int(aInstance) * uVertexCount + VertexID, uColorTexDim).rgb;
- #elif defined(dColorType_volume)
- vec3 cgridPos = (uColorGridTransform.w * (position - uColorGridTransform.xyz)) / uColorGridDim;
- vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;
- #elif defined(dColorType_volumeInstance)
- vec3 cgridPos = (uColorGridTransform.w * (vModelPosition - uColorGridTransform.xyz)) / uColorGridDim;
- vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;
- #endif
- #ifdef dUsePalette
- vPaletteV = ((vColor.r * 256.0 * 256.0 * 255.0 + vColor.g * 256.0 * 255.0 + vColor.b * 255.0) - 1.0) / 16777215.0;
- #endif
- #ifdef dOverpaint
- #if defined(dOverpaintType_groupInstance)
- vOverpaint = readFromTexture(tOverpaint, aInstance * float(uGroupCount) + group, uOverpaintTexDim);
- #elif defined(dOverpaintType_vertexInstance)
- vOverpaint = readFromTexture(tOverpaint, int(aInstance) * uVertexCount + VertexID, uOverpaintTexDim);
- #elif defined(dOverpaintType_volumeInstance)
- vec3 ogridPos = (uOverpaintGridTransform.w * (vModelPosition - uOverpaintGridTransform.xyz)) / uOverpaintGridDim;
- vOverpaint = texture3dFrom2dLinear(tOverpaintGrid, ogridPos, uOverpaintGridDim, uOverpaintTexDim);
- #endif
- // pre-mix to avoid darkening due to empty overpaint
- #ifdef dColorType_uniform
- vOverpaint.rgb = mix(uColor.rgb, vOverpaint.rgb, vOverpaint.a);
- #else
- vOverpaint.rgb = mix(vColor.rgb, vOverpaint.rgb, vOverpaint.a);
- #endif
- #endif
- #ifdef dSubstance
- #if defined(dSubstanceType_groupInstance)
- vSubstance = readFromTexture(tSubstance, aInstance * float(uGroupCount) + group, uSubstanceTexDim);
- #elif defined(dSubstanceType_vertexInstance)
- vSubstance = readFromTexture(tSubstance, int(aInstance) * uVertexCount + VertexID, uSubstanceTexDim);
- #elif defined(dSubstanceType_volumeInstance)
- vec3 sgridPos = (uSubstanceGridTransform.w * (vModelPosition - uSubstanceGridTransform.xyz)) / uSubstanceGridDim;
- vSubstance = texture3dFrom2dLinear(tSubstanceGrid, sgridPos, uSubstanceGridDim, uSubstanceTexDim);
- #endif
- // pre-mix to avoid artifacts due to empty substance
- vSubstance.rgb = mix(vec3(uMetalness, uRoughness, uBumpiness), vSubstance.rgb, vSubstance.a);
- #endif
- #elif defined(dRenderVariant_pick)
- #ifdef requiredDrawBuffers
- vObject = vec4(packIntToRGB(float(uObjectId)), 1.0);
- vInstance = vec4(packIntToRGB(aInstance), 1.0);
- vGroup = vec4(packIntToRGB(group), 1.0);
- #else
- if (uPickType == 1) {
- vColor = vec4(packIntToRGB(float(uObjectId)), 1.0);
- } else if (uPickType == 2) {
- vColor = vec4(packIntToRGB(aInstance), 1.0);
- } else {
- vColor = vec4(packIntToRGB(group), 1.0);
- }
- #endif
- #endif
- #ifdef dTransparency
- vGroup = group;
- #if defined(dTransparencyType_groupInstance)
- vTransparency = readFromTexture(tTransparency, aInstance * float(uGroupCount) + group, uTransparencyTexDim).a;
- #elif defined(dTransparencyType_vertexInstance)
- vTransparency = readFromTexture(tTransparency, int(aInstance) * uVertexCount + VertexID, uTransparencyTexDim).a;
- #elif defined(dTransparencyType_volumeInstance)
- vec3 tgridPos = (uTransparencyGridTransform.w * (vModelPosition - uTransparencyGridTransform.xyz)) / uTransparencyGridDim;
- vTransparency = texture3dFrom2dLinear(tTransparencyGrid, tgridPos, uTransparencyGridDim, uTransparencyTexDim).a;
- #endif
- #endif
- `;
|