webgl shader 输出字符串格式

第一种方式:使用html的输出来格式化你的shader代码

<html>

<head>
    <title>www.caoyaohero.com</title>
    <meta charset='utf-8' />
    <meta name='renderer' content='webkit' />
    <meta name='viewport'
        content='width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no' />
    <meta name='apple-mobile-web-app-capable' content='yes' />
    <meta name='full-screen' content='true' />
    <meta name='x5-fullscreen' content='true' />
    <meta name='360-fullscreen' content='true' />
    <meta name='laya' screenorientation='landscape' />
    <meta http-equiv='expires' content='0' />
    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1' />
    <meta http-equiv='expires' content='0' />
    <meta http-equiv='Cache-Control' content='no-siteapp' />

    <!-- <link type="text/css" href="resources/webgl-tutorials.css" rel="stylesheet" /> -->
</head>

<body>
    <canvas id="myCanvas" width="720" height="1080" style="border: 1px solid red"></canvas>
    <!--在这个脚本下输入你的shader 输入完以后 请执行 控制台会有打印-->
    <script id="glsl" type="notjs">
   precision mediump float;

// Passed in from the vertex shader.
varying vec2 v_texcoord;

// The texture.
uniform sampler2D u_texture;

void main() {
   gl_FragColor = texture2D(u_texture, v_texcoord);
}
    </script>


    <script type="text/javascript">
        var vs = document.getElementById('glsl');
        var str = vs.text;
        var sp = str.split("\n");

        var searchAllSpace = function (search) {
            var count = 0;
            for (var j = 0; j < search.length; j++)
                if (search[j] == " ") count++;
            return count < search.length ? true : false
        }
        var replaceSpace = function (search) {
            for (var j = 0; j < search.length; j++)
                if (search[j] != " ") {
                    return search.slice(j);
                }
        }
        var result = [];
        for (var j = 0; j < sp.length; j++) {
            {
                var search = sp[j];
                if (search != " " && search != "}" && search.indexOf("//") < 0 && searchAllSpace(search)) {
                    // sp[j] = sp[j]+"+";
                    var target = replaceSpace(search);
                    console.log("'" + target + "'+");
                    result.push("'" + target + "'+")
                }
                else if (search.indexOf("}") >= 0) {
                    var target = replaceSpace(search);
                    //末尾
                    console.log("'" + target + "'");
                }
            }
        }

    </script>
</body>

</html>

第二种方式使用··

const vs = `
  attribute vec4 a_position;
  attribute vec3 a_normal;
  attribute vec3 a_tangent;
  attribute vec2 a_texcoord;
  attribute vec4 a_color;

  uniform mat4 u_projection;
  uniform mat4 u_view;
  uniform mat4 u_world;
  uniform vec3 u_viewWorldPosition;

  varying vec3 v_normal;
  varying vec3 v_tangent;
  varying vec3 v_surfaceToView;
  varying vec2 v_texcoord;
  varying vec4 v_color;

  void main() {
    vec4 worldPosition = u_world * a_position;
    gl_Position = u_projection * u_view * worldPosition;
    v_surfaceToView = u_viewWorldPosition - worldPosition.xyz;
    mat3 normalMat = mat3(u_world);
    v_normal = normalize(normalMat * a_normal);
    v_tangent = normalize(normalMat * a_tangent);

    v_texcoord = a_texcoord;
    v_color = a_color;
  }
  `;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值