| Index: o3d/samples/o3djs/effect.js
|
| diff --git a/o3d/samples/o3djs/effect.js b/o3d/samples/o3djs/effect.js
|
| index c9b5548725cfd87967f04be56341676241a97149..dd495953efb3c09995febd73493916475246a3ae 100644
|
| --- a/o3d/samples/o3djs/effect.js
|
| +++ b/o3d/samples/o3djs/effect.js
|
| @@ -597,13 +597,16 @@ o3djs.effect.buildBumpInputCoords = function(bumpSampler) {
|
| o3djs.effect.buildBumpOutputCoords = function(bumpSampler) {
|
| var p = o3djs.effect;
|
| return bumpSampler ?
|
| - (' ' + p.FLOAT3 + ' tangent' +
|
| + (' ' + p.VARYING + p.FLOAT3 + ' ' +
|
| + p.VARYING_DECLARATION_PREFIX + 'tangent' +
|
| p.semanticSuffix(
|
| 'TEXCOORD' + p.interpolant_++) + ';\n' +
|
| - ' ' + p.FLOAT3 + ' binormal' +
|
| - p.semanticSuffix('TEXCOORD' +
|
| - p.interpolant_++) + ';\n' +
|
| - ' ' + p.FLOAT2 + ' bumpUV' +
|
| + ' ' + p.VARYING + p.FLOAT3 + ' ' +
|
| + p.VARYING_DECLARATION_PREFIX + 'binormal' +
|
| + p.semanticSuffix(
|
| + 'TEXCOORD' + p.interpolant_++) + ';\n' +
|
| + ' ' + p.VARYING + p.FLOAT2 + ' ' +
|
| + p.VARYING_DECLARATION_PREFIX + 'bumpUV' +
|
| p.semanticSuffix(
|
| 'TEXCOORD' + p.interpolant_++) + ';\n') : '';
|
| };
|
| @@ -1172,11 +1175,9 @@ o3djs.effect.buildStandardShaderString = function(material,
|
|
|
| /**
|
| * Builds the normal map part of the vertex shader.
|
| - * @param {boolean} opt_bumpSampler Whether there is a bump
|
| - * sampler. Default = false.
|
| * @return {string} The code for normal mapping in the vertex shader.
|
| */
|
| - var bumpVertexShaderCode = function(opt_bumpSampler) {
|
| + var bumpVertexShaderCode = function() {
|
| return bumpSampler ?
|
| (' ' + p.VERTEX_VARYING_PREFIX + 'binormal = ' +
|
| p.mul(p.FLOAT4 + '(' +
|
| @@ -1193,21 +1194,27 @@ o3djs.effect.buildStandardShaderString = function(material,
|
| * @return {string} The code for normal computation in the pixel shader.
|
| */
|
| var getNormalShaderCode = function() {
|
| - return bumpSampler ?
|
| - (p.MATRIX3 + ' tangentToWorld = ' + p.MATRIX3 +
|
| - '(' + p.ATTRIBUTE_PREFIX + 'tangent,\n' +
|
| + if (bumpSampler) {
|
| + var type = getSamplerType(bumpSampler);
|
| + var tex2D = p.TEXTURE + type;
|
| + return (
|
| + p.MATRIX3 + ' tangentToWorld = ' + p.MATRIX3 +
|
| + '(' + p.PIXEL_VARYING_PREFIX + 'tangent,\n' +
|
| ' ' +
|
| - p.ATTRIBUTE_PREFIX + 'binormal,\n' +
|
| + p.PIXEL_VARYING_PREFIX + 'binormal,\n' +
|
| ' ' +
|
| - p.ATTRIBUTE_PREFIX + 'normal);\n' +
|
| - p.FLOAT3 + ' tangentNormal = tex2D(bumpSampler, ' +
|
| - p.ATTRIBUTE_PREFIX + 'bumpUV.xy).xyz -\n' +
|
| + p.PIXEL_VARYING_PREFIX + 'normal);\n' +
|
| + p.FLOAT3 + ' tangentNormal = ' + tex2D + '(bumpSampler, ' +
|
| + p.PIXEL_VARYING_PREFIX + 'bumpUV.xy).xyz -\n' +
|
| ' ' + p.FLOAT3 +
|
| '(0.5, 0.5, 0.5);\n' + p.FLOAT3 + ' normal = ' +
|
| p.mul('tangentNormal', 'tangentToWorld') + ';\n' +
|
| 'normal = normalize(' + p.PIXEL_VARYING_PREFIX +
|
| - 'normal);\n') : ' ' + p.FLOAT3 + ' normal = normalize(' +
|
| + 'normal);\n');
|
| + } else {
|
| + return ' ' + p.FLOAT3 + ' normal = normalize(' +
|
| p.PIXEL_VARYING_PREFIX + 'normal);\n';
|
| + }
|
| };
|
|
|
| /**
|
|
|