Browse Source

wip, color & lighting tweaks

Alexander Rose 7 years ago
parent
commit
0e18eda54e

+ 1 - 1
src/mol-geo/representation/structure/spacefill.ts

@@ -70,7 +70,7 @@ export default function Spacefill(): UnitsRepresentation<SpacefillProps> {
             const spheres = createRenderObject('mesh', {
                 position: mesh.vertexBuffer,
                 normal: mesh.normalBuffer,
-                color: { '@type': 'attribute', value: (mesh as any).colorBuffer },
+                color: { type: 'attribute', value: (mesh as any).colorBuffer },
                 transform: ValueCell.create(transformArray),
                 elements: mesh.indexBuffer,
 

+ 5 - 5
src/mol-gl/renderable/mesh.ts

@@ -17,9 +17,9 @@ type Mesh = 'mesh'
 
 type Uniforms = { [k: string]: REGL.Uniform | REGL.Texture }
 
-type AttributeColor = { '@type': 'attribute', value: ValueCell<Float32Array> }
-type InstanceColor = { '@type': 'instance', value: ValueCell<ColorTexture> }
-type ElementColor = { '@type': 'element', value: ValueCell<ColorTexture> }
+type AttributeColor = { type: 'attribute', value: ValueCell<Float32Array> }
+type InstanceColor = { type: 'instance', value: ValueCell<ColorTexture> }
+type ElementColor = { type: 'element', value: ValueCell<ColorTexture> }
 type Color = AttributeColor | InstanceColor | ElementColor
 
 namespace Mesh {
@@ -42,7 +42,7 @@ namespace Mesh {
             instanceCount: data.instanceCount,
             ..._uniforms
         }
-        if (data.color['@type'] === 'instance' || data.color['@type'] === 'element') {
+        if (data.color.type === 'instance' || data.color.type === 'element') {
             Object.assign(uniforms, createColorUniforms(regl, data.color.value as ValueCell<ColorTexture>))
         }
         const attributes = getBuffers({
@@ -51,7 +51,7 @@ namespace Mesh {
             normal: Attribute.create(regl, data.normal, data.positionCount, { size: 3 }),
             ...createTransformAttributes(regl, data.transform, data.instanceCount)
         })
-        if (data.color['@type'] === 'attribute') {
+        if (data.color.type === 'attribute') {
             attributes.color = Attribute.create(regl, data.color.value as ValueCell<Float32Array>, data.positionCount, { size: 3 }).buffer
         }
         const command = regl({

+ 4 - 3
src/mol-gl/shader/mesh.frag

@@ -45,17 +45,18 @@ float orenNayarDiffuse(vec3 lightDirection, vec3 viewDirection, vec3 surfaceNorm
 #pragma glslify: attenuation = require(./attenuation.glsl)
 
 const float specularScale = 0.65;
-const float shininess = 10.0;
+const float shininess = 30.0;
 const float roughness = 5.0;
 const float albedo = 0.95;
 
 void main() {
     // determine surface to light direction
-    vec4 lightPosition = view * vec4(light.position, 1.0);
+    // vec4 lightPosition = view * vec4(light.position, 1.0);
+    vec4 lightPosition = vec4(vec3(0.0, 0.0, -10000.0), 1.0);
     vec3 lightVector = lightPosition.xyz - vViewPosition;
 
     // calculate attenuation
-    float lightDistance = length(lightVector);
+    // float lightDistance = length(lightVector);
     float falloff = 1.0; // attenuation(light.radius, light.falloff, lightDistance);
 
     vec3 L = normalize(lightVector); // light direction