| ENBSeries http://enbdev.com/enbseries/forum/ |
|
| Shader Script http://enbdev.com/enbseries/forum/viewtopic.php?f=28&t=4906 |
Page 1 of 1 |
| Author: | TheHoodlum [ 07 Mar 2016, 08:01 ] |
| Post subject: | Shader Script |
I just wanted to know what language shaders were scripted in and if it helps, I'm specifically talking about GTA SA; I also wanted to know how to convert shaders from other games, such as from Payday, GTA V, Watch Dogs, etc. |
|
| Author: | ENBSeries [ 07 Mar 2016, 18:11 ] |
| Post subject: | Re: Shader Script |
DirectX games using assembly code for shaders, but some (rarely) games have non compiled shaders in hlsl format (glsl for OpenGL) or more exotic custom from NVidia or per engine (like in Unity3D). Porting shaders from other games is much more complex task than writing new, because shaders are very simple by nature, rules of 3d graphics are the same. |
|
| Author: | TheHoodlum [ 08 Mar 2016, 18:28 ] |
| Post subject: | Re: Shader Script |
Thank you, is there a way to tell what language shaders are written in? |
|
| Author: | ENBSeries [ 08 Mar 2016, 20:36 ] |
| Post subject: | Re: Shader Script |
Yes, frequently assembled contains extra information. Below is one disassembled shader from Skyrim (game have 1526 of them), better stay away from what you want Code: //
// Generated by Microsoft (R) HLSL Shader Compiler 9.27.952.3022 // // Parameters: // // sampler2D DiffuseSampler; // float3 DirLightColor; // float3 DirLightDirection; // row_major float3x4 DirectionalAmbient; // float3 EmitColor; // float4 FogColor; // float2 LightingEffectParams; // float4 MaterialData; // sampler2D NormalSampler; // float3 PointLightColor[2]; // float4 PointLightPosition[2]; // sampler2D ShadowMaskSampler; // float4 SpecularColor; // sampler2D SubSurfaceSampler; // float3 TintColor; // float4 VPOSOffset; // // // Registers: // // Name Reg Size // -------------------- ----- ---- // DirectionalAmbient c0 3 // PointLightPosition c3 2 // PointLightColor c5 2 // DirLightDirection c7 1 // DirLightColor c8 1 // MaterialData c9 1 // EmitColor c10 1 // VPOSOffset c11 1 // SpecularColor c12 1 // LightingEffectParams c13 1 // TintColor c14 1 // FogColor c15 1 // DiffuseSampler s0 1 // NormalSampler s1 1 // SubSurfaceSampler s2 1 // ShadowMaskSampler s3 1 // ps_3_0 def c16, 0, 0, 0, 0 def c17, 2, -1, 1, -3 defi i0, 2, 0, 0, 0 dcl_texcoord v0.xy dcl_texcoord4 v1.xyz dcl_texcoord1 v2.xyz dcl_texcoord2 v3.xyz dcl_texcoord3 v4.xyz dcl_texcoord5 v5.xyz dcl_color v6.yw dcl_color1 v7 dcl vPos.xy dcl_2d s0 dcl_2d s1 dcl_2d s2 dcl_2d s3 dp3 r0.x, v5, v5 rsq r0.x, r0.x texld r1, v0, s0 texld r2, v0, s1 mad r0.yzw, r2.xxyz, c17.x, c17.y texld r3, v0, s2 dp3 r2.x, v2, r0.yzww dp3 r2.y, v3, r0.yzww dp3 r2.z, v4, r0.yzww nrm r4.xyz, r2 mad r0.yz, vPos.xxyw, c11.xxyw, c11.xzww texld r5, r0.yzzw, s3 mul r0.yzw, r5.x, c8.xxyz dp3 r2.x, r4, c7 mov_sat r2.y, r2.x mov r5.yz, c17 add r2.z, r5.z, c13.x add r2.x, r2.x, c13.x rcp r2.z, r2.z mul_sat r2.x, r2.z, r2.x mad r3.w, r2.x, -c17.x, -c17.w mul r2.x, r2.x, r2.x mad r5.x, r2.y, -c17.x, -c17.w mul r5.z, r2.y, r2.y mul r5.x, r5.z, r5.x mad_sat r2.x, r3.w, r2.x, -r5.x mul r5.xzw, r2.x, c8.xyyz mul r5.xzw, r3.xyyz, r5 mad r5.xzw, r0.yyzw, r2.y, r5 mad r6.xyz, v5, r0.x, c7 nrm r7.xyz, r6 dp3_sat r2.x, r7, r4 pow r3.w, r2.x, c12.w mul r0.yzw, r0, r3.w mov r6.xyz, r5.xzww mov r7.xyz, r0.yzww mov r2.x, c16.x rep i0 mov r8, c3 cmp r8, -r2.x, r8, c4 add r8.xyz, r8, -v1 dp3 r2.y, r8, r8 rsq r2.y, r2.y rcp r3.w, r2.y rcp r6.w, r8.w mul_sat r3.w, r3.w, r6.w mad r3.w, r3.w, -r3.w, c17.z mov r9.xyz, c5 cmp r9.xyz, -r2.x, r9, c6 mul r10.xyz, r2.y, r8 dp3_sat r2.y, r4, r10 dp3 r6.w, r4, r8 add r7.w, r6.w, c13.x mul_sat r7.w, r2.z, r7.w mad r8.x, r7.w, -c17.x, -c17.w mul r7.w, r7.w, r7.w mov_sat r6.w, r6.w mad r8.y, r6.w, -c17.x, -c17.w mul r6.w, r6.w, r6.w mul r6.w, r6.w, r8.y mad_sat r6.w, r8.x, r7.w, -r6.w mul r8.xyz, r9, r6.w mul r8.xyz, r3, r8 mad r8.xyz, r9, r2.y, r8 mad r10.xyz, v5, r0.x, r10 nrm r11.xyz, r10 dp3_sat r2.y, r11, r4 pow r6.w, r2.y, c12.w mul r9.xyz, r6.w, r9 mad r7.xyz, r9, r3.w, r7 mad r6.xyz, r8, r3.w, r6 add r2.x, r2.x, c17.z endrep mov r4.w, c17.z dp4 r0.x, c0, r4 dp4 r0.y, c1, r4 dp4 r0.z, c2, r4 add r0.xyz, r0, c10 add r0.xyz, r6, r0 mul r0.xyz, r1, r0 add r1.xyz, r5.y, c14 mad r1.xyz, v6.y, r1, c17.z mul r2.xyz, r2.w, r7 mul r2.xyz, r2, c9.y mul r2.xyz, r2, c12 mad r0.xyz, r0, r1, r2 mul r0.w, r1.w, c9.z mul_pp oC0.w, r0.w, v6.w lrp r1.xyz, v7.w, v7, r0 mul_pp oC0.xyz, r1, c15.w // approximately 103 instruction slots used (4 texture, 99 arithmetic) |
|
| Page 1 of 1 | All times are UTC |
| Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |
|