博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
反编译ARB program to GLSL shader日记
阅读量:7010 次
发布时间:2019-06-28

本文共 5098 字,大约阅读时间需要 16 分钟。

  hot3.png

char water_fp_uw_reg [] ="!!ARBfp1.0""OPTION ARB_precision_hint_fastest;"//uniform vec3 waterfogcolor;"PARAM c[6] = { program.local[0..1],"//uniform time;"{ 0.5, 0, 0.2, 0.15000001 },"//[2]"{ 0.13, 0.11, 0.17, 0.14 },"//[3]"{ 0.16, 1, 0.30000001 },"//[4]"{ 0.06666667, 0 } };"//[5]"TEMP R0;""TEMP R1;""TEMP R2;""MOV R1, c[3];"											//R1={0.13, 0.11, 0.17, 0.14};"MAD R2.xw, R1.yyzz, c[1].x, fragment.texcoord[0].yyzx;"//R2.x = 0.11 * time + g_TexCoord[0].y; R2.w = 0.17 * time + g_TexCoord[0].x;"MOV R0.zw, c[2];""MAD R0.zw, R0, c[1].x, fragment.texcoord[0].xyxy;"		//R0.zw = vec2(0.2, 0.15) * time + g_TexCoord[0];//vec2 vNormTexCoord1 = vec2(0.2, 0.15) * time + g_TexCoord[0]; "MAD R0.x, R1, -c[1], fragment.texcoord[0];"			//R0.x = -0.13 * time + g_TexCoord[0].x;"MOV R0.y, R2.x;"										//R0.y = 0.11 * time + g_TexCoord[0].y;//vec2 vNormTexCoord2 = vec2(-0.13, 0.11) * time + g_TexCoord[0];"TEX R1.xyz, R0, texture[0], 2D;"						//R1.xyz = texture2D(normalmap, R0.xy);//vec3 vNorm2 = texture2D(normalmap, vNormTexCoord2);"TEX R0.xyz, R0.zwzw, texture[0], 2D;"					//R0.xyz = texture2D(normalmap, R0.zw);//vec3 vNorm1 = texture2D(normalmap, vNormTexCoord1);"ADD R2.xyz, R0, R1;"									//R2.xyz = R0.xyz+R1.xyz//vec3 vNormal = vNorm1 + vNorm2;"MOV R0.y, R0.w;"										//R0.y = R0.w = 0.15 * time + g_TexCoord[0].y;"MOV R0.w, c[4].x;"										//R0.w = 0.16;"MAD R1.x, R1.w, -c[1], fragment.texcoord[0];"			//R1.x = -0.14 * time + g_TexCoord[0].x;"MAD R1.y, R0.w, -c[1].x, fragment.texcoord[0];"		//R1.y = 0.16 * -time + g_TexCoord[0].y;//vec2 vNormTexCoord4 = vec2(-0.14, 0.16) * time + g_TexCoord[0];"MOV R0.x, R2.w;"										//R0.x = R2.w = 0.17 * time + g_TexCoord[0].x;//vec2 vNormTexCoord3 = vec2(0.17, 0.15) * time + g_TexCoord[0];"TEX R0.xyz, R0, texture[0], 2D;"						//R0.xyz = texture2D(normalmap, R0);//vec3 vNorm3 = texture2D(normalmap, vNormTexCoord3);"TEX R1.xyz, R1, texture[0], 2D;"						//R1.xyz = texture2D(normalmap, R1);//vec3 vNorm4 = texture2D(normalmap, vNormTexCoord4);"ADD R0.xyz, R2, R0;"									//"ADD R0.xyz, R0, R1;"									//R0.xyz = R0.xyz + R1.xyz + R2.xyz//vNormal += vNorm3 + vNorm4;"MUL R0.xyz, R0, c[2].x;"								//vNormal *= 0.5;"ADD R0.xyz, R0, -c[4].y;"								//vNormal -= 1.0;"DP3 R0.z, R0, R0;"										//"RSQ R0.z, R0.z;"										//"MUL R0.zw, R0.z, R0.xyxy;"								//R0.zw = R0.xy * R0.z//vec2 vOffsetTexCoord = normalize(vNormal.xyz).xy;"RCP R0.x, fragment.texcoord[1].w;"						//R0.x = (1.0 / projpos.w);"MUL R0.zw, R0, c[4].z;"								//vOffsetTexCoord *= 0.3;"MUL R0.xy, R0.x, fragment.texcoord[1];"				//R0.xy = projpos.xy * R0.x//vec2 vBaseTexCoord = projpos.xy * (1.0 / projpos.w);"MAD R0.xy, R0, c[2].x, R0.zwzw;"						//R0.xy += R0.zw * 0.5//vec2 vRefractTexCoord = vBaseTexCoord * 0.5 + OffsetTexCoord"ADD R0.xy, R0, c[2].x;"								//R0.xy += 0.5//vRefractTexCoord += 0.5;"TEX R0, R0, texture[1], 2D;"							//R0 = vRefractColor = texture2D(refractmap, vRefractTexCoord);"ADD R2.x, R0, R0.y;"									//R2.x = vRefractColor.x + vRefractColor.y"MOV R1.w, c[4].y;"										//R1.w = 1.0;"MOV R1.xyz, c[0];"										//R1.xyz = waterfogcolor"ADD R1, -R0, R1;"										//R1 -= R0;//waterfogcolor = waterfogcolor - vRefractColor;"ADD R2.x, R2, R0.z;"									//R2.x = R2.x + R0.Z//R2.x = vRefractColor.x + vRefractColor.y + vRefractColor.z;"MUL R1, R2.x, R1;"										//R1 = (waterfogcolor - vRefractColor) * (vRefractColor.x + vRefractColor.y + vRefractColor.z * 1.0)"MAD result.color, R1, c[5].x, R0;"						//g_FragColor = (waterfogcolor - vRefractColor) * (vRefractColor.x + vRefractColor.y + vRefractColor.z) * (1.0/15.0) + vRefractColor;"END";													//float fLerp = (vRefractColor.x + vRefractColor.y + vRefractColor.z) / 15.0;g_FragColor = vRefractColor * (1.0 - fLerp) + vec4(waterfogcolor, 1.0) * fLerp;

整理结果:

//Fragment Shaderuniform vec3 waterfogcolor;uniform float time;uniform sampler2D normalmap;uniform sampler2D refractmap;varying vec4 projpos;void main(){	//calculate the normal texcoord and sample the normal vector from texture	vec2 vNormTexCoord1 = vec2(0.2, 0.15) * time + g_TexCoord[0]; 	vec2 vNormTexCoord2 = vec2(-0.13, 0.11) * time + g_TexCoord[0];	vec2 vNormTexCoord3 = vec2(-0.14, -0.16) * time + g_TexCoord[0];	vec2 vNormTexCoord4 = vec2(0.17, 0.15) * time + g_TexCoord[0];	vec4 vNorm1 = texture2D(normalmap, vNormTexCoord1);	vec4 vNorm2 = texture2D(normalmap, vNormTexCoord2);	vec4 vNorm3 = texture2D(normalmap, vNormTexCoord3);	vec4 vNorm4 = texture2D(normalmap, vNormTexCoord4);	vec4 vNormal = vNorm1 + vNorm2 + vNorm3 + vNorm4;	vNormal = vNormal * 0.5 - 1.0;	//texcoord offset	vec2 vOffsetTexCoord = normalize(vNormal.xyz).xy * 0.3;	//sample the refract color	vec2 vBaseTexCoord = projpos.xy * (1.0 / projpos.w) * 0.5 + 0.5;	vec2 vRefractTexCoord = vBaseTexCoord + vOffsetTexCoord;	vec4 vRefractColor = texture2D(refractmap, vRefractTexCoord);	//lerp waterfog color and refraction color	float fLerp = (vRefractColor.x + vRefractColor.y + vRefractColor.z) / 15.0;	g_FragColor = vRefractColor * (1.0 - fLerp) + vec4(waterfogcolor, 1.0) * fLerp;}

转载于:https://my.oschina.net/hzqst/blog/383389

你可能感兴趣的文章
IIS7 配置 PHP5.6
查看>>
Ubuntu 14.04 安装 boost 1_57_0
查看>>
Thread类的join()方法
查看>>
二叉树的定义与前序、中序、后序遍历
查看>>
Laravel学习--关于Relation的坑
查看>>
mysql jdbc性能优化之mybatis/callablestatement调用存储过程mysql jdbc产生不必要的元数据查询(已解决,cpu负载减少20%)...
查看>>
Q_DECLARE_PRIVATE与Q_DECLARE_PUBLIC
查看>>
springboot数据库连接池使用策略
查看>>
eclipse定制化配置调优、初始化配置指南、可以解决启动慢等问题
查看>>
react实现多行文本超出加省略号
查看>>
回调函数
查看>>
DORIS-软件网址
查看>>
单例模式
查看>>
SICP 习题 (1.10)解题总结
查看>>
Windows 下OpenSSL 安装
查看>>
SpringBoot整合Kotlin构建Web服务
查看>>
基于Mixin Network的PHP比特币开发教程 之一:创建机器人
查看>>
区块链是一个公共数据库,要放在一个块内
查看>>
vuex实现及简略解析
查看>>
Docker 使用 supervisord 管理 lumen队列与crontab
查看>>