\u8bbe\u8ba1\u5e08\u9700\u6c42\u4e2d3D\u89c6\u89c9\u5e73\u79fb\u5230\u4e92\u52a8H5<\/a><\/span>\u4e2d\u7684\u9879\u76ee\u8d8a\u6765\u8d8a\u591a\uff0cthree.js\u548cPBR\u5de5\u4f5c\u6d41\u7684\u7ed3\u5408\u5374\u4e00\u76f4\u6ca1\u6709\u88ab\u7cfb\u7edf\u5316\u5730\u6574\u7406\u3002<\/p>\n\n\n\n
\u672c\u624b\u518c\u4e3b\u8981\u5206\u4e3a\u4e24\u5927\u90e8\u5206\uff1a<\/p>\n\n\n\n
\u8bbe\u8ba1\u5e08\u5728\u8fd8\u539f3D\u7c7b\u578b\u7684\u4e92\u52a8H5\u9879\u76ee\u7684\u65f6\u5019\u4e00\u5b9a\u60f3\u8fc7\u8fd9\u4e2a\u5b87\u5b99\u7ec8\u6781\u95ee\u9898\uff1a\u4e3a\u4ec0\u4e48H5\/Web\u5b9e\u73b0\u76843D\u6548\u679c\u548cC4D\u91cc\u6e32\u67d3\u51fa\u6765\u7684\u5dee\u5f02\u90a3\u4e48\u5927\uff1f<\/strong><\/p>\n\n\n\n
\u5176\u5b9e\u8fd9\u662f\u6211\u4eec\u5bf9\u5b9e\u65f6\u6e32\u67d3\u5f15\u64ce\uff08UE\u3001Unity\u3001three.js\u7b49\uff09\u548c\u79bb\u7ebf\u6e32\u67d3\u5de5\u5177\uff08Redshift\u3001Octane\u3001Vray\u7b49\uff09\u7684\u5dee\u5f02\u5b58\u5728\u8bef\u89e3\uff1a\u4e00\u662f\u79bb\u7ebf\u6e32\u67d3\u5de5\u5177\u662f\u57fa\u4e8e\u771f\u5b9e\u5149\u7167\u73af\u5883\u6765\u8ba1\u7b97\u6bcf\u9897\u50cf\u7d20\u7684\u7740\u8272\uff0c\u5b9e\u65f6\u6e32\u67d3\u5982\u679c\u8981\u5b9e\u73b0\u8fd9\u79cd\u6548\u679c\u9700\u8981\u8017\u8d39\u66f4\u591a\u786c\u4ef6\u57fa\u7840\u548c\u7b97\u529b\u53bb\u6a21\u62df\u5149\u7167\uff08\u6ca1\u4e2a\u597d\u663e\u5361\u90fd\u5f00\u4e0d\u52a8\u5149\u8ffd\uff09\u3002<\/p>\n\n\n\n
\u867d\u7136UE5\u7684\u5b9e\u65f6\u6e32\u67d3\u6280\u672f\u548c\u786c\u4ef6\u517c\u5bb9\u6027\u5df2\u7ecf\u8ba9\u5927\u5bb6\u5927\u5403\u4e00\u60ca\uff0c\u4f46\u5728\u5b9e\u9645\u9879\u76ee\uff0c\u5c24\u5176\u662f\u9700\u8981\u517c\u5bb9\u4f4e\u7aef\u8bbe\u5907\u7684H5\u6765\u8bf4\uff0c\u6e32\u67d3\u80fd\u529b\u8fd8\u662f\u76f8\u5bf9\u6709\u9650\u7684\u3002\u4e8c\u662f\u5bf9\u4e8e\u6e38\u620f\u6216H5\u4e92\u52a8\u7f51\u7ad9\u5b9e\u9645\u5e94\u7528\u6765\u8bf4\uff0c\u6d41\u7545\u7684\u4e92\u52a8\u4f53\u9a8c\u4f18\u5148\u7ea7\u5f80\u5f80\u9ad8\u4e8e\u753b\u9762\u7cbe\u7ec6\u5ea6\uff0c\u6240\u4ee5\u727a\u7272\u89c6\u89c9\u4fdd\u6027\u80fd\u4e5f\u662f\u5e38\u89c1\u60c5\u51b5\u3002<\/p>\n\n\n\n
\u5f53\u5b9e\u65f6\u6e32\u67d3\u6548\u679c\u4e0e\u8bbe\u8ba1\u9884\u671f\u5dee\u8ddd\u8fc7\u5927\u65f6\uff0c\u8bbe\u8ba1\u5e08\u80fd\u591a\u4e86\u89e3\u4e00\u4e9b\u57fa\u7840\u7684\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\uff0c\u4e5f\u8bb8\u5c31\u80fd\u66f4\u597d\u5730\u548c\u5f00\u53d1\u540c\u5b66\u5546\u8ba8\u6027\u4ef7\u6bd4\u66f4\u9ad8\u7684\u89c6\u89c9\u5b9e\u73b0\u548c\u8d44\u6e90\u4f18\u5316\u65b9\u6848\uff08\u4ee5\u53ca\u66f4\u591aBattle\u7684\u7b79\u7801\uff09\u3002<\/p>\n\n\n\n
\u9996\u5148\u6211\u4eec\u8981\u77e5\u9053\u8ba1\u7b97\u673a\u4e4b\u6240\u4ee5\u80fd\u57282D\u5c4f\u5e55\u4e0a\u753b\u51fa3D\u7684\u56fe\u50cf\uff0c\u662f\u56e0\u4e3a\u6709\u7740\u8272\u5668\uff08Shader\uff09\u5728\u7ed8\u5236\uff0c\u5b83\u5c06\u6211\u4eec\u4e09\u7ef4\u7a7a\u95f4\u91cc\u7684\u6a21\u578b\u4e0e\u5149\u7167\u4fe1\u606f\u8fdb\u884c\u8f6c\u6362\uff0c\u5e76\u5149\u6805\u5316\u4e3a\u4e8c\u7ef4\u56fe\u50cf\u3002\u5728\u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u4e2d\uff0c\u7740\u8272\u5668\u662f\u7528\u4e8e\u5bf9\u56fe\u50cf\u7684\u6750\u8d28\uff08\u5149\u7167\u3001\u4eae\u5ea6\u3001\u989c\u8272\uff09\u8fdb\u884c\u5904\u7406\u7684\u7a0b\u5f0f\u3002<\/p>\n\n\n\n
\u5e38\u7528\u7684\u7740\u8272\u5668\u5206\u4e3a\u56db\u79cd\uff1a\u50cf\u7d20\/\u7247\u5143\u7740\u8272\u5668\uff08Pixel\/Fragment Shader\uff09\u3001\u9876\u70b9\u7740\u8272\u5668\uff08Vertex Shader\uff09\u3001\u51e0\u4f55\u7740\u8272\u5668\uff08Geometry Shader\uff09\u3001\u7ec6\u5206\u66f2\u9762\u7740\u8272\u5668\uff08Tessellation Shader\uff09\u3002<\/p>\n\n\n\n
\u50cf\u7d20\/\u7247\u5143\u7740\u8272\u5668\u4e0e\u9876\u70b9\u7740\u8272\u5668\uff08Vertex Shader\uff09\u5728webGL\u5904\u7406\u8fc7\u7a0b\u4e2d\u90fd\u6709\u4f7f\u7528\uff0c\u9876\u70b9\u7740\u8272\u5668\u5148\u5c06\u6a21\u578b\u4e2d\u6bcf\u4e2a\u9876\u70b9\u7684\u4f4d\u7f6e\u3001\u7eb9\u7406\u5750\u6807\u3001\u989c\u8272\u7b49\u4fe1\u606f\u8fdb\u884c\u8f6c\u6362\u88c5\u914d\uff0c\u518d\u7531\u7247\u5143\u7740\u8272\u5668\u5bf93D\u4fe1\u606f\u5149\u6805\u5316\u5e76\u8f6c\u6362\u62102D\u5c4f\u5e55\u4fe1\u606f\u3002\uff08\u5173\u4e8e\u7740\u8272\u5668\u5dee\u5f02\uff0c\u611f\u5174\u8da3\u7684\u540c\u5b66\u53ef\u4ee5\u76f4\u63a5\u8df3\u5230\u9644\u5f55\u67e5\u770b\u3002\uff09<\/p>\n\n\n\n
\u7740\u8272\u5668\u662f\u600e\u4e48\u628a\u9876\u70b9\u4e2d\u6240\u5e26\u6709\u5149\u7167\u3001\u7eb9\u7406\u7b49\u4fe1\u606f\u8f6c\u6362\u5e76\u91cd\u5efa\u5728\u4e8c\u7ef4\u56fe\u50cf\u7684\u50cf\u7d20\u4e2d\u5462\uff1fGPU\u4e2d\u662f\u900f\u8fc7\u4e0d\u540c\u7684\u7740\u8272\u7b97\u6cd5\u6765\u5b9e\u73b0\u7684\u3002<\/p>\n\n\n\n
\u4e00\u79cd\u662f\u83b7\u53d6\u6bcf\u4e2a\u4e09\u89d2\u5f62\u7684\u63d2\u503c\uff08Interpolate\uff09\u6765\u5b9e\u73b0\uff0c\u8fd9\u79cd\u65b9\u6cd5\u79f0\u4f5cPer Vertex Lighting\uff0c\u4f46\u662f\u5f53\u4e09\u89d2\u578b\u5f88\u5927\u7684\u65f6\u5019\uff0c\u63d2\u503c\u5f80\u5f80\u4e0d\u591f\u7cbe\u51c6\u3002\u6b64\u65f6\u8fd8\u53ef\u4ee5\u5f15\u7528\u53e6\u4e00\u79cd\u65b9\u6cd5Per Pixel Lighting\uff0c\u8ba1\u7b97\u6bcf\u4e2a\u50cf\u7d20\u7684\u5149\u7167\u4fe1\u606f\uff0c\u83b7\u5f97\u66f4\u597d\u7684\u6e32\u67d3\u6548\u679c\uff0c\u4f46\u662f\u5f80\u5f80\u4e5f\u5e26\u6765\u66f4\u5927\u7684\u8ba1\u7b97\u91cf\u3002<\/p>\n\n\n\n
\u4e00\u822c\u5e38\u89c1\u8ba1\u7b97\u673a\u56fe\u5f62\u7740\u8272\u7b97\u6cd5\u6709\u4e09\u7c7b\uff1aFlat Shading\u3001Gouraud Shading\u3001Phong Shading\u3002\u8fd9\u4e9b\u7b97\u6cd5\u867d\u7136\u770b\u8d77\u6765\u548c\u6211\u4eec\u8bbe\u8ba1\u5e08\u6ca1\u5565\u5173\u7cfb\uff0c\u4f46\u4e8b\u5b9e\u4e0a\u5728\u540e\u9762\u4e86\u89e3three.js\u6750\u8d28\u65f6\uff0c\u5c31\u4f1a\u53d1\u73b0\u4ed6\u4eec\u5728\u5448\u73b0\u65f6\u7684\u5dee\u5f02\u3002<\/p>\n\n\n\n
1\uff09\u5e73\u76f4\u7740\u8272\u6cd5 Flat Shading<\/strong><\/p>\n\n\n\n
\u8fd9\u79cd\u7740\u8272\u6cd5\u8ba4\u4e3a\u6a21\u578b\u4e2d\u6240\u6709\u9762\u90fd\u662f\u5e73\u7684\uff0c\u540c\u4e00\u4e2a\u591a\u8fb9\u5f62\u7684\u4e0a\u4efb\u610f\u70b9\u7684\u6cd5\u7ebf\u65b9\u5411\u90fd\u76f8\u540c\u3002\u7740\u8272\u65f6\uff0c\u4f1a\u4f18\u5148\u9009\u62e9\u591a\u8fb9\u5f62\u7684\u7b2c\u4e00\u4e2a\u9876\u70b9\u6216\u4e09\u89d2\u5f62\u7684\u51e0\u4f55\u4e2d\u5fc3\u8ba1\u7b97\u989c\u8272\u3002\u8fd9\u79cd\u7740\u8272\u6cd5\u5b9e\u8df5\u4e0a\u7684\u6548\u679c\u5f88\u50cf\u4f4e\u9762\u6a21\u578b\uff0c\u4e5f\u6bd4\u8f83\u9002\u5408\u4f7f\u7528\u5728\u9ad8\u901f\u6e32\u67d3\u7684\u573a\u666f\u3002\u503c\u5f97\u6ce8\u610f\u7684\u662f\uff0c\u8fd9\u79cd\u7740\u8272\u6cd5\u96be\u4ee5\u505a\u51fa\u5e73\u6ed1\u9ad8\u5149\u6548\u679c\u3002<\/p>\n\n\n\n
2\uff09\u9ad8\u6d1b\u5fb7\u5e73\u6ed1\u7740\u8272\u6cd5 Gouraud Shading<\/strong><\/p>\n\n\n\n
\u8fd9\u662f\u4e00\u79cd\u5e73\u6ed1\u7684\u7740\u8272\u65b9\u6cd5\uff0c\u5728\u7740\u8272\u65f6\u4f1a\u5148\u8ba1\u7b97\u4e09\u89d2\u5f62\u6bcf\u4e2a\u9876\u70b9\u7684\u5149\u7167\u7279\u6027\uff0c\u5229\u7528\u53cc\u7ebf\u63d2\u503c\u53bb\u8865\u9f50\u4e09\u89d2\u5f62\u533a\u57df\u5185\u5176\u4ed6\u50cf\u7d20\u7684\u989c\u8272\u3002\u8fd9\u4e2a\u7740\u8272\u6cd5\u7684\u6bd4\u8d77\u5e73\u76f4\u7740\u8272\u6cd5\u589e\u52a0\u4e86\u63d2\u503c\u7684\u7ec6\u8282\uff0c\u800c\u4e14\u4e5f\u6bd4Phong\u7740\u8272\u6cd5\u6e32\u67d3\u5355\u4e2a\u50cf\u7d20\u7684\u5149\u7167\u7279\u6027\u7684\u6027\u80fd\u8981\u9ad8\u3002<\/p>\n\n\n\n
\u4f46\u662f\u5728\u6e32\u67d3\u9ad8\u5149\u65f6\uff0c\u53ef\u80fd\u4f1a\u56e0\u4e3a\u65e0\u6cd5\u83b7\u53d6\u7cbe\u786e\u7684\u5149\u7167\u503c\u800c\u51fa\u73b0\u4e00\u4e9b\u4e0d\u81ea\u7136\u7684\u8fc7\u6e21\uff08\u6216T\u578b\u8fde\u63a5\u5bb9\u6613\u88ab\u9519\u8bef\u7ed8\u5236\uff09\uff0c\u6b64\u65f6\u53ef\u4ee5\u8003\u8651\u5bf9\u6a21\u578b\u8fdb\u884c\u7ec6\u5206\u6216\u4f7f\u7528\u6f2b\u53cd\u5c04\u6750\u8d28\u3002<\/p>\n\n\n\n
3\uff09Phong\u5e73\u6ed1\u7740\u8272\u6cd5 Phong Shading<\/strong><\/p>\n\n\n\n
\u4e0eGouraud Shading\u4e0d\u540c\u7684\u662f\uff0c\u5b83\u4f1a\u5bf9\u9876\u70b9\u7684\u6cd5\u7ebf\u8fdb\u884c\u63d2\u503c\uff0c\u5e76\u900f\u8fc7\u6bcf\u4e2a\u50cf\u7d20\u7684\u6cd5\u5411\u91cf\u8ba1\u7b97\u5149\u7167\u7279\u6027\u3002\u8fd9\u79cd\u505a\u6cd5\u80fd\u7ed8\u5236\u51fa\u7cbe\u81f4\u3001\u7cbe\u51c6\u7684\u66f2\u9762\uff0c\u4f46\u662f\u8ba1\u7b97\u91cf\u8f83\u5927\u3002Blinn-Phong\u662fPhong\u7684\u8fdb\u9636\u7248\uff0c\u7740\u8272\u6027\u80fd\u66f4\u597d\uff0c\u4e14\u9ad8\u5149\u5f25\u6563\u66f4\u81ea\u7136\u3002<\/p>\n\n\n\n
\u7b80\u5355\u4e86\u89e3\u8ba1\u7b97\u673a\u5982\u4f55\u7ed8\u52363D\u56fe\u5f62\u540e\uff0c\u518d\u6765\u770b\u770b\u5b83\u8981\u5982\u4f55\u5177\u4f53\u7406\u89e3\u6211\u4eec\u6240\u8bbe\u8ba1\u76843D\u573a\u666f\u3002<\/p>\n\n\n\n
3D\u8f6c\u6362\u62102D\uff0c\u4e5f\u5c31\u662f3D\u6805\u683c\u5316\u7684\u8fc7\u7a0b\u4e2d\uff0c\u6bcf\u4e00\u4e2a\u50cf\u7d20\u7684\u989c\u8272\u662f\u9700\u8981\u57fa\u4e8e\u5b83\u6240\u5728\u7684\u73af\u5883\u8ba1\u7b97\u51fa\u6765\uff0c\u800c\u57fa\u4e8e\u88ab\u6e32\u67d3\u7269\u4f53\u8868\u9762\u67d0\u4e2a\u70b9\u7684\u5149\u5f3a\u5ea6\u8ba1\u7b97\u6a21\u578b\u5c31\u88ab\u79f0\u4e3a\u5149\u7167\u660e\u6a21\u578b\uff08Illumination Model\uff09\u6216\u5149\u7167\u6a21\u578b\uff08Light Model\uff09\uff0c\u900f\u8fc7\u8ba1\u7b97\u5149\u7167\u6a21\u578b\u6240\u5f97\u5230\u8868\u9762\u4f4d\u7f6e\u5bf9\u5e94\u50cf\u7d20\u989c\u8272\u7684\u8fc7\u7a0b\u88ab\u79f0\u4e3a\u8868\u9762\u7ed8\u5236\uff08Surface Render\uff09\u3002<\/p>\n\n\n\n
*\u8bf7\u6ce8\u610f\u8fd9\u91cc\u8bf4\u7684\u5149\u7167\u6a21\u578b\u5e76\u4e0d\u662f\u6307\u8bbe\u8ba1\u5e08\u7406\u89e3\u76843D\u7acb\u4f53\u6a21\u578b\uff0c\u800c\u662f\u6307\u6a21\u578b\u5bf9\u8c61\u8868\u9762\u5149\u7167\u6548\u679c\u7684\u6570\u5b66\u8ba1\u7b97\u6a21\u578b\u3002<\/p>\n\n\n\n
\u5f71\u54cd\u5149\u7167\u6a21\u578b\u7684\u56e0\u7d20\u6709\u4e24\u5927\u65b9\u9762\uff0c\u4e00\u662f\u672c\u8eab\u7ed9\u6e32\u67d3\u7269\u4f53\u6750\u8d28\u8bbe\u7f6e\u7684\u5404\u79cd\u5149\u5b66\u7279\u6027\uff08\u989c\u8272\u53cd\u5c04\u7cfb\u6570\u3001\u8868\u9762\u7eb9\u7406\u3001\u900f\u660e\u5ea6\u7b49\uff09\uff0c\u4e8c\u662f\u573a\u666f\u4e2d\u5149\u6e90\u5149\u53ca\u73af\u5883\u5149\uff08\u573a\u666f\u4e2d\u5404\u4e2a\u88ab\u7167\u660e\u5bf9\u8c61\u7684\u53cd\u5c04\u5149\uff09\u3002<\/p>\n\n\n\n
\u4f20\u7edf\u5149\u7167\u6a21\u578b\u90fd\u662f\u5bf9\u6f2b\u53cd\u5c04\u548c\u955c\u9762\u53cd\u5c04\u7684\u7406\u60f3\u5316\u6a21\u62df\uff0c\u5982\u679c\u8981\u8fd8\u539f\u57fa\u4e8e\u771f\u5b9e\u7269\u7406\u4e16\u754c\u7684\u6548\u679c\uff0c\u5149\u7167\u6a21\u578b\u9700\u8981\u9075\u5faa\u80fd\u91cf\u5b88\u6052\u5b9a\u5f8b\uff1a\u4e00\u4e2a\u7269\u4f53\u80fd\u53cd\u5c04\u7684\u5149\u5fc5\u7136\u5c11\u4e8e\u5b83\u63a5\u53d7\u7684\u5149\u3002\u5728\u5b9e\u8df5\u5c42\u9762\u5219\u8868\u73b0\u4e3a\uff0c\u4e00\u4e2a\u6f2b\u53cd\u5c04\u66f4\u5f3a\u4e14\u66f4\u7c97\u7cd9\u7684\u7269\u4f53\u4f1a\u53cd\u5c04\u66f4\u6697\u4e14\u8303\u56f4\u66f4\u5927\u7684\u9ad8\u5149\uff0c\u53cd\u4e4b\u4ea6\u53cd\u3002<\/p>\n\n\n\n
\u5149\u7167\u6a21\u578b\u4e0e\u7740\u8272\u7ec4\u5408\u5728\u4e0d\u540c\u7684\u6e32\u67d3\u9700\u6c42\u4e0b\u4e5f\u4f1a\u6709\u4e0d\u540c\u7684\u5e94\u7528\uff1a<\/p>\n\n\n\n
1\uff09\u771f\u5b9e\u611f\u6e32\u67d3 Photorealistic Rendering<\/strong><\/p>\n\n\n\n
\u8003\u8651\u5230\u771f\u5b9e\u611f\u6e32\u67d3\u5bf9\u786c\u4ef6\u7684\u4f9d\u8d56\uff0c\u76ee\u524dwebGL\u4e2d\u4f7f\u7528\u7684\u4e00\u822c\u4ee5\u7b80\u5355\u7684\u5c40\u90e8\u5149\u7167\u6a21\u578b\u4e3a\u4e3b\uff08\u53ea\u8ba1\u7b97\u5149\u6e90\u5bf9\u7269\u4f53\u7684\u5149\u7167\u6548\u679c\uff0c\u4e0d\u8ba1\u7b97\u7269\u4f53\u95f4\u7684\u76f8\u4e92\u5f71\u54cd\uff0c\u6211\u4eec\u770b\u5230\u7684\u201c\u5047\u53cd\u5c04\u201d\u901a\u5e38\u900f\u8fc7\u8d34\u56fe\u6765\u8fdb\u884c\u6a21\u62df\uff09\uff0c\u6839\u636e\u53cd\u5c04\u5f62\u6001\uff0c\u7ecf\u5178\u7684\u5149\u7167\u6a21\u578b\u6709\u4e0b\u5217\u51e0\u79cd\uff1a<\/p>\n\n\n\n
Lambert \u6f2b\u53cd\u5c04\u6a21\u578b\uff1a<\/strong><\/p>\n\n\n\n
\u8fd9\u79cd\u6a21\u578b\u7684\u7c97\u7cd9\u8868\u9762\uff08\u5982\u5851\u6599\u3001\u77f3\u6750\u7b49\uff09\u4f1a\u5c06\u53cd\u5c04\u5149\u4ece\u5404\u4e2a\u65b9\u5411\u53cd\u5c04\u51fa\u53bb\uff0c\u800c\u8fd9\u79cd\u5149\u53cd\u5c04\u4e5f\u79f0\u4e3a\u6f2b\u53cd\u5c04\u3002\u7406\u60f3\u7684\u6f2b\u53cd\u5c04\u4f53\u6211\u4eec\u901a\u5e38\u79f0\u4f5c\u90ce\u4f2f\u53cd\u5c04\u4f53\uff08Lambertian Reflectors\uff09\uff0c\u4e5f\u5c31\u662f\u6211\u4eec\u719f\u6089\u7684\u6a61\u80f6\u6750\u8d28\u3002<\/p>\n\n\n\n
Phong \u955c\u9762\u53cd\u5c04\u6a21\u578b\uff1a<\/strong><\/p>\n\n\n\n
\u8fd9\u662f\u4e00\u79cd\u4ee5\u5b9e\u9a8c\u53ca\u89c2\u5bdf\u4e3a\u5408\u6210\u57fa\u7840\u7684\u975e\u7269\u7406\u6a21\u578b\u3002\u5b83\u7684\u8868\u9762\u53cd\u5c04\u540c\u65f6\u7ed3\u5408\u4e86\u7c97\u7cd9\u8868\u9762\u6f2b\u53cd\u5c04\u548c\u5149\u6ed1\u8868\u9762\u955c\u9762\u53cd\u5c04\uff0c\u4f46Phong\u6a21\u578b\u5728\u9ad8\u5149\u5904\u7684\u8868\u73b0\u6709\u8fc7\u6e21\u7455\u75b5\u3002<\/p>\n\n\n\n
Blinn\u2013Phong \u6a21\u578b\uff1a<\/strong><\/p>\n\n\n\n
\u662f\u5728OpenGL\u548cDirect3D\u91cc\u9ed8\u8ba4\u7684\u7740\u8272\u6a21\u578b\uff0c\u4e00\u79cd\u8c03\u4f18\u540e\u7684\u975e\u7269\u7406\u7684Phong\u6a21\u578b\uff0c\u9876\u70b9\u95f4\u7684\u50cf\u7d20\u63d2\u503c\u4f7f\u7528Gouraud\u7740\u8272\u7b97\u6cd5\uff0c\u6bd4Phong\u7740\u8272\u7b97\u6cd5\u6027\u80fd\u66f4\u597d\uff0c\u800c\u4e14\u9ad8\u5149\u6548\u679c\u4e5f\u66f4\u5e73\u6ed1\u3002<\/p>\n\n\n\n
Cook-Torrance\/GGX \u5149\u7167\u6a21\u578b\uff1a<\/strong><\/p>\n\n\n\n
\u5982\u679c\u4f60\u7528\u8fc7C4D\u7684\u9ed8\u8ba4\u6e32\u67d3\u5668\uff0c\u90a3\u4e48\u4e00\u5b9a\u5728\u6750\u8d28\u7684\u53cd\u5c04\u901a\u9053\u8bbe\u7f6e\u4e2d\u89c1\u8fc7\u5b83\u4fe9\u3002<\/p>\n\n\n\n
\u8fd9\u662f\u76f8\u5bf9\u9ad8\u7ea7\u7684\u5149\u7167\u6a21\u578b\uff0c\u4e0d\u540c\u4e8ePhong\u548cBlinn-Phong\u6a21\u578b\u4ec5\u4ec5\u5bf9\u6f2b\u53cd\u5c04\u53ca\u955c\u9762\u53cd\u5c04\u8fdb\u884c\u7406\u60f3\u5316\u6a21\u62df\uff0c\u8fd9\u4e24\u4e2a\u5149\u7167\u6a21\u578b\u57fa\u4e8e\u4e0d\u540c\u7269\u7406\u6750\u8d28\u52a0\u5165\u4e86\u5fae\u8868\u9762\uff08Microfacet\uff09\u7684\u6982\u5ff5\uff0c\u5e76\u8003\u8651\u5230\u8868\u9762\u7c97\u7cd9\u5ea6\u5bf9\u53cd\u5c04\u7684\u5f71\u54cd\uff0c\u5bf9\u955c\u9762\u53cd\u5c04\u8fdb\u884c\u4e86\u8c03\u4f18\uff0c\u4f7f\u5f97\u9ad8\u5149\u7684\u957f\u5c3e\u5f25\u6563\u66f4\u52a0\u81ea\u7136\uff0c\u4e5f\u662f\u76ee\u524dPBR\u6e32\u67d3\u7ba1\u7ebf\uff08Unity\u3001UE\uff09\u4e2d\u8f83\u5e38\u7528\u7684\u5149\u7167\u6a21\u578b\u3002<\/p>\n\n\n\n
\u6b21\u8868\u9762\u6563\u5c04\u6a21\u578b <\/strong>Subsurface scattering\/SSS\uff1a<\/strong><\/p>\n\n\n\n
\u7ec8\u4e8e\u6709\u4e00\u4e2a\u8bbe\u8ba1\u5e08\u4eec\u5e38\u89c1\u7684\u6982\u5ff5\u4e86\u3002\u6b21\u8868\u9762\u6563\u5c04\u662f\u6307\u5149\u7a7f\u900f\u4e0d\u900f\u660e\u7269\u4f53\u65f6\uff08\u76ae\u80a4\u3001\u6db2\u4f53\u3001\u6bdb\u73bb\u7483\u7b49\uff09\u7684\u6563\u5c04\u73b0\u8c61\u3002\u73b0\u5b9e\u751f\u6d3b\u4e2d\uff0c\u5927\u90e8\u5206\u7269\u4f53\u90fd\u662f\u534a\u900f\u660e\u7684\uff0c\u5149\u4f1a\u5148\u7a7f\u900f\u7269\u4f53\u8868\u9762\uff0c\u7ee7\u800c\u5728\u7269\u4f53\u5185\u88ab\u5438\u6536\u3001\u591a\u6b21\u53cd\u5c04\u3001\u7136\u540e\u5728\u4e0d\u540c\u7684\u70b9\u7a7f\u51fa\u7269\u4f53\u3002\u4ee5\u76ae\u80a4\u4e3a\u4f8b\uff0c\u53ea\u6709\u5927\u69826%\u7684\u53cd\u5c04\u662f\u76f4\u63a5\u53cd\u5c04\uff0c\u800c94%\u7684\u53cd\u5c04\u90fd\u662f\u6b21\u8868\u9762\u6563\u5c04\u3002<\/p>\n\n\n\n
BSSRDF\uff08\u53cc\u5411\u6b21\u8868\u9762\u53cd\u5c04\u5206\u5e03\u51fd\u6570\uff09\u662f\u7528\u4e8e\u63cf\u8ff0\u5165\u5c04\u5149\u5728\u4ecb\u8d28\u5185\u90e8\u7684\u5149\u7167\u6a21\u578b\uff0c\u76ee\u524d\u4e5f\u88ab\u5e94\u7528\u5728\u6700\u65b0\u7684\u865a\u62df\u89d2\u8272\u76ae\u80a4\u5b9e\u65f6\u6e32\u67d3\u4e2d\uff1b\u4f46\u7531\u4e8eSSS\u6750\u8d28\u7684\u8ba1\u7b97\u9700\u8981\u4f9d\u8d56\u6df1\u5ea6\/\u539a\u5ea6\u6570\u636e\uff0c\u6240\u4ee5webGL\u5bf9\u8fd9\u79cd\u9ad8\u7ea7\u5149\u7167\u6548\u679c\u7684\u8fd8\u539f\u7a0b\u5ea6\u8fd8\u662f\u76f8\u5bf9\u6709\u9650\u7684\u3002<\/p>\n\n\n\n
2\uff09\u975e\u771f\u5b9e\u611f\u6e32\u67d3 Non-Photorealistic Rendering-NPR<\/strong><\/p>\n\n\n\n
\u4e5f\u5c31\u662f\u6211\u4eec\u5e38\u8bf4\u76843\u6e322\uff0c\u975e\u5199\u5b9e\u6e32\u67d3\u98ce\u683c\u4e5f\u662f\u4ece\u4eba\u4eec\u5bf93D\u573a\u666f\u5957\u4ee52D\u7ed8\u753b\u6216\u81ea\u7136\u5a92\u4f53\u6750\u8d28\u9700\u6c42\u800c\u6f14\u5316\u8fc7\u6765\u7684\u3002\u56e0\u6b64\u975e\u5199\u5b9e\u6e32\u67d3\u6280\u672f\u5b9e\u9645\u4e0a\u662f\u4e0d\u540c\u5149\u7167\u6a21\u578b+\u4e0d\u540c\u7740\u8272\u5904\u7406\u5171\u540c\u4f5c\u7528\u7684\u98ce\u683c\u5316\u8f93\u51fa\uff0c\u76ee\u524d\u4e5f\u88ab\u5927\u91cf\u5e94\u7528\u5728\u52a8\u753b\u53ca\u6e38\u620f\u4e2d\uff0c\u50cf\u300a\u82f1\u96c4\u8054\u76df\uff1a\u53cc\u57ce\u4e4b\u6218\u300b\u300a\u8718\u86db\u4fa0\uff1a\u5e73\u884c\u5b87\u5b99\u300b\u90fd\u662f\u9876\u7ea7\u4e09\u6e32\u4e8c\u5927\u4f5c\u3002<\/p>\n\n\n\n
Cel Shading\/Toon Shading\uff1a<\/strong><\/p>\n\n\n\n
\u5361\u901a\u7740\u8272\uff0c\u4e00\u79cd\u6700\u5e38\u89c1\u7684\u4ee53D\u6280\u672f\u6a21\u62df\u6241\u5e73\u98ce\u683c\u7684\u7740\u8272\u5f62\u5f0f\uff0c\u901a\u5e38\u4ee5\u6781\u7b80\u7684\u989c\u8272\u3001\u6e10\u53d8\u53ca\u660e\u786e\u7684\u5916\u6846\u7ebf\u7b49\u6f2b\u753b\u5143\u7d20\u4f5c\u4e3a\u98ce\u683c\u7279\u5f81\u3002<\/p>\n\n\n\n
\u65e5\u672c\u521b\u610f\u7f16\u7a0b\u5e08Misaki Nakano\u5236\u4f5c\u4e86\u4e00\u4e2a\u975e\u5e38\u6709\u8da3\u7684Toon Shading H5\u4e92\u52a8\u9875\u9762\uff0c\u5927\u5bb6\u53ef\u4ee5\u4f53\u9a8c\u4e00\u4e0b\u4e0d\u540c\u7740\u8272\u5f62\u6001\u4e0b\u975e\u5e38\u6a21\u578b\u7684\u89c6\u89c9\u8868\u73b0\u3002\u641c\u7d22\u4f53\u9a8c\uff1ahttps:\/\/mnmxmx.github.io\/toon-shading\/dst\/index.html<\/p>\n\n\n\n
Customized Shading\uff1a<\/strong><\/p>\n\n\n\n
\u76ee\u524d\u8d8a\u6765\u8d8a\u591a\u6e32\u67d3\u5668\u53ef\u652f\u6301\u8bbe\u8ba1\u5e08\u53ca\u5de5\u7a0b\u5e08\u6839\u636e\u9879\u76ee\u9700\u6c42\u5bf9\u7740\u8272\u8fdb\u884c\u5b9a\u5236\u5316\u5904\u7406\uff0c\u4ee5\u4ea7\u51fa\u66f4\u5177\u98ce\u683c\u5316\u548c\u827a\u672f\u5316\u7684\u7740\u8272\u6548\u679c\u3002\u4f8b\u5982\u5de5\u4e1a\u754c\u63d2\u753b\u5e38\u7528\u7684\u51b7\u6696\u7740\u8272\uff08Gooch Shading\uff09\uff0c\u4ee5\u53ca\u66f4\u5177\u7ed8\u753b\u8d28\u611f\u7684\u7d20\u63cf\u7740\u8272\uff08Hatching\uff09\u53ca\u6cb9\u753b\u6c34\u58a8\u753b\u7b49\u81ea\u7136\u5a92\u4f53\u7740\u8272\uff0c\u90fd\u5df2\u7ecf\u6df1\u5165\u5230\u4e86\u6211\u4eec\u65e5\u5e38\u7684\u521b\u4f5c\u4e4b\u4e2d\u3002<\/p>\n\n\n\n
\u8bf4\u5b8c\u771f\u5b9e\u611f\u4e0e\u975e\u771f\u5b9e\u611f\u6e32\u67d3\u5dee\u5f02\u540e\uff0c\u6211\u4eec\u518d\u6765\u770b\u770bThree.js\u4e2d\u7684\u6750\u8d28\u3002<\/p>\n\n\n\n
\u548c\u8bb8\u591a\u6e32\u67d3\u5f15\u64ce\u4e00\u6837\uff0c\u9664\u4e86\u539f\u751f\u6750\u8d28\u5916\uff0cwebGL\u7684\u6750\u8d28\u548c\u7740\u8272\u90fd\u662f\u53ef\u4ee5\u6839\u636e\u9700\u6c42\u8fdb\u884c\u5b9a\u5236\u7684\uff0c\u4f46\u8fd9\u5f80\u5f80\u4f1a\u4e5f\u5e26\u6765\u8f83\u9ad8\u7684\u5f00\u53d1\u6210\u672c\u53ca\u517c\u5bb9\u6027\u98ce\u9669\u3002\u8003\u8651\u5230H5\u9879\u76ee\u7684\u5b9e\u9645\u5e94\u7528\u573a\u666f\uff0c\u4e0b\u8868\u7f57\u5217\u4e86Three.js\u539f\u751f\u6750\u8d28\u7684\u5bf9\u6bd4\uff0c\u5305\u542b\u4e86\u6750\u8d28\u7279\u6027\u4f18\u52bf\u3001\u8d34\u56fe\u5dee\u5f02\u53ca\u9002\u7528\u573a\u666f\uff0c\u5927\u5bb6\u53ef\u4ee5\u57fa\u4e8e\u9879\u76ee\u9700\u6c42\u5feb\u901f\u9009\u62e9\u5e76\u6df7\u5408\u4f7f\u7528\uff1a<\/p>\n\n\n\n
\u867d\u7136\u7740\u8272\u3001\u5149\u7167\u6a21\u578b\u4ee5\u53ca\u6750\u8d28\u6e32\u67d3\u5bf93D\u8868\u73b0\u6709\u7740\u6700\u4e3a\u76f4\u89c2\u7684\u5f71\u54cd\uff0c\u4f463D\u5de5\u4f5c\u6d41\u4ecd\u6709\u4e00\u4e2a\u9690\u79d8\u800c\u5173\u952e\u7684\u73af\u8282\u2014\u2014\u8272\u5f69\u7ba1\u7406\u3002<\/p>\n\n\n\n
\u771f\u5b9e\u4e16\u754c\u4e2d\u6309\u7167\u7269\u7406\u5b9a\u5f8b\uff0c\u5982\u679c\u5149\u7684\u5f3a\u5ea6\u589e\u52a0\u4e00\u500d\uff0c\u90a3\u4e48\u4eae\u5ea6\u4e5f\u4f1a\u589e\u52a0\u4e00\u500d\uff0c\u8fd9\u662f\u7ebf\u6027\u7684\u5173\u7cfb\u3002\u7406\u60f3\u72b6\u6001\u4e0b\uff0c\u50cf\u7d20\u5728\u663e\u793a\u5c4f\u4e0a\u7684\u4eae\u5ea6\u4e5f\u5e94\u4e3a\u7ebf\u6027\u5173\u7cfb\uff0c\u624d\u80fd\u7b26\u5408\u4eba\u773c\u5bf9\u771f\u5b9e\u4e16\u754c\u7684\u89c2\u5bdf\u6548\u679c\uff08\u5982\u56feb\uff1a\u6a2a\u5750\u6807\u4e3a\u50cf\u7d20\u7684\u7269\u7406\u4eae\u5ea6\uff0c\u7eb5\u5750\u6807\u4e3a\u50cf\u7d20\u663e\u793a\u65f6\u7684\u5b9e\u9645\u4eae\u5ea6\uff09\u3002<\/p>\n\n\n\n
\u4f46\u662f\u663e\u793a\u5668\u7684\u6210\u50cf\u7531\u4e8e\u7535\u538b\u7684\u5f71\u54cd\uff0c\u5bfc\u81f4\u8f93\u51fa\u4eae\u5ea6\u4e0e\u7535\u538b\u7684\u5173\u7cfb\u662f\u4e00\u4e2a\u4eae\u5ea6\u7b49\u4e8e\u7535\u538b\u76841.7-2.3\u6b21\u5e42\u7684\u975e\u7ebf\u6027\u5173\u7cfb\uff0c\u8fd9\u5c31\u5bfc\u81f4\u4e86\u5f53\u7535\u538b\u7ebf\u6027\u53d8\u5316\u65f6\uff0c\u4eae\u5ea6\u7684\u53d8\u5316\u5728\u6697\u5904\u8f6c\u6362\u65f6\u53d8\u6162\uff0c\u5982\u679c\u663e\u793a\u5668\u4e0d\u7ecf\u8fc7\u77eb\u6b63\uff0c\u6697\u90e8\u6210\u8272\u4e5f\u4f1a\u6574\u4f53\u504f\u6697\uff08\u5982\u56fec\uff09\u3002\u76ee\u524d\u5927\u591a\u6570\u663e\u793a\u5668\u7684Gamma\u503c\u7ea6\u4e3a2.2\uff0c\u6240\u4ee5\u4e5f\u53ef\u4ee5\u7406\u89e3Gamma2.2\u662f\u6240\u6709\u663e\u793a\u5668\u81ea\u5e26\u7684\u4e00\u4e2a\u9057\u4f20\u75c5\u3002<\/p>\n\n\n\n
\u4e3a\u4e86\u77eb\u6b63\u663e\u793a\u5668\u7684\u975e\u7ebf\u6027\u95ee\u9898\uff08\u4ece\u56fec\u6821\u6b63\u56de\u56feb\uff09\uff0c\u6211\u4eec\u9700\u8981\u5bf9\u5b83\u8fdb\u884c\u4e00\u4e2a2.2\u6b21\u5e42\u7684\u9006\u8fd0\u7b97\uff08\u5982\u56fea\uff09\uff0c\u5728\u6570\u5b66\u4e0a\uff0c\u8fd9\u662f\u4e00\u4e2a\u7ea60.45\u7684\u5e42\u8fd0\u7b97\uff08Gamma0.45\uff09\u3002\u7ecf\u8fc70.45\u5e42\u8fd0\u7b97\uff0c\u518d\u7531\u663e\u793a\u5668\u7ecf\u8fc72.2\u6b21\u5e42\u8f93\u51fa\uff0c\u6700\u540e\u7684\u989c\u8272\u5c31\u548c\u5b9e\u9645\u7269\u7406\u7a7a\u95f4\u7684\u4e00\u81f4\u4e86\uff0c\u8fd9\u5957\u6821\u6b63\u7684\u64cd\u4f5c\u5c31\u662f\u4f3d\u9a6c\u6821\u6b63\uff08Gamma Correction\uff09\u3002<\/p>\n\n\n\n
\u800c\u6211\u4eec\u5e38\u89c1\u7684sRGB\u5c31\u662fGamma0.45\u6240\u5728\u7684\u8272\u5f69\u7a7a\u95f4\uff0c\u662f1996\u7531\u5fae\u8f6f\u4e0e\u60e0\u666e\u5171\u540c\u5f00\u53d1\u7684\u6807\u51c6\u8272\u5f69\u7a7a\u95f4\u3002\u5f53\u7167\u7247\u7d20\u6750\u4e00\u5f00\u59cb\u50a8\u5b58\u6210sRGB\u7a7a\u95f4\uff0c\u76f8\u5f53\u4e8e\u81ea\u5e26\u4e00\u4e2aGamma0.45\u7684\u9057\u4f20\u75c5\u6297\u4f53\uff0c\u5f53\u5b83\u88ab\u663e\u793a\u5668\u663e\u793a\u65f6\uff0c\u5c31\u81ea\u52a8\u4e2d\u548c\u4e86\u663e\u793a\u5668Gamma2.2\u7684\u7f3a\u9677\uff0c\u4ece\u800c\u663e\u793a\u51fa\u4e0e\u7269\u7406\u4e16\u754c\u76f8\u7b26\u7684\u4eae\u5ea6\u3002<\/p>\n\n\n\n
\u53e6\u4e00\u4e2a\u6821\u6b63\u539f\u56e0\u662f\u56e0\u4e3a\u4eba\u773c\u5728\u63a5\u53d7\u5149\u7ebf\u65f6\u7684\u654f\u611f\u5ea6\u4e5f\u4e0d\u662f\u7ebf\u6027\u7684\uff0c\u4eba\u5bf9\u4e8e\u6697\u90e8\u7684\u611f\u77e5\u66f4\u654f\u611f\uff0c\u5bf9\u9ad8\u4eae\u533a\u57df\u611f\u77e5\u8f83\u5f31\uff0c\u800c\u4e14\u4eba\u773c\u611f\u77e5\u5149\u5f3a\u5ea6\u4e0e\u5149\u7684\u7269\u7406\u5f3a\u5ea6\u4e5f\u521a\u597d\u662f\u5bf9\u6570\u5173\u7cfb\u3002\u4e3a\u4e86\u5728\u6697\u90e8\u5448\u73b0\u66f4\u591a\u4eba\u773c\u53ef\u611f\u77e5\u7684\u7ec6\u8282\uff0cGamma0.45\u7684\u8272\u5f69\u7a7a\u95f4\u4e2d\uff08\u5982\u56fea\uff09\uff0c\u50cf\u7d20\u7684\u5b9e\u9645\u4eae\u5ea6\u4e5f\u4f1a\u9ad8\u4e8e\u5b83\u7684\u7269\u7406\u4eae\u5ea6\u3002<\/p>\n\n\n\n
\u4e0a\u9762\u90a3\u4e00\u5927\u6bb5\u786e\u5b9e\u6709\u70b9\u7ed5\uff0c\u4f46\u4e5f\u5c31\u8bf4\u56de\u6765\u4e3a\u4ec0\u4e48\u5efa\u8bae\u6e32\u67d3\u65f6\u4f7f\u7528\u7ebf\u6027\u7a7a\u95f4\uff08Linear Space\uff09\u4e86\u3002\u56e0\u4e3a\u5728\u8ba1\u7b97\u673a\u56fe\u5f62\u4e2d\uff0c\u7740\u8272\u5668\u7684\u8fd0\u7b97\u57fa\u672c\u4e0a\u90fd\u662f\u57fa\u4e8e\u7269\u7406\u4e16\u754c\u7684\u5149\u7167\u6a21\u578b\u6765\u4fdd\u8bc1\u6e32\u67d3\u771f\u5b9e\u6027\u7684\uff0c\u5982\u679c\u6a21\u578b\u7684\u7eb9\u7406\u8f93\u5165\u503c\u662f\u975e\u7ebf\u6027\u7684\uff08sRGB\uff09\uff0c\u90a3\u4e48\u8fd0\u7b97\u7684\u524d\u63d0\u5c31\u4e0d\u7edf\u4e00\uff0c\u8f93\u51fa\u7684\u7ed3\u679c\u81ea\u7136\u5c31\u4e0d\u90a3\u4e48\u771f\u5b9e\u4e86\u3002<\/p>\n\n\n\n
\u800c\u5728\u5927\u591a\u6570\u5de5\u4f5c\u6d41\u53ca\u6e32\u67d3\u8f6f\u4ef6\u4e2d\uff0c\u5927\u90e8\u5206\u8d34\u56fe\u8d44\u6e90\u90fd\u662f\u9ed8\u8ba4\u8f93\u51fasRGB\u7684\uff08\u8bbe\u8ba1\u5e08\u4f5c\u56fe\u73af\u5883\u4e00\u822c\u4e5f\u5728sRGB\uff0c\u6240\u89c1\u5373\u6240\u5f97\uff09\uff0c\u800c\u6cd5\u7ebf\u8d34\u56fe\u3001\u5149\u7ebf\u8d34\u56fe\u7b49\u7eb9\u7406\uff08\u7eaf\u6570\u503c\u7c7b\u7eb9\u7406\uff0c\u53ea\u7528\u4e8e\u8ba1\u7b97\uff09\u53c8\u662fLinear\u7684\uff0c\u8fd9\u4e2a\u90e8\u5206\u5c31\u9700\u8981\u6211\u4eec\u6839\u636e\u6e32\u67d3\u5f15\u64ce\u672c\u8eab\u7684\u7279\u6027\uff0c\u6765\u5224\u65ad\u662f\u5426\u9700\u8981\u5bf9\u4e0d\u540c\u7684\u8d34\u56fe\u8fdb\u884c\u4e0d\u540c\u7684\u201d\u53bbGamma\u5316\u201d\u5904\u7406\u4e86\uff08WebGL\u3001Unity\u3001Octane\u7b49\uff09\u3002<\/p>\n\n\n\n
\u5c06\u6240\u6709\u8d34\u56fe\u8fdb\u884c\u53bbGamma\u5316\uff0c\u7edf\u4e00\u4e3aLinear\u7a7a\u95f4\u540e\uff0c\u518d\u5728\u6e32\u67d3\u8f93\u51fa\u65f6\u7531\u5f15\u64ce\u7edf\u4e00\u8fdb\u884cGamma\u6821\u6b63\uff0c\u8fd9\u4e2a\u65f6\u5019\u5728\u663e\u793a\u5c4f\u91cc\u663e\u793a\u7684\u5c31\u662f\u63a5\u8fd1\u771f\u5b9e\u4e16\u754c\u7684\u6548\u679c\u4e86\u3002<\/p>\n\n\n\n
\u56de\u5230H5\u6240\u7528\u7684Three.js\uff0c\u5b83\u7684\u7740\u8272\u5668\u8ba1\u7b97\u4e5f\u662f\u9ed8\u8ba4\u5728Linear\u7a7a\u95f4\uff0c\u5982\u679c\u6700\u7ec8\u6e32\u67d3\u65f6\u4e0d\u8f6c\u5316\u4e3asRGB\uff0c\u5728\u8bbe\u5907\u663e\u793a\u65f6\u53ef\u80fd\u4f1a\u9020\u6210\u8272\u5f69\u5931\u771f\u3002\u5728three.js\u4e2d\u8272\u5f69\u7ba1\u7406\u7684\u5de5\u4f5c\u6d41\u4f1a\u6839\u636e\u5bfc\u5165\u6a21\u578bAsset\u7684\u5dee\u5f02\u800c\u6709\u6240\u4e0d\u540c\uff0c\u5982\u679c\u8d34\u56fe\u4e0e\u6a21\u578b\u662f\u5206\u522b\u5bfc\u5165\u573a\u666f\uff0c\u5219\u5efa\u8bae\u53ef\u5c1d\u8bd5\u4ee5\u4e0b\u6d41\u7a0b\uff1a<\/p>\n\n\n\n
1\uff09\u8f93\u5165\u8d34\u56fe\u6570\u636e sRGB to Linear: \u542b\u8272\u5f69\u7684\u8d34\u56fe\uff08\u57fa\u7840\u6750\u8d28\u3001\u73af\u5883\u3001\u53d1\u5149\uff09\u8bbe\u7f16\u7801\u4e3asRGB\uff08texture.encoding = sRGBEncoding\uff09\uff0c\u6216\u5c06\u6e32\u67d3\u8bbe\u7f6erenderer.gammaInput\u8bbe\u4e3aTrue\uff0c\u53ef\u5c06\u539f\u4e3asRGB\u7684\u8d34\u56fe\u8f6c\u6362\u4e3aLinear\uff0c\u800c\u539f\u7eaf\u6570\u503c\u7c7b\u8d34\u56fe\uff08\u6cd5\u7ebf\u3001\u51f9\u51f8\u7b49\uff09\u4ecd\u65e7\u4fdd\u6301Linear\uff1b\u8fd9\u4e00\u64cd\u4f5c\u53ef\u4fdd\u8bc1\u8d34\u56fe\u8f93\u5165\u6570\u636e\u7684\u6b63\u786e\u6027\u4e0e\u7edf\u4e00\u6027\u3002<\/p>\n\n\n\n
2\uff09\u5237\u65b0\u6750\u8d28\uff1a\u5f53\u6750\u8d28\u7f16\u7801\u7c7b\u578b\u88ab\u4fee\u6539\u540e\uff0c\u9700\u8981\u8bbe\u7f6eMaterial.needsUpdate\u4e3aTrue\uff0c\u4ee5\u91cd\u65b0\u7f16\u8bd1\u6750\u8d28\u3002<\/p>\n\n\n\n
3\uff09\u8f93\u51fa\u6e32\u67d3 Linear to sRGB: \u6821\u6b63\u6e32\u67d3\u8f93\u51fa\u503c\u7684Gamma\uff1arenderer.gammaOutput = true; renderer.gammaFactor = 2.2\uff1b\u4ee5\u4f9b\u663e\u793a\u5c4f\u6b63\u786e\u663e\u8272\u3002<\/p>\n\n\n\n
\u300aPart1-\u7406\u8bba\u7bc7\u300b\u5c31\u5148\u544a\u4e00\u6bb5\u843d\u5566\uff0c\u5982\u679c\u4f60\u5076\u53d1\u5931\u7720\uff0c\u5efa\u8bae\u53ef\u4ee5\u53cd\u590d\u5480\u56bc\u5ef6\u4f38\u9605\u8bfb\u7684\u5185\u5bb9\u3002<\/p>\n\n\n\n
\u300aPart2-\u5b9e\u8df5\u7bc7\u300b\u4f1a\u7ee7\u7eed\u5b8c\u5584three.js\u573a\u666f\u3001\u6750\u8d28\u8d34\u56fe\u7684\u5236\u4f5c\u601d\u8def\u3001\u4ee5\u53cagltf\u5de5\u4f5c\u6d41\uff0c\u5e76\u52a8\u6001\u8ba8\u8bba\u9879\u76ee\u5e38\u5e38\u9047\u5230\u7684\u8fd8\u539f\u95ee\u9898\u3002<\/p>\n\n\n\n
2022\uff0c\u54b1\u4eec\u9700\u6c42\u518d\u89c1\u3002<\/p>\n\n\n\n
1\uff09\u7740\u8272\u5668\u5dee\u5f02<\/strong><\/p>\n\n\n\n
\u2460 \u50cf\u7d20\u7740\u8272\u5668 Pixel Shader<\/strong><\/p>\n\n\n\n
\u4e5f\u79f0\u4e3a\u7247\u5143\/\u7247\u6bb5\u7740\u8272\u5668\uff08Fragment Shader\uff09, \u4e3a\u4e8c\u7ef4\u7740\u8272\u5668\u3002\u5b83\u8bb0\u5f55\u4e86\u6bcf\u4e00\u4e2a\u50cf\u7d20\u7684\u989c\u8272\u3001\u6df1\u5ea6\u3001\u900f\u660e\u5ea6\u4fe1\u606f\u3002\u6700\u7b80\u5355\u7684\u50cf\u7d20\u7740\u8272\u5668\u53ef\u7528\u4e8e\u8bb0\u5f55\u989c\u8272\uff0c\u50cf\u7d20\u7740\u8272\u5668\u901a\u5e38\u4f7f\u7528\u76f8\u540c\u7684\u8272\u9636\u6765\u8868\u793a\u5149\u7167\u5c5e\u6027\uff0c\u4ee5\u5b9e\u73b0\u51f9\u51f8\u3001\u9634\u5f71\u3001\u9ad8\u5149\u3001\u900f\u660e\u5ea6\u7b49\u8d34\u56fe\u3002\u540c\u65f6\uff0c\u4ed6\u4eec\u4e5f\u53ef\u4ee5\u7528\u6765\u4fee\u6539\u6bcf\u4e2a\u50cf\u7d20\u7684\u6df1\u5ea6\uff08Z-buffering\uff09\u3002<\/p>\n\n\n\n
\u4f46\u662f\u57283D\u56fe\u50cf\u4e2d\uff0c\u50cf\u7d20\u7740\u8272\u5668\u53ef\u80fd\u65e0\u6cd5\u5b9e\u73b0\u4e00\u4e9b\u590d\u6742\u7684\u6548\u679c\uff0c\u56e0\u4e3a\u5b83\u53ea\u80fd\u63a7\u5236\u72ec\u7acb\u7684\u50cf\u7d20\u800c\u5e76\u4e0d\u542b\u6709\u573a\u666f\u4e2d\u6a21\u578b\u7684\u9876\u70b9\u4fe1\u606f\u3002\u4e0d\u8fc7\uff0c\u50cf\u7d20\u7740\u8272\u5668\u62e5\u6709\u5c4f\u5e55\u7684\u5750\u6807\u4fe1\u606f\uff0c\u53ef\u4ee5\u4f9d\u636e\u5c4f\u5e55\u6216\u90bb\u8fd1\u50cf\u7d20\u7684\u7684\u6750\u8d28\u8fdb\u884c\u91c7\u6837\u5e76\u589e\u5f3a\uff0c\u4f8b\u5982\uff0cCel Shader\u7684\u8fb9\u7f18\u5f3a\u5316\u6216\u4e00\u4e9b\u540e\u671f\u7684\u6a21\u7cca\u6548\u679c\u3002<\/p>\n\n\n\n
\u2461 \u9876\u70b9\u7740\u8272\u5668 Vextex Shader<\/strong><\/p>\n\n\n\n
\u662f\u6700\u5e38\u89c1\u76843D\u7740\u8272\u5668\uff0c\u4ed6\u8bb0\u5f55\u4e86\u6a21\u578b\u6bcf\u4e2a\u9876\u70b9\u7684\u4f4d\u7f6e\u3001\u7eb9\u7406\u5750\u6807\u3001\u989c\u8272\u7b49\u4fe1\u606f\u3002\u5b83\u5c06\u6bcf\u4e2a\u9876\u70b9\u76843D\u4f4d\u7f6e\u4fe1\u606f\u8f6c\u6362\u62102D\u5c4f\u5e55\u5750\u6807\u3002\u9876\u70b9\u7740\u8272\u5668\u53ef\u4ee5\u5904\u7406\u4f4d\u7f6e\u3001\u989c\u8272\u3001\u7eb9\u7406\u7684\u5750\u6807\uff0c\u4f46\u662f\u65e0\u6cd5\u589e\u52a0\u65b0\u7684\u9876\u70b9\u3002<\/p>\n\n\n\n
\u2462 \u51e0\u4f55\u7740\u8272\u5668 Geometry Shader<\/strong><\/p>\n\n\n\n
\u662f\u6700\u8fd1\u65b0\u5174\u7684\u7740\u8272\u5668\uff0c\u5728Direct3D 10 \u548cOpen GL3.2\u4e2d\u88ab\u5f15\u7528\u3002\u8fd9\u79cd\u7740\u8272\u5668\u53ef\u4ee5\u5728\u56fe\u5143\u5916\u751f\u6210\u65b0\u7684\u9876\u70b9\uff0c\u4ece\u800c\u8f6c\u6362\u6210\u65b0\u7684\u56fe\u5143\uff08\u4f8b\u5982\u70b9\u3001\u7ebf\u3001\u4e09\u89d2\u7b49\uff09\uff0c\u800c\u4f18\u52bf\u4e5f\u662f\u5728\u4e8e\u53ef\u4ee5\u76f4\u63a5\u5728\u7740\u8272\u4e2d\u589e\u52a0\u6a21\u578b\u7ec6\u8282\uff0c\u51cf\u4f4eCPU\u8d1f\u62c5\u3002\u96c6\u5408\u7740\u8272\u5668\u7684\u5e38\u7528\u573a\u666f\u5305\u62ec\u70b9\u7cbe\u7075\uff08Point Sprite\uff09\u751f\u6210\uff08\u7c92\u5b50\u52a8\u753b\uff09\uff0c\u7ec6\u5206\u66f2\u9762\uff0c\u4f53\u79ef\u9634\u5f71\u7b49\u3002<\/p>\n\n\n\n
\u2463 \u7ec6\u5206\u66f2\u9762\u7740\u8272\u5668 Tessellation Shader<\/strong><\/p>\n\n\n\n
\u5728OpenGL4.0\u548c Direct3D 11\u4e2d\u51fa\u73b0\uff0c\u5b83\u53ef\u4ee5\u5728\u56fe\u5143\u5185\u9576\u5d4c\u66f4\u591a\u4e09\u89d2\u4f53\u3002\u4e3a\u4f20\u7edf\u6a21\u578b\u65b0\u589e\u4e86\u4e24\u4e2a\u7740\u8272\u6b65\u9aa4\uff08\u4e00\u662f\u7ec6\u5206\u63a7\u5236\u7740\u8272\uff0c\u53c8\u79f0\u4e3aHull Shader\uff0c\u4e8c\u662f\u7ec6\u5206\u8bc4\u4f30\u7740\u8272\uff0c\u53c8\u79f0\u4e3aDomain Shader\uff09\uff0c\u4e24\u8005\u7ed3\u5408\u53ef\u4ee5\u8ba9\u7b80\u5355\u7684\u6a21\u578b\u5feb\u901f\u83b7\u5f97\u7ec6\u5206\u66f2\u9762\u3002\uff08\u4f8b\u5982\uff0c\u542b\u7ec6\u5206\u66f2\u9762\u6548\u679c\u7684\u6a21\u578b\u52a0\u4e0a\u7f6e\u6362\u8d34\u56fe\u5c31\u53ef\u4ee5\u83b7\u5f97\u6781\u5176\u903c\u771f\u7ec6\u817b\u7684\u6a21\u578b\uff09<\/p>\n\n\n\n
2\uff09\u4e00\u4e9b\u672f\u8bed\u7684\u7b80\u5355\u7406\u89e3<\/strong><\/p>\n\n\n\n
GL\uff1a<\/strong>Graphics Library, \u56fe\u5f62\u51fd\u6570\u5e93\u3002<\/p>\n\n\n\n
webGL\uff1a<\/strong>Web Graphics Library\uff0cHtml 5\u53ef\u63a5\u5165\u76843D\u7ed8\u56fe\u534f\u8bae\/\u51fd\u6570\u5e93\uff0c\u53ef\u4ee5\u4e3aH5 Canvas\u63d0\u4f9b3D\u6e32\u67d3\u7684\u5404\u7c7bAPI\u3002<\/p>\n\n\n\n
Z-Buffering\uff1a<\/strong><\/p>\n\n\n\n
\u6df1\u5ea6\u7f13\u51b2\uff0c3D\u56fe\u50cf\u5728\u6e32\u7269\u4f53\u7684\u65f6\u5019\uff0c\u6bcf\u4e00\u4e2a\u751f\u6210\u7684\u50cf\u7d20\u7684\u6df1\u5ea6\u4f1a\u5b58\u50a8\u5728\u7f13\u51b2\u533a\u4e2d\u3002\u5982\u679c\u53e6\u4e00\u4e2a\u7269\u4f53\u4e5f\u5728\u540c\u4e00\u4e2a\u50cf\u7d20\u4e2d\u4ea7\u751f\u6e32\u67d3\u7ed3\u679c\uff0c\u90a3\u4e48GPU\u4f1a\u6bd4\u8f83\u4e24\u4e2a\u7269\u4f53\u7684\u6df1\u5ea6\uff0c\u4f18\u5148\u6e32\u67d3\u8ddd\u79bb\u66f4\u8fd1\u7684\u7269\u4f53\uff0c\u8fd9\u4e2a\u8fc7\u7a0b\u53eb\u505aZ-Culling\u3002\u5f53\u4e24\u4e2a\u7269\u4f53\u9760\u5f88\u8fd1\u7684\u65f6\u5019\uff0816-bit\uff09\uff0c\u53ef\u80fd\u4f1a\u51fa\u73b0Z-Fighting\uff0c\u4e5f\u5c31\u662f\u4ea4\u53e0\u95ea\u70c1\u7684\u73b0\u8c61\uff0c\u4f7f\u752824\u621632bit\u7684Buffer\u53ef\u4ee5\u6709\u6548\u7f13\u89e3\u3002<\/p>\n\n\n\n
Rendering Pipeline\uff1a<\/strong><\/p>\n\n\n\n
\u6e32\u67d3\u7ba1\u7ebf\/\u6e32\u67d3\u6d41\u6c34\u7ebf\/\u50cf\u7d20\u6d41\u6c34\u7ebf\uff0c\u4e3aGPU\u7684\u5904\u7406\u5de5\u4f5c\u6d41\uff0c\u662fGPU\u8d1f\u8d23\u7ed9\u56fe\u5f62\u914d\u4e0a\u989c\u8272\u7684\u4e13\u95e8\u901a\u9053\u3002\u7ba1\u7ebf\u8d8a\u591a\uff0c\u753b\u9762\u8d8a\u6d41\u7545\u7cbe\u7f8e\u3002<\/p>\n\n\n\n
Rasterization\uff1a<\/strong><\/p>\n\n\n\n
\u5149\u6805\u5316\/\u70b9\u9635\u5316\/\u6805\u683c\u5316\uff0c\u5c31\u662f\u5c06\u7ba1\u7ebf\u5904\u7406\u5b8c\u7684\u56fe\u5143\u8f6c\u6362\u6210\u4e00\u7cfb\u5217\u5c4f\u5e55\u53ef\u89c6\u7684\u50cf\u7d20\uff0c\u8fc7\u7a0b\u5305\u62ec\uff1a\u56fe\u5143\u62fc\u88c5\uff08Primitive assembly\uff09-\u4e09\u89d2\u5f62\u904d\u5386\uff08Triangle Traversal\uff09- Pixel Processing-Merging\u3002<\/p>\n\n\n\n
3\uff09\u53c2\u8003\u6587\u732e+\u5ef6\u4f38\u9605\u8bfb<\/strong><\/p>\n\n\n\n
[1]Hearn, D. and Baker, M.P., 2004. Computer graphics with OpenGL, \u8ba1\u7b97\u673a\u56fe\u5f62\u5b66\u7b2c\u56db\u7248 . Upper Saddle River, NJ: Pearson Prentice Hall,.<\/p>\n\n\n\n
[2]Akenine-M\u00f6ller, T., Haines, E. and Hoffman, N., 2019.Real-time rendering. Crc Press.<\/p>\n\n\n\n
[3]\u9510\u840c\u745e, \u7ecf\u5178\u5149\u7167\u6a21\u578b\uff08illumination model\uff09<\/p>\n\n\n\n
https:\/\/blog.csdn.net\/qq_34552886\/article\/details\/79089418<\/p>\n\n\n\n
[4]Krishnaswamy, A; Baronoski, GVG (2004). \u201cA Biophysically-based Spectr<\/a><\/span>al Model of Light Interaction with Human Skin\u201d (PDF).<\/p>\n\n\n\n
[5] List of Common Shading Algorithm\uff1a<\/p>\n\n\n\n
https:\/\/en.wikipedia.org\/wiki\/List_of_common_shading_algorithms<\/p>\n\n\n\n
https:\/\/www.cnblogs.com\/timlly\/p\/11098212.html<\/p>\n\n\n\n
https:\/\/zhuanlan.zhihu.com\/p\/31194204<\/p>\n\n\n\n
https:\/\/www.jianshu.com\/p\/96ca495669d6<\/p>\n\n\n\n
[9] puppet_masterm, Unity Shader-Matcap\uff08\u6750\u8d28\u6355\u83b7\uff09<\/p>\n\n\n\n
https:\/\/blog.csdn.net\/puppet_master\/article\/details\/83582477<\/p>\n\n\n\n
[10] WestLangley, documentation on gamma correction incorrect? #11110<\/p>\n\n\n\n
https:\/\/github.com\/mrdoob\/three.js\/issues\/11110<\/p>\n\n\n\n
[11] donmccurdy, Best practise for color management<\/p>\n\n\n\n
https:\/\/github.com\/aframevr\/aframe\/issues\/3509<\/p>\n\n\n\n
https:\/\/github.com\/mrdoob\/three.js\/issues\/11337#issuecomment-440795075<\/p>\n\n\n\n
[12] alteredq, Questions about the use of Gamma Correction in the WebGL Renderer #1488<\/p>\n\n\n\n
https:\/\/github.com\/mrdoob\/three.js\/issues\/1488<\/p>\n\n\n\n
[13] Friksel, What\u2019s this about gammaFactor?<\/p>\n\n\n\n
https:\/\/discourse.threejs.org\/t\/whats-this-about-gammafact<\/a><\/span>or\/4264\/3<\/p>\n\n\n\n
https:\/\/zhuanlan.zhihu.com\/p\/66558476<\/p>\n\n\n\n
[15] Learn OpenGL, Gamma Correction<\/p>\n\n\n\n
https:\/\/learnopengl.com\/Advanced-Lighting\/Gamma-Correction<\/p>\n\n\n\n
[16] \u67ef\u7075\u6770\uff0c3D\u56fe\u5f62\u5b66\u57fa\u7840\uff1a<\/p>\n\n\n\n
\u5173\u4e8eD3D11\uff0c\u4f60\u5fc5\u987b\u4e86\u89e3\u7684\u51e0\u4ef6\u4e8b\u60c5\uff08\u4e09\uff09\uff1a\u5b8c\u7ed3\u7bc7<\/a><\/blockquote>